Skip to main content

多 Agent 协作系统怎么设计?8 个核心问题拆解

· 8 min read

多 Agent 协作系统设计有 8 个核心问题,一次讲透。

  1. 角色拆分:决策 / 协调 / 执行三层,权限等级分开
  2. 上下文传递:选择性注入 + 笔记本模式,避开上下文膨胀
  3. 冲突仲裁:分类 + 证据链验证 + 置信度加权升级
  4. 死循环破解:状态机 + 令牌桶 + 仲裁 agent
  5. 共享记忆:共识 / 私有分层 + 命名空间隔离
  6. 可观测性:监控 + 追踪 + 日志 + 全链路 trace
  7. 效果评估:完成度 / 效率 / 经济性,必须 AB 对标
  8. 错误恢复:澄清 → 规划校验 → 反思 → 仲裁兜底

多 Agent 不是 1+1>2,先看值不值再上。


1. 角色怎么拆:别按工种拆,按层级拆

最常见的错误是按工种拆角色——数据采集 agent、数据分析 agent、报告生成 agent。看起来分工明确,实际跑起来全是扯皮。

正确的拆法是按 层级 拆:

每个 agent 只能管两三个相关工具,做到高内聚低耦合。一个 agent 什么都干,能力看起来强,实际上没法做权限控制——你也不知道它下一步会调什么工具、动什么数据。

加分项是 权限等级:核心能力(写库、调支付)、辅助能力(搜索、读库)、工具能力(计算、转换)分开。权限一样,所有 agent 都能改核心数据,出问题根本定位不到是谁干的。

2. 上下文怎么传:别全量传,选着传

最朴素也最贵的做法是"把上家所有上下文都塞给下家"。几个 agent 串下来,prompt 撑爆,token 成本线性上涨。

更好的姿势是 选择性注入

  • 关键结论放在最前面,让下家第一眼看到
  • 用检索器动态筛选真正相关的信息
  • 大量原始数据只在需要的时候才加载

跨窗口(多个 agent 跨多轮)场景,笔记本模式 几乎是必备:

  • 遇到需要长期保留的关键信息,先写进外部存储(KV、向量库、文件)
  • 后面的 agent 按需去查,不塞 prompt
  • 既不丢信息,又把 token 省下来

说白了,把 agent 的"短期记忆"和"长期记忆"分开管理,别让短期记忆膨胀成长期负担。

3. agent 结论冲突了怎么办:先分类,再验证证据

两个 agent 给出相反的结论,第一反应不应该是投票。投票看起来民主,实际上是让多数人的意见碾压少数人的事实。

专业的做法是三步走:

  1. 分类冲突:是强分歧(结论互斥)、弱分歧(细节不一致)还是沉默冲突(一个 agent 没说话)
  2. 证据链验证:不看谁声音大,核对双方各自的证据来源——数据哪来的、推理路径对不对
  3. 置信度加权 + 升级:两边置信度差得大、又是关键决策,自动升级给人类判断

这一步听着麻烦,但是区分"会跑多 agent"和"会设计多 agent"的分水岭。只做投票的方案,碰上对抗样本立刻崩。

4. 死循环怎么防:状态机 + 令牌桶 + 仲裁 agent

多 agent 互相调用的死循环是经典坑。基础解法:

  • 状态机检测调用图:A→B→A 直接环、A→B→C→A 间接环,发现即熔断
  • 迭代 / 转交 / 重试次数硬上限:所有可能递归的计数器都设上限
  • 令牌桶限流:每次调用消耗一个令牌,用完就停

进阶做法是 配一个独立的仲裁 agent,专门实时监控调用关系图:

仲裁 agent 不参与业务,只看"谁在调谁、调了多少次、是不是形成了环"。一旦发现异常,立刻熔断、改路由。这条思路我之前在 Agent 死循环怎么办? 里讲过单 agent 场景,多 agent 只是把环从"工具调用"升级到"agent 调用"。

5. 共享记忆怎么管:分层 + 命名空间 + 过期

所有 agent 共享一份记忆,认知污染 几乎是必然——agent A 写一条临时笔记,agent B 把它当事实用,整个系统开始胡说八道。

记忆至少分两层:

层级读权限写权限用途
共识层所有 agent需仲裁通过跨 agent 共享的事实
私有层仅 owner仅 owneragent 内部状态、临时笔记

更进一步:

  • 命名空间隔离:用权限矩阵控制"谁能写、谁能读",别让所有 agent 都能改共享区
  • 版本控制:记忆有版本号,被覆盖可回滚
  • 信息衰减:记忆有 TTL,过期自动失效,需要时重新验证再用

详细的多层记忆设计可以参考 AI Agent 的记忆系统,本文不展开。

6. 协作链路怎么可观测:监控 + 追踪 + 日志,缺一不可

很多人以为"加个监控就行",其实可观测性要拆成三块:

  • 监控(Metrics):发生了什么——调用次数、成功率、token 消耗
  • 追踪(Tracing):请求走了哪条链路——A → 协调 → B → 协调 → C
  • 日志(Logging):为什么这么做——关键决策点的 reasoning 记录

真正体现水平的,是能拉出 全链路 trace

  • 调用深度有多深(嵌套几层)
  • 冲突率是多少(哪些节点经常打架)
  • token 成本花在哪儿(哪段 prompt 撑爆了)
  • 根因定位一次到位,不用满头大汗去猜

生产环境没 trace,出问题只能靠日志拼接,定位一次根因半天起步

7. 怎么评估效果:4 个维度 + AB 对标

单 agent 看完成度就够了,多 agent 必须看 4 个维度:

维度关键指标
完成度任务准确率、完整率、一致性
协作效率链路长度、冲突率、平均完成步数
经济性总 token 成本、单任务成本、ROI
稳定性异常恢复率、循环发生率、仲裁触发率

这里有个反直觉的认知必须拎出来:多 agent 不是简单的 1+1>2,很多场景下成功率反而会衰减——协调成本、冲突成本、token 成本叠加,可能比单 agent 更差。

所以 必须做 AB 对标测试:单 agent baseline vs 多 agent 方案,跑同一批任务、看同一组指标。只对比"谁效果更好"是片面的,要看"值不值"——多出来的 30% 准确率,能不能 cover 多出来的 200% token 成本?

8. agent 误读需求、连续调错工具:四层兜底

agent 拿到模糊需求就开始猜、猜错了还死磕,是生产环境最常见的翻车之一。解法是四层递进:

  1. 输入澄清层:遇到模糊请求先反问确认,别自己脑补
  2. 规划校验层:执行前先验证工具调用顺序合不合理
  3. 实时监测 + 自我反思层:发现输出异常触发反思,连续出错直接中断
  4. 仲裁 agent 兜底层:重新理解意图、重新规划;解决不了升级给人类

关键原则:不能一条路走到黑。任何一个 layer 失败,下一层立刻接上,而不是在错误方向上多花 10 步 token。

写在最后

8 个问题覆盖了多 agent 协作从设计到落地的全链路:角色拆解、上下文传递、冲突仲裁、死循环防护、记忆管理、可观测性、效果评估、错误恢复。

最后一条建议:不要为多 agent 而多 agent。多 agent 解决的是单 agent 解决不了的复杂问题(并行子任务、专业分工、跨领域协同),但代价是协调成本和调试成本。如果单 agent 加更多工具就能搞定,就别上多 agent。

References

  1. 阿里算法岗三面真题精讲:完整拆解多 Agent 协作通信架构、任务分配机制与分布式协同落地思路 —— AI大模型原理, Bilibili