Subagents 子代理

创建专门的子代理处理特定任务

概述

Subagents(子代理)是 OpenClaw 中实现复杂任务分解的核心机制。 主代理可以创建一个或多个子代理,每个子代理专注于处理特定的子任务, 然后将结果汇总给主代理。

这种分层架构让 OpenClaw 能够处理更复杂的工作流,同时保持每个代理的专注和效率。

任务分解

将复杂任务拆分给专门的子代理

并行处理

多个子代理可以同时工作

专业化

每个子代理专注特定领域

工作原理

代理层级

┌─────────────────────────────────────────┐
│              主代理 (Main Agent)          │
│                                          │
│   "帮我做一个完整的项目分析报告"           │
│                                          │
│   ┌─────────┐ ┌─────────┐ ┌─────────┐   │
│   │ 子代理1  │ │ 子代理2  │ │ 子代理3  │   │
│   │ 代码分析 │ │ 文档审查 │ │ 测试检查 │   │
│   └────┬────┘ └────┬────┘ └────┬────┘   │
│        │           │           │         │
│        └───────────┴───────────┘         │
│                    │                      │
│              汇总结果                      │
└─────────────────────────────────────────┘

执行流程

  1. 任务分析 - 主代理分析任务,决定是否需要子代理
  2. 创建子代理 - 根据需要创建一个或多个子代理
  3. 分配任务 - 为每个子代理分配具体的子任务
  4. 并行执行 - 子代理独立工作(可并行)
  5. 结果收集 - 主代理收集所有子代理的结果
  6. 汇总输出 - 主代理整合结果,生成最终输出

子代理特点

  • 独立上下文 - 每个子代理有自己的对话上下文
  • 受限权限 - 子代理权限由主代理控制
  • 生命周期管理 - 任务完成后自动销毁
  • 资源隔离 - 独立的工作空间

创建子代理

自动创建

OpenClaw 会自动判断是否需要创建子代理:

你: /agent 帮我分析这个项目并生成文档

Agent: 这是一个复杂任务,我将创建子代理来处理:

📋 任务分解:
├─ 子代理 1: 分析代码结构
├─ 子代理 2: 提取 API 文档
└─ 子代理 3: 生成 README

正在执行...

手动创建

# 在对话中创建子代理
/subagent create "专门处理数据清洗的代理"

# 使用配置文件定义
# ~/.openclaw/subagents/data-cleaner.yaml
name: data-cleaner
description: "数据清洗专用代理"
skills:
  - pandas
  - data-validation
permissions:
  - file_read
  - file_write

编程方式创建

# 在 Python skill 中创建子代理
from openclaw import create_subagent

async def complex_analysis(data):
    # 创建数据处理子代理
    data_agent = await create_subagent(
        name="data-processor",
        task="清洗并验证数据",
        context={"data": data}
    )

    # 创建分析子代理
    analysis_agent = await create_subagent(
        name="analyzer",
        task="执行统计分析",
        depends_on=[data_agent]  # 依赖前一个代理
    )

    # 等待所有子代理完成
    results = await gather_results([data_agent, analysis_agent])
    return results

代理通信

消息传递

┌──────────┐     消息      ┌──────────┐
│  主代理   │──────────────▶│  子代理   │
│          │◀──────────────│          │
└──────────┘     结果      └──────────┘

共享数据

subagents:
  communication:
    # 共享存储
    shared_storage:
      enabled: true
      path: ~/.openclaw/shared

    # 消息队列
    message_queue:
      type: memory  # memory, redis
      max_size: 1000

依赖管理

# 定义子代理依赖关系
subagents:
  - name: data-fetcher
    task: "获取数据"

  - name: data-processor
    task: "处理数据"
    depends_on: [data-fetcher]  # 等待 data-fetcher 完成

  - name: reporter
    task: "生成报告"
    depends_on: [data-processor]  # 等待 data-processor 完成

结果聚合

