多Agent 模式深度解析

基于 LangGraph Swarm 的架构探讨与实战 整理时间:2026.07.31


📌 导读:理清楚Agent的架构模式和通信图谱结构

Q:多 Agent 的模式为什么会分为流水线、辩论等?这和点对点、星型拓扑有什么区别?到底从什么角度看的?

A:你问到了核心------多Agent的模式分类有两条不同的线,它们是正交的。

|-----------------|----------------|--------------|
| 维度 | 关注什么 | 对应概念 |
| 架构模式(业务逻辑层) | 谁在干活、怎么分工、谁做决策 | 流水线/辩论/分层/竞争 |
| 网络拓扑(通信结构层) | 数据怎么传、结构怎么连 | 点对点/星型/总线/环形 |

架构模式 = 谁该做什么;拓扑 = 消息怎么走。 它们不是互斥的,任何一个架构模式都可以用任何一种拓扑来实现。

举例:流水线模式

  • 星型拓扑输入 → [B1, B2] → 输出
  • 链式拓扑A → B → C
  • 但核心还是流水线------因为数据是按顺序处理的

正确的理解顺序 :先选架构模式 (决定怎么做),再选网络拓扑(决定怎么连)。前者是"分工",后者是"布线"。

Q:多Agent的架构模式到底是4种,还是多少种?

A:好问题!让我系统梳理一下多 Agent 架构模式的完整分类。这其实取决于你从哪个维度看。

多 Agent 架构模式:从拓扑和交互两个维度

按拓扑结构分(图论视角)

|------------------------|-----------------|---------------------|
| 模式 | 拓扑 | 本质 |
| 点对点 (Peer-to-Peer) | A ↔ B | 全连接,平等节点互相路由 |
| 流水线 (Pipeline) | A → B → C | 有向无环图 (DAG),单向传递 |
| 星型 (Hub-and-Spoke) | A → H ← B | 中心节点控制所有路由 |
| 层级 (Hierarchical) | M → [A, B, C] | 树形,Manager 分配,子节点返回 |
| 网状 (Mesh) | 全连接图 | 任意节点可路由到任意节点 |

按交互目的分(语义视角)

|------------------------|--------|---------------|
| 模式 | 目的 | 核心行为 |
| 路由 (Routing) | 找最合适的人 | 谁擅长这个任务? |
| 协作 (Collaboration) | 一起完成 | 你负责A,我负责B,拼起来 |
| 辩论 (Debate) | 分出胜负 | 谁的论点更强? |
| 协商 (Negotiation) | 达成一致 | 我们各退一步,找到共识 |
| 竞标 (Auction) | 选最优方案 | 谁出价最好? |
| 广播 (Broadcast) | 多角度收集 | 所有人都看看,汇总最优 |

按控制流分(谁决定下一步)

|----------|------------|-------------------------|
| 模式 | 控制者 | 例子 |
| 自主切换 | Agent 自己决定 | 点对点:A 觉得该 B 了,就 handoff |
| 中心调度 | 中心节点决定 | 星型/层级:Manager 决定谁下一步 |
| 规则驱动 | 图结构决定 | 流水线:A 完了自动到 B |
| 混合 | 多个控制源 | 网状:Agent 自主 + 图约束 |


结论 :不是"4种",而是三个维度交叉 的矩阵。同一个代码实现(如 argue_agent.py)可以同时是"星型拓扑 + 辩论目的 + 中心调度控制流"。LangGraph Swarm 的 Command + handoff 机制足够灵活,能表达所有这些组合。

你目前掌握的三种(点对点、流水线、辩论)覆盖了最核心的拓扑和交互模式。竞标模式本质上是"星型 + 竞标目的 + 中心调度"的组合。

多 Agent 架构模式不是单一的"4种",而是三个维度的交叉矩阵:

1. 拓扑维度(图论视角)

  • 点对点 (A↔B)、流水线 (A→B→C)、星型 (A→H←B)、层级 (M→A,B,C)、网状 (全连接)

2. 交互目的维度(语义视角)

  • 路由(找最合适的人)、协作(一起完成)、辩论(分出胜负)、协商(达成一致)、竞标(选最优方案)、广播(多角度收集)

3. 控制流维度(谁决定下一步)

  • 自主切换(Agent 自己决定)、中心调度(中心节点决定)、规则驱动(图结构决定)、混合(多控制源)

