第19章 多智能体架构模式 —— 从单 Agent 到 Agent 团队

上一篇我们了解了 Agent-Harness 协作模式。本章我们看多智能体架构——从单 Agent 到 Agent 团队。

多智能体架构是什么

一句话定义:多个 Agent 协作完成复杂任务——主 Agent + 子 Agent + 专用 Agent。

Multi-Agent Architecture = Agent 团队协作 定位:Harness 的扩展层高级模式,处理复杂任务

图表 代码
graph TB
    Main[主 Agent
协调指挥] --> Sub1[子 Agent 1
代码审查] Main --> Sub2[子 Agent 2
测试执行] Main --> Sub3[子 Agent 3
文档生成] Sub1 -->|返回结果| Main Sub2 -->|返回结果| Main Sub3 -->|返回结果| Main Main[团队指挥官] Sub1/Sub2/Sub3[专业队员]
graph TB
    Main[主 Agent
协调指挥] --> Sub1[子 Agent 1
代码审查] Main --> Sub2[子 Agent 2
测试执行] Main --> Sub3[子 Agent 3
文档生成] Sub1 -->|返回结果| Main Sub2 -->|返回结果| Main Sub3 -->|返回结果| Main Main[团队指挥官] Sub1/Sub2/Sub3[专业队员]
graph TB
    Main[主 Agent
协调指挥] --> Sub1[子 Agent 1
代码审查] Main --> Sub2[子 Agent 2
测试执行] Main --> Sub3[子 Agent 3
文档生成] Sub1 -->|返回结果| Main Sub2 -->|返回结果| Main Sub3 -->|返回结果| Main Main[团队指挥官] Sub1/Sub2/Sub3[专业队员]
graph TB
    Main[主 Agent<br/>协调指挥] --> Sub1[子 Agent 1<br/>代码审查]
    Main --> Sub2[子 Agent 2<br/>测试执行]
    Main --> Sub3[子 Agent 3<br/>文档生成]
    
    Sub1 -->|返回结果| Main
    Sub2 -->|返回结果| Main
    Sub3 -->|返回结果| Main
    
    Main[团队指挥官]
    Sub1/Sub2/Sub3[专业队员]

核心机制:

  • 主 Agent:协调指挥,派发任务,收集结果
  • 子 Agent:独立执行,专业分工,结果返回
  • 协作模式:派发→执行→反馈→整合
  • 隔离保护:子 Agent 上下文独立,不污染主 Agent

为什么需要多智能体

单 Agent 的局限

图表 代码
graph TB
    subgraph SingleAgentLimit["单 Agent 局限"]
        L1[复杂任务难以处理
单Agent能力有限] L2[上下文快速溢出
历史累积爆炸] L3[专业知识不足
通用Agent缺领域知识] L4[并发效率低
串行执行慢] end style SingleAgentLimit fill:#FFE0E0
graph TB
    subgraph SingleAgentLimit["单 Agent 局限"]
        L1[复杂任务难以处理
单Agent能力有限] L2[上下文快速溢出
历史累积爆炸] L3[专业知识不足
通用Agent缺领域知识] L4[并发效率低
串行执行慢] end style SingleAgentLimit fill:#FFE0E0
graph TB
    subgraph SingleAgentLimit["单 Agent 局限"]
        L1[复杂任务难以处理
单Agent能力有限] L2[上下文快速溢出
历史累积爆炸] L3[专业知识不足
通用Agent缺领域知识] L4[并发效率低
串行执行慢] end style SingleAgentLimit fill:#FFE0E0
graph TB
    subgraph SingleAgentLimit["单 Agent 局限"]
        L1[复杂任务难以处理<br/>单Agent能力有限]
        L2[上下文快速溢出<br/>历史累积爆炸]
        L3[专业知识不足<br/>通用Agent缺领域知识]
        L4[并发效率低<br/>串行执行慢]
    end
    
    style SingleAgentLimit fill:#FFE0E0
局限说明示例
复杂任务难以处理单 Agent 面对复杂任务能力有限大型项目重构需多个专业 Agent
上下文快速溢出历史累积导致上下文爆炸10 次循环后 messages 数组过大
专业知识不足通用 Agent 缺乏领域专业知识安全审查需要专业安全 Agent
并发效率低串行执行效率低多个独立任务可并发执行

多智能体的优势

图表 代码
graph TB
    subgraph MultiAgentAdv["多智能体优势"]
        A1[复杂任务拆解
专业化分工] A2[上下文隔离
不污染主Agent] A3[专业知识注入
专用Agent有领域知识] A4[并发执行
提升效率] end style MultiAgentAdv fill:#E0FFE0
graph TB
    subgraph MultiAgentAdv["多智能体优势"]
        A1[复杂任务拆解
专业化分工] A2[上下文隔离
不污染主Agent] A3[专业知识注入
专用Agent有领域知识] A4[并发执行
提升效率] end style MultiAgentAdv fill:#E0FFE0
graph TB
    subgraph MultiAgentAdv["多智能体优势"]
        A1[复杂任务拆解
专业化分工] A2[上下文隔离
不污染主Agent] A3[专业知识注入
专用Agent有领域知识] A4[并发执行
提升效率] end style MultiAgentAdv fill:#E0FFE0
graph TB
    subgraph MultiAgentAdv["多智能体优势"]
        A1[复杂任务拆解<br/>专业化分工]
        A2[上下文隔离<br/>不污染主Agent]
        A3[专业知识注入<br/>专用Agent有领域知识]
        A4[并发执行<br/>提升效率]
    end
    
    style MultiAgentAdv fill:#E0FFE0
