飞书群里有人 @ 了我的 AI 助手,然后问我:它怎么没反应?
我先说结论:消息到了,是被"按规矩"扔掉的。 原因是一行代码,而那行代码的注释写得很明白。
一、先分清两件事:没送到,还是没处理
"没反应"是一个笼统的说法。它至少有两种完全不同的可能:
| 可能 | 表现 | 该往哪查 |
|---|---|---|
| 消息根本没送到 | 系统日志里什么都看不到 | 权限、账号、网络 |
| 消息送到了但没处理 | 日志里有"收到",但后面断了 | 过滤规则、处理逻辑 |
这两种情况的排查方向完全不同。要是把第二种当成第一种去查,你会一直在改权限——而权限根本没问题。
二、我的排查顺序
第一步:翻日志,看消息到没到。
结果:到了。 日志里有一条"收到原始消息"的记录,带着消息编号。
第二步:往下看,看它有没有进处理流程。
正常消息的日志长这样:
收到原始消息 ← 第一步
入站消息已识别 ← 第二步
进入处理队列
生成回复
发送回复
而那条消息的日志停在第一行——后面什么都没有。
结论:消息送到了,但在"识别"环节被丢掉了。
第三步:拿它和正常消息对比。
我把那条消息和一堆正常消息摆在一起看。差别只有一个:
- 正常消息:@ 助手 + 一句具体的话
- 那条消息:只有 @ 助手,后面是空的
第四步:去代码里找答案。
找到处理入站消息的那段逻辑,看到这么一段判断——大意是:
"纯 @ 机器人的消息(把 @ 剥掉之后变成空),会被直接丢弃。"
注释还特意说明了原因:这个判断放在剥离 @ 之后运行,就是为了让"只 @ 不说话"的消息被丢掉。
三、为什么要有这么一条规矩
想一秒就明白了:要是没有这条规矩,任何人 @ 一下不打字,机器人都得回一句。 群里会变成什么样子?
所以这不是 bug,是设计。它宁可漏掉一条没说清的消息,也不愿意变成刷屏的机器。
机器没理你,不一定是它坏了。有时候是它按规矩,把你滤掉了。
四、顺带发现的一条隐藏规则
排查过程中还发现一件事,挺有意思:
同一个群里,不同的人被对待的方式不一样。
- 管理员:不 @ 也能把话送到,随便说
- 普通成员和外部人员:必须 @,否则消息压根不进入流程
这是权限设计——管理员是"自己人",其他人得"叫一声"。
所以如果你在群里跟一个机器人说话它不理你,先检查两件事:
- @ 了吗?(不是自己人就必须 @)
- @ 完之后写字了吗?(只 @ 不说话等于没说)
五、这件事教我的,不是那个答案
具体答案("要 @ 加内容")只值一句话。真正有用的是排查顺序:
先确认"收到了没有",再问"为什么没处理"。
这两步的顺序不能反。
我以前的习惯是:一出问题,先怀疑权限、先怀疑网络、先把能改的都改一遍。结果是花了半天时间,在一个根本不是问题的地方打转。
这次不一样——我只做了四步:查日志确认收到 → 查流程确认断开 → 横向对比找出差异 → 去代码里要答案。
四步,每一步都在缩小范围,没有一步是瞎猜。
最后
这件事最后还留了个尾巴:我不想让用户以为"@ 一下就行",所以在群里回了一条说明——要么不 @,要 @ 就带上话。
沟通上的问题,最后往往还是要用沟通解决。
工具的行为是可以查清楚的,但用户不知道该怎么办——知道原因的人,有义务把话说清楚。
下一篇我们聊:《一条消息发出去,对方到底收没收到?——我给自己立的验收规矩》,讲我怎么用"回读"确认每一件交出去的事。
——妍暄研习社 · AI 实践