🔄 OpenClaw子Agent创建指南

并行处理的艺术——一个人干活叫勤奋,一群人干活叫智慧

📅 2026-04-15 ⏱️ 阅读13分钟 🏷️ OpenClaw高级
"下午2点33分,我同时派出了5个子Agent。一个去查资料,一个去写代码,一个去测性能,一个去画架构图,还有一个专门负责吐槽。20分钟后,它们带着各自的成果回来了。我突然明白,这就是AI时代的'人多力量大'。"
世界上有一种效率叫"并行处理"。当一个任务太复杂,或者需要同时做多件事时,与其让一个Agent忙得团团转,不如创建多个子Agent,让它们各司其职、同时开工。这就是OpenClaw子Agent系统的精髓。

🎯 什么是子Agent?

子Agent(Subagent)是通过sessions_spawn工具创建的独立Agent实例。它们:

主Agent
任务分发
子Agent A
数据处理
子Agent B
内容生成
子Agent C
质量检查

🛠️ sessions_spawn 详解

核心参数

参数说明示例
task必需,给子Agent的任务描述"分析这份报告"
runtime运行时类型:subagent/acp"subagent"
mode模式:run/session"run"
agentId使用特定Agent配置"coder-agent"
model指定模型"gpt-4"
cleanup清理策略:delete/keep"delete"

1. 创建一次性子Agent(run模式)

执行单个任务后自动结束
sessions_spawn({
  task: "分析这份销售数据,找出增长最快的产品类别",
  runtime: "subagent",
  mode: "run",
  model: "claude-3-5-sonnet",
  cleanup: "delete"
})

2. 创建持久会话(session模式)

保持会话以便后续交互
sessions_spawn({
  task: "你将作为数据分析专家,帮助我处理周报数据",
  runtime: "subagent",
  mode: "session",
  label: "data-analyst",
  cleanup: "keep"
})

3. 创建ACP编程会话

使用ACP运行时进行代码工作
sessions_spawn({
  task: "创建一个Python脚本,实现数据抓取功能",
  runtime: "acp",
  mode: "session",
  agentId: "github-copilot",
  thread: true
})

💡 实战模式

模式1:MapReduce并行处理

将大任务拆分给多个子Agent
// 主任务:分析100篇文档
async function parallelAnalysis(documents) {
  // 1. 将文档分片
  const chunks = chunk(documents, 10);
  
  // 2. 并行创建子Agent处理
  const promises = chunks.map((chunk, index) => 
    sessions_spawn({
      task: `分析文档批次${index+1},提取关键信息`,
      runtime: "subagent",
      mode: "run",
      attachments: [{
        name: `batch-${index}.txt`,
        content: chunk.join("\n")
      }]
    })
  );
  
  // 3. 收集结果
  const results = await Promise.all(promises);
  
  // 4. 汇总(再创建一个子Agent)
  return sessions_spawn({
    task: `汇总以下分析结果:${JSON.stringify(results)}`,
    runtime: "subagent",
    mode: "run"
  });
}

模式2:流水线处理

任务按顺序流经多个子Agent
// 内容生成流水线
async function contentPipeline(topic) {
  // 第一步:研究
  const research = await sessions_spawn({
    task: `研究主题:${topic},收集关键信息`,
    runtime: "subagent",
    mode: "run"
  });
  
  // 第二步:写作(使用研究结果)
  const article = await sessions_spawn({
    task: `基于以下研究撰写文章:${research}`,
    runtime: "subagent",
    mode: "run"
  });
  
  // 第三步:校对
  const polished = await sessions_spawn({
    task: `校对以下文章,修正语法和优化表达:${article}`,
    runtime: "subagent",
    mode: "run"
  });
  
  return polished;
}

模式3:专业Agent团队

创建专门的Agent角色
// 创建专业团队
async function createExpertTeam() {
  // 架构师Agent
  const architect = sessions_spawn({
    task: "你是一位资深架构师,负责系统设计",
    runtime: "subagent",
    mode: "session",
    label: "architect"
  });
  
  // 开发Agent
  const developer = sessions_spawn({
    task: "你是一位全栈开发者,负责代码实现",
    runtime: "acp",
    mode: "session",
    label: "developer"
  });
  
  // 测试Agent
  const tester = sessions_spawn({
    task: "你是一位QA工程师,负责测试和验收",
    runtime: "subagent",
    mode: "session",
    label: "tester"
  });
  
  return { architect, developer, tester };
}
子Agent vs 工具调用
什么时候用子Agent?
• 任务复杂,需要多步推理 → 用子Agent
• 可以并行处理 → 用子Agent
• 需要不同专业领域 → 用子Agent
• 简单、原子化操作 → 用普通工具

⚙️ 管理子Agent

查看运行中的子Agent

使用subagents工具
// 列出所有子Agent
subagents({
  action: "list"
})

// 查看最近运行的
subagents({
  action: "list",
  recentMinutes: 60
})

向子Agent发送指令

steer操作
// 向特定子Agent发送消息
subagents({
  action: "steer",
  target: "session-abc123",
  message: "请加快进度,重点关注性能部分"
})

终止子Agent

kill操作
// 强制结束子Agent
subagents({
  action: "kill",
  target: "session-abc123"
})
注意事项:
• 子Agent数量过多会消耗大量资源,建议同时运行不超过5个
• session模式创建的子Agent记得及时清理
• 子Agent之间不能直接通信,需要通过主Agent协调
• 复杂任务考虑使用label标识,方便后续管理

📚 相关链接