多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专注于自己的领域,通过高效的协调机制共同完成复杂任务。这种"分而治之"的方法不仅提高了任务完成的质量,还增强了系统的可扩展性和容错能力。