1. 为什么 OpenClaw 接微信总卡在“最后一步”
OpenClaw 对接微信这件事,真正难的不是装插件,而是让消息从微信进来、经过模型处理、再原路返回。我见过太多人卡在扫码之后:终端显示登录成功,微信里发消息却石沉大海;或者插件加载时报 ID 不匹配,重启几次也没用。问题往往出在三个地方——通道没配对、模型调用没接上、回调地址写错。
这篇教程面向想用 OpenClaw 做微信智能助手的人,不管你选扣子(Coze)云端部署还是本地跑,都能跟着走完一次端到端消息往返。核心思路是:把微信通道和模型调用拆开管。微信侧负责收发包,模型侧统一走 TaoToken 的 Key 和 API 通道,这样换模型、加额度、排查 401 都不用动微信配置。
先说清楚 OpenClaw 是什么:它是一个智能体开发框架,装上微信插件后,微信消息会被转成事件推给 OpenClaw,OpenClaw 调用你配置的模型生成回复,再通过微信通道发回去。适合谁?想做微信自动客服、群消息机器人、业务通知自动化的开发者,以及不想从零写微信协议对接的人。
扣子(Coze)平台的价值在于它预装了 OpenClaw 运行环境,点几下就能起一个副本,还带 AI 排错。但云端部署有个前提:模型调用得有个稳定的出口。这就是 TaoToken 要解决的问题——它把模型 API 的 Key 和通道统一管起来,OpenClaw 里只填一个 Base URL 和一个 Key,后面换模型只改 Model ID。
我实测下来,整个链路最容易出错的环节是回调校验和模型鉴权。前者表现为“消息发出去了但没回复”,后者表现为日志里出现 401 或local proxy failed。下面按顺序把环境、配置、验证、排障走一遍,每一步都给可复制的片段。
2. TaoToken 前置:统一 Key 与 API 通道怎么准备
在动 OpenClaw 的配置文件之前,先把模型侧的出口准备好。TaoToken 的角色是统一管理模型调用的 Key 和 API 通道,OpenClaw 不需要知道背后是哪个模型厂商,只认一个 Base URL 和一个 Key。
第一步,打开官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 注册并登录。登录后进控制台,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。在控制台里创建 API Key,建议按项目命名,比如openclaw-wechat,方便后面排查是哪个应用在调用。
创建完 Key 之后,去 API Keys 页面复制,地址 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。这个 Key 只显示一次,复制后先存到本地临时文件,别直接贴到聊天窗口里。
接下来确认 API 端点。TaoToken 的 API 根地址是 https://taotoken.net/api ,注意这个地址不带 UTM 参数,配置里就写这个。OpenClaw 的模型配置通常需要三个值:Base URL、API Key、Model ID。Base URL 填https://taotoken.net/api,Key 填刚才复制的,Model ID 填你要用的模型标识,比如claude-sonnet-4-5或gpt-4o这类,具体以控制台模型列表为准。
如果你不确定该选哪个模型,可以先到模型对话页面试一下,地址 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。在对话页里选模型、发一句话,确认能正常返回,再把这个 Model ID 填到 OpenClaw 配置里。这一步能省掉后面很多“模型不存在”的报错。
对于长期跑编码或 Agent 场景的,可以看下 Coding Plan,地址 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,它更适合高频调用。微信机器人如果只是低频回复,按量用 API Key 就够了。
准备好这三个值之后,先别急着改 OpenClaw。打开终端,用 curl 直接测一下模型通道通不通:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "ping"}] }'如果返回里有choices字段和内容,说明模型通道没问题。如果返回 401,检查 Key 有没有复制全;如果返回model not found,回控制台确认 Model ID 拼写。这一步过了,再进 OpenClaw 配置,能少走一半弯路。
3. 可复制配置:OpenClaw 微信插件与模型通道
这一节给可直接复制的配置片段。OpenClaw 的配置分两块:微信插件配置和模型通道配置。不同部署形态路径略有差异,扣子云端一般在项目根目录的openclaw.config.json,本地部署通常在~/.openclaw/config.json或项目下的config/openclaw.toml。下面以 JSON 为主,TOML 版本附在后面。
先看微信插件部分。在配置文件里找到plugins或channels节点,加入微信通道:
{ "channels": { "wechat": { "enabled": true, "plugin": "openclaw-wechat", "loginMode": "qrcode", "gateway": { "host": "127.0.0.1", "port": 18790, "callbackPath": "/wechat/callback" }, "autoReconnect": true } } }这里port是本地网关监听端口,callbackPath是微信消息回调路径。如果你在扣子云端部署,host可能由平台分配,不要改成0.0.0.0以外的值,除非平台文档明确允许。
接着是模型通道配置。OpenClaw 里通常有一个models或providers节点,把 TaoToken 作为 provider 加进去:
{ "providers": { "taotoken": { "type": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "你的TaoTokenKey", "models": { "default": "claude-sonnet-4-5", "fast": "gpt-4o-mini" } } }, "agent": { "defaultProvider": "taotoken", "defaultModel": "claude-sonnet-4-5" } }注意type写openai-compatible,因为 TaoToken 的 API 兼容 OpenAI 的 chat completions 格式。baseUrl结尾不要带/v1,OpenClaw 会自己拼/v1/chat/completions;如果你用的版本要求带/v1,以实际报错为准调整。
如果你更习惯 TOML,等价配置如下:
[channels.wechat] enabled = true plugin = "openclaw-wechat" loginMode = "qrcode" autoReconnect = true [channels.wechat.gateway] host = "127.0.0.1" port = 18790 callbackPath = "/wechat/callback" [providers.taotoken] type = "openai-compatible" baseUrl = "https://taotoken.net/api" apiKey = "你的TaoTokenKey" [providers.taotoken.models] default = "claude-sonnet-4-5" fast = "gpt-4o-mini" [agent] defaultProvider = "taotoken" defaultModel = "claude-sonnet-4-5"配置写完后,先跑一次校验命令,别直接启动:
openclaw doctor --fix这个命令会检查插件 ID、端口占用、配置文件语法。如果输出里有plugin id mismatch,它会尝试自动修正。修完再启动网关:
openclaw gateway start --config ./openclaw.config.json启动日志里应该能看到wechat plugin loaded和provider taotoken registered。如果只看到前者没看到后者,说明模型配置节点名字不对,回配置文件检查providers拼写。
扣子云端部署的话,配置入口在「OpenClaw 控制台」的环境变量或配置文件编辑区,把上面 JSON 里的providers部分贴进去,Key 填到平台密钥管理里,不要明文写在配置里。扣子的 AI 助手可以直接问“OpenClaw 模型 provider 怎么配”,它会给出对应版本的字段名。
4. 验证请求:从扫码到消息往返成功
配置就绪后,走一遍完整验证。第一步触发微信登录:
openclaw wechat login终端会输出一个二维码,用手机微信扫,点确认登录。扫码后终端应出现:
[wechat] 与微信连接成功! [wechat] OpenClaw version: x.x.x [gateway] restarted on 127.0.0.1:18790看到这三行,说明微信通道通了。如果只显示二维码不刷新,检查网络和端口占用,lsof -i :18790看有没有别的进程占着。
第二步,在微信里找到「微信ClawBot」会话,发一条「你好」。正常情况几秒内会收到回复。如果没回复,先看网关日志:
openclaw gateway logs --tail 50日志里如果出现POST /v1/chat/completions 200,说明模型调用成功,问题在微信回包;如果出现401,说明 TaoToken Key 不对;如果出现local proxy failed,说明网关到模型通道的网络有问题。
第三步,做一次端到端确认。在日志里找这条链路:
[wechat] recv message from user: 你好 [agent] call provider taotoken model claude-sonnet-4-5 [provider] response 200, tokens: 12 [wechat] send reply: 你好,我是...四行都齐了,说明消息往返完全打通。这时候你可以改defaultModel换一个模型,重启网关再发一条,验证模型切换是否生效。换模型只改配置里的 Model ID,Base URL 和 Key 不动,这就是统一 Key 接入的好处。
如果你在扣子云端,验证方式类似,但日志在平台的「运行日志」面板看。扣子 AI 助手可以直接粘贴日志问“这条报错什么意思”,它会定位到具体配置项。
补充一个回调校验的细节:微信插件启动后会向callbackPath注册回调,如果平台侧回调地址填的是公网域名,要确保域名能访问到网关端口。本地部署一般用内网穿透工具把18790暴露出去,但注意不要用违规的网络工具,扣子云端部署则不需要自己处理公网映射。
5. 常见报错排查:401、local proxy failed、reading choices
这一节对照真实报错给排查路径。先列一个速查表:
| 报错关键词 | 大概率原因 | 处理动作 |
|---|---|---|
| 401 Unauthorized | TaoToken Key 错误或过期 | 重新复制 Key,检查 Bearer 前缀 |
| local proxy failed | 网关到模型通道网络不通 | 检查 Base URL,curl 直连测试 |
| reading choices | 返回体不是预期 JSON | 检查 Model ID 和 API 版本 |
| OAuth / 扫码无响应 | 微信登录态失效 | 重新openclaw wechat login |
| plugin id mismatch | 插件版本与配置不符 | openclaw doctor --fix |
401 是最常见的。日志里看到401时,先确认配置文件里apiKey没有多余空格,然后 curl 直连 TaoToken API 测一次。如果 curl 也 401,回控制台重新生成 Key。注意 Key 只在创建时显示一次,丢了就重建。
local proxy failed通常出现在网关尝试转发请求但连不上 Base URL。检查baseUrl是不是写成了https://taotoken.net/api/带尾斜杠,有些版本会拼成双斜杠导致失败。改成不带尾斜杠再试。如果还不行,在网关所在机器上curl -I https://taotoken.net/api看能不能通。
reading choices这个报错说明 OpenClaw 拿到了响应但解析不出choices字段。常见原因是 Model ID 写错,比如把claude-sonnet-4-5写成claude-sonnet-4.5,或者用了 TaoToken 不支持的模型名。回控制台模型列表核对,或者到模型对话页面确认该模型可用。
OAuth 相关报错多出现在扫码环节。如果扫码后终端一直不刷新,先openclaw gateway stop停掉网关,删掉~/.openclaw/wechat-session缓存目录,再重新openclaw wechat login。扣子云端则在控制台点「重新授权」。
如果你用的是 Cline MCP 或 Codex 这类工具接 OpenClaw,配置里同样要写全三件套:Base URL 填https://taotoken.net/api,Key 填 TaoToken 的 Key,Model ID 填控制台里的模型名。少任何一个都会报鉴权或模型不存在。CC Switch 切换配置时,注意别把微信通道的配置覆盖掉,建议模型配置和通道配置分文件管理。
还有一个坑:openclaw doctor --fix会重写配置文件,如果你手动加过注释,修完可能丢。建议改配置前先备份一份openclaw.config.json.bak。
6. 长期运行与 CTA:把模型通道管起来
跑通一次消息往返只是开始,真正要长期用,得把模型通道和微信通道分开维护。微信通道的稳定性取决于登录态和网关进程,模型通道的稳定性取决于 Key 额度和 API 连通性。TaoToken 在这里的价值是让你不用在 OpenClaw 里维护多个厂商的 Key,换模型只改一个 Model ID。
如果你打算把微信机器人做成长期服务,建议做三件事:第一,把autoReconnect设为true,网关断线自动重连;第二,用openclaw gateway logs配合日志轮转,避免日志撑满磁盘;第三,模型侧用 Coding Plan 或按量 Key 做好额度监控,避免突然欠费导致 401。
排障和接入相关的文档入口在这里:接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API Keys 管理 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。遇到 401 或模型不存在,先看文档里的模型列表和鉴权说明。
验证模型是否可用,直接到模型对话页面发一句话最快:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。长期跑编码或 Agent 场景,看 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。
最后留一个实用技巧:OpenClaw 的微信插件支持多模型路由,你可以在providers.taotoken.models里配default和fast两个模型,然后在 agent 配置里按消息类型分流。比如群消息用fast省额度,私聊用default保质量。改完配置记得openclaw doctor --fix再重启网关,别直接热加载,微信通道对配置变更比较敏感。