为什么需要子智能体
你有没有这种场景:
- 让 AI 读 200 篇历史文档做死链检查,主对话卡了 5 分钟不能干别的;
- 想同时调研 3 个竞品,但一轮一轮串行问太慢;
- 有个长构建任务要跑,你却想在等待期间继续写另一篇稿子。
OpenClaw 的 sessions_spawn 就是为这些场景准备的:它能在后台拉起一个独立的子智能体(subagent),把活丢给它,主会话立刻腾出手。子智能体干完会把结果推回来,你不用守着。
本文所有命令都来自 OpenClaw 真实工具定义,可直接照抄。
核心命令:sessions_spawn
最关键的两个参数:
| 参数 | 取值 | 作用 |
|---|---|---|
task |
文本 | 派给子智能体的任务描述(即它的初始 [Subagent Task]) |
taskName |
小写字母/数字/- |
稳定别名,便于在侧栏识别(必须以小写字母开头) |
runtime |
subagent |
子智能体运行时(默认就是这个) |
visible |
true/false |
true=在控制面板侧栏可见、可回看;长活/可交付物建议开 |
mode |
run |
一次性后台运行(默认就是 run) |
cleanup |
delete/keep |
隐藏子会话跑完删不删;visible=true 时始终保留 |
context |
isolated/fork |
isolated 干净上下文;fork 复制主会话上下文(须同模型) |
cwd |
路径 | 子智能体工作目录 |
runTimeoutSeconds |
秒 | 单次运行超时(0=不超时) |
记住一个铁律:别用主会话去轮询子智能体状态。OpenClaw 完成时会主动推送结果,你挂机等回调即可。
三种典型用法
1. 后台长任务(visible 模式)
适合"要跑一会儿、跑完我想看过程也能看结果"的活,比如批量死链检查、长文重写:
sessions_spawn(
task="读取 /root/.openclaw/workspace/money-plan/content-bank 下所有 markdown,
逐篇检查内部链接是否失效,输出一份按文件归类的死链报告",
taskName="deadlink-check",
visible=true,
runtime="subagent"
)
调用后它立刻出现在侧栏,你继续干别的。它跑完会发回一份带 sessionUrl 的结果,第二条是 Owner: <label>。
2. 一次性并行跑批(mode=run)
想同时开 3 个调研互不干扰,各自 sessions_spawn 一次即可,它们是真并行:
sessions_spawn(task="调研竞品 A 的定价与功能,列要点", taskName="research-a", runtime="subagent")
sessions_spawn(task="调研竞品 B 的定价与功能,列要点", taskName="research-b", runtime="subagent")
sessions_spawn(task="调研竞品 C 的定价与功能,列要点", taskName="research-c", runtime="subagent")
3. 主会话等结果再继续(sessions_yield)
如果下一步必须拿到子智能体结果,主会话结尾调 sessions_yield,结果会在下一条消息回来,不会空等:
sessions_spawn(task="把这篇稿子翻译成英文并自检术语", taskName="translate-post", runtime="subagent")
sessions_yield(message="等翻译结果回来后,把英文版存档到 content-bank/")
实战:并行调研 + 汇总
一个能直接落地的组合拳:
- 同时 spawn 3 个调研子智能体(见用法 2);
- 主会话去做别的工作(写稿、回消息);
- 三个结果陆续推回后,再 spawn 一个
merge子智能体,把三份要点合成对比表:sessions_spawn( task="把 research-a / research-b / research-c 三份结果合并成一张 「功能 / 价格 / 适合人群」对比表,存到 content-bank/竞品对比.md", taskName="merge-research", visible=true, runtime="subagent" )
盯进度与取消
- 看当前在跑哪些:
subagentsaction=list - 取消某个:
subagentsaction=canceltaskId=<id>
list 能列出后台工作、媒体生成、自动化运行,取消只对还没跑完的有效。
几个容易踩的坑
- 别轮询:新手最爱写个循环去
sessions_list/subagents反复查,这是错的。完成会主动推送,挂机等即可。 - 上下文隔离:默认
context="isolated"是干净上下文,子智能体看不到主会话历史;若它需要你的对话背景,用context="fork"(注意会复制主会话 transcript,且须同一模型)。 - 清理策略:
visible=true的会话跑完始终保留;visible缺省为隐藏子会话,若不指定cleanup="keep"可能跑完被删,想留档就显式keep。 - 不是永久派单层:子智能体适合"一次性大活/并行批",不适合做成常驻 dev/test 三层架构——后者开销大于收益(本工作区已验证过并回退)。需要持续调度请用
automations(cron/触发器),不是子智能体。 - 长活用 visible:编码、长构建、值得回看的成果,开
visible=true,出事能翻记录。
小结
sessions_spawn 的本质一句话:把"耗时长"和"可并行"的活,从主会话里拆出去。配 sessions_yield 等结果、subagents 看/取消、visible=true 留档,就是一个干净的后台任务工作流。下次主对话卡住前,先想想这活能不能丢给子智能体。
扫码关注公众号,获取更多 OpenClaw 实操技巧:
