Skip to content

Session Tools(会话工具)

OpenClaw 为 agent 提供了一套跨会话工作、检查状态和编排子代理的工具。养好这些"小虾兵",你就能轻松调度整个龙虾军团。

可用工具

工具说明
sessions_list列出会话(可按 kind、recency 过滤)
sessions_history读取指定会话的对话记录
sessions_send向另一个会话发消息,可选等待回复
sessions_spawn派生隔离的子代理会话用于后台任务
sessions_yield结束当前 turn,等待子代理后续结果
subagents列出、引导或终止已派生的子代理
session_status显示 /status 卡片,可设置本会话的模型 override

列表和历史读取

sessions_list 返回会话的 key、kind、channel、model、token 数和时间戳。可按 kind(maingroupcronhooknode)或最近活跃时间(activeMinutes)过滤。

sessions_history 获取指定会话的对话记录,默认不含工具结果(传 includeTools: true 可包含)。返回内容经安全过滤:

  • 去除 thinking 标签、内存脚手架块、tool-call XML 等内部占位符
  • 凭据/Token 类文本脱敏
  • 超大历史会截断或省略过大行,并在结果中标注 truncateddroppedMessages 等标志

如需精确的原始字节记录,直接读磁盘的 transcript 文件,不要把 sessions_history 当原始转储。

跨会话消息发送

sessions_send 将消息送到另一个会话:

  • fire-and-forget:设 timeoutSeconds: 0,入队后立即返回
  • 等待回复:设置超时,回复内联返回

目标 agent 回复后,OpenClaw 可运行回复循环(最多 5 轮交替消息)。目标 agent 回复 REPLY_SKIP 可提前中止。

状态与编排辅助工具

session_status 是当前或其他可见会话的轻量级 /status 工具,报告用量、时间、模型/运行状态以及关联后台任务上下文。设 model=default 可清除本会话的模型 override。

sessions_yield 主动结束当前 turn,使下一条消息成为等待中的后续事件,避免构建轮询循环。

subagents 是已派生 OpenClaw 子代理的控制台:

  • action: "list" — 查看活跃/近期运行
  • action: "steer" — 向运行中的子代理发送引导指令
  • action: "kill" — 停止单个或全部子代理

派生子代理

sessions_spawn 创建隔离的后台任务会话,始终非阻塞(立即返回 runIdchildSessionKey)。

关键选项:

  • runtime: "subagent"(默认)或 "acp"(外部 harness agent)
  • modelthinking 子会话 override
  • thread: true — 绑定到聊天 thread(Discord、Slack 等)
  • sandbox: "require" — 强制子会话沙箱化

叶子子代理默认不获得会话工具。当 maxSpawnDepth >= 2 时,深度 1 的编排子代理额外获得 sessions_spawnsubagentssessions_listsessions_history,可管理自己的子代理。叶子节点仍不获得递归编排工具。

可见性级别

级别范围
self仅当前会话
tree当前会话 + 派生子代理
agent该 agent 的所有会话
all所有会话(如配置了跨 agent)

默认为 tree。沙箱会话固定为 tree,忽略配置。

FAQ

Q:如何知道子代理完成了? 使用 sessions_yield 结束 turn,子代理完成后结果会作为下一条消息送达,无需手动轮询。

Q:子代理能再派生子代理吗? 能,但需要 maxSpawnDepth >= 2,且只有深度 1 的编排子代理有此能力,叶子子代理不行。

延伸阅读