跳到內容

Context Window & Compaction:讓長對話不再卡頓

你一定遇過這種情況:跟 AI 聊得正起勁,結果對話長度突然爆表,模型開始忘東忘西,或是直接報錯說 Context Window 滿了。手動刪除舊訊息太麻煩,直接開新對話又會弄丟之前的上下文,這種維護對話歷史的瑣事真的很消磨開發熱情。

OpenClaw 內建的 Compaction 機制就是為了幫你解決這個問題。它會在你快要觸及 Model 限制時,自動把舊的對話內容「濃縮」成摘要,讓你的 Session 能夠持續跑下去。

  • 已安裝並運行中的 OpenClaw
  • 已配置的 Model Provider(用於定義 Context Window 限制)

OpenClaw 預設會幫你打理好一切,但你也可以手動介入。

  1. 自動處理:當 Session 接近 Model 的 Context Window 上限時,OpenClaw 會自動觸發 Compaction。如果你開啟了 verbose 模式,會看到 🧹 Auto-compaction complete 的提示。
  2. 手動執行:如果你覺得對話太過臃腫,直接在對話框輸入指令:
    Terminal window
    /compact
  3. 帶指令的 Compaction:你也可以要求它在摘要時重點保留某些內容:
    Terminal window
    /compact Focus on decisions and open questions
  4. 查看狀態:輸入 /status 可以確認目前 Session 已經執行過幾次 Compaction。

Compaction 會將較舊的對話內容總結成一個精簡的 Summary Entry,並保留最近的訊息。這個摘要會持久化 (Persist) 到該 Session 的 JSONL 歷史紀錄中。未來的請求會使用:

  • Compaction 摘要
  • Compaction 之後產生的最近訊息

在執行 Compaction 之前,OpenClaw 可能會先執行一次 Silent memory flush,將持久化的筆記存入磁碟。

這兩個概念很容易搞混,但它們的處理方式完全不同:

  • Compaction:總結對話並寫入 JSONL 檔案,影響長期的歷史紀錄。
  • Session Pruning:僅在記憶體中運作,針對單次請求剔除舊的 Tool Results,不會改寫歷史檔案。
  • 適時清理:當你覺得 AI 開始反應變慢,或是上下文充滿無關雜訊時,直接下達 /compact。
  • 處理大型 Tool 輸出:雖然 OpenClaw 會自動截斷大型 Tool 輸出,但配合 Pruning 可以更有效地減少 Context 負擔。
  • 重頭開始:如果當前對話已經完全失去焦點,建議使用 /new 或 /reset 直接開啟一個全新的 Session ID。
  • Context 依然過大:檢查你的 Model 定義,OpenClaw 是根據 Provider Catalog 中的設定來判斷 Context Window 限制的。
  • 摘要遺失細節:手動執行 /compact 時,嘗試給予更明確的指令(例如 Keep technical specs)來引導摘要方向。

如果你在配置 agents.defaults.compaction 時遇到困難,可以詢問 AI Setup Assistant 獲取即時幫助。

OpenClaw

OpenClaw Expert

還是卡住了?

如果這篇文件沒有解決你的情境,直接問 OpenClaw Expert,拿到可執行步驟。