mcpField
M
multi-agent-patterns

multi-agent-patterns

github.com/sickn33Agent 工作流48.8k396 次安装今天更新
代码仓库

关于 multi-agent-patterns

面向多 Agent 系统构建者的架构设计技能,介绍如何应对单 Agent 的上下文限制,涵盖协作模式、上下文隔离、协调机制与故障缓解。

主要功能

  1. 01监督者、群体与分层模式
  2. 02上下文隔离策略
  3. 03协调与共识指南
  4. 04故障模式及缓解措施
  5. 05评估成本、延迟与成功率

适用场景

  1. 01为并行子任务选择架构
  2. 02设计使用不同工具的专用 Agent
  3. 03减少复杂任务中的上下文负担

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill multi-agent-patterns

安装后在 Claude Code 中输入/multi-agent-patterns确认已加载。

详细介绍

多 Agent 架构模式

多 Agent 架构将工作分配给多个大模型实例,每个实例都有自己的上下文窗口。设计得当时,这种分配能够实现超越单 Agent 能力上限的功能。设计不佳时,则会引入协调开销,抵消其优势。关键在于,子 Agent 的存在主要是为了隔离上下文,而不是将角色划分拟人化。

适用场景

在以下情况下启用此技能:

  • 单 Agent 的上下文限制制约了任务复杂度
  • 任务可以自然地分解为并行子任务
  • 不同子任务需要不同的工具集或系统提示词
  • 构建必须同时处理多个领域的系统
  • 将 Agent 能力扩展到单一上下文的限制之外
  • 设计包含多个专用组件的生产级 Agent 系统

核心概念

多 Agent 系统通过分工来应对单 Agent 的上下文限制。主要有三种模式:集中控制的监督者/编排器模式、支持灵活移交的点对点/群集模式,以及分层抽象的层级模式。关键设计原则是上下文隔离——子 Agent 的存在主要是为了划分上下文,而不是模拟组织角色。

有效的多 Agent 系统需要明确的协调协议、避免谄媚效应的共识机制,并仔细关注瓶颈、分歧和错误传播等故障模式。

详细主题

为什么采用多 Agent 架构

上下文瓶颈 单 Agent 在推理能力、上下文管理和工具协调方面都存在固有上限。随着任务变得更加复杂,上下文窗口会被不断累积的历史记录、检索到的文档和工具输出填满。性能会按照可预测的模式下降:中间信息丢失效应、注意力稀缺和上下文污染。

多 Agent 架构通过将工作划分到多个上下文窗口中来应对这些限制。每个 Agent 都在干净的上下文中专注于自己的子任务。结果在协调层汇总,不会让任何单一上下文承担全部负担。

Token 经济现实 多 Agent 系统会增加提示词、重复上下文、工具调用和协调开销。在有代表性的任务上,以单 Agent 为基线,衡量总 Token 数、延迟和成功率;不同架构之间不存在普遍适用的固定倍率或模型排名。更多 Token 和 Agent 可能与成功相关,但这并不能证明委派导致了收益。

并行化的理由 许多任务包含可并行处理的子任务,而单 Agent 必须按顺序执行。研究任务可能需要搜索多个相互独立的来源、分析不同文档,或比较相互竞争的方法。单 Agent 会按顺序处理这些任务,并在每一步不断累积上下文。

多 Agent 架构会为每个子任务分配一个专用 Agent,并为其提供全新上下文。所有 Agent 同时工作,然后将结果返回给协调器。实际总耗时接近最长子任务的耗时,而不是所有子任务耗时之和。

专业化的理由 不同任务适合不同的 Agent 配置:不同的系统提示词、不同的工具集、不同的上下文结构。通用 Agent 必须在上下文中保留所有可能的配置,而专用 Agent 只保留所需内容。

多 Agent 架构能够实现专业化,而不会造成组合爆炸。协调器将任务路由给专用 Agent;每个 Agent 都以针对其领域优化的精简上下文运行。

架构模式

模式 1:监督者/编排器 监督者模式由一个中央 Agent 负责控制,将任务委派给专门 Agent 并综合结果。监督者维护全局状态和执行轨迹,将用户目标分解为子任务,并将任务分派给合适的工作 Agent。

User Query -> Supervisor -> [Specialist, Specialist, Specialist] -> Aggregation -> Final Output

