☰
OpenClaw(ClawDbot)一键部署避坑指南:从401报错到微信自动化接入的TaoToken配置实录
2026/10/8 5:53:48 网站建设 项目流程

1. OpenClaw 部署后 401 与 local proxy failed 到底卡在哪

OpenClaw(旧称 ClawDbot、Moltbot)是一个开源的 AI 自动化代理,能通过自然语言指令完成文档生成、网页抓取、定时提醒、多平台消息同步这类重复工作。它本身不带大模型推理能力,必须外接一个兼容 OpenAI 协议的模型服务,才能“听懂指令、执行任务”。适合想用微信、飞书、钉钉、QQ 当遥控器、把服务器当执行器的个人开发者和轻量团队。

我见过太多人卡在同一个地方:容器起来了,Web 控制台能打开,但一发消息就报401 Unauthorized,或者日志里刷local proxy failed。这两个报错看着吓人,其实指向的是同一类问题——模型通道没配对。OpenClaw 的请求链路是:IM 消息 → OpenClaw gateway(默认 18789 端口)→ 模型 provider → 返回结果。401 说明 provider 那一层拒绝了你的 Key;local proxy failed 说明 gateway 根本没找到可用的 provider 配置,请求发出去就断了。

新手最容易踩的坑有三个。第一,把 API Key 填进了错误的字段,比如把apiKey写成了accessKey,或者 Key 前后带了空格和换行。第二,Base URL 写成了网页控制台地址,而不是 API 端点地址。第三,配置文件路径搞错,OpenClaw 读的是/root/.openclaw/openclaw.json,你改的却是旧版/root/.clawdbot/下的文件,改完重启当然不生效。

这篇就按“从报错到连通”的顺序走一遍。我会用 TaoToken 作为模型接入层来演示,因为它提供 OpenAI 兼容接口,Base URL 和 Key 的配置方式和 OpenClaw 的 provider 结构能直接对上。你跟着把环境变量和 JSON 片段复制进去,10 分钟内能跑通“微信发指令 → 服务器执行 → 微信收结果”的闭环。下面每一步都带可复制的命令和验证动作,报错对照表放在第 5 节。

2. TaoToken 前置准备:Base URL、Key 与模型 ID 三件套

在动 OpenClaw 的配置文件之前,先把模型接入层准备好。TaoToken 在这里扮演的角色是“模型网关”——OpenClaw 不直接连各家模型,而是把请求发给 TaoToken 的兼容端点,由它转发并返回结果。这样做的好处是:你只需要维护一套 Base URL + Key + Model ID,换模型时改一个字段就行,不用动 OpenClaw 的对接逻辑。

先拿 Key。访问 TaoToken 官网https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=,注册登录后进入控制台,在 API Keys 页面创建一个新 Key。创建时建议起个能认出来的名字,比如openclaw-wechat,方便以后按用途吊销。Key 只在创建时完整显示一次,复制后存到加密记事本里,别直接贴在聊天窗口。

Base URL 用https://taotoken.net/api,注意这里不加任何查询参数。OpenClaw 的 provider 配置里baseUrl字段填这个值,后面它会自动拼/v1/chat/completions这类路径。如果你填成带 UTM 的网页地址,请求会打到前端页面而不是 API,结果就是 404 或者返回一段 HTML,日志里看起来像“解析失败”。

Model ID 填你实际要调用的模型标识。TaoToken 控制台的模型列表里能看到可用模型,复制那个 ID 字符串,比如claude-sonnet-4-5或gpt-4o这类格式。注意 Model ID 是大小写敏感的,别自己改写。如果你不确定用哪个,先在模型对话页面https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite里发一条测试消息,确认能通再把 ID 抄进配置。

三件套凑齐后,先在本地用 curl 验证一次,别急着改 OpenClaw。这一步能提前排除 Key 无效、额度不足、模型名写错的问题:

curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "你的ModelID", "messages": [{"role": "user", "content": "回复ok"}] }'

返回 JSON 里choices[0].message.content有内容,说明三件套没问题。如果返回401,检查 Key 是否复制完整、有没有多余空格;如果返回model not found,回控制台核对 Model ID 拼写。这一步过了,再去配 OpenClaw,能省掉一半排查时间。

提示:Key 不要写进会提交到 Git 的文件里。OpenClaw 的配置文件在服务器上,权限设成600,只让 root 可读。

3. 可复制配置:openclaw.json 与环境变量片段

