
170、多 Agent 协作系统:AutoGen、CrewAI 的原理、角色分工与通信协议上周五凌晨两点,我盯着终端里疯狂滚动的日志,一个Agent在循环调用同一个工具,另一个Agent在重复输出“我同意你的观点”,第三个Agent干脆卡死在了等待回复的状态。这不是科幻电影里的AI叛乱,而是我在搭建一个三Agent协作系统时遇到的真实场景——三个大模型互相客套了整整四十分钟,把API调用费烧掉了两百多块,最后给我吐出一句“我们达成了一致,但没找到解决方案”。这种“礼貌性死锁”在多Agent系统里太常见了。今天这篇笔记,我就从那次Debug经历说起,把AutoGen和CrewAI这两个主流框架的原理、角色分工和通信协议掰开揉碎讲清楚。从一次“礼貌死锁”说起当时我用AutoGen搭建了一个简单的写作团队:一个负责构思大纲,一个负责撰写正文,一个负责校对润色。理想很丰满——三个Agent各司其职,流水线作业。现实很骨感——大纲Agent写完大纲后,正文Agent说“你的大纲很棒,我完全同意”,校对Agent说“正文还没写,但我先夸夸大纲”。三个Agent陷入了无限循环的互相赞美,没有一个真正推进任务。这个问题的根源在于:Agent之间的通信协议没有定义清楚。每个Agent都在等待别人先行动,或者都在输出“软性回复”而非“硬性指令”。后来我在AutoGen的配置里加了一条max_consecutive_auto_reply=2,又给每个Agent定义了明确的输出格