OpenClaw 子代理 (Subagent) 完全指南
让你的 AI Agent 学会「分身为之术」—— 并行处理、异步任务、分布式作战
🎯 什么是 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的威力。当别人还在等待一个任务完成时,你已经完成了十个。