OpenClaw 多会话管理与子代理功能详解
OpenClaw 支持多会话管理与子代理功能,实现 AI 团队协作。主会话可创建独立上下文的子会话执行特定任务,互不干扰。通过命令行或 API 管理会话状态、切换及销毁。适用于并行代码审查、资料搜集、定时监控等场景。建议合理划分会话、控制数量并及时清理资源,利用会话链与持久化提升效率。

OpenClaw 支持多会话管理与子代理功能,实现 AI 团队协作。主会话可创建独立上下文的子会话执行特定任务,互不干扰。通过命令行或 API 管理会话状态、切换及销毁。适用于并行代码审查、资料搜集、定时监控等场景。建议合理划分会话、控制数量并及时清理资源,利用会话链与持久化提升效率。

会话(Session),简单说就是 AI 和你的一次"对话上下文"。每次你跟 AI 聊天,都会创建一个会话,它会记住你们聊过的内容。
默认情况下,你只有一个主会话(main session),就是你直接跟 AI 聊天的那个。
想象这些场景:
这时候,多会话就派上用场了!每个会话有独立的上下文,互不干扰。
OpenClaw 中的会话主要分为:
# 查看所有会话
openclaw sessions list
输出示例:
Session ID Type Status Last Active
─────────────────────────────────────────────────
main:001 main active 2 minutes ago
sub:code-001 sub running 5 minutes ago
sub:research-001 sub idle 1 hour ago
# 创建新会话
openclaw session new --label=my-task
--label 参数给会话起个名字,方便后续识别。
# 切换到某个会话
openclaw session switch sub:code-001
# 查看会话详情
openclaw session status sub:code-001
输出包括:
# 结束指定会话
openclaw session end sub:code-001
# 结束所有子会话
openclaw sessions end --all
子代理是主会话创建的"下属"AI,它们:
主会话 → 创建子代理 → 分配任务 → 子代理执行 → 返回结果 → 主会话处理
典型场景如下:
| 场景 | 是否需要子代理 | 理由 |
|---|---|---|
| 简单问答 | ❌ 不需要 | 主会话直接处理 |
| 长时间任务 | ✅ 需要 | 不阻塞主会话 |
| 独立上下文 | ✅ 需要 | 避免污染主对话 |
| 并行多任务 | ✅ 需要 | 同时执行多个任务 |
| 敏感操作 | ✅ 需要 | 隔离风险 |
在对话中,AI 可以自动创建子代理。你也可以手动创建:
// 在技能或配置中
const subAgent = await sessions_spawn({
label: 'code-reviewer',
model: 'qwen-portal/coder-model',
task: 'Review this PR and provide feedback'
});
// 发送消息到子代理
await sessions_send({
sessionKey: subAgent.sessionKey,
message: '请帮我 review 这个 Pull Request,关注代码质量和潜在 bug'
});
子代理完成任务后,会自动通知主会话。你也可以主动查询:
// 获取子代理的历史消息
const history = await sessions_history({
sessionKey: subAgent.sessionKey,
limit: 50
});
假设你有 3 个 PR 需要 review,可以创建 3 个子代理并行处理:
// 创建 3 个子代理
const agents = await Promise.all([
sessions_spawn({ label: 'reviewer-1', task: 'Review PR #101' }),
sessions_spawn({ label: 'reviewer-2', task: 'Review PR #102' }),
sessions_spawn({ label: 'reviewer-3', task: 'Review PR #103' })
]);
// 分配任务
agents.forEach((agent, i) => {
sessions_send({
sessionKey: agent.sessionKey,
message: `请 review PR #${101+i},关注代码风格和潜在 bug`
});
});
// 等待结果(子代理完成后会自动通知)
写文章时需要查资料,可以这样分工:
主会话:负责整体构思和写作
↓
子代理 A:搜集相关资料
↓
子代理 B:整理数据成表格
↓
主会话:整合内容完成文章
创建子代理定期执行检查任务:
// 创建监控子代理
const monitor = await sessions_spawn({
label: 'heartbeat-monitor',
task: '每 30 分钟检查一次邮件和日历'
});
// 子代理会定期向主会话汇报
使用 sessions_send 发送消息:
await sessions_send({
sessionKey: 'sub:code-001',
message: '任务更新:请优先处理这个 bug'
});
子会话完成任务后,自动推送结果:
// 子会话中
await sessions_send({
label: 'main', // 发送回主会话
message: '任务完成!发现 3 个潜在问题,详情如下...'
});
会话之间默认不共享上下文,这是为了保护独立性。如需共享数据:
子代理虽好,但别滥用:
任务完成后及时结束子会话:
# 结束已完成的子会话
openclaw session end sub:completed-task
给会话起个有意义的名字:
✅ 好:code-reviewer-001, research-agent, email-monitor
❌ 差:sub-1, agent-abc, temp-session
子代理可能会失败,主会话要能处理:
try {
const result = await sessions_send({ ... });
if (result.status === 'error') {
// 处理错误
}
} catch (error) {
// 异常处理
}
可以让子代理再创建子代理,形成层级:
主会话 └── 子代理 A(协调者)
├── 子代理 A-1(执行者)
└── 子代理 A-2(执行者)
默认会话在结束后会销毁,如需持久化:
// 配置会话持久化
await sessions_spawn({
label: 'persistent-agent',
persist: true // 保持会话不销毁
});
不同会话可以用不同模型:
// 主会话用高级模型
main: model='claude-sonnet'
// 子代理用经济模型
sub: model='qwen-portal/coder-model'
这样可以平衡效果和成本。
A: 不会!每个会话有独立的上下文和记忆,互不影响。
A: 理论上没有限制,但建议同时运行的不超过 5 个,避免资源浪费。
A: 默认会保留一段时间,建议手动结束不需要的会话。
A: 使用 sessions_history 命令或 API。
A: 可以访问工作区文件,但会话上下文是隔离的。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online
JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online
使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online
Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online