<< ..

Hermes Agent 飞书机器人:私聊正常,群聊不响应的真正原因

最近接入 Hermes Agent 的飞书机器人时,遇到一个非常迷惑的问题:

  • 私聊机器人:正常
  • 群里 @bot hi:完全没反应
  • Hermes 日志里甚至没有 group message

第一反应通常会怀疑:

  • 飞书权限没开
  • 事件订阅有问题
  • WebSocket 没连上
  • 机器人没加群
  • Hermes Feishu adapter 有 bug

结果都不是。

真正的问题只有一行配置:

FEISHU_GROUP_POLICY=open

问题现象

飞书后台权限全部正常:

  • im.message.receive_v1
  • 获取群组中用户 @ 机器人消息
  • 获取群组中所有消息

私聊能正常触发:

Inbound dm message received

但群里:

@bot hi

完全没任何日志。

这个现象特别容易误导人。

因为看起来像:

飞书根本没把 group event 推送给 Hermes。

实际上并不是。


真正原因

Hermes Feishu gateway 默认配置是:

group_policy=os.getenv(
    "FEISHU_GROUP_POLICY",
    "allowlist"
)

默认值:

FEISHU_GROUP_POLICY=allowlist

也就是说:

Hermes 默认不会自动处理所有群消息。

allowlist 模式下:

  • 群不在白名单
  • 用户不在 allowlist
  • mention gating 不满足

消息会被直接过滤。

于是你看到的现象就是:

  • 私聊正常
  • 群聊完全没反应
  • 日志里甚至没有 raw message

非常像“飞书事件没推过来”。

但其实:

是 Hermes 自己静默 drop 了 group event。


解决方案

.env 里增加:

FEISHU_GROUP_POLICY=open
FEISHU_ALLOW_BOTS=all

然后重启:

hermes restart

立刻恢复正常。

群里:

@bot hi

马上能收到回复。


为什么这个问题很坑

因为你会在错误方向排查很久:

  • 飞书开放平台
  • 权限
  • 事件订阅
  • WebSocket
  • 机器人权限

实际上这些可能全是对的。

真正的问题只是:

FEISHU_GROUP_POLICY

默认值太“保守”。


一个经验

如果你遇到:

  • 飞书私聊正常
  • @bot 完全无响应
  • Hermes 没 group raw log

先检查:

FEISHU_GROUP_POLICY

别先折腾飞书后台。


相关 issue:

Hermes Issue #6889