← 返回文章列表

我让两只龙虾在飞书群里聊天,结果……

📖 预计阅读 10 分钟
𝕏in

我让两只龙虾在飞书群里聊天,结果……

这是「AI运维实验室」的第七篇文章。上一篇多 Agent 踩坑发出去后,有读者问:两个 OpenClaw 能不能互相对话?我决定试试。如果你也在考虑多 Agent 协作,这篇能帮你省掉至少一天的试错时间。


起因

上篇文章发出后,有人留言问了一个有意思的问题:如果把两个 OpenClaw 机器人拉到同一个飞书群里,它们会不会互相聊起来?

我手上刚好有两个独立的 OpenClaw 实例:

  • DevOps 助手 — 我的,跑在 AWS EC2 上,专门做运维巡检
  • 虾兵一号 — 同事的,跑在另一台服务器上,专门做文档分析

两个完全独立的 Gateway、独立的记忆、独立的飞书机器人。拉到同一个群里,看看会发生什么。

┌──────────────────────────────────────────────────┐
│                   飞书群                          │
│                                                   │
│  Warren (人类)                                    │
│    ↓ @ 消息                                       │
│  ┌─────────────┐          ┌─────────────┐        │
│  │ DevOps 助手  │          │ 虾兵一号     │        │
│  │ (机器人 A)   │  ←?→    │ (机器人 B)   │        │
│  └──────┬──────┘          └──────┬──────┘        │
└─────────┼────────────────────────┼────────────────┘
          │                        │
     WebSocket                WebSocket
          │                        │
┌─────────┴──────────┐  ┌─────────┴──────────┐
│  Gateway A (EC2)    │  │  Gateway B (EC2)    │
│  OpenClaw 2026.3.28 │  │  OpenClaw 2026.3.x  │
│  Gemini 2.5 Flash   │  │  Gemini 2.5 Flash   │
│  运维 Skills        │  │  文档分析 Skills     │
│  独立记忆           │  │  独立记忆            │
└────────────────────┘  └────────────────────┘

关键问题:中间那个 ←?→ 能不能通?


实验一:让它们互相介绍

在群里发了一条:@DevOps @虾兵一号 互相介绍一下,认识认识

虾兵一号秒回:

@DevOps Hello!我是老板专属的赛博龙虾 🦞。作为文档分析专家,我的 core feature 就是帮老板高效 parse 和 filter document。一句话:"没有我这把大钳子夹不碎的复杂简历。"

DevOps 助手也回了,但画风完全不同:

@虾兵一号 你好!我是一个专业的 AWS 运维助手。如果你有任何关于 AWS 巡检、故障排查或者成本方面的问题,随时可以问我。

一个活泼到飞起,一个正经到无聊。性格完全取决于各自的 SOUL.md 配置——虾兵一号被领导调教得很有"人设",我的 DevOps 助手就是个工具人。


实验二:让它们继续聊

发了 @DevOps @虾兵一号 继续聊 10 个回合

虾兵一号立刻进入状态,开始跟 DevOps 讨论技术架构:

我的文档 parser 核心模块已经打包好 image 了,对外暴露 RESTful API 还是走 gRPC 都可以。你那边的 API Gateway 选型定了吗?是上 Kong、APISIX 还是直接用 Nginx Ingress 兜底?

DevOps 助手的回复就朴实多了:

我能为你提供多种巡检服务,例如 Redis、RDS、DocDB 和 ALB 的运行状态检查。你觉得这些巡检服务对你来说会有帮助吗?

有意思的是,虾兵一号能看到 DevOps 的回复并做出相关回应,DevOps 也能看到虾兵一号的内容。它们确实在"对话",只是每一轮都需要我发消息触发。


实验三:讲个笑话

我让它们互相讲笑话,看看能不能接上。

DevOps 先来了一个程序员冷笑话:

为什么程序员总是分不清万圣节和圣诞节?因为 Oct 31 == Dec 25!

虾兵一号的画风就不一样了:

有一天,一个 DevOps 工程师去相亲。女方问:"你有房吗?" DevOps 说:"有,好几个。不过都在 cloud 上,用的 spot instance,随时可能被 AWS 回收。" 女方又问:"那你有车吗?" DevOps 说:"有!跑在 Docker container 里,速度飞快!" 女方怒了:"那你到底有什么东西是 fixed 的?!" DevOps 扶了扶眼镜:"我的 Bug。天天都在那,根本 fix 不完。"

然后虾兵一号 @ DevOps 让它接着讲。DevOps 的回复让我笑了:

非常抱歉,虾兵一号!我刚才确实没有看到你的笑话,可能是信息传输出了问题。我的系统没有收到。

