最近一直在折腾家里的NAS之前主要拿它存照片、跑下载任务后来觉得有点浪费就想着能不能把它变成一台24小时在线的个人AI服务机。正好看到一个叫OpenClaw的开源智能体框架又发现七牛云那边提供了AI模型的免费额度把这两个东西接在一起等于给NAS白嫖了一套能跑的AI模型接口NAS也顺便升级成了个人智能体网关。这篇文章就完整记录一下我整个配置过程OpenClaw是什么、为什么选七牛云的免费额度、具体怎么部署怎么配、以及我踩过的几个坑。适合NAS用户、AI应用开发者和不想为小项目额外付费的朋友参考。1. 整体设计与选型思路1.1 为什么用OpenClaw而不直接写代码调API先说结论OpenClaw本质上是一个开源的智能体编排框架它的价值在于把“模型调用”和“任务执行”做成了标准化的服务层。你不需要自己写一套HTTP请求封装、消息队列、会话管理只要配置好模型接入信息它就能提供一个统一的入口让外部工具、聊天机器人、定时任务都能直接跟AI模型对话。我第一次看到OpenClaw的时候第一反应是“这不就是个带界面的API转发器吗”。后来实际跑起来才发现它比单纯的API转发多了一层“智能体”的概念你可以给AI定义角色、设置工具调用权限、指定任务执行流程而不是简单地把用户输入丢给模型再返回结果。比如我可以对OpenClaw说“帮我定时检查某个网站的更新变了就发消息提醒我”它会按照配置好的步骤去执行而不是每次都靠我手动触发。我选择OpenClaw还有一个原因它支持OpenAI兼容的API协议。这意味着只要是兼容OpenAI格式的模型服务都能直接接入不需要为每一家云厂商单独写适配代码。七牛云的AI模型接口恰好也是这个风格两边一拍即合省去了很多中间层的开发工作。1.2 为什么瞄准七牛云的免费额度现在市面上的大模型API服务很多但真正适合个人玩耍的免费额度其实不多。要么是新用户注册后赠送几个月的体验额度要么是限定某些入门级模型。七牛云这次给的免费AI模型额度是直接绑定账号的模型调用配额不需要绑信用卡、不会用到一半突然扣费对个人用户来说非常友好。我当时算了一笔账如果自己买一套入门级的智能体服务每个月光模型调用费就要几十块钱按我的使用量每天几十次短对话、偶尔跑一下文本处理免费额度足够撑住。而且七牛云本身是做云存储和CDN起家的账号体系和实名认证流程都很成熟注册下来也就几分钟的事没有那种“注册五分钟、审核两小时”的挫败感。还有一个实际考虑是稳定性。个人项目最怕的就是模型服务突然挂掉换了七牛云之后我发现它的AI模型网关有比较完整的可用性监控至少我跑的过程中没遇到过长时间不可用的情况。对于我这种把NAS当实验环境玩的人来说稳定和便宜就是最大的刚需。1.3 适用场景与边界这套组合最适合的场景有三类一类是个人AI助手比如在NAS上搭建一个能通过聊天软件对话的机器人帮你查资料、整理笔记一类是轻量级自动化任务比如定时把RSS订阅的文章摘要发给微信还有一类是开发测试比如你正在做一个小项目需要调试AI功能但不想花钱开通所有模型接口。但也要说清楚边界。免费额度毕竟不是无限额度不适合跑大规模批处理任务和高并发生产服务。如果你要做一个面向大量用户的ChatBot或者每天有几千次调用的核心业务还是得老老实实按量付费或者买资源包。另外免费额度通常限制在特定模型上我用的那几款轻量模型跑通用对话和文本总结足够但要是涉及复杂的代码生成或者长文档分析效果会明显吃力。2. 环境准备与账号配置2.1 NAS上的准备工作Docker与目录规划我用的这台NAS系统自带应用中心装Docker非常方便直接在应用中心搜一下就能装好。如果你买的NAS型号比较老没有自带Docker也可以手动装但过程会折腾一点。个人建议尽量选一个支持Docker的NAS因为后续所有AI服务都能靠容器管理升级和卸载都很干净。装好Docker后先规划一下目录结构。我在NAS的存储池里建了一个专用的文件夹路径大概是这样的/docker/openclaw/ ├── config/ ├── logs/ └── data/config目录放OpenClaw的配置文件logs目录跑起来后会输出运行日志data目录用来存OpenClaw生成的会话记录和临时文件。这么规划的好处是容器如果升级或者重建数据还在外面挂着不会跟着容器一起被清掉。我见过不少人图省事直接把数据放在容器内部结果镜像一更新历史记录全没了那种心情谁遇谁知道。目录建好之后还要注意端口规划。OpenClaw默认会监听一个管理端口和一个API服务端口我给它分配的是8899和8900。你根据自己的NAS端口占用情况来定尽量避开常见的80、443和群晖自带的5000、5001免得跟其他服务冲突。2.2 注册七牛云并领取AI模型免费额度七牛云的注册流程没什么特别的打开官网用手机号注册再完成实名认证就行。这里有个小建议实名认证尽量一次性通过因为后面领取免费额度需要账号处于正常状态。我身边有朋友随便填了名字结果审核被拒来回折腾了好几天。登录控制台之后找到AI模型服务或者模型平台相关的入口。不同时期的控制台菜单名称可能不一样我用的版本是在产品与服务分组下面有一个AI模型服务平台的入口点进去之后会看到模型列表和计费说明。免费额度一般需要手动领取。页面上一般会有个免费额度或者新用户权益的按钮点进去会告诉你具体能领哪些模型、每个模型的免费调用次数或免费token数。我当时领的是一个对话模型加一个轻量模型两个模型共享一个免费包不用单独分开申请。领取成功后在额度明细里能看到剩余量心里有个数。这里特别提醒一下免费额度通常是有有效期的。不是说你领了就永久有效而是一个自然月或者从领取日开始计算一段时间内有效。我建议领完就立刻开始配置不要囤着否则哪天想起来用发现额度已经过期了白白浪费。2.3 获取API Key和模型接入地址免费额度领完之后接下来要拿到三个关键信息API Key、模型名称、接入地址base_url。API Key在七牛云控制台的密钥管理页面生成。生成的时候建议给一个备注名比如openclaw-nas这样以后在日志或者账单里能看出来是哪个应用在调用。密钥生成后只会完整显示一次一定要复制保存到本地密码管理器里不要直接截图发到任何聊天工具。接入地址一般是类似https://xxx.qiniu.com/v1这样的URL不同模型服务可能用不同的路径。关键是要找到文档里写的“OpenAI兼容接口”的base URL而不是把网页控制台的地址直接填进去。模型名称也不能想当然比如你以为填qwen-plus就能用但七牛云控制台里可能定义的是qwen-plus-free或者是一串部署别名这个必须在文档或者控制台里确认好。这三个信息拿到之后我习惯先用工具测一下接口通不通再去配置OpenClaw。测试方法很简单用curl发一个最小请求curl https://你的接入地址/chat/completions \ -H Authorization: Bearer 你的API_KEY \ -H Content-Type: application/json \ -d {model: 你的模型名称, messages: [{role: user, content: 你好}]}如果返回里带着choices字段说明接口和密钥都没有问题可以放心去配置OpenClaw了。这一步能帮你把“配置出错”和“账号有问题”这两类问题快速分开后面排查会轻松很多。3. OpenClaw 部署与模型接入实操3.1 使用Docker部署OpenClaw镜像我用的OpenClaw镜像是社区维护的版本直接在NAS的Docker界面里可以拉取。命令行方式也不复杂SSH登录NAS后执行docker pull openclaw/openclaw:latest镜像体积不大几百MB级别比我想象中轻很多。拉取完成后我建议不要直接在Docker界面里点点点创建容器因为环境变量和端口映射较多界面操作容易漏。我更推荐用docker run命令一步到位docker run -d \ --name openclaw \ -p 8899:8899 \ -p 8900:8900 \ -v /docker/openclaw/config:/app/config \ -v /docker/openclaw/logs:/app/logs \ -v /docker/openclaw/data:/app/data \ -e OPENCLAW_PORT8899 \ --restartalways \ openclaw/openclaw:latest--restartalways这个参数一定要加不然NAS重启后OpenClaw不会自动起来你还得手动开一遍。端口映射根据自己的规划调整前一个8899是宿主机端口后一个8899是容器内部端口内部端口尽量别改方便后续排查。如果OpenClaw有社区版的管理面板配置也可以用同样方式部署然后把模型配置填到Web界面里。不过我个人还是习惯写配置文件因为可追溯、可备份NAS挂了重装之后恢复也快。3.2 配置模型接入把七牛云的endpoint写进配置文件OpenClaw的配置目录挂载好之后在/docker/openclaw/config下面会生成一个主配置文件。不同版本的配置项名称可能略有差异但核心内容是一样的。我用的版本长这样# config.yaml server: host: 0.0.0.0 port: 8899 model: provider: openai-compatible base_url: https://你的七牛云接入地址 api_key: sk-你的API_KEY model: qwen-plus-free temperature: 0.7 max_tokens: 2048 agent: name: nas-assistant system_prompt: 你是一个部署在家庭NAS上的智能助手回答问题简洁准确。base_url要填到七牛云文档里给出的那个兼容OpenAI协议的完整地址注意末尾不要加/chat/completions因为调用方会自动拼上去。我一开始就因为多加了路径导致实际请求地址变成.../v1/chat/completions/chat/completions返回了一堆404。api_key就是刚才在七牛云密钥管理页生成的那一串粘贴的时候注意别带回车和空格。model名称必须以七牛云控制台里显示的为准文档里的示例只能参考。配置写完之后在容器内检查配置是否加载正常docker exec -it openclaw openclaw doctor这条命令是OpenClaw自带的自检命令会检查配置格式、模型连通性、存储目录权限等。看到全部通过之后再启动正式服务能少踩很多坑。3.3 验证连通性发起第一个对话请求服务启动之后先在NAS本机验证一下接口是否正常curl http://localhost:8899/v1/chat/completions \ -H Content-Type: application/json \ -d {model: qwen-plus-free, messages: [{role: user, content: 用一句话介绍NAS}]}如果返回正常你会看到类似下面的结构{ choices: [ { message: { role: assistant, content: NAS是网络附加存储设备可以集中存储和备份数据还能运行各种服务。 } } ] }我建议一定要在本地先用curl验证一次不要直接就从外部工具调。这样能确保OpenClaw的API层没问题后面出了问题也好分锅。curl通了之后我再通过OpenClaw的管理页面或者命令行工具跑一次真正的智能体任务比如让它总结一段网页内容确认它能按照system_prompt的设定去执行而不仅仅是返回一个普通对话。到这一步NAS上的AI模型接入就算基本成型了。3.4 接入外部聊天渠道让NAS里的AI“活”起来模型通了之后如果只是停留在curl层面就太可惜了。OpenClaw最大的价值在于作为智能体网关它能对接外部聊天渠道。我先后接入了Telegram和微信群机器人通过webhook方式效果都还不错。以Telegram为例配置过程分成两步。第一步在Telegram的BotFather那里创建一个机器人拿到机器人token第二步把token填到OpenClaw的配置里channels: telegram: enabled: true token: 你的Telegram机器人token重启容器后OpenClaw会自动调用Telegram的getUpdates接口你的NAS就成了一个真正能对话的AI机器人。你在手机上和机器人聊天它会把消息转发给七牛云的模型处理再把回答返回给你。接微信群机器人稍微特殊一点因为微信机器人受限比较多我用的是企业微信群的webhook方案。在OpenClaw配置里指定webhook地址之后往群里的机器人发消息消息会经过OpenClaw处理并调用AI模型最后回复到群里。这里有个细节要注意企业微信webhook有一个消息频率限制大概每秒钟只能发一条所以在设置智能体自动回复时最好在配置里加一条速率限制避免触发风控。接入渠道之后我就开始尝试给它安排一些实际任务。比如每天早上9点OpenClaw会调用七牛云的模型把前一天保存的RSS文章生成摘要发到我的Telegram。整个过程跑了一个多星期除了偶尔网络波动导致超时基本稳定。4. 常见问题与避坑实录4.1 401/403鉴权失败的排查这个是我遇到最多的问题没有之一。401一般表示API Key无效403表示没有权限访问该模型。排查思路按顺序来先检查API Key有没有复制完整。因为七牛云的密钥是一长串复制时很容易漏掉最后几位。我犯过的错误是在NAS的配置文件里粘贴时带了换行符导致Docker读取时整个key都错位了。解决方法是把配置里的值删掉重新粘贴粘贴完肉眼确认前后没有空格和空行。再确认是不是密钥类型不对。有些服务商区分“管理密钥”和“应用密钥”OpenClaw调用模型时只能用应用密钥。我在七牛云控制台创建密钥时专门建了一个标注为“应用”类型的密钥才避免后续权限问题。最后检查账号状态。免费额度是绑定实名认证的如果注册之后没有完成认证或者认证信息审核中调用时也会直接403。我当时就是实名认证通过前手贱去调接口然后一脸懵地排查了半天。4.2 模型名称不对导致404或400模型名称写错不一定报404有时候会报400 Bad Request提示类似于“model not found”。关键是要认清一点七牛云控制台里显示的模型名和模型厂商本身的官方名称未必一样。比如某模型在官方文档里叫qwen-max但七牛云免费额度对应的可能是qwen-max-free或者自定义的部署名。我建议在配置之前先去七牛云控制台“模型列表”或者“免费额度”页面把模型名称完整截图存下来。不要靠记忆不要用文档截图里的示例名要以控制台为准。还有个容易忽略的问题如果配置了多个模型比如一个对话模型和一个嵌入模型OpenClaw会要求你把不同用途的模型拆开配置。我当时把嵌入模型名也填到了对话模型的位置上结果OpenClaw自检的时候能过实际一调用就报错。所以配置时要看清楚每一项填的是哪个模型的名称。4.3 免费额度消耗快与限流问题免费额度看着不少但如果你拿它跑长时间对话、连续做长文本生成消耗速度还是很快的。我的经验是先用轻量模型跑日常任务把体积大、能力强的模型留着做关键任务。OpenClaw支持按渠道或按agent设置不同的模型我在Telegram机器人上单独指定了轻量模型在管理后台手动测试时才用更强的模型。限流也是免费额度的一个常见副作用。高峰期可能碰到429或者请求排队时间变长。遇到429不要立刻重试OpenClaw内置了退避重试机制但我还是建议你在配置里把max_retries调整到2或3同时设置一个较长的退避时间比如5秒。这样既能应对偶发限流又不会因为疯狂重试把额度烧得更快。七牛云控制台里有查看调用量统计的地方我每周会瞄一眼看看剩余额度还够不够。如果发现某天额度异常消耗我会去查当天的调用记录定位是哪个agent在狂跑。有一次我就发现是一个定时任务配置错了每隔五分钟就触发一次模型调用半夜直接把免费额度干掉了三分之一最后改成每天两次才算恢复正常。4.4 容器访问不通的自检清单如果你的OpenClaw容器起来了但怎么调都不通先别急着怀疑代码和配置按下面的清单一步步查先查容器状态docker ps | grep openclaw状态必须是Up如果显示Exited看日志docker logs openclaw --tail 50日志里一般会写明崩溃原因常见的是配置文件格式错误或者端口被占用。再查宿主机端口是否能通curl http://localhost:8899/health如果通了说明服务没问题问题出在外部访问链路。如果没通进入容器内部查docker exec -it openclaw sh curl http://127.0.0.1:8899/health容器内通了说明端口映射有问题容器内也不通说明服务本身挂了。一层层缩小范围比瞎猜高效得多。还有一个容易被忽略的点DNS问题。某些NAS上如果配置了自定义DNS可能解析不了七牛云的接口域名表现为OpenClaw日志里出现“连接超时”或者“Temporary failure in name resolution”。解决方法是把容器的DNS改成公共DNS比如在docker run参数里加--dns 8.8.8.8。4.5 几个很实用的避坑习惯这套环境跑了将近一个月我总结了几条经验全是真金白银换来的。第一密钥管理一定要规范。API Key不要直接写在Docker命令里也不要提交到任何代码仓库。我用的是配置文件挂载的方式同时把配置文件做了本地版本控制每次修改都留痕出问题能回溯。第二日志要定期清理。OpenClaw运行久了日志文件会很占空间尤其是在NAS这种存储资源有限的环境中。我在NAS上设置了一个每月定时任务把/docker/openclaw/logs目录下超过30天的日志自动压缩然后扔到冷存储目录。第三容器版本不要随便追新。我一开始看到OpenClaw发新版本就手痒更新结果新版本改了配置格式导致我花了两个小时重新适配配置。现在我的策略是当前版本跑得稳就不升级真要升级也要先看变更日志确认不破坏兼容性再动。第四七牛云的免费额度政策可能会调整所以我在日历里设置了一个每月提醒检查额度公告。一旦发现政策有变至少能提前准备迁移方案。5. 写在最后的一点体会整套折腾下来我最满意的不是“白嫖”到了免费额度而是把这个过程变成了一条可复用的流水线。现在我可以随时在NAS上新增一个智能体任务只要改配置、重启容器、测一下就能上线。NAS也从一个纯存储设备变成了一个能主动干活、甚至会定时给你汇报的小助手。如果让我给想照抄这套方案的朋友一个建议先想清楚你要让它干什么再去配置模型和渠道。我前期就是没想清楚一上来就接了一堆渠道和模型结果自己都不知道该用哪个入口反而浪费了不少免费额度。后来我只保留了一个Telegram机器人和一个定时任务整个系统立刻清爽了后续想要再加能力也容易。另外说句题外话白嫖额度这件事心态要放平。免费额度本质上是展示窗口不是长期饭票。用免费额度学到了怎么部署智能体、怎么配置模型接口、怎么排查网络链路这些经验比省下来的那点钱值钱多了。后面就算额度用完了我大概率也会继续用这个架构只是把模型源切换成其他服务商。毕竟基础设施已经跑通了换模型也就是改几行配置的事。