地址: https://github.com/Alenryuichi/clawdbot-feishu
实测可以让 main agent 发送 @去调用其他 agent ,组成 multi-agent 开发团队 pr 已提交到官方插件库,还没过
为什么不用非 mention 模式?
因为要控制 bot 之间的主次层级,不能让所有 bot 都响应每条消息,会出现 ping-pong 问题!
并且飞书的 bot 即使在非 mention 模式下,也会忽略其他机器人发的消息!
效果如下:

我希望在飞书群聊中部署一个多 Agent 团队:
Tech Lead Bot - 负责技术决策和任务分配
iOS Dev Bot - 负责 iOS/Swift 相关问题
Go Dev Bot - 负责后端/Go 相关问题
理想场景:用户提问 → Tech Lead 分析后 @mention 专家 → 专家回复 → 专家之间可以互相讨论
我用了很多方法,都行不通,主要是飞书的限制,如下 :
核心限制:飞书 message_receive_v1 事件
飞书的 Bot 消息接收事件 (im.message.receive_v1) 有一个关键限制:
Bot 发送的消息不会触发其他 Bot 的 message_receive_v1 事件
这意味着:
✅ 用户 @Bot → Bot 收到事件 → Bot 回复
❌ BotA @BotB → BotB 收不到任何事件
这是飞书平台层面的设计,无法通过配置或 API 绑过。
原理 既然飞书不会推送 Bot 间的消息事件,我们在应用层"模拟"这个过程:
BotA 回复消息 → 解析消息中的 @mention → 创建"合成事件" → 直接调用 BotB 的消息处理函数
┌─────────────────────────────────────────────────────────────────┐
│ OpenClaw Gateway │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Tech Lead │ │ iOS Dev │ │ Go Dev │ │
│ │ Bot │────▶│ Bot │────▶│ Bot │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │ │ │ │
│ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Bot Registry (bot-relay.ts) │ │
│ │ - 注册所有 Bot 的 OpenID │ │
│ │ - 解析 @mention 标签 │ │
│ │ - 创建合成事件并触发目标 Bot │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Shared History (shared-history.ts) │ │
│ │ - 跨 Bot 共享聊天记录 │ │
│ │ - 持久化到 JSONL 文件 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
文件 功能
bot-relay.ts Bot 注册、 @mention 解析、合成事件触发
shared-history.ts 跨 Bot 聊天记录共享( JSONL 持久化)
reply-dispatcher.ts Bot 回复后触发 relay
monitor.ts 启动时注册所有 Bot
@mention 格式要求为了让 relay 系统能解析 @mention ,Bot 必须使用特定格式:
<at user_id="ou_xxxx">Go 助手</at>
成功实现的功能
✅ Tech Lead → iOS/Go Bot:Tech Lead 可以 @mention 并触发子 Bot
✅ 共享上下文:所有 Bot 都能看到完整的聊天历史
✅ 动态队友发现:每条消息都会注入可用队友列表
1
KKKKale 13 小时 18 分钟前
感谢 up ,我前几天也在折腾这个,最后是让他们在内部调用沟通,再显式在群里发一条 @消息(给人看)
|
2
alenryuichi OP @KKKKale openclaw 内部的 subagent_send 对么,我也用了一次那个,不过感觉太冗余,不自然。 然后现在用了这个,会更自然一些
|
3
KKKKale 13 小时 7 分钟前
@alenryuichi 对,那个实现不干净。说起来,亲这个 fork 有 pr 给原 repo 咩?可不可以在配置里面加一个选项或者开关,合给原 repo
|
4
mikaelson 13 小时 2 分钟前
你们的 openclaw 拿来做什么。好奇一下。
|
5
zouzou0208 13 小时 1 分钟前
|
6
alenryuichi OP @KKKKale 合了 不过原 repo 审核很慢啊。 到时候看看原 repo 作者的评论了
|
7
alenryuichi OP @zouzou0208 赞,不过我现在用 discord 了。 哈哈 飞书+discord ,各有好多。
|
8
alenryuichi OP @mikaelson 啥都能干,几乎就是数字人了
|
9
mikaelson 11 小时 38 分钟前
@alenryuichi #8 举点实际使用场景?部署了一个不知道拿来干嘛。。
|
10
liujan 9 小时 4 分钟前 via iPhone
感觉用飞书发送消息给 openclaw ,反应好慢,经常发一条消息,过了差不多 10 分钟才有回应,很多时候直接就没回应了,直接在网页端就很快,不知道为什么
|
11
robinlovemaggie 7 小时 37 分钟前 via Android
@liujan 你应该是把飞书分就到了墙外线路上了
|
12
alenryuichi OP @liujan websocket 很快的,应该你选的模型问题?
|