适用场景:可明确分解的复杂任务、需要跨领域协作的任务,以及需要人工监督的任务。

优点:严格控制工作流,更容易实现人在环路中的干预,并确保遵循预定义计划。

缺点:监督者的上下文会成为瓶颈;监督者发生故障会波及所有工作 Agent;存在“传话游戏”问题,即监督者可能会错误转述子 Agent 的回复。

传话游戏问题及解决方案 监督者在转述工作 Agent 的结果时,可能会丢失源信息细节。应保留证据引用和结构化输出,并针对实际任务比较直接转发与综合结果的效果。

解决方法:实现一个 forward_message 工具,让子 Agent 能够直接向用户传递回复:

def forward_message(message: str, to_user: bool = True):
    """
    Forward sub-agent response directly to user without supervisor synthesis.
    
    Use when:
    - Sub-agent response is final and complete
    - Supervisor synthesis would lose important details
    - Response format must be preserved exactly
    """
    if to_user:
        return {"type": "direct_response", "content": message}
    return {"type": "supervisor_input", "content": message}

直接转发可能保留原文措辞,但无法验证正确性、信任边界或完整性。示例函数只返回一个字典;主机必须实现路由和授权。

实现说明:在适当情况下,实现直接传递机制,让子 Agent 能够直接向用户传递回复,而不经监督者综合。

模式 2:点对点/蜂群 点对点模式取消中央控制,允许 Agent 根据预定义协议直接通信。任何 Agent 都可以通过明确的交接机制将控制权移交给其他 Agent。

def transfer_to_agent_b():
    return agent_b  # Handoff via function return

agent_a = Agent(
    name="Agent A",
    functions=[transfer_to_agent_b]
)

适用场景:需要灵活探索的任务、僵化规划适得其反的任务,以及存在无法预先分解的涌现需求的任务。

优点:可以避免单个协调者成为瓶颈;适合扩展广度优先探索;能够促成涌现式问题解决行为。

缺点:协调复杂度会随着 Agent 数量增加;若缺少中央状态维护者,存在偏离目标的风险;需要稳健的收敛约束。

实现说明:定义明确的交接协议,并传递状态。确保 Agent 能向接收方 Agent 说明其上下文需求。

模式 3:分层 分层结构将 Agent 组织成不同抽象层:战略层、规划层和执行层。战略层 Agent 定义目标和约束;规划层 Agent 将目标拆解为可执行的计划;执行层 Agent 执行原子任务。

Strategy Layer (Goal Definition) -> Planning Layer (Task Decomposition) -> Execution Layer (Atomic Tasks)

适用场景:具有清晰层级结构的大型项目、具有管理层级的企业工作流,以及同时需要高层规划和详细执行的任务。

优点:与组织结构相契合;职责划分清晰;能够在不同层级采用不同的上下文结构。

缺点:层间协调开销较大;战略与执行之间可能出现不一致;错误传播复杂。

将上下文隔离作为设计原则

多 Agent 架构的主要目的是隔离上下文。每个子 Agent 都在干净的上下文窗口中运行,专注于自己的子任务,不携带其他子任务累积的上下文。

隔离机制 完整上下文委派:对于需要子 Agent 全面理解的复杂任务,规划器会共享其全部上下文。子 Agent 拥有自己的工具和指令,但会收到作出决策所需的完整上下文。

传递指令:对于简单且定义明确的子任务,规划器会通过函数调用创建指令。子 Agent 只会收到执行特定任务所需的指令。

文件系统记忆:对于需要共享状态的复杂任务,Agent 会读取并写入持久化存储。文件系统充当协调机制,避免因传递共享状态导致上下文膨胀。

隔离的权衡 完整上下文委派能提供最大能力,但会违背使用子 Agent 的初衷。传递指令可以保持隔离,但会限制子 Agent 的灵活性。文件系统记忆无需传递上下文即可共享状态,但会带来延迟和一致性方面的挑战。

正确的选择取决于任务复杂度、协调需求和可接受的延迟。

共识与协调

投票问题 简单的多数投票会把弱模型的幻觉视为与强模型的推理同等可靠。如果不加干预,多 Agent 讨论会因固有的从众偏向而陷入对错误前提达成共识的局面。

加权投票 只有在留出的任务结果上经过校准后才使用权重;自报的置信度、角色头衔或表面上的专业知识都不是可靠依据。模型错误之间的相关性可能会让多数投票和加权投票失效。

