首页 资讯 下载 教程 Skills 社群

OpenClaw 跨会话通信与子代理协作

会话管理概述

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 处理远超单一对话能力的复杂任务,实现真正的多代理协作。