记一次 OpenClaw 与飞书插件版本冲突的排查

Roll Back 解决 99% 的问题。能跑就绝对别动它,除非新功能吊炸天。

昨天 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
  • 配置文件的 lastTouchedVersion2026.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 版本后,问题立即消失。

问题根源

  1. 版本错配:自动更新导致 OpenClaw 核心、CLI、飞书插件之间版本不一致
  2. 锁文件未清理:Gateway 更新重启时,临时锁文件没有被正确清理
  3. channel 静默失败:飞书 channel 初始化失败时没有输出 ERROR 级别日志,导致排查困难

经验教训

能跑就绝对别动它,除非有新的功能非常吸引你。 自动更新不等于完全无忧,更新完成后最好手动检查各组件版本是否一致。另外 Roll Back 解决 99% 的问题,遇到更新后出问题,回滚往往比排查根因更快。