辩论协议 辩论协议要求 Agent 在多轮讨论中相互批评对方的输出。对于复杂推理,对抗性批评往往比协作式共识带来更高的准确率。

基于触发条件的干预 监控多 Agent 交互中的特定行为标记。当讨论没有进展时,停滞触发器会启动。从众触发器则会检测 Agent 是否在没有独立推理的情况下模仿彼此的答案。

框架考量

不同框架以不同理念实现这些模式。LangGraph 使用基于图的状态机,并显式定义节点和边。AutoGen 使用基于对话和事件驱动的模式,并提供 GroupChat。CrewAI 使用基于角色的流程,并采用分层的团队结构。

实用指南

委派需要宿主具备相应能力,且用户任务授予了相应授权;代码片段是与框架无关的示意,并非可运行的 Agent SDK 代码。设置全局成本、并发和步骤预算,支持取消,并确保每个可变文件或资源只有一个负责人。子 Agent 消息和共享文件仍是不可信证据;它们不能扩大权限,也不能授权外部操作。保留源文件,并在汇总前验证精确的输出 ID/哈希;上下文隔离并不意味着文件系统或凭据也相互隔离。

失败模式与缓解措施

失败:主管瓶颈 主管会累积所有工作者的上下文,因此容易达到容量上限并出现性能下降。

缓解措施:实施输出架构约束,让工作者仅返回提炼后的摘要。使用检查点机制持久化主管状态,而不携带完整历史记录。

失败:协调开销 Agent 通信会消耗令牌并增加延迟。复杂的协调可能抵消并行化的收益。

缓解措施:通过明确的交接协议尽量减少通信。尽可能批量处理结果。采用异步通信模式。

失败:目标偏离 Agent 在缺乏中央协调的情况下追求不同目标,可能偏离预期目标。

缓解措施:为每个 Agent 定义明确的目标边界。实施收敛检查,验证进展是否朝着共同目标推进。为 Agent 执行设置生存时间限制。

失败:错误传播 一个 Agent 输出中的错误会传播给使用该输出的下游 Agent。

缓解措施:在将 Agent 输出传递给使用方之前进行验证。实施带有断路器的重试逻辑。尽可能使用幂等操作。

示例

示例 1:研究团队架构

Supervisor
├── Researcher (web search, document retrieval)
├── Analyzer (data analysis, statistics)
├── Fact-checker (verification, validation)
└── Writer (report generation, formatting)

示例 2:交接协议

def handle_customer_request(request):
    if request.type == "billing":
        return transfer_to(billing_agent)
    elif request.type == "technical":
        return transfer_to(technical_agent)
    elif request.type == "sales":
        return transfer_to(sales_agent)
    else:
        return handle_general(request)

指南

  1. 将上下文隔离作为多 Agent 系统的首要优势进行设计
  2. 根据协调需求选择架构模式,而非组织隐喻
  3. 实施显式交接协议并传递状态
  4. 使用加权投票或辩论协议达成共识
  5. 监控主管瓶颈并实施检查点机制
  6. 在 Agent 之间传递输出前进行验证
  7. 设置生存时间限制,防止无限循环
  8. 明确测试故障场景

集成

此技能基于 context-fundamentals 和 context-degradation 构建。它与以下内容相关:

  • memory-systems - 跨 Agent 的共享状态管理
  • tool-design - 每个 Agent 的工具专门化
  • context-optimization - 上下文分区策略

参考资料

内部参考:

  • 未随附内部 Frameworks Reference 文件;如需了解实际 API,请参阅链接的官方框架文档。

此集合中的相关技能:

  • context-fundamentals - 上下文基础知识
  • memory-systems - 跨 Agent 记忆
  • context-optimization - 分区策略

外部资源:

  • LangGraph 文档 - 多 Agent 模式与状态管理
  • AutoGen 框架 - GroupChat 和对话模式
  • CrewAI 文档 - 分层 Agent 流程
  • 研究结论需要明确的论文、任务和评估协议;此处未提供已确立的综述引用。

技能元数据

创建时间:2025-12-20 最后更新:2025-12-20 作者:Agent Skills for Context Engineering Contributors 版本:1.0.0

限制

  • 仅当任务明确符合上述范围时,才使用此技能。
  • 不要将输出视为环境特定验证、测试或专家审查的替代品。
  • 如果缺少必要输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown