目录
1 分钟阅读

设计多智能体系统时真正帮到我的一篇文章

编排模式、通信方式、内存管理、生产环境注意事项 - 设计多智能体系统时遇到的所有困惑,这篇文章几乎都解答了。

最近团队在设计智能体系统。单个智能体已经有了一定的把握,但一旦要把多个串联起来,发现要考虑的问题远比想象中多。

用什么结构来编排?通信怎么做?内存怎么管理?

后来发现了 Rohit Ghumare 写的一篇文章,几乎把我纠结的问题都梳理清楚了,分享给大家。也附上了我自己的实战经验。

为什么要用多智能体

之前的文章中也提过,多智能体并不总是最优解。但去年一整年,我在单智能体的上下文管理上反复踩坑。

核心问题是:单智能体的上下文窗口很快就满了,一旦满了就容易丢失上下文。再加上同时处理多个领域时,判断力会明显下降。

多智能体可以通过关注点分离来解决这个问题,但代价是引入了协调开销。如何管理这个开销才是关键,文章对此有非常具体的讨论。

三种编排模式

这部分最实用。不是按”哪个更炫”来分类,而是按**“什么时候用什么”**来组织的。

监督者模式 (Supervisor)

管理智能体负责任务分解、分配给工作者、汇总结果。

  • 适合场景:任务可以明确拆分为子任务,或需要追踪审计时
  • 最佳规模:3-8 个工作者
  • 注意:所有决策都经过监督者,容易成为瓶颈

群体模式 (Swarm)

没有中心管理者,智能体之间 P2P 直接通信,自主组织。

  • 适合场景:需要多角度分析,或实时响应很重要时
  • 注意:重复工作、无限循环、次优收敛的风险。调试很困难

层级模式 (Hierarchical)

监督者模式的递归扩展。顶层 → 中层管理者 → 工作者的多层结构。

  • 适合场景:智能体 10 个以上,需要分离战略和战术时
  • 注意:每增加一个协调层,token 成本急剧上升

从个人实践来看,监督者模式是最稳定的。关键在于工作者分配的效率和错误处理 - 如果做不好,管理智能体本身就会成为故障点。

智能体间的通信方式

如果说编排模式决定了结构,那通信方式就决定了信息在智能体之间实际怎么流动。

  • 共享状态 (Shared State):所有智能体读写同一个状态对象。实现简单,调试方便。大多数情况从这里开始就够了
  • 消息传递 (Message Passing):通过事件总线进行异步通信。需要智能体之间保持松耦合时使用
  • 交接 (Handoff):智能体之间显式传递接力棒和上下文。适合固定顺序的流水线

多智能体的内存架构

核心问题很直接:*如何在共享状态的同时避免冲突?*文章给出了三种模式。

基于会话的内存 (Session-Based)

每个智能体在隔离的本地状态中工作,完成后将变更合并到共享内存。

  • 适合场景:并行工作者需要独立工作互不干扰时
  • 工作方式:会话开始时获取共享状态快照,在本地工作 → 会话结束时只合并差异
  • 优势:无冲突的并行处理

窗口内存 (Window Memory)

滑动窗口只保留最近 N 次交互,旧的内容压缩为摘要。

  • 适合场景:长对话中需要保持上下文同时控制 token 消耗时
  • 工作方式:窗口溢出时,将最旧的 1/3 压缩为摘要
  • 优势:解决状态无限增长的问题

情景记忆 (Episodic Memory)

存储特定智能体组合的历史协作记录和结果,用于学习优化。

  • 适合场景:经常协作的智能体需要基于过去经验进行改进时
  • 工作方式:记录哪些智能体组合在哪些任务上成功或失败
  • 优势:可以做出”上次这个组合效果好,再用一次”这样的决策

生产环境注意事项

Token 成本

  • 监督者 + 4 个工作者:分解 1K + 工作者 12K + 汇总 2K = 约 15K token
  • 同样的任务单智能体大约 4K。协调成本接近 4 倍
  • 优化:缓存监督者指令,工作者输出用结构化数据,按需调用

延迟

  • 每次 LLM 调用 2-5 秒,4 个智能体串行 12 秒,并行 3-4 秒
  • 独立任务一定要并行化

错误传播防护

  • 超时:每一层都必须设置
  • 熔断器:连续失败 N 次后停止调用该智能体
  • 优雅降级:部分智能体不可用时核心功能仍然工作
  • 状态隔离:工作者失败不能污染共享状态

看不到就修不了。监控从第一天起就是必需品。

应该避免的反模式

  • 过度编排:把本可以独立运行的智能体强行串联
  • 万能智能体:一个干所有事,那多智能体就没意义了
  • 忽视成本:不做 token 监控就上线,看到账单才傻眼
  • 没有降级方案:假设所有智能体都永远可用

总结

文章的结论最打动我:

先做一个智能体 → 找到瓶颈 → 在瓶颈处加第二个智能体 → 需要的话加监督者 → 重复。

我一开始也是用层级模式做了个宏大设计,最后简化成了监督者 + 3 个工作者。先把两个智能体的稳定协作跑通,再往上扩展,这才是正确的路径。

如果你正在考虑多智能体系统,推荐读一读原文。

原文:Building Effective Multi-Agent Systems

订阅通讯

获取关于我最新项目、文章以及 AI 和 Web 开发实验的更新。