同一个实现可以同时属于多个维度。LangGraph Swarm 的 Command + handoff 机制足够灵活,能表达所有这些组合。你目前掌握的三种(点对点、流水线、辩论)覆盖了最核心的拓扑和交互模式。

多 Agent 系统设计中的一个核心矛盾:概念层和实现层是分离的

Q:为什么会有多个角度?

因为不同角色关心不同的事。

|----------|-------------------|---------|
| 角色 | 关心什么 | 看的维度 |
| 产品经理 | 业务目标:辩论还是协作? | 交互目的 |
| 架构师 | 系统结构:星型还是流水线? | 拓扑 |
| 开发者 | 代码实现:谁调handoff? | 控制流 |
| 用户 | 最终效果:结果对不对? | 不关心任何维度 |

不会搞混的原因:LangGraph Swarm 把三个维度统一到了一个机制

关键洞察:所有模式最终都归结为同一件事 --- Command(goto=agent_name)

复制代码
# 点对点:Agent A 自己决定 goto BCommand(goto="bob_agent")

# 星型:Judge 决定 goto ProCommand(goto="pro_agent")

# 流水线:Planner 完成后 goto ResearcherCommand(goto="researcher_agent")

# 竞标:Auctioneer 评分后 goto 最优模型Command(goto="seedream_agent")

代码层面完全一样 ,区别只在 system_prompt 里写了什么语义。


📌 第1章:四种核心架构模式详解

Q:给我详细讲讲多Agent的四种架构模式?

A:好,一个一个拆开讲。


1. 流水线模式(Pipeline)

核心:数据像流水线一样,A处理完给B,B处理完给C。每个Agent只做自己那一环。

复制代码
用户输入 → AgentA(分析) → AgentB(规划) → AgentC(执行) → 输出

适用场景:有明确的步骤依赖,前一步输出是后一步输入;每个步骤可独立优化

经典案例:代码审查Agent团队

|-----------|-----------|---------------------|
| Agent | 职责 | 模型建议 |
| Architect | 分析需求,拆成任务 | 需强推理 → gpt-4o |
| Coder | 写代码实现 | 按需求生成 → gpt-4o-mini |
| Reviewer | 审查代码质量 | 需精准 → gpt-4o |
| Tester | 写测试用例 | 按规则生成 → 便宜模型 |

优势

  • ✅ system_prompt 精简("你负责审查代码"),不需要知道其他环节
  • ✅ 故障隔离:Coder崩了不影响Reviewer
  • ✅ 可单独替换某一步

局限

  • ❌ 延迟累加:3个Agent = 3倍延迟
  • ❌ B发现A做错了,只能回退重来

2. 辩论模式(Debate)

核心:多个Agent独立处理同一个问题,各自得出结论,然后互相比较/争论,由仲裁者给出最终答案。

复制代码
用户问题 → 分发 ──┬──→ AgentA(正面视角)
                  ├──→ AgentB(反面视角) ──→ 仲裁Agent → 最终答案
                  └──→ AgentC(技术视角)

适用场景:需要多视角验证,结果需要高可信度

经典案例:客服质检辩论

|---------|----------|-----------------|
| Agent | 视角 | 输出 |
| 初判Agent | 按标准流程检查 | "这条违规,扣分" |
| 质疑Agent | 从消费者角度辩护 | "但用户当时说可以,不算违规" |
| 终裁Agent | 综合双方 | "轻微违规,警告不扣分" |

优势

  • ✅ 准确率最高------F1比单Agent高5-10%
  • ✅ 能暴露单Agent盲区
  • ✅ 每个Agent只需坚持自己立场

局限

  • ❌ 成本翻倍
  • ❌ 可能无限循环(无防呆机制)
  • ❌ 仲裁Agent的Prompt难写3倍

3. 分层模式(Hierarchical)

核心:有一个Manager Agent负责"管"下面的Worker Agent,决定谁干、什么时候干、结果怎么合并。

复制代码
                   Manager Agent
                 /    |    \
            WorkerA  WorkerB  WorkerC
               (独立执行)

经典案例:旅行规划助手

|------------------|--------------|
| Agent | 职责 |
| Manager(规划Agent) | 收到"我想去三亚玩3天" |
| WorkerA(航班Agent) | 搜索北京→三亚航班 |
| WorkerB(酒店Agent) | 搜索三亚酒店 |
| WorkerC(行程Agent) | 推荐三亚3日游 |

