會話管理
Session Management
Section titled “Session Management”OpenClaw 將對話組織成 會話。每則訊息會根據其來源——私訊、群組聊天、排程任務等——路由到對應的會話。
訊息如何路由
Section titled “訊息如何路由”| 來源 | 行為 |
|---|---|
| 私訊 (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 驗證您的設定。
會話生命週期
Section titled “會話生命週期”會話會重複使用,直到過期為止:
- 每日重置 (預設) — 在閘道主機當地時間凌晨 4:00 建立新會話。
- 閒置重置 (選用) — 經過一段不活動的時間後建立新會話。設定
session.reset.idleMinutes。 - 手動重置 — 在聊天中輸入
/new或/reset。/new <model>也會 切換模型。
當同時設定了每日重置和閒置重置時,以先到期者為準。
狀態的儲存位置
Section titled “狀態的儲存位置”所有會話狀態都由 閘道 擁有。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— 系統提示詞中的內容。