跳轉到主要內容

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>一個已設定的代理存放區(預設:已設定的預設代理)。
--all-agents彙總所有已設定的代理存放區。
--store <path>明確的存放區路徑(不能與 --agent--all-agents 搭配使用)。
--active <minutes>只顯示過去 N 分鐘內更新的工作階段。
--limit <n|all>輸出的最大列數(預設 100all 會恢復完整輸出)。
--json機器可讀輸出。
--verbose詳細記錄。
openclaw sessions 與閘道 sessions.list RPC 預設都有界限, 因此大型長期存活的存放區不會獨占命令列介面程序或閘道事件 迴圈。命令列介面預設回傳最新的 100 個工作階段;傳入 --limit <n> 可取得較小/較大的視窗,或在你有意需要完整 存放區時使用 --limit all。當呼叫端需要顯示還有更多列存在時, JSON 回應會包含 totalCountlimitAppliedhasMore RPC 用戶端可以傳入 configuredAgentsOnly: true,以保留廣泛的合併 探索來源,但只回傳目前存在於設定中的代理列。 Control UI 預設使用該模式,因此已刪除或僅存在於磁碟上的代理存放區 不會重新出現在 Sessions 檢視中。 --all-agents 會讀取已設定的代理存放區。閘道與 ACP 工作階段 探索更廣泛:它們也會包含在預設 agents/ 根目錄或範本化 session.store 根目錄下找到的僅存在於磁碟上的存放區。這些探索到的 存放區必須解析為代理根目錄內一般的 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> 控制在跟隨模式前列印多少個既有事件; 預設為 80,而 0 會從目前結尾開始。 --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
這是在擁有者核准執行要求後,由 /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.runLog.keepLines 管理 (排程設定)。
  • 清理也會修剪早於 session.maintenance.pruneAfter 且未被參照的主要轉錄、壓縮 檢查點和軌跡附屬檔; 仍由 sessions.json 參照的檔案會被保留。
  • 清理會將短暫的閘道模型執行探測清理另行回報為 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 路由留下的過期同儕鍵直接 DM 列。請先使用 --dry-run;套用後會從 sessions.json 移除這些列,並將其轉錄保留為已刪除封存。
--active-key <key>保護特定作用中鍵不受磁碟預算逐出。耐久的外部對話指標,例如群組工作階段和執行緒範圍聊天工作階段,也會由年齡/數量/磁碟預算維護保留。
--agent <id>對一個已設定的代理存放區執行清理。
--all-agents對所有已設定的代理存放區執行清理。
--store <path>對特定 sessions.json 檔案執行。
--json列印 JSON 摘要。搭配 --all-agents 時,輸出會包含每個存放區的一份摘要。
當閘道可連線時,針對已設定代理存放區的非 dry-run 清理會 透過閘道送出,因此它會與執行期流量共用相同的工作階段存放區寫入器。 使用 --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 閘道 RPC 的一級包裝器,且需要執行中的閘道。
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 時,閘道會使用 LLM 摘要轉錄。命令列介面 預設不會施加用戶端期限;閘道擁有 已設定的壓縮生命週期。
  • 搭配 --max-lines <n> 時,它會截斷為最後 n 行轉錄,並 將先前轉錄封存為 .bak 附屬檔。
  • --agent <id>:擁有該工作階段的代理;global 鍵需要此項。
  • --url / --token / --password:閘道連線覆寫。
  • --timeout <ms>:可選的用戶端 RPC 逾時,單位為毫秒。
  • --json:列印原始 RPC 酬載。
當閘道回報壓縮失敗或無法連線時,命令會以非零狀態結束, 因此排程和指令碼永遠不會把無聲無操作誤認為成功。
openclaw agent --message '/compact ...' 不是壓縮路徑。來自命令列介面的斜線 命令會被授權寄件者檢查拒絕;該 呼叫會以非零狀態結束,並提供指向此處的指引,而不是無聲地 不執行任何操作。

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
}

相關