1. OpenClaw 微信对接前,先把模型通道这件事想清楚
OpenClaw(龙虾助手)本身是一个本地运行的智能体网关,它负责把微信、企业微信这类消息通道收到的内容,转成模型请求再返回结果。很多人卡住的地方不是微信扫码,而是模型 API 这一层:通道通了,消息也进来了,但模型请求 401、超时、或者返回体里读不到 choices,最后表现就是“微信能收到消息,机器人不回复”。
这篇内容面向需要把 OpenClaw 接入微信/企业微信的开发者,重点讲清楚三件事:企业微信网关的配置片段怎么写、TaoToken 统一 Key 的 endpoint 与鉴权参数填在哪个字段、以及一条消息回环怎么验证收发链路真的通了。适合已经装好 OpenClaw、手里有企业微信机器人凭据、但还没把模型通道理顺的人。
我试过把模型通道和消息通道分开排查,效率会高很多。消息通道负责“消息进得来、回得去”,模型通道负责“回的内容是模型生成的”。两者混在一起看日志,很容易误判。所以下面会先讲模型通道的前置准备,再讲企业微信网关配置,最后用一条回环消息把两段链路串起来验证。
OpenClaw 的版本建议不低于 v2026.3.1,用openclaw --version确认。网关状态用openclaw gateway status看,必须是 running。企业微信这边,你需要先在管理后台创建一个智能机器人,拿到 Bot ID 和 Secret,连接方式选长连接(WebSocket),这样本地部署不需要公网 IP。
模型通道这块,OpenClaw 支持多种 provider。如果你希望一个 Key 同时覆盖对话、代码、Agent 场景,可以用 TaoToken 的统一 Key。它的 API 地址是https://taotoken.net/api,在 OpenClaw 的模型配置里,Base URL 填这个,API Key 填你申请到的 Key,Model ID 填你要用的模型名。注意 Base URL 不要带多余路径,OpenClaw 会自己拼接/v1/chat/completions这类端点。
这里有个容易忽略的点:OpenClaw 的模型配置和通道配置是分开的两个文件区域。模型配置通常在~/.openclaw/openclaw.json的models或providers段,通道配置在channels段。很多人把 API Key 填到了通道的 secret 字段里,结果模型请求一直 401。企业微信的 Secret 是机器人密钥,不是模型 Key,这两个不能混。
如果你还没拿到 TaoToken 的 Key,可以去控制台创建一个。创建时注意权限范围,如果你只是做对话验证,选基础对话权限就够;如果后面要跑 Coding Plan 或 Agent 任务,再按需开对应权限。Key 创建后只显示一次,记得保存好。
模型通道确认可用的一个简单办法,是先用命令行直接发一条请求,不经过微信。比如用 curl 打 TaoToken 的 API:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "你的ModelID", "messages": [{"role": "user", "content": "你好"}] }'如果返回体里有choices数组,说明模型通道是通的。这一步过了,再去配企业微信网关,排障范围就小很多。如果这一步就报 401,先检查 Key 有没有多余空格、Authorization 头格式对不对。如果报 model not found,检查 Model ID 拼写。
2. TaoToken 统一 Key 在 OpenClaw 里的前置配置与 endpoint 填写位置
这一节把模型通道的配置写完整,因为后面企业微信网关能不能回消息,直接取决于这里。OpenClaw 的配置文件默认在~/.openclaw/openclaw.json,Windows 下在C:\Users\你的用户名\.openclaw\openclaw.json。如果你用的是交互式向导,openclaw models add会引导你填,但手动改文件更直观,也方便版本管理。
先看模型 provider 的配置结构。OpenClaw 把模型提供方抽象成 provider,每个 provider 有 baseUrl、apiKey、models 列表。TaoToken 作为统一入口,baseUrl 填https://taotoken.net/api,apiKey 填你的 Key。下面是一个可复制的 JSON 片段,路径与 OpenClaw 默认配置一致:
{ "providers": { "taotoken": { "type": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoTokenKey", "models": [ { "id": "claude-sonnet-4-5", "name": "Claude Sonnet 4.5", "contextWindow": 200000 }, { "id": "gpt-4.1", "name": "GPT-4.1", "contextWindow": 128000 } ] } }, "defaultModel": "taotoken/claude-sonnet-4-5" }这里有几个参数要解释清楚。type填openai-compatible,因为 TaoToken 的 API 兼容 OpenAI 的请求格式,OpenClaw 会用这套适配器去发请求。baseUrl只写到/api,不要写成/api/v1,否则 OpenClaw 拼出来的路径会变成/api/v1/v1/chat/completions,直接 404。apiKey就是你在控制台创建的 Key,注意不要泄露到公开仓库。
models数组里每个模型的id是发给 API 的模型标识,name是显示名,contextWindow用于 OpenClaw 判断上下文长度。如果你不确定某个模型 ID 怎么写,可以先在模型对话页面里试一下,确认能正常返回再填进配置。defaultModel用provider/modelId的格式,这样 OpenClaw 知道默认走哪个 provider。
如果你用的是 TOML 风格的配置(部分 OpenClaw 版本支持),等价写法是这样:
[providers.taotoken] type = "openai-compatible" baseUrl = "https://taotoken.net/api" apiKey = "sk-你的TaoTokenKey" defaultModel = "claude-sonnet-4-5" [[providers.taotoken.models]] id = "claude-sonnet-4-5" name = "Claude Sonnet 4.5" contextWindow = 200000改完配置后,不要急着重启网关,先用openclaw models list看 provider 有没有被正确加载。如果列表里能看到 taotoken 和它的模型,说明配置语法没问题。然后用openclaw models test taotoken/claude-sonnet-4-5发一条测试请求,确认鉴权和 endpoint 都对。
这一步常见的坑是 Key 权限不足。有些 Key 只开了特定模型的权限,你填了另一个模型 ID,请求会返回 403 或 model not found。遇到这种情况,去控制台确认 Key 的权限范围,或者换一个已授权的模型 ID。另一个坑是网络层:如果你的机器需要走内网 DNS 才能解析外部域名,taotoken.net可能解析失败,表现为连接超时。用curl -v https://taotoken.net/api看握手过程,能快速定位是 DNS 还是 TLS 问题。
模型通道确认可用后,再进入企业微信网关配置。这样如果后面微信不回消息,你可以先看openclaw gateway logs -f里模型请求有没有发出、返回是什么,而不是盲目怀疑微信通道。
3. 企业微信网关配置片段:Bot ID、Secret 与 WebSocket 长连接
企业微信机器人是团队场景里比较稳的通道,支持群聊、@回复、文件传输,而且用长连接模式不需要公网 IP。这一节给出可复制的配置片段,并说明每个字段填什么。前置动作是在企业微信管理后台创建智能机器人,连接方式选长连接,拿到 Bot ID 和 Secret。
创建路径是:企业微信客户端 → 工作台 → 智能机器人 → 创建机器人 → 选择 API 模式 → 连接方式选长连接。填完名称、简介、可见范围后,复制 Bot ID 和 Secret。注意 Secret 只在创建时显示一次,丢了要重新生成。
拿到凭据后,编辑~/.openclaw/openclaw.json,在channels段加入 wecom 配置。下面这个片段可以直接复制,把 botId 和 secret 替换成你的值:
{ "channels": { "wecom": { "enabled": true, "botId": "你的BotID", "secret": "你的Secret", "connectionMode": "websocket", "dmPolicy": "pairing", "groupPolicy": "mention", "model": "taotoken/claude-sonnet-4-5" } } }逐字段说明。enabled设为 true 才会加载这个通道。botId和secret是企业微信后台给的,不要和模型 Key 混。connectionMode填websocket,这是长连接模式,本地部署首选;如果你有公网回调地址,也可以填callback,但配置更复杂。dmPolicy控制私聊策略,pairing表示需要配对后才能对话,适合内部使用;如果你想放开,可以改成open,但要注意权限。groupPolicy填mention表示群里只有 @机器人 才回复,改成all则所有消息都触发。
model字段指定这个通道用哪个模型。这里填taotoken/claude-sonnet-4-5,对应上一节配置的 provider。如果你有多个通道,每个通道可以指定不同模型,比如企业微信用强模型,个人微信测试用轻量模型。这个字段不填的话,会走defaultModel。
如果你更习惯用命令行配置,等价命令是:
openclaw channels add # 选择 WeCom # 粘贴 Bot ID # 粘贴 Secret # 连接方式选 WebSocket交互式向导会帮你写入配置文件,但不会自动填model字段,需要你手动补。补完后用openclaw channels list确认 wecom 通道已启用。
配置写完后重启网关:
openclaw gateway restart重启后看日志:
openclaw gateway logs -f正常的话,日志里会出现类似wecom channel connected或websocket handshake success的行。如果出现invalid botId or secret,说明凭据填错了,回后台重新复制。如果出现connection timeout,检查你的网络能不能访问企业微信的长连接服务,有些内网环境会拦 WebSocket。
这里有个细节:企业微信的长连接和模型请求是两条独立的网络链路。长连接断了,消息进不来;模型请求失败,消息进来了但回不去。日志里要分别看。wecom channel connected只代表消息通道通了,不代表模型通道通。所以下一步必须做一条完整的回环验证。
4. 一条消息回环验证:从企业微信发消息到模型返回
配置写完、网关重启后,不要只看日志说 connected 就结束。真正要验证的是“发一条消息,能收到模型生成的回复”。这一节给出完整的验证动作和预期结果。
第一步,在企业微信里找到你创建的机器人,发一条测试消息:
你好,用一句话介绍你的能力第二步,同时观察网关日志。你应该能看到类似这样的输出:
[wecom] received message from user: xxx [model] request to taotoken/claude-sonnet-4-5 [model] response received, tokens: 42 [wecom] reply sent to user: xxx这四行分别对应:消息通道收到消息、模型通道发出请求、模型通道收到响应、消息通道发出回复。如果只有第一行没有第二行,说明通道到模型的转发有问题,检查model字段有没有填对。如果有第二行没有第三行,说明模型请求失败,看日志里的错误码。
第三步,确认企业微信里收到了回复。如果回复内容正常,说明整条链路通了。如果回复是空的或者报错文案,看日志里的模型返回体。
如果日志里出现401 Unauthorized,说明 TaoToken 的 Key 有问题。检查配置文件里apiKey有没有多余空格,Key 有没有过期,权限范围是否包含你填的模型。如果出现local proxy failed或connection refused,说明 OpenClaw 到taotoken.net的网络不通,用 curl 单独测一下。如果出现reading choices: unexpected end of JSON,说明返回体不是预期的 OpenAI 格式,可能是 baseUrl 写错了,检查是不是多写了/v1。
如果日志里出现OAuth相关报错,比如oauth token expired,这通常不是 TaoToken 的问题,而是企业微信侧的凭据刷新失败。重新生成 Secret 并更新配置即可。
回环验证通过后,你可以再测一条群聊消息。把机器人拉进一个测试群,@它发消息,确认groupPolicy: mention生效。如果群里没 @ 也回复了,检查groupPolicy是不是被改成了all。
这一步的验证动作看起来简单,但它把消息通道、模型通道、鉴权、网络四件事一次性串起来了。任何一环有问题,都会在这条回环里暴露。所以每次改完配置,都建议重跑一遍这个验证,而不是只看channels list的状态。
5. 本篇常见报错排查:401、local proxy failed、reading choices、OAuth
这一节把对接过程中最容易遇到的几类报错集中列出来,给出定位方法和修复动作。这些报错在日志里的原文和含义,以及对应的配置检查点,都写清楚,方便你对照。
第一类,401 Unauthorized。日志原文通常是model request failed: 401。原因几乎都是模型 Key 不对。检查三处:配置文件里apiKey的值有没有复制错、有没有多余空格、Key 是否已过期或被禁用。如果你用的是环境变量注入 Key,检查环境变量名和配置文件里引用的名字是否一致。修复后重启网关再测。
第二类,local proxy failed或connection refused。这表示 OpenClaw 发模型请求时连不上目标地址。先确认baseUrl是https://taotoken.net/api,没有多余路径。然后用 curl 在同一个机器上测:
curl -v https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的Key" \ -H "Content-Type: application/json" \ -d '{"model":"你的ModelID","messages":[{"role":"user","content":"ping"}]}'如果 curl 也连不上,说明是网络层问题,检查 DNS、防火墙、是否需要内网代理。如果 curl 能通但 OpenClaw 不通,检查 OpenClaw 有没有自己的网络配置,比如是否走了不同的 DNS 或代理设置。
第三类,reading choices: unexpected end of JSON或cannot read property choices。这表示模型返回体不是预期的 OpenAI 格式。最常见原因是baseUrl写成了https://taotoken.net/api/v1,导致实际请求路径变成/api/v1/v1/chat/completions,返回 404 的 HTML 而不是 JSON。把baseUrl改回https://taotoken.net/api即可。另一个原因是模型 ID 不存在,API 返回了错误结构,检查models数组里的id拼写。
第四类,OAuth相关报错,比如oauth token invalid或refresh token failed。这类报错通常出现在企业微信通道,不是模型通道。原因是企业微信的 Secret 失效或机器人被删除。回企业微信后台确认机器人还在,重新生成 Secret,更新配置文件里的secret字段,重启网关。
第五类,消息通道显示 connected 但发消息没反应。先看日志有没有received message。如果没有,说明消息根本没进来,检查企业微信机器人的可见范围是否包含你、长连接是否真的建立。如果有received message但没有model request,检查通道配置里的model字段是否指向了一个存在的 provider/model。如果有model request但没有reply sent,看模型返回的错误码,回到第一类到第三类排查。
第六类,model not found或403 Forbidden。这表示 Key 权限不包含你请求的模型。去控制台确认 Key 的权限范围,或者换一个已授权的模型 ID。如果你用的是 Coding Plan 的 Key,注意它可能只覆盖编码类模型,对话类模型需要另外的权限。
把这些报错和配置检查点对照着看,大部分问题能在几分钟内定位。关键是不要一看到“机器人不回复”就去重装微信插件,先看日志里模型请求有没有发出去、返回是什么。
6. 对接完成后的下一步:模型对话验证与长期编码场景
企业微信回环验证通过后,说明消息通道和模型通道都通了。接下来可以按你的实际场景往下走。如果你只是想验证模型能力,可以直接在模型对话页面里试不同模型,确认哪个模型在你的任务上表现更好,再把它填回通道配置的model字段。
如果你要把 OpenClaw 用在长期编码或 Agent 任务上,建议单独配一个 Coding Plan 的 Key,和对话场景的 Key 分开。这样权限更清晰,也方便按场景统计用量。Coding Plan 的配置方式和普通 Key 一样,只是 Key 的权限范围不同,填到 provider 的apiKey字段即可。你可以给编码场景单独建一个 provider,比如taotoken-coding,baseUrl 同样是https://taotoken.net/api,然后在需要编码的通道或技能里引用这个 provider。
如果你在配置过程中遇到鉴权或接入问题,可以对照接入文档里的参数说明逐项检查。文档里对 Base URL、Key、Model ID 三个字段的填写位置有明确说明,和这篇里的配置片段是一致的。需要新建 Key 或调整权限时,去 API Keys 页面操作。
对于需要长期跑 Agent 任务的场景,建议把网关做成开机自启,并配置日志轮转,避免日志文件把磁盘写满。openclaw gateway logs -f适合调试,生产环境用openclaw gateway logs --tail 1000看最近日志就够了。另外,企业微信机器人的 Secret 建议定期轮换,轮换后更新配置文件并重启网关。
最后提醒一个实操细节:改完任何配置,都先跑一遍第 4 节的消息回环验证,确认收发链路可用,再去测更复杂的功能。这样每次变更都有明确的验证点,不会在多个变量之间来回猜。