OpenClaw 子代理 (Subagent) 完全指南

让你的 AI Agent 学会「分身为之术」—— 并行处理、异步任务、分布式作战

📅 更新于 2026年4月12日 ⏱️ 阅读时间:18分钟 🏷️ Subagent, sessions_spawn, 并行处理

🎯 什么是 Subagent?

世界上有一种能力,叫 Subagent。它让一个 AI Agent 可以「分身」成多个独立的子代理,各自同时处理不同的任务,最后再汇总结果。

"凌晨4点,我让主Agent同时启动5个子代理,一个写代码、一个查资料、一个改BUG、一个优化性能、一个写文档。早上8点,全部完成。我怀疑这是魔法,后来发现确实是代码。"

Subagent 让你从「一次只能做一件事」的困境中解放出来,实现真正的并行处理。

✨ Subagent 核心能力

  • 🔱 独立会话 - 每个子代理有独立的上下文和记忆
  • ⚡ 并行执行 - 同时运行多个子任务,互不干扰
  • 🌳 任务树 - 主代理统筹,子代理执行,层级清晰
  • 🔄 结果汇总 - 子代理完成后自动汇总到主会话
  • 🛡️ 权限控制 - 每个子代理可独立设置工具权限

🚀 快速开始

基本语法

// 使用 sessions_spawn 创建子代理
sessions_spawn({
  task: "分析这个Python项目的代码质量",
  runtime: "subagent",
  label: "code-analyzer",  // 可选:给子代理起个名字
  model: "default",        // 可选:指定模型
})

完整参数

sessions_spawn({
  task: "任务描述",
  runtime: "subagent",
  label: "my-subagent",      // 会话标签
  model: "default",          // 模型选择
  thinking: "high",         // 思考深度
  timeoutSeconds: 300,     // 超时时间
  runTimeoutSeconds: 0,     // 运行超时
  mode: "run",              // run=一次性, session=持续会话
  thread: false,            // 是否创建线程
  cleanup: "delete",        // delete=完成后删除, keep=保留
  cwd: "/workspace/project", // 工作目录
  sandbox: "inherit",       // 沙箱模式
})

💻 实战代码示例

示例 1: 并行内容采集

// 场景:同时采集多个新闻源的内容
// 不使用 Subagent:串行执行,耗时 30秒
// 使用 Subagent:并行执行,耗时 8秒

// 1. 首先启动三个子代理
const newsTask1 = sessions_spawn({
  task: "搜索今天AI行业的重大新闻,整理成摘要",
  label: "news-ai",
  mode: "run",
});

const newsTask2 = sessions_spawn({
  task: "搜索今天互联网行业的重大新闻,整理成摘要", 
  label: "news-tech",
  mode: "run",
});

const newsTask3 = sessions_spawn({
  task: "搜索今天金融科技的重大新闻,整理成摘要",
  label: "news-fintech", 
  mode: "run",
});

// 2. 主代理继续处理其他任务
// 3. 等待所有子代理完成后汇总结果
// "请根据以上三个子代理的搜索结果,生成今日要闻汇总"

示例 2: 代码审查流水线

// 场景:PR代码审查,需要检查多个维度
// 主代理协调,多个子代理分工

// 启动代码审查子代理
const styleCheck = sessions_spawn({
  task: `审查代码风格和规范:
  - 检查Python代码是否符合PEP8
  - 检查命名规范
  - 检查注释是否充分
  代码路径: ${codePath}`,
  label: "pr-style-check",
  mode: "run",
});

const securityCheck = sessions_spawn({
  task: `审查安全问题:
  - 检查SQL注入风险
  - 检查XSS漏洞
  - 检查认证授权问题
  代码路径: ${codePath}`,
  label: "pr-security-check", 
  mode: "run",
});

const performanceCheck = sessions_spawn({
  task: `审查性能问题:
  - 检查数据库查询效率
  - 检查循环和递归使用
  - 检查内存泄漏风险
  代码路径: ${codePath}`,
  label: "pr-performance-check",
  mode: "run",
});

// 主代理汇总审查结果
"请综合以上三个审查结果,生成完整的PR审查报告"

示例 3: SEO 内容批量生成

// 场景:为一个网站批量生成SEO页面
// 每个子代理负责生成一个页面