优势说明示例
复杂任务拆解拆解任务,专业化分工重构→代码审查Agent + 测试Agent
上下文隔离子 Agent 独立上下文,不污染主 Agent子 Agent 上下文不泄露
专业知识注入专用 Agent 有领域知识安全Agent有安全专业知识
并发执行多个任务并发执行代码审查和测试并发执行

多智能体架构模式

三种核心模式

图表 代码
graph TB
    subgraph Patterns["三种架构模式"]
        P1[层级模式
主Agent → 子Agent] P2[并行模式
主Agent → 多个子Agent并发] P3[协作模式
多个Agent平等协作] end P1 --> P2 --> P3
graph TB
    subgraph Patterns["三种架构模式"]
        P1[层级模式
主Agent → 子Agent] P2[并行模式
主Agent → 多个子Agent并发] P3[协作模式
多个Agent平等协作] end P1 --> P2 --> P3
graph TB
    subgraph Patterns["三种架构模式"]
        P1[层级模式
主Agent → 子Agent] P2[并行模式
主Agent → 多个子Agent并发] P3[协作模式
多个Agent平等协作] end P1 --> P2 --> P3
graph TB
    subgraph Patterns["三种架构模式"]
        P1[层级模式<br/>主Agent → 子Agent]
        P2[并行模式<br/>主Agent → 多个子Agent并发]
        P3[协作模式<br/>多个Agent平等协作]
    end
    
    P1 --> P2 --> P3

模式 1:层级模式(Hierarchical)

一句话定义:主 Agent 指挥,子 Agent 执行——明确的主从关系。

图表 代码
graph TB
    Main[主 Agent
协调指挥] --> Plan[规划任务] Plan --> Dispatch1[派发子 Agent 1] Plan --> Dispatch2[派发子 Agent 2] Dispatch1 --> Sub1[子 Agent 1
执行任务A] Dispatch2 --> Sub2[子 Agent 2
执行任务B] Sub1 -->|返回结果| Collect[收集结果] Sub2 -->|返回结果| Collect Collect --> Integrate[整合结果] Integrate --> MainResult[返回最终结果]
graph TB
    Main[主 Agent
协调指挥] --> Plan[规划任务] Plan --> Dispatch1[派发子 Agent 1] Plan --> Dispatch2[派发子 Agent 2] Dispatch1 --> Sub1[子 Agent 1
执行任务A] Dispatch2 --> Sub2[子 Agent 2
执行任务B] Sub1 -->|返回结果| Collect[收集结果] Sub2 -->|返回结果| Collect Collect --> Integrate[整合结果] Integrate --> MainResult[返回最终结果]
graph TB
    Main[主 Agent
协调指挥] --> Plan[规划任务] Plan --> Dispatch1[派发子 Agent 1] Plan --> Dispatch2[派发子 Agent 2] Dispatch1 --> Sub1[子 Agent 1
执行任务A] Dispatch2 --> Sub2[子 Agent 2
执行任务B] Sub1 -->|返回结果| Collect[收集结果] Sub2 -->|返回结果| Collect Collect --> Integrate[整合结果] Integrate --> MainResult[返回最终结果]
graph TB
    Main[主 Agent<br/>协调指挥] --> Plan[规划任务]
    Plan --> Dispatch1[派发子 Agent 1]
    Plan --> Dispatch2[派发子 Agent 2]
    
    Dispatch1 --> Sub1[子 Agent 1<br/>执行任务A]
    Dispatch2 --> Sub2[子 Agent 2<br/>执行任务B]
    
    Sub1 -->|返回结果| Collect[收集结果]
    Sub2 -->|返回结果| Collect
    
    Collect --> Integrate[整合结果]
    Integrate --> MainResult[返回最终结果]

特点:

特点说明适用场景
主从关系主 Agent 指挥,子 Agent 执行需要协调的复杂任务
任务派发主 Agent 拆解任务并派发大型任务拆解
结果整合主 Agent 整合子 Agent 结果多个子任务结果汇总
上下文隔离子 Agent 独立上下文防止上下文污染

实现方式:

# 层级模式实现
def hierarchical_mode(main_agent, task):
    # 1. 主 Agent 规划
    plan = main_agent.plan(task)
    
    # 2. 拆解任务
    sub_tasks = split_task(plan)
    
    # 3. 派发子 Agent
    results = []
    for sub_task in sub_tasks:
        # 启动子 Agent(独立上下文)
        sub_agent = spawn_subagent(sub_task["type"])
        result = sub_agent.execute(sub_task)
        results.append(result)
    
    # 4. 整合结果
    final_result = main_agent.integrate(results)
    
    return final_result

模式 2:并行模式(Parallel)

一句话定义:多个子 Agent 并发执行——提升效率。

