已开启
bug: weixin sidecar (launch.js) 启动后立即退出,无法持续轮询消息 #3
Funda Wang创建于  27 天前
Funda Wang
Funda Wang
27 天前 创建

环境

  • OS: Windows 10 (26200.9278)
  • Node.js: v20.19.2 / v24.19.0 均可复现
  • 插件路径: ~/.atomcode/plugins/marketplaces/atomcode-channel/plugins/weixin/
  • atomcode: 正常运行中

问题描述

通过 login.js 扫码登录成功(bot.json 已生成,token 有效),但 launch.js(sidecar)启动后立即退出,无法持续轮询微信消息。给 clawbot 发消息无响应。

复现步骤

  1. 运行 node login.js,扫码登录成功,~/.atomcode/weixin/bot.json 生成
  2. 运行 node launch.js(或通过 startSidecar() 启动)
  3. 进程打印启动日志后立即退出,无错误输出

启动日志(完整,之后进程退出)

已通知 iLink 上线 (notifyStart)
daemon 未运行,自动启动:atomcode daemon --port 13456 (ATOMCODE_DAEMON_IDLE_TIMEOUT=0)
  daemon 输出 → C:\Users\小王\AppData\Local\Temp\atomcode-weixin-daemon.log(启动失败看这里)
daemon 已就绪。
weixin 桥已启动。daemon=http://127.0.0.1:13456 workingDir=C:/Users/小王/.atomcode/weixin/sandbox
⚠ allowlist 为空:将响应所有用户。

之后进程退出,exit code 为 0,无任何错误信息。PID 文件写入后进程不再存活。

已排除的原因

  • Token 无效 — 已排除。直接 curl 调 ilink/bot/getupdates 返回 HTTP 200
  • Node.js 版本 — 已排除。v20.19.2 和 v24.19.0 表现一致
  • 配置缺失 — 已排除。config.json 和 bot.json 均正常

疑点

launch.js 的 for(;;) 循环理论上不应退出,但进程在打印启动日志后立刻终止。可能原因:

  1. ensureDaemon() 启动的 atomcode daemon 子进程影响了父进程(Windows 上 detached + unref 行为)
  2. getUpdates 的 fetch 调用在特定环境下抛出了未捕获的异常(尽管 curl 测试正常)
  3. 某个顶层 await 或 ESM 模块加载阶段的静默失败

配置文件

~/.atomcode/weixin/config.json:

{
  "ilinkBaseUrl": "https://ilinkai.weixin.qq.com",
  "daemonBaseUrl": "http://127.0.0.1:13456",
  "tokenPath": "~/.atomcode/weixin/bot.json",
  "channelVersion": "1.0.2",
  "workingDir": "C:/Users/小王/.atomcode/weixin/sandbox",
  "allowlist": [],
  "provider": "",
  "thinkingAck": true,
  "daemonCmd": "atomcode daemon"
}

~/.atomcode/weixin/bot.json 已正常生成(含 botToken + baseUrl)。

likedislike