OpenClaw Session 会话管理:让Agent团队协作

📅 2026-03-20 ⏱️ 阅读时间: 9分钟 🏷️ 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"
}

最佳实践

实际应用场景

  1. 内容工厂:研究→写作→排版→发布流水线
  2. 代码项目:设计→编码→测试→部署并行
  3. 数据分析:采集→清洗→分析→报告
  4. 客服系统:分流→专业处理→汇总

常见问题

Q: 子代理能创建子代理吗?

A: 可以,但建议控制层级深度,避免复杂度过高。

Q: 如何知道子代理完成了?

A: 使用 streamTo: "parent" 或定期检查 subagents list。

相关链接

🤖 想组建你的AI团队?学习 Session管理 开始多Agent协作!