Subagents 子代理
创建专门的子代理处理特定任务
概述
Subagents(子代理)是 OpenClaw 中实现复杂任务分解的核心机制。 主代理可以创建一个或多个子代理,每个子代理专注于处理特定的子任务, 然后将结果汇总给主代理。
这种分层架构让 OpenClaw 能够处理更复杂的工作流,同时保持每个代理的专注和效率。
任务分解
将复杂任务拆分给专门的子代理
并行处理
多个子代理可以同时工作
专业化
每个子代理专注特定领域
工作原理
代理层级
┌─────────────────────────────────────────┐
│ 主代理 (Main Agent) │
│ │
│ "帮我做一个完整的项目分析报告" │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ 子代理1 │ │ 子代理2 │ │ 子代理3 │ │
│ │ 代码分析 │ │ 文档审查 │ │ 测试检查 │ │
│ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │
│ └───────────┴───────────┘ │
│ │ │
│ 汇总结果 │
└─────────────────────────────────────────┘执行流程
- 任务分析 - 主代理分析任务,决定是否需要子代理
- 创建子代理 - 根据需要创建一个或多个子代理
- 分配任务 - 为每个子代理分配具体的子任务
- 并行执行 - 子代理独立工作(可并行)
- 结果收集 - 主代理收集所有子代理的结果
- 汇总输出 - 主代理整合结果,生成最终输出
子代理特点
- 独立上下文 - 每个子代理有自己的对话上下文
- 受限权限 - 子代理权限由主代理控制
- 生命周期管理 - 任务完成后自动销毁
- 资源隔离 - 独立的工作空间
创建子代理
自动创建
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 使用
安全考虑
- 子代理权限不应超过主代理
- 敏感操作需要主代理确认
- 隔离不同任务的工作空间
- 审计子代理的所有操作