乐于分享
好东西不私藏

龙虾翻车实录:AI助手突然不回消息,排查半天发现是它偷换了频道

龙虾翻车实录:AI助手突然不回消息,排查半天发现是它偷换了频道

你遇到过这种事没?

明明在 Telegram 或者 Discord 上跟 AI bot 聊得好好的,突然它就不搭理你了。你跑去看 Dashboard,发现消息全跑到 WebChat 里去了——bot 没挂,但它不跟你说活了。
这事我在 OpenClaw 上踩了不下三次坑。今天把整个来龙去脉扒一扒,顺便告诉你最新版到底修好没。

事情是这样的

OpenClaw 这玩意儿,能同时接 Discord、Telegram、WhatsApp、Signal 一堆通道。它用 sessionKey(会话键)来记”这条消息该回给谁”。
正常情况下,逻辑很简单:
你在 Discord 发消息 → 系统记住:这人是 Discord 的 → 回复也发回 Discord ✅
但问题来了——
如果你顺手在 Dashboard(网页后台)看了一眼同一个会话,系统就会犯傻:
你在 Dashboard 看了一眼 Telegram 会话   → 系统发现:哦,这是个"内部会话"   → 二话不说,把回复通道改成 webchat ❌   → 你的 Telegram bot:行,我不说话了
专业术语叫“静默回落”(silent fallback)。翻译成人话就是:系统偷偷把回复通道换了,谁也没告诉你。
你等回复,等不到。你以为是 bot 挂了。实际上它在你 Dashboard 里自言自语呢。

这 bug,反复折腾了大半年

说实话,这类问题在 OpenClaw 历史上至少反复出现过三轮,修了又犯,犯了又修。

第一轮:老格式的锅

早期 OpenClaw 对 legacy 格式的会话键处理有问题——明明有外部通道,回复却莫名其妙 fallback 到 webchat。
🐛 Issue #2034 #2035 #2036 — 后来修了

第二轮:从终端发消息,回复跑去了 Discord

你从 TUI(终端界面)发了条消息,结果 bot 跑去回复 Discord 私聊了。
原因:系统没判断发送方是不是内部客户端,直接继承了上一个外部通道。
修复前:内部会话?直接返回 webchat(简单粗暴)  修复后:是内部客户端 → 走内部通道         是外部用户 → 走外部通道
🐛 Issue #35321 #35356 #43918 — 修了

第三轮:最坑的一轮 ⚠️

这轮影响最大,中招的人最多。
场景:多 Agent 协作。
Agent A 通过 sessions_send 给 Agent B 发消息   → B 的会话被标记为 channel=webchat   → B 下一条回复……发到 webchat 去了 ❌   → Discord 用户:我消息呢?
更离谱的是,如果你的 cron 定时任务也在反复发 sessions_send,这个路由污染是持续累积的——每跨一次 Agent 就覆盖一次路由。到最后,你的 bot 在 Discord 上基本就是废的。
🐛 Issue #54441 — 一堆人报告这问题 ✅ Issue #58013 — 2026.4.9 修复,加了 isInterSession 标志位

还有一个你注意不到的细节

只是看了一眼 Dashboard 上的外部会话,路由也会被污染。不是发消息,是看一眼。
Dashboard 查看 Telegram 会话   → 系统记录:deliveryContext.channel = "webchat"(应该是 telegram)   → 子 Agent 完成 → 通知发 Dashboard   → Telegram 用户:继续等
🐛 Issue #47745 #47797 — 2026.4.5 修复

最新版(2026.4.9)修好没?

基本修好了。 官方加了五六层保护:
保护机制
干啥的
isInterSession 检查
跨 Agent 通信不覆盖外部路由
deliver: true 门控
WebChat 得显式声明才能设外部路由
外部路由优先
WebChat 是监控角色,不能改已有路由
Legacy key 校验
channel hint 必须匹配才能继承
lastRoute 归属明确
只有外部消息才能更新 lastRoute
老实说,这一波修复挺全面的。之前的边界模糊问题,基本都给堵上了。

如果你还在用老版本

能升级就赶紧升级。
如果暂时升不了,几个临时方案:
1用 [[reply_to_current]]:强制回复到触发消息的通道(不是万能药,但管用大部分场景)       
2在出问题的通道执行 /reset:能恢复正确路由,就是每次都得手动来       
3少用 sessions_send:特别是 cron 任务多的场景,能不跨 Agent 就不跨       

一句话总结

OpenClaw 的 sessionKey 路由问题,说白了就是内部操作和外部通道的边界没做好隔离。内部操作(WebChat 查看、sessions_send)不该去碰外部用户的路由。2026.4.9 版本基本把这个大半年历史遗留问题给收拾了。
*你也踩过这个坑?评论区聊聊,让我也乐呵乐呵。*