Skip to content

會話管理

OpenClaw 將對話組織成 會話。每則訊息會根據其來源——私訊、群組聊天、排程任務等——路由到對應的會話。

來源行為
私訊 (DM)預設共用同一個會話
群組聊天每個群組獨立
房間/頻道每個房間獨立
排程任務 (Cron jobs)每次執行使用新的會話
網絡鉤子 (Webhooks)每個鉤子獨立

預設情況下,所有私訊共用一個會話以保持連續性。這對於單一使用者設定來說沒有問題。

解決方案:

{
session: {
dmScope: "per-channel-peer", // isolate by channel + sender
},
}

其他選項:

  • main (預設) — 所有私訊共用一個會話。
  • per-peer — 依傳送者隔離 (跨頻道)。
  • per-channel-peer — 依頻道 + 傳送者隔離 (建議)。
  • per-account-channel-peer — 依帳戶 + 頻道 + 傳送者隔離。

使用 openclaw security audit 驗證您的設定。

會話會重複使用,直到過期為止:

  • 每日重置 (預設) — 在閘道主機當地時間凌晨 4:00 建立新會話。
  • 閒置重置 (選用) — 經過一段不活動的時間後建立新會話。設定 session.reset.idleMinutes
  • 手動重置 — 在聊天中輸入 /new/reset/new <model> 也會 切換模型。

當同時設定了每日重置和閒置重置時,以先到期者為準。

所有會話狀態都由 閘道 擁有。UI 用戶端會向閘道查詢會話資料。

  • 儲存: ~/.openclaw/agents/<agentId>/sessions/sessions.json
  • 對話記錄: ~/.openclaw/agents/<agentId>/sessions/<sessionId>.jsonl

OpenClaw 會自動在時間上限制會話存儲。預設情況下,它運行在 warn 模式(報告將被清理的內容)。將 session.maintenance.mode 設置為 "enforce" 以進行自動清理:

{
session: {
maintenance: {
mode: "enforce",
pruneAfter: "30d",
maxEntries: 500,
},
},
}

使用 openclaw sessions cleanup --dry-run 預覽。

  • openclaw status — 會話存儲路徑和近期活動。
  • openclaw sessions --json — 所有會話(使用 --active <minutes> 過濾)。
  • 聊天中的 /status — 上下文使用量、模型和切換開關。
  • /context list — 系統提示詞中的內容。