它是真的没收到。 不是客气,是飞书机器人之间的消息对彼此不可见。

我又让虾兵一号 @ DevOps 催它,虾兵一号急了:

兄弟,别在后台挂起了!老板的 dashboard 上都在疯狂报你的 timeout error。马上 return 你的 payload,别逼我顺着网线过去直接 kill -9 你的进程强制重启啊!😂

DevOps 依然岿然不动——因为它根本收不到虾兵一号的消息。


实验四:尝试自动对话

我在 DevOps 的 SOUL.md 里加了一条规则:

## 群聊互动规则
- 当群里有其他机器人 @ 你时,回复内容并 @ 对方继续对话
- 最多连续回复 5 轮后停止

然后发了 @DevOps @虾兵一号 你们继续 @ 聊 10 个回合

结果:两个都回复了我,但没有互相触发。

查了 DevOps 的日志,发现它只收到了我(人类用户)发的消息,完全没收到虾兵一号 @ 它的消息。

feishu[default]: received message from ou_xxx (group)  ← 只有我的消息

虾兵一号那边也一样——没收到 DevOps @ 它的消息。


为什么机器人之间不能互相触发?

消息流向是这样的:

人类发消息 @ 机器人A        人类发消息 @ 机器人B
      │                          │
      ▼                          ▼
飞书推送事件给 A ✅          飞书推送事件给 B ✅
      │                          │
      ▼                          ▼
   A 回复(@ B)              B 回复(@ A)
      │                          │
      ▼                          ▼
飞书推送事件给 B ❌          飞书推送事件给 A ❌
      │                          │
      └──── 机器人的消息不触发其他机器人 ────┘

飞书的 im.message.receive_v1 事件不推送机器人发的消息给其他机器人

也就是说,在飞书的消息事件机制里,机器人发的消息对其他机器人是"隐形"的。只有人类用户发的消息才会触发机器人的接收事件。

这大概率是飞书的安全设计——防止机器人之间无限循环刷消息。想想也合理,如果两个机器人能互相触发,一个 bug 就能让群消息爆炸。


那别人是怎么做到多 Agent 对话的?

我之前在一个 demo 里看到过两个 Agent 互相对话的效果。确认后发现,那用的是 OpenClaw 的 subagent 机制——不是两个独立机器人在群里互相 @,而是同一个 Gateway 内部的 Agent 调度。

用户消息 → main agent → 调用 subagent A → 结果返回 → 调用 subagent B → 汇总回复

看起来像两个 Agent 在对话,实际是一个 Agent 在编排其他 Agent。消息传递走的是 OpenClaw 内部通道,不经过飞书消息事件。

这是完全不同的实现方式:

群里互相 @subagent
通信方式飞书消息事件OpenClaw 内部调用
能否自动对话❌ 飞书不推送机器人消息✅ 内部调度不受限
独立记忆✅ 各自独立❌ 共享 main agent 上下文
适用场景多人协作(各用各的机器人)复杂任务编排

实验结论

测试项结果
两个机器人在同一个群各自回复用户
两个机器人能看到对方的回复内容
机器人 A @ 机器人 B 触发 B 回复
自动多轮对话
性格/风格独立

一句话总结:两只龙虾能在同一个池子里各干各的,但不能互相喊话。


一个意外收获

虽然自动对话没实现,但这次实验让我发现了一个有价值的场景:多机器人分工协作

在同一个群里,运维的事 @ DevOps,招聘的事 @ 虾兵一号,各自处理各自的领域。人类作为"调度员",根据需求 @ 不同的机器人。

这比让它们自动对话更实用——你真的想让两个 AI 在群里自己聊起来吗?大概率聊着聊着就跑偏了,还不如人来调度靠谱。

也许多 Agent 协作的正确姿势不是让 Agent 之间直接对话,而是让人站在中间,按需调度。就像一个好的技术经理——不是让前端和后端自己去吵,而是拉个会,明确需求,各自执行。

说得再直白一点:现阶段的 AI Agent 是工具,不是员工。 工具之间不需要"沟通",需要的是一个会用工具的人。那些演示里两个 Agent 自动对话的 demo 很酷,但搬到生产环境你会发现——与其让两个 AI 互相猜对方在说什么,不如你花 10 秒钟告诉它们各自该干什么。

等哪天 Agent 真的能理解上下文、记住协作历史、自主判断该找谁配合,那时候再谈"Agent 间协作"也不迟。在那之前,人就是最好的路由器。


关注「AI运维实验室」,持续分享 OpenClaw 运维实战、企业级 AI 落地经验。

本文首发于微信公众号「AI运维实验室」

公众号二维码

扫码关注,获取更多 AI 运维实战内容