图表 代码
graph TB
    Main[主 Agent] --> Plan[规划任务]
    Plan --> Split[拆解为独立子任务]
    
    Split --> Parallel{并行派发}
    
    Parallel -->|并发| Sub1[子 Agent 1
执行任务A] Parallel -->|并发| Sub2[子 Agent 2
执行任务B] Parallel -->|并发| Sub3[子 Agent 3
执行任务C] Sub1 -->|返回| Collect[收集结果] Sub2 -->|返回| Collect Sub3 -->|返回| Collect Collect --> Integrate[整合结果]
graph TB
    Main[主 Agent] --> Plan[规划任务]
    Plan --> Split[拆解为独立子任务]
    
    Split --> Parallel{并行派发}
    
    Parallel -->|并发| Sub1[子 Agent 1
执行任务A] Parallel -->|并发| Sub2[子 Agent 2
执行任务B] Parallel -->|并发| Sub3[子 Agent 3
执行任务C] Sub1 -->|返回| Collect[收集结果] Sub2 -->|返回| Collect Sub3 -->|返回| Collect Collect --> Integrate[整合结果]
graph TB
    Main[主 Agent] --> Plan[规划任务]
    Plan --> Split[拆解为独立子任务]
    
    Split --> Parallel{并行派发}
    
    Parallel -->|并发| Sub1[子 Agent 1
执行任务A] Parallel -->|并发| Sub2[子 Agent 2
执行任务B] Parallel -->|并发| Sub3[子 Agent 3
执行任务C] Sub1 -->|返回| Collect[收集结果] Sub2 -->|返回| Collect Sub3 -->|返回| Collect Collect --> Integrate[整合结果]
graph TB
    Main[主 Agent] --> Plan[规划任务]
    Plan --> Split[拆解为独立子任务]
    
    Split --> Parallel{并行派发}
    
    Parallel -->|并发| Sub1[子 Agent 1<br/>执行任务A]
    Parallel -->|并发| Sub2[子 Agent 2<br/>执行任务B]
    Parallel -->|并发| Sub3[子 Agent 3<br/>执行任务C]
    
    Sub1 -->|返回| Collect[收集结果]
    Sub2 -->|返回| Collect
    Sub3 -->|返回| Collect
    
    Collect --> Integrate[整合结果]

特点:

特点说明适用场景
并发执行多个子 Agent 同时执行多个独立任务
效率提升并发执行节省时间大量相似任务
独立任务子任务相互独立代码审查 + 测试 + 文档
结果汇总主 Agent 汇总所有结果整合多个专业结果

实现方式:

# 并行模式实现
def parallel_mode(main_agent, task):
    # 1. 主 Agent 规划
    sub_tasks = main_agent.split_parallel(task)
    
    # 2. 并发派发子 Agent
    import concurrent.futures
    
    results = []
    with concurrent.futures.ThreadPoolExecutor() as executor:
        futures = []
        for sub_task in sub_tasks:
            sub_agent = spawn_subagent(sub_task["type"])
            future = executor.submit(sub_agent.execute, sub_task)
            futures.append(future)
        
        # 3. 等待所有结果
        for future in concurrent.futures.as_completed(futures):
            results.append(future.result())
    
    # 4. 整合结果
    final_result = main_agent.integrate(results)
    
    return final_result

模式 3:协作模式(Collaborative)

一句话定义:多个 Agent 平等协作——无明确主从关系。

图表 代码
graph TB
    Agents[多个 Agent
平等协作] -->|共享状态| SharedState[共享状态
messages/tasks] Agent1[Agent 1
代码专家] <-->|协作| Agent2[Agent 2
测试专家] Agent1 <-->|协作| Agent3[Agent 3
文档专家] Agent2 <-->|协作| Agent3 Agent1 -->|贡献| SharedState Agent2 -->|贡献| SharedState Agent3 -->|贡献| SharedState SharedState -->|读取| Agents
graph TB
    Agents[多个 Agent
平等协作] -->|共享状态| SharedState[共享状态
messages/tasks] Agent1[Agent 1
代码专家] <-->|协作| Agent2[Agent 2
测试专家] Agent1 <-->|协作| Agent3[Agent 3
文档专家] Agent2 <-->|协作| Agent3 Agent1 -->|贡献| SharedState Agent2 -->|贡献| SharedState Agent3 -->|贡献| SharedState SharedState -->|读取| Agents
graph TB
    Agents[多个 Agent
平等协作] -->|共享状态| SharedState[共享状态
messages/tasks] Agent1[Agent 1
代码专家] <-->|协作| Agent2[Agent 2
测试专家] Agent1 <-->|协作| Agent3[Agent 3
文档专家] Agent2 <-->|协作| Agent3 Agent1 -->|贡献| SharedState Agent2 -->|贡献| SharedState Agent3 -->|贡献| SharedState SharedState -->|读取| Agents
graph TB
    Agents[多个 Agent<br/>平等协作] -->|共享状态| SharedState[共享状态<br/>messages/tasks]
    
    Agent1[Agent 1<br/>代码专家] <-->|协作| Agent2[Agent 2<br/>测试专家]
    Agent1 <-->|协作| Agent3[Agent 3<br/>文档专家]
    Agent2 <-->|协作| Agent3
    
    Agent1 -->|贡献| SharedState
    Agent2 -->|贡献| SharedState
    Agent3 -->|贡献| SharedState
    
    SharedState -->|读取| Agents

特点:

特点说明适用场景
平等协作无明确主从关系专家团队协作
共享状态共享 messages/tasks需要实时信息共享
专业分工每个 Agent 有专业领域多专业协作
动态协作协作关系动态调整复杂问题协作解决

