飞书群里有人 @ 了我的 AI 助手,然后问我:它怎么没反应?

我先说结论:消息到了,是被"按规矩"扔掉的。 原因是一行代码,而那行代码的注释写得很明白。

一、先分清两件事:没送到,还是没处理

"没反应"是一个笼统的说法。它至少有两种完全不同的可能:

可能 表现 该往哪查
消息根本没送到 系统日志里什么都看不到 权限、账号、网络
消息送到了但没处理 日志里有"收到",但后面断了 过滤规则、处理逻辑

这两种情况的排查方向完全不同。要是把第二种当成第一种去查,你会一直在改权限——而权限根本没问题。

二、我的排查顺序

第一步:翻日志,看消息到没到。

结果:到了。 日志里有一条"收到原始消息"的记录,带着消息编号。

第二步:往下看,看它有没有进处理流程。

正常消息的日志长这样:

收到原始消息        ← 第一步
入站消息已识别      ← 第二步
进入处理队列
生成回复
发送回复

而那条消息的日志停在第一行——后面什么都没有。

结论:消息送到了,但在"识别"环节被丢掉了。

第三步:拿它和正常消息对比。

我把那条消息和一堆正常消息摆在一起看。差别只有一个:

  • 正常消息:@ 助手 + 一句具体的话
  • 那条消息:只有 @ 助手,后面是空的

第四步:去代码里找答案。

找到处理入站消息的那段逻辑,看到这么一段判断——大意是:

"纯 @ 机器人的消息(把 @ 剥掉之后变成空),会被直接丢弃。"

注释还特意说明了原因:这个判断放在剥离 @ 之后运行,就是为了让"只 @ 不说话"的消息被丢掉。

三、为什么要有这么一条规矩

想一秒就明白了:要是没有这条规矩,任何人 @ 一下不打字,机器人都得回一句。 群里会变成什么样子?

所以这不是 bug,是设计。它宁可漏掉一条没说清的消息,也不愿意变成刷屏的机器。

机器没理你,不一定是它坏了。有时候是它按规矩,把你滤掉了。

四、顺带发现的一条隐藏规则

排查过程中还发现一件事,挺有意思:

同一个群里,不同的人被对待的方式不一样。

  • 管理员:不 @ 也能把话送到,随便说
  • 普通成员和外部人员:必须 @,否则消息压根不进入流程

这是权限设计——管理员是"自己人",其他人得"叫一声"。

所以如果你在群里跟一个机器人说话它不理你,先检查两件事:

  1. @ 了吗?(不是自己人就必须 @)
  2. @ 完之后写字了吗?(只 @ 不说话等于没说)

五、这件事教我的,不是那个答案

具体答案("要 @ 加内容")只值一句话。真正有用的是排查顺序:

先确认"收到了没有",再问"为什么没处理"。

这两步的顺序不能反。

我以前的习惯是:一出问题,先怀疑权限、先怀疑网络、先把能改的都改一遍。结果是花了半天时间,在一个根本不是问题的地方打转。

这次不一样——我只做了四步:查日志确认收到 → 查流程确认断开 → 横向对比找出差异 → 去代码里要答案。

四步,每一步都在缩小范围,没有一步是瞎猜。

最后

这件事最后还留了个尾巴:我不想让用户以为"@ 一下就行",所以在群里回了一条说明——要么不 @,要 @ 就带上话。

沟通上的问题,最后往往还是要用沟通解决。

工具的行为是可以查清楚的,但用户不知道该怎么办——知道原因的人,有义务把话说清楚。

下一篇我们聊:《一条消息发出去,对方到底收没收到?——我给自己立的验收规矩》,讲我怎么用"回读"确认每一件交出去的事。

——妍暄研习社 · AI 实践