多Agent协作
在复杂的业务场景中,单个Agent往往难以胜任所有任务。OpenClaw的多Agent协作系统允许您构建由多个专业化Agent组成的协作团队,通过编排器模式、任务委托和共享内存等机制,实现高效的任务分解和协同执行。
编排器模式(Orchestrator Pattern)
编排器模式是多Agent协作中最常用的架构模式。编排器Agent负责接收用户请求,分析任务需求,将子任务分配给专业化的工作Agent,并最终汇总结果返回给用户。
# 多Agent编排器配置
multi_agent:
orchestrator:
name: "task_orchestrator"
model: gpt-4o
description: "任务编排器,负责分解和协调复杂任务"
# 任务分解策略
decomposition:
strategy: hierarchical # hierarchical / flat / dynamic
max_depth: 3
max_subtasks: 10
# 工作Agent注册
workers:
- agent_id: research_agent
capabilities:
- web_search
- document_analysis
- data_collection
priority: high
- agent_id: coding_agent
capabilities:
- code_generation
- code_review
- debugging
priority: high
- agent_id: writing_agent
capabilities:
- content_creation
- summarization
- translation
priority: medium
- agent_id: data_agent
capabilities:
- data_analysis
- visualization
- report_generation
priority: medium
# 任务分配策略
assignment:
strategy: capability_match # capability_match / round_robin / priority
fallback: broadcast # 当无匹配Agent时广播给所有Agent
max_concurrent: 3
核心概念:编排器工作流程
编排器的工作流程分为四个阶段:1) 任务分析:理解用户需求,评估复杂度;2) 任务分解:将复杂任务拆分为可独立执行的子任务;3) 任务分配:根据每个工作Agent的能力匹配子任务;4) 结果汇总:收集所有工作Agent的输出,整合为最终结果。
Agent委托机制
Agent委托允许一个Agent在执行过程中将部分工作委托给其他Agent。与编排器模式不同,委托可以在任何层级发生,形成动态的任务分配网络。
# Agent委托配置示例
agents:
research_agent:
model: gpt-4o
tools:
- web_search
- document_reader
# 委托权限配置
delegation:
enabled: true
can_delegate_to:
- data_agent # 可以委托给数据分析Agent
- writing_agent # 可以委托给写作Agent
max_delegation_depth: 2
require_approval: false # 是否需要编排器批准
data_agent:
model: gpt-4o
tools:
- database_query
- python_executor
- chart_generator
delegation:
enabled: true
can_delegate_to:
- writing_agent # 可以委托写作Agent生成报告
max_delegation_depth: 1
在Agent代码中使用委托功能:
# research_agent 中的委托示例
from openclaw.agent import AgentBase
from openclaw.delegation import DelegationRequest
class ResearchAgent(AgentBase):
name = "research_agent"
async def execute(self, task):
# 执行搜索
search_results = await self.use_tool(
"web_search", query=task.query
)
# 如果需要数据分析,委托给data_agent
if task.requires_data_analysis:
delegation = DelegationRequest(
target_agent="data_agent",
task={
"type": "analyze_data",
"data": search_results,
"output_format": "summary"
},
timeout=120,
callback=self.on_analysis_complete
)
result = await self.delegate(delegation)
return result
return search_results
共享内存
共享内存是多Agent协作的关键基础设施。它允许协作中的多个Agent共享信息、中间结果和上下文,避免重复计算和信息丢失。
- 全局共享空间:所有参与协作的Agent都可以读写的全局存储,适合存放任务目标和最终结果
- Agent间消息通道:点对点的消息传递机制,适合Agent之间的协调和状态同步
- 共享知识库:所有Agent共享的知识检索系统,确保所有Agent基于一致的知识进行推理
- 工作记忆:当前任务的中间状态和上下文,任务完成后自动清理
# 共享内存配置
shared_memory:
# 全局共享空间
global_store:
backend: redis
host: ${REDIS_HOST}
namespace: "multi_agent:global"
ttl: 3600
# Agent间消息通道
message_bus:
backend: redis_streams
channels:
- name: task_updates
subscribers: [all]
- name: agent_coordination
subscribers: [orchestrator]
# 共享知识库
knowledge_base:
backend: qdrant
collection: shared_knowledge
embedding_model: text-embedding-3-small
# 知识写入策略
write_policy:
on_task_complete: true # 任务完成时写入新知识
on_explicit_save: true # Agent主动保存时写入
deduplication: semantic # 语义去重
# 工作记忆
working_memory:
backend: in_memory
max_size: 100MB
cleanup: on_task_complete
多Agent配置示例
以下是一个完整的多Agent协作配置示例,展示了一个内容创作团队的协作设置:
# 内容创作团队多Agent配置
multi_agent:
team:
name: "content_creation_team"
description: "自动化内容创作团队"
orchestrator:
name: "editor_in_chief"
model: gpt-4o
system_prompt: |
你是内容创作团队的主编。你的职责是:
1. 分析内容创作需求
2. 将任务分配给合适的团队成员
3. 审核和整合最终输出
agents:
- id: researcher
name: "研究员"
model: gpt-4o
tools: [web_search, document_reader]
role: "负责资料搜集和事实核查"
- id: writer
name: "撰稿人"
model: gpt-4o
tools: [document_editor]
role: "负责内容撰写和编辑"
- id: reviewer
name: "审核员"
model: gpt-4o
tools: [fact_checker, grammar_checker]
role: "负责内容审核和质量把关"
# 协作工作流
workflow:
steps:
- agent: researcher
action: gather_materials
- agent: writer
action: draft_content
input_from: researcher
- agent: reviewer
action: review_and_edit
input_from: writer
- agent: writer
action: final_revision
input_from: reviewer
Agent间通信协议
OpenClaw定义了标准化的Agent间通信协议,确保不同Agent之间的消息传递是可靠和有序的。
- 请求-响应模式:一个Agent发送请求并等待另一个Agent的响应,适用于同步任务委托
- 发布-订阅模式:Agent发布消息到特定主题,其他Agent订阅感兴趣的主题,适用于异步事件通知
- 广播模式:向所有协作Agent发送消息,适用于全局状态更新
- 管道模式:消息按顺序经过多个Agent处理,适用于工作流执行
# Agent通信协议示例
communication:
protocol: message_passing
# 消息格式
message_schema:
id: uuid
source_agent: string
target_agent: string | "broadcast"
type: enum(task_request, task_result, status_update, query)
payload: object
priority: enum(low, normal, high, critical)
timestamp: ISO8601
reply_to: uuid | null # 用于关联请求和响应
# 通信策略
policies:
timeout: 300s
retry:
max_attempts: 3
backoff: exponential
ordering: fifo # 消息保序策略
delivery: at_least_once # 至少送达一次
警告:死循环检测
在多Agent协作中,需要防止Agent之间形成无限委托循环。OpenClaw内置了死循环检测机制:当委托深度超过配置的最大值,或检测到循环依赖时,系统会自动中断并报告错误。建议在配置中设置合理的 max_delegation_depth 值。
通过多Agent协作系统,OpenClaw让您可以构建功能强大的AI智能体团队,每个Agent专注于自己的领域,通过高效的协调机制共同完成复杂任务。这种"分而治之"的方法不仅提高了任务完成的质量,还增强了系统的可扩展性和容错能力。