实现方式:

# 协作模式实现
def collaborative_mode(agents, task):
    # 1. 初始化共享状态
    shared_state = {
        "messages": [],
        "tasks": [],
        "context": {}
    }
    
    # 2. 每个 Agent 贡献
    results = []
    for agent in agents:
        # Agent 读取共享状态
        agent.observe(shared_state)
        
        # Agent 执行任务
        result = agent.execute(task)
        
        # Agent 贡献结果
        shared_state["messages"].append(result)
        results.append(result)
    
    # 3. 整合结果
    final_result = integrate_collaborative(results)
    
    return final_result

主 Agent 与子 Agent

主 Agent 的职责

图表 代码
graph TB
    subgraph MainAgentRole["主 Agent 职责"]
        M1[任务接收
接收用户任务] M2[任务规划
拆解任务为子任务] M3[Agent 选择
选择合适的子 Agent] M4[任务派发
派发任务给子 Agent] M5[结果收集
收集子 Agent 结果] M6[结果整合
整合所有子 Agent 结果] M7[最终输出
返回最终结果给用户] end M1 --> M2 --> M3 --> M4 --> M5 --> M6 --> M7
graph TB
    subgraph MainAgentRole["主 Agent 职责"]
        M1[任务接收
接收用户任务] M2[任务规划
拆解任务为子任务] M3[Agent 选择
选择合适的子 Agent] M4[任务派发
派发任务给子 Agent] M5[结果收集
收集子 Agent 结果] M6[结果整合
整合所有子 Agent 结果] M7[最终输出
返回最终结果给用户] end M1 --> M2 --> M3 --> M4 --> M5 --> M6 --> M7
graph TB
    subgraph MainAgentRole["主 Agent 职责"]
        M1[任务接收
接收用户任务] M2[任务规划
拆解任务为子任务] M3[Agent 选择
选择合适的子 Agent] M4[任务派发
派发任务给子 Agent] M5[结果收集
收集子 Agent 结果] M6[结果整合
整合所有子 Agent 结果] M7[最终输出
返回最终结果给用户] end M1 --> M2 --> M3 --> M4 --> M5 --> M6 --> M7
graph TB
    subgraph MainAgentRole["主 Agent 职责"]
        M1[任务接收<br/>接收用户任务]
        M2[任务规划<br/>拆解任务为子任务]
        M3[Agent 选择<br/>选择合适的子 Agent]
        M4[任务派发<br/>派发任务给子 Agent]
        M5[结果收集<br/>收集子 Agent 结果]
        M6[结果整合<br/>整合所有子 Agent 结果]
        M7[最终输出<br/>返回最终结果给用户]
    end
    
    M1 --> M2 --> M3 --> M4 --> M5 --> M6 --> M7

职责详解:

职责说明示例
任务接收接收用户的复杂任务“重构这个模块并生成文档”
任务规划拆解任务为多个子任务拆解为:代码重构 + 测试 + 文档
Agent 选择选择合适的子 Agent 类型选择 code-reviewer、tdd-guide、doc-updater
任务派发派发任务给子 Agent派发代码审查给 code-reviewer Agent
结果收集收集所有子 Agent 的结果收集审查报告、测试结果、文档
结果整合整合结果,形成最终输出整合为完整的重构报告
最终输出返回最终结果给用户返回完整的重构结果和文档

子 Agent 的职责

图表 代码
graph TB
    subgraph SubAgentRole["子 Agent 职责"]
        S1[任务接收
接收主 Agent 派发] S2[独立推理
独立上下文推理] S3[工具调用
调用工具执行任务] S4[结果生成
生成专业结果] S5[结果返回
返回结果给主 Agent] end S1 --> S2 --> S3 --> S4 --> S5
graph TB
    subgraph SubAgentRole["子 Agent 职责"]
        S1[任务接收
接收主 Agent 派发] S2[独立推理
独立上下文推理] S3[工具调用
调用工具执行任务] S4[结果生成
生成专业结果] S5[结果返回
返回结果给主 Agent] end S1 --> S2 --> S3 --> S4 --> S5
graph TB
    subgraph SubAgentRole["子 Agent 职责"]
        S1[任务接收
接收主 Agent 派发] S2[独立推理
独立上下文推理] S3[工具调用
调用工具执行任务] S4[结果生成
生成专业结果] S5[结果返回
返回结果给主 Agent] end S1 --> S2 --> S3 --> S4 --> S5
graph TB
    subgraph SubAgentRole["子 Agent 职责"]
        S1[任务接收<br/>接收主 Agent 派发]
        S2[独立推理<br/>独立上下文推理]
        S3[工具调用<br/>调用工具执行任务]
        S4[结果生成<br/>生成专业结果]
        S5[结果返回<br/>返回结果给主 Agent]
    end
    
    S1 --> S2 --> S3 --> S4 --> S5

职责详解:

职责说明示例
任务接收接收主 Agent 派发的任务接收"审查 app.ts 文件"任务
独立推理使用独立上下文推理子 Agent 自己的 messages 数组
工具调用调用工具执行具体任务调用 Read、Grep 工具审查代码
结果生成生成专业领域结果生成代码审查报告
结果返回返回结果给主 Agent(不泄露历史)只返回审查报告,不泄露上下文

子 Agent 类型

常见子 Agent 类型:

Agent 类型专用领域典型任务提供的工具
code-reviewer代码审查审查代码质量Read、Grep、Glob
security-reviewer安全审查安全漏洞检查Read、Grep、Bash
tdd-guide测试驱动开发编写测试Write、Edit、Bash
doc-updater文档生成生成文档Write、Read
planner规划制定实现计划Read、Glob
build-error-resolver构建错误解决构建问题Bash、Read、Edit
图表 代码
graph TB
    subgraph SubAgentTypes["子 Agent 类型"]
        T1[code-reviewer
代码审查] T2[security-reviewer
安全审查] T3[tdd-guide
测试开发] T4[doc-updater
文档生成] T5[planner
规划] T6[build-error-resolver
构建错误] end Main[主 Agent] -->|派发| T1 Main -->|派发| T2 Main -->|派发| T3 Main -->|派发| T4 Main -->|派发| T5 Main -->|派发| T6
graph TB
    subgraph SubAgentTypes["子 Agent 类型"]
        T1[code-reviewer
代码审查] T2[security-reviewer
安全审查] T3[tdd-guide
测试开发] T4[doc-updater
文档生成] T5[planner
规划] T6[build-error-resolver
构建错误] end Main[主 Agent] -->|派发| T1 Main -->|派发| T2 Main -->|派发| T3 Main -->|派发| T4 Main -->|派发| T5 Main -->|派发| T6
graph TB
    subgraph SubAgentTypes["子 Agent 类型"]
        T1[code-reviewer
代码审查] T2[security-reviewer
安全审查] T3[tdd-guide
测试开发] T4[doc-updater
文档生成] T5[planner
规划] T6[build-error-resolver
构建错误] end Main[主 Agent] -->|派发| T1 Main -->|派发| T2 Main -->|派发| T3 Main -->|派发| T4 Main -->|派发| T5 Main -->|派发| T6
graph TB
    subgraph SubAgentTypes["子 Agent 类型"]
        T1[code-reviewer<br/>代码审查]
        T2[security-reviewer<br/>安全审查]
        T3[tdd-guide<br/>测试开发]
        T4[doc-updater<br/>文档生成]
        T5[planner<br/>规划]
        T6[build-error-resolver<br/>构建错误]
    end
    
    Main[主 Agent] -->|派发| T1
    Main -->|派发| T2
    Main -->|派发| T3
    Main -->|派发| T4
    Main -->|派发| T5
    Main -->|派发| T6

子 Agent 派发机制

派发流程

图表 代码
sequenceDiagram
    participant Main as 主 Agent
    participant AgentTool as Agent 工具
    participant Sub as 子 Agent
    participant Harness as Harness
    
    Main->>Main: 规划任务,拆解子任务
    
    Main->>AgentTool: 调用 Agent 工具
    
    AgentTool->>Harness: 请求启动子 Agent
    
    Harness->>Sub: 创建子 Agent(独立上下文)
    
    Sub->>Sub: 接收任务,独立推理
    
    Sub->>Harness: 调用工具执行任务
    
    Harness-->>Sub: 返回工具结果
    
    Sub->>Sub: 继续推理直到完成
    
    Sub-->>Harness: 返回最终结果
    
    Harness-->>AgentTool: 返回子 Agent 结果
    
    AgentTool-->>Main: 返回结果(不泄露历史)
    
    Main->>Main: 整合结果
sequenceDiagram
    participant Main as 主 Agent
    participant AgentTool as Agent 工具
    participant Sub as 子 Agent
    participant Harness as Harness
    
    Main->>Main: 规划任务,拆解子任务
    
    Main->>AgentTool: 调用 Agent 工具
    
    AgentTool->>Harness: 请求启动子 Agent
    
    Harness->>Sub: 创建子 Agent(独立上下文)
    
    Sub->>Sub: 接收任务,独立推理
    
    Sub->>Harness: 调用工具执行任务
    
    Harness-->>Sub: 返回工具结果
    
    Sub->>Sub: 继续推理直到完成
    
    Sub-->>Harness: 返回最终结果
    
    Harness-->>AgentTool: 返回子 Agent 结果
    
    AgentTool-->>Main: 返回结果(不泄露历史)
    
    Main->>Main: 整合结果
sequenceDiagram
    participant Main as 主 Agent
    participant AgentTool as Agent 工具
    participant Sub as 子 Agent
    participant Harness as Harness
    
    Main->>Main: 规划任务,拆解子任务
    
    Main->>AgentTool: 调用 Agent 工具
    
    AgentTool->>Harness: 请求启动子 Agent
    
    Harness->>Sub: 创建子 Agent(独立上下文)
    
    Sub->>Sub: 接收任务,独立推理
    
    Sub->>Harness: 调用工具执行任务
    
    Harness-->>Sub: 返回工具结果
    
    Sub->>Sub: 继续推理直到完成
    
    Sub-->>Harness: 返回最终结果
    
    Harness-->>AgentTool: 返回子 Agent 结果
    
    AgentTool-->>Main: 返回结果(不泄露历史)
    
    Main->>Main: 整合结果
