跳转到主要内容

openclaw sessions

列出已存储的对话会话。 会话列表不是渠道/提供商存活检查。它们显示来自会话存储的持久化对话行。安静的 Discord、Slack、Telegram 或其他渠道可以成功重连,但在处理消息之前不会创建新的会话行。需要实时渠道连接性时,请使用 openclaw channels status --probeopenclaw status --deepopenclaw health --verbose
openclaw sessions
openclaw sessions --agent work
openclaw sessions --all-agents
openclaw sessions --active 120
openclaw sessions --limit 25
openclaw sessions --store ./tmp/sessions.json
openclaw sessions --json
标志:
标志描述
--agent <id>一个已配置的 Agent 存储(默认:已配置的默认 Agent)。
--all-agents聚合所有已配置的 Agent 存储。
--store <path>显式存储路径(不能与 --agent--all-agents 组合使用)。
--active <minutes>仅显示过去 N 分钟内更新过的会话。
--limit <n|all>输出的最大行数(默认 100all 恢复完整输出)。
--json机器可读输出。
--verbose详细日志。
openclaw sessions 和 Gateway 网关 sessions.list RPC 默认都有边界限制,因此大型长期存储不会独占 CLI 进程或 Gateway 网关事件循环。CLI 默认返回最新的 100 个会话;传入 --limit <n> 可使用更小/更大的窗口,或者在你有意需要完整存储时传入 --limit all。当调用方需要显示还有更多行存在时,JSON 响应会包含 totalCountlimitAppliedhasMore RPC 客户端可以传入 configuredAgentsOnly: true,以保留广泛的组合设备发现来源,但只返回当前存在于配置中的 Agent 行。Control UI 默认使用该模式,因此已删除或仅磁盘上的 Agent 存储不会重新出现在会话视图中。 --all-agents 读取已配置的 Agent 存储。Gateway 网关和 ACP 会话设备发现范围更广:它们还会包含在默认 agents/ 根目录或模板化 session.store 根目录下找到的仅磁盘存储。这些发现到的存储必须解析为 Agent 根目录内的常规 sessions.json 文件;符号链接和根目录外路径会被跳过。 openclaw sessions --all-agents --json
{
  "path": null,
  "stores": [
    { "agentId": "main", "path": "/home/user/.openclaw/agents/main/sessions/sessions.json" },
    { "agentId": "work", "path": "/home/user/.openclaw/agents/work/sessions/sessions.json" }
  ],
  "allAgents": true,
  "count": 2,
  "totalCount": 2,
  "limitApplied": 100,
  "hasMore": false,
  "activeMinutes": null,
  "sessions": [
    { "agentId": "main", "key": "agent:main:main", "model": "openai/gpt-5.5" },
    { "agentId": "work", "key": "agent:work:main", "model": "anthropic/claude-sonnet-4-6" }
  ]
}

跟踪轨迹进度

openclaw sessions tail
openclaw sessions tail --follow
openclaw sessions tail --session-key "agent:main:telegram:direct:123" --tail 25
openclaw sessions --agent work tail --follow
openclaw sessions --all-agents tail --follow
openclaw sessions tail 将最近的轨迹 JSONL 事件渲染为紧凑的进度行。没有 --session-key 时,它会先跟踪正在运行的会话,然后跟踪最新存储的会话。--tail <count> 控制在 follow 模式之前打印多少个现有事件;默认值为 800 则从当前末尾开始。--follow 会持续监视选定的轨迹文件,包括 <session>.trajectory-path.json 引用的已迁移文件。 进度视图有意保持保守:不会打印提示文本、工具参数和工具结果正文。工具调用会显示工具名称以及 {...redacted...};工具结果会显示 okerrordone 等状态;模型完成行会显示提供商/模型和终端状态。

导出轨迹包

openclaw sessions export-trajectory --session-key "agent:main:telegram:direct:123" --workspace .
openclaw sessions export-trajectory --session-key "agent:main:telegram:direct:123" --output bug-123 --json
这是所有者批准 Exec 请求后 /export-trajectory 斜杠命令使用的命令路径。输出目录始终解析到所选工作区下的 .openclaw/trajectory-exports/ 内。

清理维护

立即运行维护,而不是等待下一次写入周期:
openclaw sessions cleanup --dry-run
openclaw sessions cleanup --agent work --dry-run
openclaw sessions cleanup --all-agents --dry-run
openclaw sessions cleanup --enforce
openclaw sessions cleanup --enforce --active-key "agent:main:telegram:direct:123"
openclaw sessions cleanup --dry-run --fix-dm-scope
openclaw sessions cleanup --json
openclaw sessions cleanup 使用配置中的 session.maintenance 设置(配置参考):
  • 范围说明:openclaw sessions cleanup 维护会话存储、转录记录和轨迹侧车。它不会修剪 cron 运行历史,后者由 cron.runLog.keepLines 管理(Cron 配置)。
  • 清理还会修剪早于 session.maintenance.pruneAfter 的未引用主转录记录、压缩检查点和轨迹侧车;仍被 sessions.json 引用的文件会保留。
  • 清理会将短生命周期 Gateway 网关模型运行探测清理单独报告为 modelRunPruned。这只匹配形如 agent:*:explicit:model-run-<uuid> 的严格显式键。保留期固定为 24h,并受压力门控:只有在达到会话条目维护/容量压力时,才会移除过期探测行。运行时,模型运行清理会发生在全局过期清理和容量限制之前。