优势

  • ✅ 扩展性好------加Worker不需要改Manager代码
  • ✅ 并行执行------比流水线快
  • ✅ Manager用强模型,Worker用便宜模型

局限

  • ❌ Manager是单点故障
  • ❌ Manager的Prompt最难写
  • ❌ Worker之间不能直接通信

4. 竞争模式(Competition)

核心:多个Agent同时独立尝试同一个任务,谁先出正确结果就用谁的。辩论是互相质疑,竞争是互相比拼速度。

复制代码
用户问题 → 分发 ──┬──→ AgentA(方案1) ──→ 最快出结果
                  ├──→ AgentB(方案2) ──→ 并行走
                  └──→ AgentC(方案3) ──→ 取最优

经典案例:代码优化

|--------|------------|--------|
| Agent | 策略 | 预期 |
| AgentA | Python原生写法 | 普通但快 |
| AgentB | NumPy向量化 | 要导入但快 |
| AgentC | Cython编译 | 要编译但最快 |

优势

  • ✅ 天然容错
  • ✅ 延迟最低
  • ✅ 适合试错场景

局限

  • ❌ 成本最高(N个Agent都跑一遍)
  • ❌ 结果可能不一致
  • ❌ 需要结果合并逻辑

速查对比表

|---------|--------|----------|-------------|----------|
| 维度 | 流水线 | 辩论 | 分层 | 竞争 |
| 核心 | 顺序执行 | 互相验证 | 管理分派 | 并行赛马 |
| 延迟 | 累加(慢) | 累加(最慢) | 并行(快) | 按最快(最快) |
| 成本 | N次调用 | N倍调用 | N次调用 | N倍调用(最高) |
| 扩展性 | 差 | 好 | 最好 | 好 |
| 容错 | 中间坏→全崩 | 坏一个→还有视角 | Manager坏→全崩 | 坏一个→换一个 |
| 适用 | 流程确定 | 需要高准 | 任务可拆 | 多解法并行 |
| 类比 | 流水线工厂 | 法庭辩论 | 经理-员工 | 海选面试 |

总结 :流水线是"顺序",辩论是"校验",分层是"管理",竞争是"赛马"。它们解决不同的问题,不是互相替代。
一个成熟系统通常不会只用一种 ------如Joy Learning:先用流水线 (出题→陪练→评估),评估用辩论 (三Agent独立打分),中间Manager用分层


📌 第2章:点对点 vs 流水线------同样代码,不同语义

Q:点对点和流水线模式有什么区别?代码看起来完全一样。

A:你说得对,代码结构确实一样------都是两个agent互相持有对方的handoff工具。真正的差异在system_prompt定义的交互语义。

点对点(Peer-to-Peer):平等双向

复制代码
alice = create_agent(model, system_prompt="你是加法专家", tools=[add, transfer_to_bob])
bob   = create_agent(model, system_prompt="你是海盗", tools=[transfer_to_alice])

交互特征:Alice和Bob是平级关系,没有主次之分;转移只是"换个人聊天",没有任务依赖。

流水线(Pipeline):有向任务传递

复制代码
planner_agent   = create_agent(model, system_prompt="你是规划者:先分析需求→读文档→产出计划→交给研究者")
researcher_agent = create_agent(model, system_prompt="你是执行者:接收规划者的计划→读文档→实现方案")

交互特征:Planner必须先产出Scope+URL ,然后才交给Researcher;转移是任务驱动 的;有明确的输入输出契约

本质区别对照

|--------------|----------------|--------------------|
| 维度 | 点对点 | 流水线 |
| 关系 | 平级,无主次 | 上下游,有依赖 |
| 转移原因 | 用户偏好("我想找Bob") | 任务阶段("规划完了,该执行了") |
| 上下文传递 | 无明确产出物 | 有明确交付物(Scope+URLs) |
| 方向性 | 双向任意跳转 | 有向流动 |
| Prompt语义 | "你是XX专家" | "你先做A,产出Y,然后交给B" |

结论 :代码结构相同(都是tools=[transfer_to_xxx]),但prompt定义了完全不同的交互语义。这就是为什么system_prompt设计如此重要。


📌 第3章:流水线的死循环风险

Q:流水线会不会死循环?

A:会。从代码看,当前实现没有任何防死循环机制。

如果Planner和Researcher的prompt写得不严谨,就会出现:

复制代码
Planner → Researcher → Planner → Researcher → Planner → ...

四种解决方案

