sessions_spawn实战教程 — 并行任务、上下文传递、超时控制、多模型协同
OpenClaw的 sessions_spawn 是核心的子Agent任务编排机制。想象一下,你是一个项目经理,手下有多个专家同时干活——这就是子Agent编排的精髓。
世界上有一种编程范式叫"分而治之",在AI Agent的世界里,它有了新的名字:sessions_spawn。每个子Agent都是一个独立的思考单元,它们可以并行执行、互不干扰,最后把结果汇总到你面前。
sessions_spawn({
task: "搜索最新的AI Agent新闻并生成摘要",
mode: "run"
})
这会创建一个子Agent,执行指定任务,完成后自动通知父Agent。
sessions_spawn({
task: "分析这段代码的安全漏洞",
model: "gpt-4o",
thinking: "high",
timeoutSeconds: 120,
mode: "run"
})
sessions_spawn({
task: "生成SEO优化的HTML页面",
taskName: "seo-page-gen",
label: "SEO生成器",
mode: "run"
})
taskName 是稳定别名,后续可通过它精确查找任务。 label 是显示名称,方便在列表中识别。
周星驰在《功夫》里说过:"天下武功,无坚不摧,唯快不破。" 在AI Agent的世界里,唯并行不破。
// 同时启动3个子Agent
sessions_spawn({
task: "搜索OpenClaw最新博客文章",
taskName: "blog-search",
mode: "run"
})
sessions_spawn({
task: "分析竞品futuretools.io的最新变化",
taskName: "competitor-analysis",
mode: "run"
})
sessions_spawn({
task: "检查网站sitemap是否有死链",
taskName: "sitemap-check",
mode: "run"
})
// 等待所有子Agent完成
sessions_yield({ message: "等待3个子任务完成..." })
默认情况下,子Agent是隔离的(isolated),看不到父Agent的对话历史。但有些场景需要子Agent了解上下文:
sessions_spawn({
task: "根据刚才的讨论,生成一份总结报告",
context: "fork", // 继承父Agent的完整对话上下文
mode: "run"
})
context: "fork" 会复制当前完整对话记录到子Agent,token消耗较大。仅在确实需要上下文时使用。
不同任务用不同模型,就像不同岗位用不同人才:
// 复杂推理用高级模型
sessions_spawn({
task: "分析这份财报的核心数据和趋势",
model: "gpt-4o",
thinking: "high",
taskName: "financial-analysis",
mode: "run"
})
// 简单格式转换用轻量模型
sessions_spawn({
task: "将Markdown表格转换为HTML",
model: "gpt-4o-mini",
taskName: "format-convert",
mode: "run"
})
| 场景 | 推荐模型 | 说明 |
|---|---|---|
| 复杂推理 | gpt-4o / claude-opus | 需要深度思考的任务 |
| 代码生成 | gpt-4o / claude-sonnet | 编程相关任务 |
| 格式转换 | gpt-4o-mini | 简单但量大的任务 |
| 搜索摘要 | gpt-4o-mini | 信息提取和总结 |
sessions_spawn({
task: "爬取100个网页并分析内容",
timeoutSeconds: 300, // 5分钟超时
runTimeoutSeconds: 600, // 总执行超时10分钟
mode: "run"
})
// 第一步:搜索热词
sessions_spawn({
task: "搜索当前AI Agent和OpenClaw相关的热门关键词",
taskName: "keyword-research",
mode: "run"
})
// 第二步:生成内容(依赖第一步结果)
sessions_yield({ message: "等待关键词研究完成..." })
// 第三步:并行生成多个页面
const topics = ["MCP教程", "Agent安全", "Skill开发"]
topics.forEach(topic => {
sessions_spawn({
task: `生成关于"${topic}"的SEO优化HTML页面`,
taskName: `seo-${topic}`,
mode: "run"
})
})
sessions_yield({ message: "等待所有页面生成完成..." })
// 列出当前会话的所有子Agent
subagents({ action: "list" })
// 查看子Agent历史
sessions_history({ sessionKey: "子Agent的sessionKey" })
// 向子Agent发送消息
sessions_send({
sessionKey: "子Agent的sessionKey",
message: "请调整输出格式"
})
sessions_spawn({
task: "持续监控网站状态",
taskName: "site-monitor",
// 绑定到一个命名session,可跨对话复用
mode: "run",
cleanup: "keep"
})