标志:
标志描述
--dry-run预览在不写入的情况下会修剪/限制多少条目。在文本模式下,打印逐会话操作表(ActionKeyAgeModelFlags),以及按会话标签分组的摘要。
--enforce即使 session.maintenance.modewarn,也应用维护。
--fix-missing移除转录文件缺失或仅有头部/为空的条目,即使它们通常尚未因时间/数量超限而被清理。
--fix-dm-scopesession.dmScopemain 时,停用早期 per-peerper-channel-peerper-account-channel-peer 路由遗留的过期对等键直连私信行。请先使用 --dry-run;应用后会从 sessions.json 中移除这些行,并将其转录记录保留为已删除归档。
--active-key <key>保护一个特定活动键不被磁盘预算驱逐。持久外部对话指针,例如群组会话和线程范围聊天会话,也会在按时间/数量/磁盘预算维护时保留。
--agent <id>对一个已配置的 Agent 存储运行清理。
--all-agents对所有已配置的 Agent 存储运行清理。
--store <path>针对特定的 sessions.json 文件运行。
--json打印 JSON 摘要。使用 --all-agents 时,输出会为每个存储包含一份摘要。
当 Gateway 网关可达时,针对已配置 Agent 存储的非 dry-run 清理会通过 Gateway 网关发送,因此它会与运行时流量共享同一个会话存储写入器。使用 --store <path> 可对存储文件进行显式离线修复。 openclaw sessions cleanup --all-agents --dry-run --json
{
  "allAgents": true,
  "mode": "warn",
  "dryRun": true,
  "stores": [
    {
      "agentId": "main",
      "storePath": "/home/user/.openclaw/agents/main/sessions/sessions.json",
      "beforeCount": 120,
      "afterCount": 80,
      "missing": 0,
      "dmScopeRetired": 0,
      "pruned": 40,
      "capped": 0
    },
    {
      "agentId": "work",
      "storePath": "/home/user/.openclaw/agents/work/sessions/sessions.json",
      "beforeCount": 18,
      "afterCount": 18,
      "missing": 0,
      "dmScopeRetired": 0,
      "pruned": 0,
      "capped": 0
    }
  ]
}

压缩会话

为卡住或过大的会话回收上下文预算。openclaw sessions compact <key>sessions.compact Gateway 网关 RPC 的一等包装器,并且需要正在运行的 Gateway 网关。
openclaw sessions compact "agent:main:main"
openclaw sessions compact "agent:main:main" --max-lines 200
openclaw sessions compact "agent:work:main" --agent work --json
  • 没有 --max-lines 时,Gateway 网关会用 LLM 总结转录记录。CLI 默认不施加客户端截止时间;Gateway 网关拥有已配置的压缩生命周期。
  • 使用 --max-lines <n> 时,它会截断到最后 n 行转录记录,并将先前的转录记录归档为 .bak 侧车。
  • --agent <id>:拥有该会话的 Agent;对于 global 键是必需的。
  • --url / --token / --password:Gateway 网关连接覆盖项。
  • --timeout <ms>:可选的客户端侧 RPC 超时,单位为毫秒。
  • --json:打印原始 RPC 载荷。
当 Gateway 网关报告压缩失败或不可达时,该命令会以非零状态退出,因此 cron 和脚本不会把静默无操作误认为成功。
openclaw agent --message '/compact ...' 不是压缩路径。来自 CLI 的斜杠命令会被授权发送者检查拒绝;该调用会以非零状态退出,并给出指向此处的指导,而不是静默无操作。

sessions.compact RPC

openclaw gateway call sessions.compact --params '<json>' 接受:
字段类型必填描述
keystring要压缩的会话键(例如 agent:main:main)。
agentIdstring拥有该会话的智能体 id(用于 global 键)。
maxLinesinteger ≥ 1截断为最后 N 行,而不是使用 LLM 摘要。
示例 LLM 摘要响应:
{
  "ok": true,
  "key": "agent:main:main",
  "compacted": true,
  "result": { "tokensBefore": 243868, "tokensAfter": 34941 }
}
示例截断响应(--max-lines 200):
{
  "ok": true,
  "key": "agent:main:main",
  "compacted": true,
  "archived": "/home/user/.openclaw/agents/main/sessions/transcripts/<id>.jsonl.bak",
  "kept": 200
}

相关