OpenClaw 的模型配置集中在/root/.openclaw/openclaw.json。如果你是从旧版 ClawDbot 升上来的,目录可能是/root/.clawdbot/,两个路径都检查一下,以实际存在的为准。下面这份 JSON 是完整可用的最小配置,把apiKey和models[].id替换成你自己的值即可。

{ "models": { "mode": "merge", "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "你的TaoToken Key", "api": "openai-completions", "models": [ { "id": "你的ModelID", "name": "taotoken-main", "reasoning": false } ] } } }, "gateway": { "port": 18789, "host": "0.0.0.0" }, "channels": { "wechat": { "enabled": false }, "feishu": { "enabled": false }, "dingtalk": { "enabled": false }, "qq": { "enabled": false } } }

几个字段要重点核对。baseUrl必须是https://taotoken.net/api,结尾不要带斜杠,也不要加/v1——OpenClaw 的openai-completions适配器会自己补路径,你多写一层就变成/api/v1/v1/...,直接 404。api字段固定写openai-completions,这是告诉 OpenClaw 用 OpenAI 兼容协议发请求。models[].id就是第 2 节里验证过的 Model ID,name是你自己起的别名,随便写但别和别的 provider 重名。

如果你更习惯用环境变量管理密钥,OpenClaw 也支持在启动时读取。可以在 systemd 的 service 文件里加Environment行,或者写一个/root/.openclaw/.env:

# /root/.openclaw/.env TAOTOKEN_API_KEY=你的TaoToken Key TAOTOKEN_BASE_URL=https://taotoken.net/api TAOTOKEN_MODEL_ID=你的ModelID

然后在openclaw.json里用${TAOTOKEN_API_KEY}这种占位符引用。这样配置文件可以安全地备份和分享,Key 单独存放。改完配置后重启服务:

systemctl restart openclaw || systemctl restart clawdbot systemctl status openclaw -l || systemctl status clawdbot -l

状态显示active (running)才算起来。如果显示failed,先看journalctl -u openclaw -n 50的报错,八成是 JSON 格式错了——比如多了一个逗号、少了一个引号。可以用python3 -m json.tool /root/.openclaw/openclaw.json校验格式,能打印出格式化 JSON 就说明语法没问题。

端口方面,18789 是 gateway 通信端口,必须放通。如果你用 firewalld:

firewall-cmd --add-port=18789/tcp --permanent firewall-cmd --reload firewall-cmd --list-ports | grep 18789

云服务器还要在控制台的安全组里放通 18789,两层都放通才算数。很多人只改了系统防火墙,忘了安全组,结果本地 curl 通、外部 IM 回调不通,日志里就是local proxy failed。

4. 验证请求:从 health 检查到微信消息自动响应

配置写完,先做两层验证,再碰 IM 对接。第一层验证 gateway 本身活着:

curl http://localhost:18789/health

返回{"status":"ok"}或类似 success 字样,说明 OpenClaw 主进程正常。如果连接被拒绝,说明服务没起来或者端口没监听,回去看systemctl status。

第二层验证模型通道。OpenClaw 一般提供一个测试命令,或者你可以直接看日志里有没有 provider 初始化成功的记录:

openclaw logs --module models | tail -20

看到provider taotoken initialized这类字样,说明配置被正确加载。如果看到no provider available,就是models.providers那层没解析到,检查 JSON 层级有没有写错——providers是models的子对象,别写成平级。

两层都过了,再发一条真实请求。OpenClaw 的 Web 控制台默认在http://你的服务器IP:18789,打开后应该能看到对话界面。在里面发一句“你好”,如果收到模型回复,说明整条链路通了。这一步收到回复,再去接微信,否则微信那边报错你分不清是模型问题还是 IM 问题。

微信对接走企业微信机器人。个人微信不能直接接,但你可以把企业微信机器人拉进群,用群消息触发。配置片段如下,把channels.wechat那段替换进openclaw.json:

"wechat": { "enabled": true, "corpid": "你的企业微信CorpID", "corpsecret": "你的应用Secret", "agentid": "你的应用AgentID", "webhookUrl": "你的企业微信机器人Webhook地址" }

corpid在企业微信管理后台“我的企业”页面底部,corpsecret和agentid在自建应用的详情页。webhookUrl是群机器人的地址,在群设置里添加机器人后能拿到。四个值缺一不可,少一个就会在日志里报wechat channel init failed。

改完重启服务,然后在企业微信群里 @机器人 发一句“生成一份周报模板”。正常的话 30 秒内会收到回复。如果没反应,先看日志:

openclaw logs --module channels | grep -i wechat | tail -30

日志里如果出现401,说明模型 Key 有问题,回到第 2 节重新验证;如果出现callback failed或local proxy failed,说明回调地址或端口不通,检查webhookUrl是否可达、18789 是否对公网放通。微信这条通了,飞书、钉钉、QQ 的接法逻辑一样,只是凭证字段名不同,照着channels结构加就行。

5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth

这一节按真实报错逐条对照。你遇到哪个,直接跳到对应条目。

401 Unauthorized。最常见的原因是 Key 无效或过期。先确认 Key 有没有复制完整——TaoToken 的 Key 通常是一长串,中间没有空格。然后确认Authorization头格式是Bearer 你的Key,Bearer和 Key 之间一个空格。如果 Key 没错,检查是不是把 Key 填到了baseUrl字段里,这种低级错误在复制粘贴时很常见。还有一种情况是 Key 有额度但被限流,返回体里会带rate limit字样,等几分钟再试。

local proxy failed。这个报错的意思是 OpenClaw 的 gateway 找不到可用的上游 provider。排查顺序:先看openclaw.json里models.providers下面有没有你配的 provider,名字对不对;再看baseUrl是不是https://taotoken.net/api,有没有多写/v1;最后看服务有没有重启,配置改了不重启是不生效的。如果这三步都对还报,用curl直接打https://taotoken.net/api/v1/chat/completions确认网络能通,排除服务器出网被限制的情况。

reading choices 相关报错。完整报错通常是error reading choices: unexpected end of JSON input或cannot read property 'choices' of undefined。这说明请求发出去了,但返回的不是标准 OpenAI 格式。原因一般是 Base URL 指到了网页地址而不是 API 地址,返回了一段 HTML,解析器读不到choices字段。把baseUrl改回https://taotoken.net/api即可。另一种可能是 Model ID 写错,服务端返回了错误 JSON,同样没有choices,回控制台核对模型名。

OAuth 相关报错。如果你在配置里看到OAuth token expired或invalid_grant,说明你用的是需要 OAuth 刷新的接入方式,但 refresh token 失效了。OpenClaw 接 TaoToken 用的是 API Key 模式,不涉及 OAuth,所以出现这个报错通常是你混用了别的配置模板。检查openclaw.json里有没有残留的oauth字段,删掉,统一用apiKey。

Codex auth.json 场景。如果你同时用 Codex 类工具,它的凭证文件在~/.codex/auth.json,格式和 OpenClaw 不同。别把 Codex 的 auth.json 直接拷给 OpenClaw,两者字段不兼容。OpenClaw 只认openclaw.json里的models.providers结构。需要同时用的话,各自维护各自的配置文件,Key 可以共用同一个 TaoToken Key。

CC Switch / Cline MCP 场景。如果你用 CC Switch 或 Cline 的 MCP 配置,记住三件套要写全:Base URL 填https://taotoken.net/api,Key 填 TaoToken Key,Model ID 填控制台里的模型标识。三者缺一,请求就会失败。MCP 配置里通常有env字段,把这三个值写进去,别只写 Key 不写 Base URL。

排查完记得每次改配置都重启服务,并且用python3 -m json.tool校验 JSON。90% 的“改了没用”都是没重启或者 JSON 语法错。

6. 语义一致 CTA:把闭环跑起来之后

链路通了之后,日常维护其实很轻。几个实用动作:每周看一眼openclaw logs --module channels有没有异常回调;每月轮换一次 TaoToken Key,在控制台吊销旧的、创建新的,更新openclaw.json后重启;配置文件用tar -zcvf openclaw-backup-$(date +%Y%m%d).tar.gz /root/.openclaw备份,存到对象存储里。

如果你还没拿到 Key,去 API Keys 页面https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite创建一个,创建时把 Key 存好。配置过程中卡在字段含义上,接入文档https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite里有每个参数的说明和示例。想先确认模型能不能用,模型对话页面https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite可以直接发消息测试,不用改任何配置。

如果你打算长期跑编码类或 Agent 类任务,Coding Planhttps://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite的额度模型更适合高频调用,比按次计费省心。控制台https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite里能看调用量和余额,设个消费限额避免超额。

最后说个实测经验:OpenClaw 的配置文件对缩进敏感,用空格别用 Tab,改完先python3 -m json.tool过一遍再重启。微信回调如果时通时不通,多半是服务器带宽或安全组限流,把 18789 的入站规则收紧到企业微信的出口 IP 段,既稳又安全。链路跑通后,你可以在channels里把飞书、钉钉、QQ 逐个打开,每个加完都单独发一条测试消息,别一次性全开——出问题时你分不清是哪个通道的锅。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询