会话管理概述
OpenClaw 提供了一组强大的会话管理工具,允许代理在不同会话间通信、派生子代理执行并行任务,以及管理复杂的多步骤工作流。
核心工具介绍
sessions_list — 列出活跃会话
查看当前所有活跃的会话及其状态:
{
tools: {
sessions: {
enabled: true,
// 允许列出会话
list: true
}
}
}
使用示例:
用户: 现在有哪些活跃的会话?
OpenClaw: [调用 sessions_list]
当前活跃会话:
- session_abc123: 数据分析任务(运行中)
- session_def456: 文档翻译(已完成)
- session_ghi789: 代码审查(等待中)
session_status — 查询会话状态
获取特定会话的详细状态信息:
OpenClaw: [调用 session_status, id: "session_abc123"]
会话 session_abc123 状态:
- 状态: running
- 已运行: 2分30秒
- 最后活动: 10秒前
- 消息数: 15
sessions_history — 查看会话历史
检索特定会话的完整消息历史:
OpenClaw: [调用 sessions_history, id: "session_abc123"]
返回该会话的完整对话记录,包含用户输入和代理回复。
这在需要了解子代理工作过程或恢复中断的任务时特别有用。
跨会话通信
sessions_send — 发送消息到其他会话
向指定会话发送消息,实现代理间的协作:
// sessions_send 参数示例
{
target: "session_abc123",
message: "数据分析完成了吗?请将结果发给我。",
// 等待回复
waitForReply: true,
timeout: 30000 // 30 秒超时
}
Ping-Pong 回复路由
OpenClaw 的会话通信采用 ping-pong 模式,确保消息的有序传递:
会话A 会话B
| |
|--- sessions_send ----->|
| (ping) |
| | 处理消息
|<---- 回复 -------------|
| (pong) |
| |
配置回复路由:
{
sessions: {
routing: {
// 回复超时时间
replyTimeout: 60000,
// 未送达消息的处理
undelivered: "queue", // queue | drop | error
// 最大排队消息数
maxQueueSize: 100
}
}
}
子代理派生
sessions_spawn — 派生子代理
创建子代理来并行执行独立任务:
// sessions_spawn 参数示例
{
// 子代理的系统提示词
systemPrompt: "你是一个专门进行数据分析的助手。",
// 初始任务描述
initialMessage: "分析以下销售数据并生成报告...",
// 子代理配置
config: {
model: "claude-sonnet-4-20250514",
// 子代理可用工具
tools: ["web_search", "exec"],
// 任务完成后自动关闭
autoClose: true
}
}
并行任务示例
同时派生多个子代理处理不同任务:
用户: 帮我同时完成三件事:
1. 搜索最新的 AI 论文
2. 分析这份数据表
3. 翻译这段英文文档
OpenClaw:
好的,我将派生三个子代理并行处理。
[调用 sessions_spawn] -> 子代理A: AI 论文搜索
[调用 sessions_spawn] -> 子代理B: 数据分析
[调用 sessions_spawn] -> 子代理C: 文档翻译
三个任务已启动,我会汇总结果后报告给你。
监控子代理进度
OpenClaw: [调用 session_status 检查各子代理]
任务进度:
- AI 论文搜索:已完成 ✓
- 数据分析:进行中(60%)
- 文档翻译:已完成 ✓
数据分析预计还需 1 分钟,请稍候。
实际应用场景
场景一:复杂研究任务
// 主代理协调多个研究子代理
{
workflow: {
// 第一阶段:信息收集
phase1: {
spawn: [
{ task: "搜索学术论文", tools: ["web_search"] },
{ task: "搜索行业报告", tools: ["web_search", "web_fetch"] },
{ task: "搜索新闻报道", tools: ["web_search"] }
]
},
// 第二阶段:汇总分析(等待第一阶段完成)
phase2: {
task: "汇总所有信息并生成综合报告"
}
}
}
场景二:代码审查流水线
主代理:
[spawn] 子代理1 -> 检查代码风格
[spawn] 子代理2 -> 检查安全漏洞
[spawn] 子代理3 -> 检查性能问题
[等待所有子代理完成]
[汇总结果] -> 生成综合审查报告
安全配置
限制会话权限
{
sessions: {
security: {
// 最大同时活跃会话数
maxActiveSessions: 10,
// 子代理最大嵌套深度
maxSpawnDepth: 3,
// 允许跨会话通信的会话白名单
allowCrossTalk: ["admin_*"],
// 子代理自动超时
spawnTimeout: 300000 // 5 分钟
}
}
}
调试技巧
查看会话通信日志
# 查看所有会话间通信
openclaw logs --filter sessions
# 查看特定会话的详细日志
openclaw logs --session session_abc123 --verbose
# 列出所有活跃会话
openclaw sessions list --format table
手动清理僵尸会话
# 列出超时会话
openclaw sessions list --status stale
# 强制关闭指定会话
openclaw sessions kill session_abc123
# 清理所有已完成的会话
openclaw sessions prune --completed
合理使用会话管理工具,可以让 OpenClaw 处理远超单一对话能力的复杂任务,实现真正的多代理协作。