1. 微信里跑 OpenClaw 到底是怎么回事
微信接入 OpenClaw 这件事,最近在开发者圈子里讨论度很高。简单说,就是微信侧开放了一个叫 ClawBot 的入口,允许你把 OpenClaw 这类 Bot 能力挂到微信的 IM 接口上,之后在微信聊天窗口里发消息,就能触发后端 Bot 的响应。对做个人助手、自动化提醒、轻量客服的开发者来说,这意味着不用再单独装一个 App,直接在微信里就能完成调用闭环。
它适合谁?一类是想快速验证 Bot 想法的独立开发者,另一类是有内部工具需求、想把 OpenClaw 接到日常聊天流里的小团队。核心检索词就是「微信接入 OpenClaw」「ClawBot 配置」「OpenClaw IM 接口」。你需要的不是复杂的服务器运维,而是一条能跑通的链路:微信侧触发 → ClawBot 回调 → OpenClaw 处理 → 返回消息。
我先把整体链路拆开讲清楚,避免你配到一半不知道卡在哪。微信 ClawBot 本质是一个消息通道,它负责把用户在微信里发的指令转发到你配置的回调地址。OpenClaw 作为 Bot 运行时,接收这个请求、调用模型、生成回复,再把结果回传。中间最容易被忽略的是鉴权和模型调用这两段:回调地址要能被公网访问,模型调用要有一个稳定的 Key 和 Base URL。
这里就引出本篇的重点:模型调用这一段,我用 TaoToken 来做统一接入。它的作用是给你一个兼容常见接口格式的 Key 和 Base URL,省去你分别对接多家模型的麻烦。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。你只需要记住一件事:OpenClaw 里配置模型时,Base URL 填 TaoToken 的 API 地址,Key 填你在控制台生成的 Key,Model ID 填你要用的模型名。
很多人第一次配会问:微信那边到底要不要审核消息?这个问题我建议你先放一放,先把技术链路跑通。因为链路不通,讨论审核没有意义。你要做的是让一条「你好」从微信发出去,OpenClaw 能回一句「收到」,这就说明通道、鉴权、模型三段都活了。后面再根据业务需要调整提示词、加白名单、做日志。
还有一个常见误区:以为 ClawBot 是微信官方给所有账号开放的通用能力。实际上它更像一个插件入口,需要你的微信版本支持,并且按入口提示完成绑定。iOS 用户目前能比较早看到入口,安卓侧可能还要等版本推送。所以如果你在设置里找不到插件入口,先别怀疑配置,先确认微信是不是最新版。
我实测下来,整条链路最难的不是写代码,而是把三个地址对齐:ClawBot 里填的回调地址、你服务实际监听的地址、以及 OpenClaw 里配置的模型 Base URL。这三个只要有一个写错,表现就是消息发出去没反应,或者日志里报 401、连接失败。下面我按顺序给你可复制的配置,你照着填就行。
2. TaoToken 前置准备与 Key 获取
在动 OpenClaw 之前,先把模型调用这一层准备好。TaoToken 的定位是统一模型接入层,你拿到一个 Key 之后,可以在 OpenClaw、Cline、Codex 这类工具里复用同一套 Base URL 和 Key,不用每个工具单独配一遍。对个人开发者来说,这能省掉不少来回切换的麻烦。
第一步,打开控制台。地址是 https://taotoken.net/console ,用你的账号登录。进去之后找 API Keys 页面,路径是 https://taotoken.net/api-keys 。在这里点创建,生成一个新的 Key。生成后立刻复制保存,因为页面刷新后通常不再完整显示。这个 Key 就是你后面填到 OpenClaw 配置里的凭证。
第二步,确认 Base URL。TaoToken 的 API 根地址是 https://taotoken.net/api 。注意,很多工具要求你填的是带版本路径的地址,比如以 /v1 结尾。你在 OpenClaw 或其它客户端里配置时,如果文档写的是 OpenAI 兼容格式,一般填 https://taotoken.net/api/v1 。这个细节很关键,填错会直接导致 404 或连接失败。
第三步,选模型。你需要在 TaoToken 支持的模型列表里挑一个作为 OpenClaw 的默认模型。Model ID 要写准确,比如常见的对话模型名称。这个 ID 会出现在你后面的 settings 或 JSON 配置里。如果你不确定用哪个,先用一个通用对话模型跑通链路,后面再换。
为了让你少踩坑,我把三个关键参数列成表格,你配置时直接对照:
| 参数 | 填写内容 | 说明 |
|---|---|---|
| Base URL | https://taotoken.net/api/v1 | OpenAI 兼容格式常用此地址 |
| API Key | 控制台生成的 Key | 形如 sk- 开头,注意保密 |
| Model ID | 你选择的模型名 | 需与 TaoToken 支持的模型一致 |
这里有个安全提醒:Key 不要写死在会提交到公开仓库的代码里。建议用环境变量,比如在服务启动脚本里 export TAOTOKEN_API_KEY=你的Key,然后在代码里读取 process.env.TAOTOKEN_API_KEY。这样即使代码开源,Key 也不会泄露。
如果你后面要做长期编码或 Agent 类任务,可以了解下 Coding Plan,入口是 https://taotoken.net/coding-plan 。它更适合持续调用、多轮对话的场景。但本篇先聚焦微信 ClawBot 这条链路,你先把基础 Key 拿到手就够了。
拿到 Key 之后,建议先别急着配微信。先用一个最简单的 curl 请求验证 Key 和 Base URL 是否可用。这一步能帮你把「模型层」和「微信层」的问题分开。如果 curl 都不通,那问题一定在 Key 或地址上,跟 ClawBot 无关。验证命令我放在下一节,你复制改一下就能跑。
3. 可复制的 OpenClaw 与 ClawBot 配置片段
这一节是整篇的核心,我给你可以直接复制的配置。先说明文件位置:OpenClaw 的配置通常放在项目根目录的 config 或 settings 文件里,具体文件名以你拉下来的版本为准。如果你用的是 Claude Code 类的配置结构,settings.json 一般放在 ~/.claude/settings.json 或项目下的 .claude/settings.json。下面给的是通用 JSON 片段,你按自己项目的路径放。
先配模型层。把下面这段 JSON 里的 Key 和 Model ID 换成你自己的:
{ "env": { "TAOTOKEN_API_KEY": "sk-你的Key", "TAOTOKEN_BASE_URL": "https://taotoken.net/api/v1" }, "model": { "provider": "openai-compatible", "base_url": "https://taotoken.net/api/v1", "api_key_env": "TAOTOKEN_API_KEY", "model_id": "你的模型ID" } }如果你用的是 TOML 格式的配置,等价写法是这样:
[model] provider = "openai-compatible" base_url = "https://taotoken.net/api/v1" api_key_env = "TAOTOKEN_API_KEY" model_id = "你的模型ID" [env] TAOTOKEN_API_KEY = "sk-你的Key"注意,api_key_env 这种写法是让程序从环境变量读 Key,比直接写 api_key 更安全。如果你图省事直接写 api_key 字段,也能跑,但别提交到公开仓库。
接下来配 ClawBot 回调。微信 ClawBot 需要你提供一个公网可访问的回调地址,以及一个鉴权参数。回调地址形如 https://你的域名/clawbot/callback,鉴权参数通常是一个 token 或 secret,填在 ClawBot 的配置页里。你的服务端要校验这个 token,防止别人伪造请求。
一个最小可用的回调处理逻辑,用 Node.js 写大概是这样:
import express from "express"; const app = express(); app.use(express.json()); const CLAWBOT_TOKEN = process.env.CLAWBOT_TOKEN; app.post("/clawbot/callback", async (req, res) => { const token = req.headers["x-clawbot-token"]; if (token !== CLAWBOT_TOKEN) { return res.status(401).json({ error: "unauthorized" }); } const userMessage = req.body.message; const reply = await callOpenClaw(userMessage); res.json({ reply }); }); app.listen(3000, () => console.log("clawbot callback on 3000"));这里的 callOpenClaw 就是你调用 OpenClaw 或直接调用模型的地方。如果你暂时不想接 OpenClaw 运行时,也可以先直接调 TaoToken 的对话接口,验证链路。调用时带上 Authorization: Bearer 你的Key,请求体里放 model 和 messages。
ClawBot 侧要填的三件套,我再强调一遍:Base URL 填 https://taotoken.net/api/v1 ,Key 填你的 TaoToken Key,Model ID 填你选的模型。这三件套在 Cline、Codex auth.json、CC Switch 这类工具里也是同样的逻辑。如果你用的是 Codex 的 auth.json,结构类似:
{ "base_url": "https://taotoken.net/api/v1", "api_key": "sk-你的Key", "model": "你的模型ID" }配置完成后,重启你的服务,确认监听端口和回调路径一致。然后用 curl 本地测一下回调:
curl -X POST http://localhost:3000/clawbot/callback \ -H "Content-Type: application/json" \ -H "x-clawbot-token: 你的token" \ -d '{"message":"你好"}'如果返回 {"reply":"..."},说明服务端逻辑通了。接下来才是微信侧真正发消息验证。这一步别跳过,本地通了再上微信,排障会轻松很多。
4. 验证请求与成功结果
配置写完,接下来是验证。验证分两层:先验证模型调用,再验证微信到 OpenClaw 的完整闭环。很多人一上来就在微信里发消息,结果没反应,也不知道是哪一层断了。按我的顺序来,能省很多时间。
第一层,验证 TaoToken 模型调用。用 curl 直接打对话接口:
curl https://taotoken.net/api/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer sk-你的Key" \ -d '{ "model": "你的模型ID", "messages": [{"role": "user", "content": "用一句话介绍你自己"}] }'成功的话,你会看到返回 JSON 里有 choices 数组,里面是模型的回复内容。如果这里报 401,说明 Key 不对或没带上;如果报 404,多半是 Base URL 少了 /v1;如果报 model not found,就是 Model ID 写错了。这一步通了,模型层就没问题。
第二层,验证本地回调。用上一节的 curl 命令打你的 /clawbot/callback,确认返回 reply 字段。如果返回 401,检查 x-clawbot-token 是否和 ClawBot 配置里的一致。如果返回 500,看服务端日志,通常是 callOpenClaw 里抛异常了,比如 Key 没读到、网络不通。
第三层,微信侧真机验证。打开微信,进入 ClawBot 插件入口,按提示绑定你的回调地址和 token。绑定成功后,在微信里发送一条消息,比如「现在几点」。观察两件事:你的服务端日志有没有收到请求;微信里有没有收到 Bot 回复。
成功的结果长这样:服务端日志打印出收到的 message 和 token 校验通过;微信聊天窗口里出现 Bot 的回复文本。如果日志有请求但微信没回复,说明你的响应格式不对,ClawBot 可能要求特定字段,比如 reply 或 text,你要对照它的文档调整返回结构。
我建议你在回调里加一行日志,把请求体和响应体都打出来。这样出问题时一眼就能看出是请求没进来,还是响应格式不对。日志示例:
console.log("incoming:", JSON.stringify(req.body)); console.log("reply:", reply);另外,微信侧的消息可能会有重试机制。如果你的服务处理慢,ClawBot 可能重复投递同一条消息。你可以在回调里加一个简单的去重,比如用 message id 做缓存,短时间内相同 id 直接返回上次结果。这个不是必须,但做生产级 Bot 时很有用。
验证通过后,你可以试着换不同的提示词,观察 OpenClaw 的回复是否符合预期。如果回复内容跑偏,问题通常在提示词或模型选择上,不在链路。链路一旦通了,后面就是调优的事。
5. 本篇常见错误排查
这一节我把最容易遇到的报错列出来,对照着查。每个报错我都给出原因和动作,你按顺序排查就行。
401 unauthorized。这个最常见,出现在两个地方:调 TaoToken 时 401,说明 Key 错了、没带 Authorization 头、或者 Key 被禁用。检查你的 Key 是不是完整复制,有没有多余空格。调 ClawBot 回调时 401,说明 x-clawbot-token 和配置不一致,重新核对 ClawBot 页面里填的 token。
local proxy failed 或 connection refused。这个通常出现在你本地起了代理类工具,或者服务没启动。先确认你的 Node 服务在监听 3000 端口,用 curl localhost:3000 测一下。如果服务在容器里,确认端口映射对不对。这个报错跟 TaoToken 无关,是本地网络或服务状态问题。
reading choices 报错,比如 cannot read property choices of undefined。这说明你解析响应时,返回体里没有 choices 字段。原因可能是请求失败返回了错误 JSON,或者你请求的地址不对。先打印完整响应体,确认是不是 401 或 404 的错误信息被当成正常响应解析了。
OAuth 相关报错。如果你用的是 Claude Code 或类似工具,可能会遇到 OAuth 登录失败。这类工具如果支持 API Key 模式,建议直接切到 Key 模式,填 Base URL 和 Key,绕开 OAuth。Claude Code 的接入文档在 https://taotoken.net/doc ,里面有具体配置说明。
model not found。Model ID 写错,或者你选的模型在当前 Key 的权限范围内不可用。去 TaoToken 控制台确认模型列表,复制准确的 ID。注意大小写和连字符,别手打。
回调地址无法访问。ClawBot 要求公网可访问,你本地 localhost 它访问不到。开发阶段可以用内网穿透工具把本地端口暴露出去,但注意不要用违规的网络工具。生产环境建议直接部署到有公网 IP 的服务器,配好 HTTPS。
消息重复。前面提过,ClawBot 可能重试。加去重逻辑,或者让回调尽快返回,把耗时操作放异步队列。
返回格式不对。ClawBot 对响应字段有要求,你返回 {"reply":"..."} 如果它不认,就换成它文档里写的字段名。这个只能对照文档调,没有通用解。
排查时记住一个原则:先分层,再定位。模型层用 curl 单独测,回调层用 curl 单独测,最后才测微信。每层都通了,整条链路就不会有大问题。如果你在排障过程中需要看接口细节,接入文档在 https://taotoken.net/doc ,API Keys 在 https://taotoken.net/api-keys 。
6. 把这条链路用起来
链路跑通之后,你可以做几件实际的事。第一,把 OpenClaw 的提示词改成你的业务场景,比如日程提醒、资料查询、简单问答。第二,加白名单,只允许特定微信用户触发,避免被陌生人调用。第三,加日志和用量统计,观察每天调用次数和模型消耗。
如果你要长期跑编码或 Agent 类任务,可以考虑 Coding Plan,入口是 https://taotoken.net/coding-plan ,它更适合持续多轮调用的场景。如果只是想先体验模型对话效果,可以到 https://taotoken.net 的模型对话页面试试。需要管理多个 Key 或查看用量,去控制台 https://taotoken.net/console 。
我自己的经验是,先把最小闭环跑通,别一上来就堆功能。微信 ClawBot 这条链路,最容易出问题的地方永远是配置地址和鉴权参数,而不是模型本身。你把 Base URL、Key、Model ID 这三件套对齐,再把回调 token 校验加上,基本就能稳定运行。后面遇到新报错,回到第 5 节对照排查,大部分都能自己解决。