方案1:Prompt层面------明确终止条件(代码库已采用)

复制代码
# Planner: "6. Finally, transfer to the research agent"    # 明确:做完就转交
# Researcher: "6. If you need clarification, transfer to planner"  # 明确:只有需要澄清时才转交

关键:在prompt中写清楚"什么时候该转交,什么时候不该转交"。

方案2:图层面------限制最大跳转次数

复制代码
class SwarmState(MessagesState):
    active_agent: str | None
    handoff_count: int = 0  # 新增:交接计数器

超过MAX_HANDOFFS时直接返回"已达到最大交接次数,请直接回复用户"。

方案3:工具层面------单向handoff

复制代码
planner_agent = create_agent(model, tools=[transfer_to_researcher])  # 有转交工具
researcher_agent = create_agent(model, tools=[])  # 没有转回工具——执行完就结束

方案4:LLM层面------利用上下文窗口自然终止 每次handoff复制全量消息,消息越来越长→超过context window→自动停止生成。


📌 第4章:除了这三种还有什么模式?

Q:现在我明白了点对点、流水线、辩论,还有什么模式?

A:还有四种常见模式------以下为完整全景

已掌握的三种

|---------|-------|------------------|-------------------------------|
| 模式 | 拓扑 | 核心特征 | 例子 |
| 点对点 | A ↔ B | 直接互相handoff,自主决策 | Customer Support |
| 流水线 | A → B | 单向传递,有输入输出契约 | Research (Planner→Researcher) |
| 辩论 | A→J←B | 星型,仲裁控制节奏 | argue_agent.py |

还有四种

4. 层级模式 (Hierarchical)

复制代码
    Manager
    /  |  \
  A    B    C

Manager分配任务给子Agent,子Agent完成后返回Manager。类似"老板→员工"关系。关键:Manager有transfer_to_a/b/c,子Agent只有transfer_to_manager

5. 广播模式 (Broadcast)

复制代码
User → Broadcaster → [A, B, C 并行] → Aggregator → 汇总结果

同一任务同时发给多个Agent,各自独立处理,最后汇总。适合多角度分析、代码审查。

6. 协商模式 (Negotiation)

复制代码
A ↔ B (多轮讨价还价)

两个Agent就某个决策反复协商直到达成共识。与辩论的区别:辩论是"争输赢",协商是"找共识"。

7. 竞标模式 (Auction/Bidding)

复制代码
User → Auctioneer → [A, B, C 各自出价] → 选择最优 → 执行

多个Agent对同一任务"竞标",Auctioneer根据能力/信心选择最佳Agent。适合任务路由、负载均衡。


📌 第5章:实战------文生视频竞标模式

Q:竞标模式在文生视频业务中怎么落地?比如有seedream、可灵、海螺等模型,用户关心价格、速度、质量。

A:这是一个非常贴合实际的场景。竞标模式的核心就是:让每个模型自己说自己能做什么、多少钱、多快,再由拍卖师综合决策。

业务设计

关键区别 vs 普通路由

  • 普通路由:LLM直接判断"谁合适"------单一LLM可能有偏见
  • 竞标模式:每个模型Agent先自我评估 ("我能做吗?多少钱?多快?"),再经综合评分选出最优

竞标流程

复制代码
用户提需求 → Auctioneer拆解任务 → 广播给所有模型Agent
各模型Agent自评+出价 → 返回Auctioneer
Auctioneer多维评分 → 选出最优 → handoff给该Agent执行

用户偏好维度(可配置权重):

  • 质量权重 0.5
  • 速度权重 0.3
  • 价格权重 0.2

Auctioneer决策公式:归一化评分 = 质量×0.5 + 速度×0.3 + 价格×0.2

扩展能力

  • USER_PREFERENCES权重可动态调整(如用户说"我更看重价格",Auctioneer调整权重重新评分)
  • MODEL_CAPABILITIES可随时添加新模型

📌 总结:多Agent模式选择指南

|---------------|---------|
| 你的问题 | 推荐的模式 |
| 任务有固定步骤依赖 | 流水线 |
| 结果需要高可信度 | 辩论 |
| 任务可拆成独立子任务 | 分层 |
| 有多种解法,追求最快 | 竞争 |
| 需要公平选模型,避免偏见 | 竞标 |
| 两个Agent需要达成一致 | 协商 |
| 多个Agent平级协作 | 点对点 |

先单后多,先流后辩------最稳妥的演进路径