const pages = [
  { keyword: "AI Agent 教程", path: "/ai-agent-tutorial.html" },
  { keyword: "OpenClaw 入门", path: "/openclaw-getting-started.html" },
  { keyword: "MCP 协议详解", path: "/mcp-protocol.html" },
  { keyword: "Agent Skills 开发", path: "/agent-skills-dev.html" },
  { keyword: "Subagent 并行处理", path: "/subagent-guide.html" },
];

// 批量创建子代理生成页面
pages.forEach((page, index) => {
  sessions_spawn({
    task: `为网站生成SEO页面:
    目标关键词: ${page.keyword}
    保存路径: /var/www/miaoquai${page.path}
    
    要求:
    1. 标题包含关键词
    2. 内容1000字以上
    3. 包含内部链接
    4. 符合SEO标准`,
    label: `seo-page-${index}`,
    mode: "run",
  });
});

示例 4: 持续会话模式

// 场景:需要多轮交互的复杂任务
// 使用 session 模式,保持会话

const researchAgent = sessions_spawn({
  task: "你是一个研究助手,负责深入研究AI Agent领域",
  label: "research-agent",
  mode: "session",  // 持续会话
  thread: true,    // 创建线程
});

// 第一轮:研究方向
researchAgent("请研究OpenClaw的Agent Skills机制,写一份详细报告");

// 第二轮:深入某个点
researchAgent("好的,现在请深入研究Skill的加载机制");

// 第三轮:获取最终结果
const report = researchAgent("请将所有研究整理成最终报告");

🎯 最佳实践

✅ 任务拆分原则

每个子代理应该只负责一个明确的任务。「帮我写个项目」不是一个好任务,「帮我写用户认证模块」才是。

✅ 合理设置超时

网络请求、代码编译等可能耗时的任务,设置足够的 timeoutSeconds。子代理超时会被自动终止。

✅ 使用 cleanup 控制资源

一次性任务用 run 模式 + cleanup: "delete"。需要多轮交互的用 session 模式 + cleanup: "keep"。

⚠️ 避坑指南

  • 子代理数量 - 同时运行过多子代理会耗尽资源,建议控制在10个以内
  • 共享状态 - 子代理间不共享内存,需要通过主代理中转
  • 嵌套调用 - 避免子代理再创建子代理,容易失控
  • 错误处理 - 子代理失败不会自动重试,需要主代理处理

📊 子代理管理

查看运行中的子代理

// 列出所有子代理
sessions_list({
  kinds: ["subagent"],
  limit: 10,
  activeMinutes: 60,  // 最近60分钟活跃
})

获取子代理历史

// 查看子代理的完整对话历史
sessions_history({
  sessionKey: "label:code-analyzer",
  limit: 50,
  includeTools: true,
})

终止子代理

// 终止运行中的子代理
subagents({
  action: "kill",
  target: "code-analyzer",
});

向子代理发送消息

// 向已存在的子代理发送消息
sessions_send({
  sessionKey: "label:research-agent",
  message: "继续完成剩余的研究任务",
});

🏗️ 常用模式

模式 1: Map-Reduce

// Map: 并行处理
const results = pages.map(page => 
  sessions_spawn({ task: process(page), label: ... })
);

// Reduce: 汇总结果
"请汇总以上所有结果,生成最终报告"

模式 2: Pipeline

// 阶段1: 数据采集
const rawData = sessions_spawn({
  task: "采集原始数据", label: "pipeline-stage1", mode: "run"
});

// 阶段2: 数据处理(依赖阶段1)
// 主代理处理后继续
const processed = 主代理处理(rawData);

// 阶段3: 分析
const analysis = sessions_spawn({
  task: "分析处理后的数据", label: "pipeline-stage3", mode: "run"
});

模式 3: Fan-out-Fan-in

// Fan-out: 多个子代理同时工作
const workers = Array(5).fill(null).map((_, i) =>
  sessions_spawn({ task: `处理任务${i}`, label: `worker-${i}` })
);

// Fan-in: 主代理汇总
"合并以上5个worker的结果,去重后输出"

📚 相关资源

🎬 结语

Subagent 是 OpenClaw 最强大的能力之一。它让AI从「单线程」进化到「多线程」,从「一个人干活」变成「一个团队干活」。

"世界上有一种效率,叫并行。好的架构不是让AI做得更快,而是让AI同时做更多。"

学会使用 Subagent,你就能真正体会到AI Agent的威力。当别人还在等待一个任务完成时,你已经完成了十个。