# 聚合策略配置
subagents:
  aggregation:
    strategy: merge  # merge, concat, custom
    timeout: 300
    on_partial_failure: continue  # continue, abort

常用模式

模式 1: 分治模式

将大任务拆分为相似的小任务:

# 处理多个文件
你: /agent 分析 src/ 目录下所有 TypeScript 文件

Agent 策略:
├─ 子代理 1: 分析 src/components/*.tsx
├─ 子代理 2: 分析 src/pages/*.tsx
├─ 子代理 3: 分析 src/utils/*.ts
└─ 主代理: 汇总所有分析结果

模式 2: 流水线模式

任务按顺序流经多个专门的代理:

# 内容创作流水线
数据收集代理 → 大纲生成代理 → 内容撰写代理 → 校对代理

配置示例:
pipeline:
  - agent: researcher
    output: research_data

  - agent: outliner
    input: research_data
    output: outline

  - agent: writer
    input: outline
    output: draft

  - agent: editor
    input: draft
    output: final

模式 3: 专家委员会模式

多个专家代理各自提供意见,主代理综合决策:

# 代码审查委员会
你: /agent 审查这个 PR

审查委员会:
├─ 安全专家代理: 检查安全漏洞
├─ 性能专家代理: 评估性能影响
├─ 架构专家代理: 审查设计模式
└─ 主代理: 综合所有意见,生成审查报告

模式 4: 监督者模式

主代理监督子代理工作,必要时介入:

subagents:
  supervision:
    enabled: true
    check_interval: 30  # 每 30 秒检查一次
    actions:
      on_stuck: retry
      on_error: escalate
      on_timeout: abort

配置选项

完整配置示例

# ~/.openclaw/config.yaml

subagents:
  # 是否启用子代理
  enabled: true

  # 最大子代理数量
  max_concurrent: 5

  # 默认超时
  default_timeout: 600

  # 资源限制
  limits:
    memory_per_agent: "256MB"
    cpu_per_agent: 1

  # 权限继承
  permissions:
    inherit_from_parent: true
    allow_escalation: false

  # 工作空间
  workspace:
    isolate: true
    shared_paths:
      - ~/.openclaw/shared

子代理模板

# ~/.openclaw/subagents/templates/researcher.yaml

name: researcher
description: "专门负责信息收集和研究的代理"

capabilities:
  - web_search
  - file_read
  - summarize

system_prompt: |
  你是一个研究助手,专门负责收集和整理信息。
  请确保信息来源可靠,并提供清晰的摘要。

limits:
  max_searches: 20
  max_pages: 50

性能调优

subagents:
  performance:
    # 并行度
    parallelism: auto  # auto, sequential, max

    # 缓存策略
    caching:
      enabled: true
      ttl: 3600

    # 预热
    warmup:
      enabled: true
      agents: [researcher, analyzer]

最佳实践

任务分解原则

  • 单一职责 - 每个子代理只做一件事
  • 明确边界 - 清晰定义输入和输出
  • 适度粒度 - 不要过度拆分
  • 可测试性 - 每个子代理应该可以独立测试

错误处理

subagents:
  error_handling:
    # 重试策略
    retry:
      max_attempts: 3
      backoff: exponential

    # 降级策略
    fallback:
      enabled: true
      strategy: skip  # skip, use_default, escalate

    # 超时处理
    timeout:
      action: abort
      cleanup: true

监控和调试

# 查看子代理状态
openclaw subagents list

# 查看特定子代理日志
openclaw subagents logs agent-id

# 调试模式
openclaw agent --debug "复杂任务"

# 可视化代理关系
openclaw subagents graph --output agents.png

资源管理

  • 设置合理的超时时间
  • 限制并发子代理数量
  • 及时清理已完成的子代理
  • 监控内存和 CPU 使用

安全考虑

  • 子代理权限不应超过主代理
  • 敏感操作需要主代理确认
  • 隔离不同任务的工作空间
  • 审计子代理的所有操作