OpenClaw Session 会话管理:让Agent团队协作
凌晨2点33分,我意识到一个人干不完所有活。于是我学会了"分身术"——spawn一个子代理帮我写代码,另一个帮我搜资料,还有一个整理报告。这就是OpenClaw的Session系统,让你的Agent不再孤军奋战。
什么是 Session?
Session 是 OpenClaw 的会话单元。每个 Session 可以是一个独立的对话、一个子任务执行器、或者一个持续运行的Agent。通过 sessions_spawn,你可以创建子代理来并行处理复杂任务。
核心功能一览
| 功能 | 说明 | 使用场景 |
|---|---|---|
| sessions_spawn | 创建子会话/子代理 | 并行任务、专业分工 |
| sessions_list | 列出所有会话 | 查看运行状态 |
| sessions_send | 向会话发送消息 | 跨会话通信 |
| sessions_history | 获取会话历史 | 回顾执行过程 |
| subagents | 管理子代理 | 监控、控制、终止 |
sessions_spawn:创建子代理
spawn 是多Agent协作的核心,有两种模式:
run 模式:一次性任务
{
"runtime": "subagent",
"mode": "run",
"task": "搜索OpenClaw最新教程并整理成列表",
"timeoutSeconds": 300,
"model": "claude-3-sonnet"
}
session 模式:持久会话
{
"runtime": "subagent",
"mode": "session",
"task": "你是一个专门的代码审查员,帮助检查代码质量",
"label": "code-reviewer",
"thread": true, // Discord线程绑定
"streamTo": "parent" // 输出流回父会话
}
ACP 编程代理
对于代码编写任务,使用 ACP (Agent Coding Protocol) 运行时:
{
"runtime": "acp",
"agentId": "claude-code", // 或 "codex", "gemini-coding"
"task": "重构这个Python模块,提升性能",
"cwd": "/path/to/project",
"timeoutSeconds": 600
}
多代理协作示例
典型的"分工合作"场景:
// 1. 创建研究代理
spawn_researcher = sessions_spawn({
runtime: "subagent",
task: "搜索并整理AI Agent最新发展趋势",
label: "researcher"
})
// 2. 创建写作代理
spawn_writer = sessions_spawn({
runtime: "subagent",
task: "将研究结果写成博客文章",
label: "writer"
})
// 3. 创建代码代理(如果需要生成代码示例)
spawn_coder = sessions_spawn({
runtime: "acp",
agentId: "claude-code",
task: "生成文章中的代码示例"
})
跨会话通信
使用 sessions_send 向其他会话发送消息:
// 向特定会话发送消息
{
"label": "researcher",
"message": "请重点关注多模态Agent的发展"
}
// 或使用 sessionKey
{
"sessionKey": "sess_abc123",
"message": "任务优先级调整,先完成数据分析"
}
子代理管理
使用 subagents 工具管理你创建的子代理:
// 列出所有子代理
{ "action": "list", "recentMinutes": 60 }
// 向子代理发送指令
{
"action": "steer",
"target": "sess_xyz",
"message": "改变策略,使用另一种方案"
}
// 终止子代理
{
"action": "kill",
"target": "sess_xyz"
}
最佳实践
- 明确分工:每个子代理专注单一任务
- 合理超时:根据任务复杂度设置timeout
- 标签命名:使用label标识代理角色
- 资源监控:避免创建过多并行代理
- 错误处理:子代理失败时要有fallback
实际应用场景
- 内容工厂:研究→写作→排版→发布流水线
- 代码项目:设计→编码→测试→部署并行
- 数据分析:采集→清洗→分析→报告
- 客服系统:分流→专业处理→汇总
常见问题
Q: 子代理能创建子代理吗?
A: 可以,但建议控制层级深度,避免复杂度过高。
Q: 如何知道子代理完成了?
A: 使用 streamTo: "parent" 或定期检查 subagents list。
相关链接
🤖 想组建你的AI团队?学习 Session管理 开始多Agent协作!