openclaw-weixin-fix
修复 @tencent-weixin/openclaw-weixin@2.4.1 在 OpenClaw 2026.5.4+ 上的关键 bug。
问题
- Runtime 模块隔离:
runtime.ts被加载两次,waitForWeixinRuntime()读取的实例与setWeixinRuntime()写入的实例不同,导致超时 - Content-Length 拒绝:undici 8.2.0 不允许手动设置
Content-Length头
修复内容
改动1:channel.js — 传递 channelRuntime
return monitorWeixinProvider({
...
setStatus: ctx.setStatus,
+ channelRuntime: ctx.channelRuntime,
});
改动2:monitor.js — 优先使用传入的 channelRuntime
let channelRuntime;
- try {
- const pluginRuntime = await waitForWeixinRuntime();
- channelRuntime = pluginRuntime.channel;
- }
+ if (opts.channelRuntime) {
+ channelRuntime = opts.channelRuntime;
+ } else {
+ try {
+ const pluginRuntime = await waitForWeixinRuntime();
+ channelRuntime = pluginRuntime.channel;
+ }
+ catch (err) { ... }
+ }
改动3:api.js — 删除 Content-Length 头
删除 buildHeaders() 中手动设置 Content-Length 的代码。
验证结果
- ✅ 微信消息接收正常
- ✅ 微信回复发送成功
- ✅ 文件上传正常
- ✅
openclaw health --json显示lastError: null
注意事项
- 每次
openclaw plugins install重装插件后,需要重新运行此修复 - 备份文件:
channel.js.bak和monitor.js.bak