🦞 OpenClaw 企微机器人升级后“不回复”?一个顶层 bindings 的坑(排障实录)
写在前面
我是 Tech蜗牛,长期在测 AI 工具链。这篇不讲理论,讲一次真实事故:OpenClaw 大版本升级后,企业微信机器人“收得到消息、永远不回复”——排查了插件、引擎版本、通道连接、单/多账号结构整整一轮,最后发现是路由绑定的配置层级写错了。
一、事故现场
- 环境:OpenClaw 引擎 7.x 升级到 2026.9.1(state 库 schema 迁移到 15)
- 现象:企微三个 bot(销售 / EV / 夏洛克)全部“思考中 / 等待模型响应”,永不回复
- 迷惑点:WS 通道连得上、认证成功、消息日志也有,就是 agent 不动
二、我试过但不行的路(帮你省钱)
| 尝试 | 结果 |
|---|---|
| 官方企微插件升 npm 最新 2026.8.17 | 无效 |
| 引擎 8.2 × 官方 7.2 / 8.2 × 8.17 / 9.1 × 8.17 等五种组合 | 官方插件消息都进不了 agent(SDK 收包后静默) |
| 换社区插件 @sunnoy/wecom 3.4.0 | 能进 agent,但报错暴露了真问题 |
| channels.wecom.bindings / 账号内 agentId / systemAgent 三处配置 | 都不生效 |
插曲:引擎降到 8.2 还会跟 9.1 写的 config/schema/外部插件打架,直接放弃降级路线。这本身就提示:问题不在版本配对。
三、真正的根因
sunnoy 插件把消息送进 agent 后,日志反复出现同一条核心错误:
Multiple agents are configured, but wecom account <X> routing has no explicit owner.
机器上不止一个 agent(main / huo15-coder / lisa…),而企微每条入站必须显式指定归哪个 agent。引擎的 channel-wide binding 读的是配置文件顶层的 bindings 数组,不是 channels.wecom 里那份——之前一直加错层级,等于没配。
四、修复(一行就够)
在 openclaw.json 顶层 bindings 追加(不是 channels.wecom.bindings):
"bindings": [
{ "type": "route", "agentId": "main", "match": { "channel": "wecom", "accountId": "sales" } },
{ "type": "route", "agentId": "huo15-coder","match": { "channel": "wecom", "accountId": "ev" } },
{ "type": "route", "agentId": "lisa", "match": { "channel": "wecom", "accountId": "sherlock" } }
]
改完 validate → 重启 gateway → 三个 bot 全部恢复正常回复。
五、一并踩到的三个坑
- 升级后 crash-loop breaker 会抑制通道自启,要手动 channels.start 拉起;
- 插件别追 npm latest:OpenClaw 官方 catalog 把企微插件锚在 @wecom/wecom-openclaw-plugin@2026.7.2,8.17 反而各种不匹配;
- 旧版残留进程会把新版写过的配置改回旧格式,升级完核对 CLI 版本与 launchd 指向一致。
小结
“通道正常、就是不回”的排查顺序:先怀疑 owner 路由,再看插件版本。 配置项放对层级比版本号更重要。希望这篇能帮你少走一整天弯路。
评论