11

多 Agent 协作

让多个 Agent 像团队一样合作

为什么需要多 Agent?

单个 Agent 在处理复杂任务时会遇到几个问题: • 上下文窗口有限 —— 一个 Agent 能记住的信息量是有限的 • 任务太复杂 —— 需要同时关注多个方面(代码、测试、文档) • 并行处理 —— 多个独立子任务可以同时进行 • 专业化 —— 不同子任务可能需要不同的提示词和工具配置 多 Agent 协作让你能把大任务分解为小任务,分配给专门的 Agent 处理。

OpenHarness 的多 Agent 架构

OpenHarness 通过以下组件实现多 Agent 协作: 🤖 Agent 工具 主 Agent 通过 Agent 工具启动子 Agent。每个子 Agent 有自己独立的对话上下文和工具集。 📨 SendMessage 工具 向已启动的子 Agent 发送消息,继续之前的对话。 👥 TeamRegistry 团队注册表,管理所有活跃的子 Agent 及其状态。 📋 TaskManager 任务管理器,协调子 Agent 的任务分配和生命周期。

启动子 Agent 的方式

系统提示词中的 Agent 工具描述
1# Agent 工具的使用方式
2
3# 启动一个专门做代码搜索的子 Agent
4Agent(
5 description="搜索认证相关代码",
6 prompt="在项目中找到所有与用户认证相关的文件和函数",
7 subagent_type="Explore" # 探索型 Agent
8)
9
10# 启动一个做规划的子 Agent
11Agent(
12 description="设计重构方案",
13 prompt="分析当前认证模块的架构,设计重构方案",
14 subagent_type="Plan" # 规划型 Agent
15)
16
17# 在后台启动(不阻塞主 Agent)
18Agent(
19 description="运行测试套件",
20 prompt="运行所有测试并报告结果",
21 run_in_background=True
22)

主 Agent 可以这样启动子 Agent:

子 Agent 的类型

OpenHarness 预定义了几种子 Agent 类型: 🔍 Explore Agent 专门用于代码搜索和探索。拥有搜索相关的工具,但没有编辑权限。速度快、安全。 📐 Plan Agent 专门用于设计方案。可以搜索和阅读代码,但不能修改。适合在实施前做规划。 🔧 General Purpose Agent 通用 Agent,拥有完整工具集。适合需要执行操作的子任务。 每种类型的 Agent 有不同的工具集和权限,确保子 Agent 只做它应该做的事。

并行 vs 串行

多 Agent 的一个核心优势是并行处理。比如: 串行(慢): 搜索前端代码 → 搜索后端代码 → 搜索测试代码 并行(快): 同时启动 3 个 Explore Agent,分别搜索前端、后端、测试代码 主 Agent 可以通过 run_in_background=True 让子 Agent 在后台运行,自己继续做其他事情。子 Agent 完成后会自动通知主 Agent。
📌 关键要点
分而治之,各司其职
多 Agent 协作的核心理念是「分而治之」。主 Agent 负责理解任务和协调,子 Agent 负责执行具体工作。每个子 Agent 有独立的上下文和工具集,互不干扰。这种模式让 Agent 系统能处理远超单个 Agent 能力范围的复杂任务。
🧠 检验理解
为什么不让一个 Agent 独自完成所有任务?