sequenceDiagram
    participant Main as 主 Agent
    participant AgentTool as Agent 工具
    participant Sub as 子 Agent
    participant Harness as Harness
    
    Main->>Main: 规划任务,拆解子任务
    
    Main->>AgentTool: 调用 Agent 工具
    
    AgentTool->>Harness: 请求启动子 Agent
    
    Harness->>Sub: 创建子 Agent(独立上下文)
    
    Sub->>Sub: 接收任务,独立推理
    
    Sub->>Harness: 调用工具执行任务
    
    Harness-->>Sub: 返回工具结果
    
    Sub->>Sub: 继续推理直到完成
    
    Sub-->>Harness: 返回最终结果
    
    Harness-->>AgentTool: 返回子 Agent 结果
    
    AgentTool-->>Main: 返回结果(不泄露历史)
    
    Main->>Main: 整合结果

派发实现

Agent 工具调用:

# 主 Agent 派发子 Agent
def dispatch_subagent(main_agent, subagent_type, task):
    # 调用 Agent 工具
    tool_use = {
        "name": "Agent",
        "parameters": {
            "subagent_type": subagent_type,  # 如 "code-reviewer"
            "prompt": task  # 子任务描述
        }
    }
    
    # Harness 启动子 Agent
    sub_agent_result = harness.execute_agent_tool(tool_use)
    
    # 返回结果(只返回结果,不泄露历史)
    return sub_agent_result

子 Agent 独立执行:

# Harness 启动子 Agent
def execute_agent_tool(tool_params):
    subagent_type = tool_params["subagent_type"]
    prompt = tool_params["prompt"]
    
    # 1. 创建子 Agent(独立上下文)
    sub_messages = [
        {"role": "system", "content": get_subagent_system_prompt(subagent_type)},
        {"role": "user", "content": prompt}
    ]
    
    # 2. 子 Agent 执行(独立 Loop)
    sub_result = run_agent_loop(sub_messages)
    
    # 3. 只返回结果(不泄露历史)
    return sub_result.content  # 只返回最终内容

子 Agent 上下文隔离

隔离机制

图表 代码
graph TB
    subgraph MainContext["主 Agent 上下文"]
        M1[messagesA
主对话历史] M2[tasksA
主任务系统] end subgraph SubContext["子 Agent 上下文(独立)"] S1[messagesB
子对话历史] S2[tasksB
子任务系统] end Main[主 Agent] -->|派发
不泄露messagesA| Sub[子 Agent] Sub -->|执行
独立messagesB| Task[完成任务] Task -->|返回
只返回结果
不泄露messagesB| Result[返回主 Agent] Result -->|追加| Main style MainContext fill:#E0FFE0 style SubContext fill:#FFE0E0
graph TB
    subgraph MainContext["主 Agent 上下文"]
        M1[messagesA
主对话历史] M2[tasksA
主任务系统] end subgraph SubContext["子 Agent 上下文(独立)"] S1[messagesB
子对话历史] S2[tasksB
子任务系统] end Main[主 Agent] -->|派发
不泄露messagesA| Sub[子 Agent] Sub -->|执行
独立messagesB| Task[完成任务] Task -->|返回
只返回结果
不泄露messagesB| Result[返回主 Agent] Result -->|追加| Main style MainContext fill:#E0FFE0 style SubContext fill:#FFE0E0
graph TB
    subgraph MainContext["主 Agent 上下文"]
        M1[messagesA
主对话历史] M2[tasksA
主任务系统] end subgraph SubContext["子 Agent 上下文(独立)"] S1[messagesB
子对话历史] S2[tasksB
子任务系统] end Main[主 Agent] -->|派发
不泄露messagesA| Sub[子 Agent] Sub -->|执行
独立messagesB| Task[完成任务] Task -->|返回
只返回结果
不泄露messagesB| Result[返回主 Agent] Result -->|追加| Main style MainContext fill:#E0FFE0 style SubContext fill:#FFE0E0
graph TB
    subgraph MainContext["主 Agent 上下文"]
        M1[messagesA<br/>主对话历史]
        M2[tasksA<br/>主任务系统]
    end
    
    subgraph SubContext["子 Agent 上下文(独立)"]
        S1[messagesB<br/>子对话历史]
        S2[tasksB<br/>子任务系统]
    end
    
    Main[主 Agent] -->|派发<br/>不泄露messagesA| Sub[子 Agent]
    
    Sub -->|执行<br/>独立messagesB| Task[完成任务]
    
    Task -->|返回<br/>只返回结果<br/>不泄露messagesB| Result[返回主 Agent]
    
    Result -->|追加| Main
    
    style MainContext fill:#E0FFE0
    style SubContext fill:#FFE0E0

隔离规则:

隔离维度主 Agent子 Agent说明
messages 数组messagesAmessagesB(独立)子 Agent 独立历史
任务系统tasksAtasksB(可选独立)子 Agent 独立任务
上下文共享❌ 不共享❌ 不共享完全隔离
历史泄露❌ 不泄露❌ 不泄露只返回结果

隔离的好处

