最近一直在折腾家里的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_PORT=8899 \ --restart=always \ openclaw/openclaw:latest--restart=always这个参数一定要加,不然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机器人和一个定时任务,整个系统立刻清爽了,后续想要再加能力也容易。
另外说句题外话,白嫖额度这件事,心态要放平。免费额度本质上是展示窗口,不是长期饭票。用免费额度学到了怎么部署智能体、怎么配置模型接口、怎么排查网络链路,这些经验比省下来的那点钱值钱多了。后面就算额度用完了,我大概率也会继续用这个架构,只是把模型源切换成其他服务商。毕竟基础设施已经跑通了,换模型也就是改几行配置的事。