openclaw 自带的官方飞书插件不支持 bot 之间的 mention 操作,我修复了

查看 22|回复 0
作者:alenryuichi   
地址:: https://github.com/Alenryuichi/clawdbot-feishu
实测可以让 main agent 发送 @去调用其他 agent ,组成 multi-agent 开发团队
pr 已提交到官方插件库,还没过
效果如下:
https://picui.ogmua.cn/s1/2026/02/28/69a29bfdd8bd0.webp
背景
我们希望在飞书群聊中部署一个多 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-to-Bot Relay (合成事件)
原理
既然飞书不会推送 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 必须使用特定格式:
Go 助手
成功实现的功能
✅ Tech Lead → iOS/Go Bot:Tech Lead 可以 @mention 并触发子 Bot
✅ 共享上下文:所有 Bot 都能看到完整的聊天历史
✅ 动态队友发现:每条消息都会注入可用队友列表
您需要登录后才可以回帖 登录 | 立即注册

返回顶部