乐于分享
好东西不私藏

OpenClaw ACP Harness 系列 03:Subagent 与 Sessions——任务编排与并行执行

OpenClaw ACP Harness 系列 03:Subagent 与 Sessions——任务编排与并行执行

一个 AI 一次处理一件事太慢了。OpenClaw 支持同时启动多个子 Agent 并行工作——就像一个技术主管带着多个工程师同时干活。


一、Sessions 基础概念

OpenClaw 中,每个对话上下文都是一个 Session:

Session 类型 说明 生命周期
主会话(Main) 与用户直接交流的会话 长期持久
Subagent(内部) 独立运行的子任务 Agent 任务完成即结束
ACP Harness 接入外部 AI 工具 任务完成即结束
持久 Session 如 thread-bound Discord 频道 按需保留

二、sessions_spawn:启动子 Agent

// 语法
sessions_spawn({
task: "任务描述",          // 必填:告诉 subagent 做什么
runtime: "subagent",      // subagent(内部)或 acp(外部工具)
mode: "run",              // run(一次性)或 session(持久)
label: "任务标签",         // 可选:方便识别
runTimeoutSeconds: 300,   // 可选:超时时间(秒)
lightContext: true// 可选:减少上下文加载,更快启动
})

实际例子:

// 并行写文章:同时启动两个 subagent
sessions_spawn({
label: "写文章1-5",
task: "写安卓逆向系列01-05篇,保存到 /mnt/d/project/article/",
runtime: "subagent",
mode: "run",
runTimeoutSeconds: 300
})

sessions_spawn({
label: "写文章6-10",
task: "写安卓逆向系列06-10篇,保存到 /mnt/d/project/article/",
runtime: "subagent",
mode: "run",
runTimeoutSeconds: 300
})

// 两个任务同时运行,完成后推送通知给主会话

三、Subagent 的完成通知机制

Subagent 是推送式通知,不需要轮询:

1. 主会话启动 Subagent A 和 B
2. 主会话 yield(让出控制权)
3. A 和 B 在后台独立运行
4. B 先完成 → 自动推送 completion event 给主会话
5. A 完成 → 自动推送 completion event 给主会话
6. 主会话收到两个完成通知后汇总

⚠️ 注意:不要在 spawn 后主动轮询(sessions_list/exec sleep)
          completion 会自动到来,等待就好

四、ACP Harness:接入外部 AI 工具

ACP Harness 让 OpenClaw 能调度真实的编程 Agent:

// 启动 Codex 完成编程任务
sessions_spawn({
runtime: "acp",
agentId: "codex",          // 必须显式指定 harness id
task: "重构 src/auth/ 目录,改为 FastAPI async 风格",
mode: "run"
})

// 启动持久 Claude Code 会话(thread-bound)
sessions_spawn({
runtime: "acp",
agentId: "claude-code",
mode: "session",
thread: true// 绑定到当前 Discord thread
})

支持的 ACP Harness(需要在配置中启用):

Harness 说明
codex OpenAI Codex CLI
claude-code Anthropic Claude Code
cursor Cursor IDE
gemini Gemini CLI

五、Sessions 管理工具

// 列出所有活跃子 Agent
subagents({ action: "list" })

// 查看某个 subagent 的输出
sessions_history({ sessionKey: "agent:main:subagent:xxx" })

// 干预正在运行的 subagent
subagents({ action: "steer", target: "写文章1-5", message: "只写前3篇就好" })

// 终止 subagent
subagents({ action: "kill", target: "写文章6-10" })

// 向另一个会话发送消息
sessions_send({ sessionKey: "agent:main:subagent:xxx", message: "暂停,等我确认" })

六、实战:大型任务的并行编排策略

以”写10篇系列文章”为例:

策略一:2个 Subagent,各写5篇
优点:简单,并发度高
缺点:如果超时,需要重来

策略二:5个 Subagent,各写2篇
优点:每个任务小,不容易超时
缺点:管理复杂度高

策略三:主会话直接写,不用 Subagent
优点:完全可控,不怕超时
缺点:必须串行,慢

推荐:任务量中等时用2-3个 Subagent;
      任务简单或需要精细控制时自己写。

七、最佳实践

场景 建议
任务超过 5 分钟 考虑拆分给 Subagent
多个独立任务 并行 spawn,等 completion
需要精细控制 主会话直接处理
编程任务 使用 ACP Harness(Codex/Claude Code)
超时后恢复 查看 sessions_history,手动继续

下一篇:Skills 系统——给 AI 装上专属技能包