Weixin Runtime Fix

修复 @tencent-weixin/openclaw-weixin@2.4.1 在 OpenClaw 2026.5.4+ 上的两个关键 bug: 1. Runtime 模块隔离导致 waitForWeixinRuntime 超时 2. undici 8.2.0 拒绝手动设置的 Content-Length 头 修复后微信通道可正常收发消息。

Audits

Pass

Install

openclaw skills install weixin-runtime-fix

openclaw-weixin-fix

修复 @tencent-weixin/openclaw-weixin@2.4.1 在 OpenClaw 2026.5.4+ 上的关键 bug。

问题

  1. Runtime 模块隔离runtime.ts 被加载两次,waitForWeixinRuntime() 读取的实例与 setWeixinRuntime() 写入的实例不同,导致超时
  2. 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.bakmonitor.js.bak

相关链接