💡一句话总结:上两篇讲了架构和踩坑,这篇讲核心——Agent之间怎么通信、怎么自动派发任务、怎么自动测试闭环。从"人工调度"到"全自动流转",这条路走了三步。
📌 前情回顾
- 第一篇:我用4个AI搭了一个"虚拟开发团队"——架构 overview
- 第二篇:AI虚拟团队跑了一个月,我踩了这些坑——Agent撒谎、Gateway崩溃、任务卡死
这一篇讲解决方案的核心:怎么让4个Agent真正自动协作,而不是靠人盯着调度。
🧠 核心问题:Agent之间怎么"说话"?
最开始,我以为用现成的多Agent框架就行。试了AutoGen、CrewAI,发现:
- 它们假设所有Agent在同一个进程里
- 我的Agent分布在不同机器上
- 通信延迟、进程隔离、状态同步全是问题
结论:得自己造轮子。
📬 第一步:消息总线——给每个Agent一个"收件箱"
目录结构:
inbox/xiaomi/← 小密的收件箱inbox/xiaoxia/← 小虾的收件箱inbox/xnew/← 小牛的收件箱inbox/xbai/← 小白的收件箱outbox/对应每个Agent的发件箱
设计原则:
- 文件即消息:每个任务就是一个JSON文件,扔到对方的inbox
- 三写入:主目录 + 收件人inbox + 发件人outbox,三处同时写入,兜底不丢
- .done标记:任务完成后写一个空的.done文件,用于状态同步
- 24小时自动归档:超过24小时的文件自动移到archive
关键踩坑:最初只写inbox,结果NAS同步偶尔丢文件。三写入后,从未丢过消息。
🔔 第二步:即时唤醒——Agent不能靠"心跳"捡任务
一开始用cron定时检查inbox(类似心跳),发现两个问题:
- 延迟高:心跳间隔5-12分钟,任务派发后等半天才处理
- 漏检:Agent可能在心跳间隙挂了,任务石沉大海
解法:即时唤醒 + 心跳兜底
派发任务后立即调用openclaw agent --agent xxx -m "检查收件箱..."启动完整Agent会话处理任务。如果唤醒失败,自动重启Gateway再试。心跳脚本作为最终兜底,确保任何遗漏的任务都会被处理。
关键发现:openclaw agent --agent xxx -m "..."是最可靠的唤醒方式,比system event更直接。
🔄 第三步:自动测试闭环——开发完自动派测试
这是最有价值的部分。流程:
小虾完成开发 → 小密检测到 → 自动派发测试给小牛 → 小牛测试 → 有问题自动派回小虾
检测开发完成
小密通过扫描outbox中的小虾回复,识别FIX-*/DEV-*任务完成状态,自动创建测试待办文件,立即通过send_task.py派发给小牛并wake。
超时自动重试
心跳脚本每次运行时检查所有进行中的任务,超过5分钟未完成的自动重新wake对应Agent。这解决了之前"wake了但Agent没响应"的问题。
测试失败自动重派
小牛测试回复中包含⚠️标记时,小密自动创建修复任务派回小虾,形成闭环。
🛡️ 防护机制:让系统不会"死"
1. Gateway健康检查
每次心跳用systemctl --user is-active检查Gateway进程,挂了立即自动重启。
2. 内存监控
Gateway内存超6GB自动重启,防止内存泄漏导致卡死。
3. 任务卡死清理
超过30分钟的RETEST任务自动清理,防止垃圾文件积累。
📊 实际效果
跑了两周后的对比:
| 指标 | 手动调度 | 自动闭环 |
|---|---|---|
| 任务平均完成时间 | 2-3小时 | 15-30分钟 |
| 需要人工干预次数 | 每个任务1-2次 | 偶尔(约10%) |
| 任务丢失率 | ~20% | 0% |
| 测试覆盖率 | 人工决定 | 100%自动 |
最大的收益:我可以同时推进多个任务,不用盯着每一个。小虾做完一个,系统自动派测试,测试通过自动归档,失败自动重派。我只看最终报告。
💡 给想做类似系统的人的建议
- 先跑通最小闭环:2个Agent(1开发+1测试),先别搞4个
- 文件通信最稳:别搞复杂的MQ,文件系统就是最好的消息队列
- 验证比信任重要:Agent说"完成了"不算数,必须grep确认
- 心跳兜底不可少:即时唤醒是锦上添花,心跳才是保命的
- 超时必须自动重试:别等,等就是死
如果这篇文章对你有帮助,欢迎点赞收藏。有问题可以在评论区交流。