图表 代码
graph TB
    subgraph IsolationBenefits["隔离好处"]
        B1[防止污染
子Agent不污染主Agent] B2[保持干净
主Agent上下文不受影响] B3[节省空间
子Agent历史不占用主上下文] B4[专业专注
子Agent专注专业任务] end style IsolationBenefits fill:#E0FFE0
graph TB
    subgraph IsolationBenefits["隔离好处"]
        B1[防止污染
子Agent不污染主Agent] B2[保持干净
主Agent上下文不受影响] B3[节省空间
子Agent历史不占用主上下文] B4[专业专注
子Agent专注专业任务] end style IsolationBenefits fill:#E0FFE0
graph TB
    subgraph IsolationBenefits["隔离好处"]
        B1[防止污染
子Agent不污染主Agent] B2[保持干净
主Agent上下文不受影响] B3[节省空间
子Agent历史不占用主上下文] B4[专业专注
子Agent专注专业任务] end style IsolationBenefits fill:#E0FFE0
graph TB
    subgraph IsolationBenefits["隔离好处"]
        B1[防止污染<br/>子Agent不污染主Agent]
        B2[保持干净<br/>主Agent上下文不受影响]
        B3[节省空间<br/>子Agent历史不占用主上下文]
        B4[专业专注<br/>子Agent专注专业任务]
    end
    
    style IsolationBenefits fill:#E0FFE0
好处说明价值
防止污染子 Agent 上下文不泄露到主 Agent主 Agent 保持干净
保持干净主 Agent 上下文不受子 Agent 影响主 Agent 可继续工作
节省空间子 Agent 历史不占用主上下文防止上下文溢出
专业专注子 Agent 专注专业任务提升专业能力

多 Agent 协作场景

场景 1:完整重构流程

图表 代码
sequenceDiagram
    participant User as 用户
    participant Main as 主 Agent
    participant Planner as planner Agent
    participant Reviewer as code-reviewer Agent
    participant TDD as tdd-guide Agent
    participant Doc as doc-updater Agent
    
    User->>Main: 重构 app.ts 并生成文档
    
    Main->>Planner: 派发规划任务
    Planner-->>Main: 返回实现计划
    
    Main->>Main: 根据计划拆解
    
    Main->>Reviewer: 派发代码审查
    Reviewer-->>Main: 返回审查报告
    
    Main->>Main: 根据报告修改代码
    
    Main->>TDD: 派发编写测试
    TDD-->>Main: 返回测试结果
    
    Main->>Doc: 派发生成文档
    Doc-->>Main: 返回文档
    
    Main->>Main: 整合所有结果
    Main-->>User: 返回完整重构结果
sequenceDiagram
    participant User as 用户
    participant Main as 主 Agent
    participant Planner as planner Agent
    participant Reviewer as code-reviewer Agent
    participant TDD as tdd-guide Agent
    participant Doc as doc-updater Agent
    
    User->>Main: 重构 app.ts 并生成文档
    
    Main->>Planner: 派发规划任务
    Planner-->>Main: 返回实现计划
    
    Main->>Main: 根据计划拆解
    
    Main->>Reviewer: 派发代码审查
    Reviewer-->>Main: 返回审查报告
    
    Main->>Main: 根据报告修改代码
    
    Main->>TDD: 派发编写测试
    TDD-->>Main: 返回测试结果
    
    Main->>Doc: 派发生成文档
    Doc-->>Main: 返回文档
    
    Main->>Main: 整合所有结果
    Main-->>User: 返回完整重构结果
sequenceDiagram
    participant User as 用户
    participant Main as 主 Agent
    participant Planner as planner Agent
    participant Reviewer as code-reviewer Agent
    participant TDD as tdd-guide Agent
    participant Doc as doc-updater Agent
    
    User->>Main: 重构 app.ts 并生成文档
    
    Main->>Planner: 派发规划任务
    Planner-->>Main: 返回实现计划
    
    Main->>Main: 根据计划拆解
    
    Main->>Reviewer: 派发代码审查
    Reviewer-->>Main: 返回审查报告
    
    Main->>Main: 根据报告修改代码
    
    Main->>TDD: 派发编写测试
    TDD-->>Main: 返回测试结果
    
    Main->>Doc: 派发生成文档
    Doc-->>Main: 返回文档
    
    Main->>Main: 整合所有结果
    Main-->>User: 返回完整重构结果
sequenceDiagram
    participant User as 用户
    participant Main as 主 Agent
    participant Planner as planner Agent
    participant Reviewer as code-reviewer Agent
    participant TDD as tdd-guide Agent
    participant Doc as doc-updater Agent
    
    User->>Main: 重构 app.ts 并生成文档
    
    Main->>Planner: 派发规划任务
    Planner-->>Main: 返回实现计划
    
    Main->>Main: 根据计划拆解
    
    Main->>Reviewer: 派发代码审查
    Reviewer-->>Main: 返回审查报告
    
    Main->>Main: 根据报告修改代码
    
    Main->>TDD: 派发编写测试
    TDD-->>Main: 返回测试结果
    
    Main->>Doc: 派发生成文档
    Doc-->>Main: 返回文档
    
    Main->>Main: 整合所有结果
    Main-->>User: 返回完整重构结果

协作步骤:

步骤主 Agent子 Agent
1接收任务-
2派发规划planner Agent 规划
3拆解任务-
4派发审查code-reviewer Agent 审查
5修改代码-
6派发测试tdd-guide Agent 测试
7派发文档doc-updater Agent 文档
8整合结果-

场景 2:安全审查流程

