昨天 OpenClaw 做了一次自动更新,更新完之后飞书突然无法和 OpenClaw 通信了。排查了一个多小时,最终发现是插件版本和 OpenClaw 核心版本不匹配导致的。
问题现象
飞书发消息给 OpenClaw,Bot 没有任何响应。但 Gateway 进程明明在跑,TUI 也能正常连接,只有飞书这边一动不动。
排查过程
第一步:版本确认
先看 Gateway 版本和 CLI 版本是否一致:
/usr/bin/openclaw --version
openclaw status
结果让人意外——CLI 和 Gateway 运行在不同版本上:
- CLI(
/usr/bin/openclaw):2026.4.8 - Gateway 进程:
2026.5.28 - 配置文件的
lastTouchedVersion:2026.5.28
这意味着配置文件是由更新版本的 CLI 写入的,但实际运行的 Gateway 是旧版。
第二步:理解 OpenClaw 的安装结构
OpenClaw 在这台机器上有两处安装: | 路径 | 版本 | 用途 | |------|------|------| | /usr/lib/nodemodules/openclaw/ | 4.8 | systemd 启动时调用的路径 | | /home/freak/.npm-global/lib/nodemodules/openclaw/ | 5.28 | 用户手动 npm 安装的最新版本 |
systemd service 文件指向的是系统路径 2026.4.8,而用户目录下是 2026.5.28。自动更新只更新了用户目录那一份,系统路径没有被同步更新。
第三步:升级系统级 OpenClaw
用 npm 全局升级系统路径:
sudo cp -r /usr/lib/node_modules/openclaw /usr/lib/node_modules/openclaw.bak-4.8
sudo npm install -g openclaw@latest --no-audit --no-fund
升级完成后验证:
/usr/bin/openclaw --version
# 2026.5.28 ✅
第四步:systemd 重启后飞书依然不通
版本对齐之后,gateway 重启了,但飞书依旧没有响应。查看网络连接:
ss -tnp | grep feishu
# 没有任何外网连接
Gateway 进程存在,但飞书 WebSocket 连接数为 0。
第五步:飞书 channel 被静默跳过
查看 Gateway 日志:
tail -f /tmp/openclaw/openclaw-$(date +%Y-%m-%d).log
正常启动时,日志应该有这样的记录:
feishu[default]: starting WebSocket connection...
feishu[default]: WebSocket client started
feishu[default]: bot open_id recovered via background retry: ou_xxx
而问题时的日志里,gateway ready 之后全是 TUI/CLI 的 ws 调用,飞书 channel 完全消失了。
第六步:锁定真凶
找到 /tmp/openclaw-1000/gateway.*.lock 文件,这是一个互斥锁文件,用于防止重复启动。Gateway 更新重启时旧锁未释放,导致飞书 channel 初始化被静默跳过。 删除锁文件并重启后,飞书依旧不通。最终尝试了各种方法都无效。
最终解决方案:回滚到 2026.5.26
降级 OpenClaw 和飞书插件到 2026.5.26 版本后,问题立即消失。
问题根源
- 版本错配:自动更新导致 OpenClaw 核心、CLI、飞书插件之间版本不一致
- 锁文件未清理:Gateway 更新重启时,临时锁文件没有被正确清理
- channel 静默失败:飞书 channel 初始化失败时没有输出 ERROR 级别日志,导致排查困难
经验教训
能跑就绝对别动它,除非有新的功能非常吸引你。 自动更新不等于完全无忧,更新完成后最好手动检查各组件版本是否一致。另外 Roll Back 解决 99% 的问题,遇到更新后出问题,回滚往往比排查根因更快。