图表 代码
sequenceDiagram
    participant Main as 主 Agent
    participant Security as security-reviewer Agent
    participant Fix as fix Agent
    
    Main->>Security: 派发安全审查
    Security->>Security: 审查代码
    Security-->>Main: 返回安全问题列表
    
    Main->>Main: 分析安全问题
    
    Main->>Fix: 派发修复问题
    Fix->>Fix: 修复安全问题
    Fix-->>Main: 返回修复结果
    
    Main->>Security: 派发复查
    Security-->>Main: 返回复查结果
    
    Main->>Main: 整合审查报告
    Main-->>User: 返回最终报告
sequenceDiagram
    participant Main as 主 Agent
    participant Security as security-reviewer Agent
    participant Fix as fix Agent
    
    Main->>Security: 派发安全审查
    Security->>Security: 审查代码
    Security-->>Main: 返回安全问题列表
    
    Main->>Main: 分析安全问题
    
    Main->>Fix: 派发修复问题
    Fix->>Fix: 修复安全问题
    Fix-->>Main: 返回修复结果
    
    Main->>Security: 派发复查
    Security-->>Main: 返回复查结果
    
    Main->>Main: 整合审查报告
    Main-->>User: 返回最终报告
sequenceDiagram
    participant Main as 主 Agent
    participant Security as security-reviewer Agent
    participant Fix as fix Agent
    
    Main->>Security: 派发安全审查
    Security->>Security: 审查代码
    Security-->>Main: 返回安全问题列表
    
    Main->>Main: 分析安全问题
    
    Main->>Fix: 派发修复问题
    Fix->>Fix: 修复安全问题
    Fix-->>Main: 返回修复结果
    
    Main->>Security: 派发复查
    Security-->>Main: 返回复查结果
    
    Main->>Main: 整合审查报告
    Main-->>User: 返回最终报告
sequenceDiagram
    participant Main as 主 Agent
    participant Security as security-reviewer Agent
    participant Fix as fix Agent
    
    Main->>Security: 派发安全审查
    Security->>Security: 审查代码
    Security-->>Main: 返回安全问题列表
    
    Main->>Main: 分析安全问题
    
    Main->>Fix: 派发修复问题
    Fix->>Fix: 修复安全问题
    Fix-->>Main: 返回修复结果
    
    Main->>Security: 派发复查
    Security-->>Main: 返回复查结果
    
    Main->>Main: 整合审查报告
    Main-->>User: 返回最终报告

协作步骤:

步骤主 Agent子 Agent
1派发安全审查security-reviewer Agent 审查
2分析问题-
3派发修复fix Agent 修复
4派发复查security-reviewer Agent 复查
5整合报告-

多智能体架构设计原则

设计原则

图表 代码
graph TB
    subgraph DesignPrinciples["设计原则"]
        D1[任务拆解
大任务拆小任务] D2[专业分工
每个子Agent有专业] D3[上下文隔离
子Agent独立上下文] D4[结果整合
主Agent整合结果] D5[并行优先
独立任务并行执行] end
graph TB
    subgraph DesignPrinciples["设计原则"]
        D1[任务拆解
大任务拆小任务] D2[专业分工
每个子Agent有专业] D3[上下文隔离
子Agent独立上下文] D4[结果整合
主Agent整合结果] D5[并行优先
独立任务并行执行] end
graph TB
    subgraph DesignPrinciples["设计原则"]
        D1[任务拆解
大任务拆小任务] D2[专业分工
每个子Agent有专业] D3[上下文隔离
子Agent独立上下文] D4[结果整合
主Agent整合结果] D5[并行优先
独立任务并行执行] end
graph TB
    subgraph DesignPrinciples["设计原则"]
        D1[任务拆解<br/>大任务拆小任务]
        D2[专业分工<br/>每个子Agent有专业]
        D3[上下文隔离<br/>子Agent独立上下文]
        D4[结果整合<br/>主Agent整合结果]
        D5[并行优先<br/>独立任务并行执行]
    end
原则说明实现方式
任务拆解大任务拆解为小任务主 Agent 规划拆解
专业分工每个子 Agent 有专业领域选择合适子 Agent 类型
上下文隔离子 Agent 独立上下文,不污染主 AgentAgent 工具隔离机制
结果整合主 Agent 整合所有子 Agent 结果主 Agent 整合逻辑
并行优先独立任务优先并行执行并行模式派发

本章小结

  • 多智能体定义:多个 Agent 协作完成复杂任务——主 Agent + 子 Agent + 专用 Agent
  • 单 Agent 局限:复杂任务难处理、上下文溢出、专业知识不足、并发效率低
  • 多智能体优势:复杂任务拆解、上下文隔离、专业知识注入、并发执行
  • 三种模式:层级模式(主从)、并行模式(并发)、协作模式(平等)
  • 主 Agent 职责:任务接收、规划、派发、收集、整合、输出
  • 子 Agent 职责:任务接收、独立推理、工具调用、结果生成、结果返回
  • 子 Agent 类型:code-reviewer、security-reviewer、tdd-guide、doc-updater、planner、build-error-resolver
  • 派发机制:Agent 工具调用 → Harness 启动 → 子 Agent 执行 → 返回结果
  • 上下文隔离:子 Agent 独立 messages,不污染主 Agent
  • 设计原则:任务拆解、专业分工、上下文隔离、结果整合、并行优先

预告:下一篇我们深入子代理隔离与上下文管理机制。



相关内容

如果这篇文章对你有帮助,欢迎请我喝杯咖啡 ☕
Cygnus Yang 支付宝支付宝
Cygnus Yang 微信微信