前兩篇已完成診斷。Context window 是有限的(第 1 篇),填滿也不代表全部都會被使用,而且越長效能反而越差(第 2 篇)。因此處方很明確:必須管理脈絡。包括 Claude Code 在內的程式碼代理,為此提供的最基本工具就是 /clear 與 /compact。
兩個指令都有「減少脈絡」這個共通點。因此很多人會隨意使用其中一個,或等到出現剩餘量警告才使用。但兩者的運作原理完全不同,用錯情境可能會把整個工作脈絡丟掉,或反過來一直拖著混亂的脈絡。本篇會先看兩個指令在內部確切做了什麼,再建立何時該用哪一個的標準。
/clear:刪除歷史紀錄,從空白開始
/clear 的運作很單純:丟棄目前為止的所有對話歷史。下一個回合的模型只會帶著系統提示、CLAUDE.md 等常駐載入檔案,以及你剛輸入的新訊息開始。回想第 1 篇的結構,就能理解它的意義:既然對話的實體是每回合重新傳送完整歷史,刪除歷史就等於將傳給模型的資料包重設。
失去的是完整的對話脈絡,得到的是乾淨的脈絡。第 2 篇提到的 lost in the middle,以及舊版檔案和失敗日誌造成的混亂,都會隨著歷史消失。Token 剩餘量恢復到最大,每回合重新傳送的輸入也變少,因此回應更快、成本更低。
因此 /clear 適合用在工作邊界。修好一個錯誤並完成 commit 後,下一個功能不需要知道前一個錯誤的 stack trace 或試錯過程。混在一起只會造成傷害。每次工作結束都用 /clear 切開,便能預防工作階段後半段相當一部分的品質下降。
/compact:用摘要替換歷史紀錄
/compact 採取不同的方法。它不丟棄歷史,而是讓模型摘要目前為止的對話,再用摘要替換原始歷史。數萬個 token 的歷史縮成數千個 token 的摘要,在恢復剩餘量的同時保留工作的主軸。
重點是這屬於有損壓縮。摘要是模型挑選「看起來重要的內容」的過程,使用者無法控制哪些內容會留下。檔案路徑、試過後放棄的方法、錯誤訊息的精確文字等具體細節,很容易在摘要過程中變得模糊。compact 後代理重新讀取剛才處理的檔案,也是因為只靠摘要無法掌握確切狀態。
幸好並非完全沒有控制手段。Claude Code 的 /compact 後面可以附加指示。例如輸入「/compact 請以本次遷移中已確定的結構描述變更和剩餘檔案清單為主保留」,就能指定摘要焦點。使用者最清楚什麼重要,因此即使交給模型壓縮,也要提供方向。
選擇標準:是否有需要延續的脈絡?
標準可以歸結為一個問題:下一個回合的代理是否需要知道目前為止的脈絡?
- 工作已完成,下一項工作彼此獨立 → /clear。不必多想,這就是預設值。
- 同一項工作仍在繼續,但剩餘量不足 → /compact。不過要在指示中指定要保留的內容。
- 工作相同,但代理開始原地打轉 → 反而 /clear 更好。被試錯污染的脈絡即使摘要,也只會濃縮污染。讓代理把目前狀態和下一步整理到檔案,接著 /clear,再從該檔案重新開始,會更乾淨。
第三種情況提供了提示。clear 和 compact 之間還有第三條路:把脈絡中值得保留的內容寫入檔案。先要求「請把目前為止的決定事項和剩餘工作整理到 PLAN.md」,再執行 /clear,並在新工作階段讀取 PLAN.md,就能避開摘要的不確定性,精確傳遞必要脈絡。不同於把保留內容交給模型的 /compact,這些內容會存在於可見的檔案中,因此可以驗證也可以修改。這種「外部化」模式會在第 6 篇討論記憶體時深入介紹。
不該等待 auto-compact 的原因
Claude Code 會在剩餘量達到臨界值時自動執行 compact。它是很好的安全裝置,但依賴它則是另一回事。
auto-compact 的觸發時機由 token 剩餘量決定,與工作流程無關。它可能在最糟的時機壓縮:重構進行到一半、五個檔案正在修改、測試也壞掉的時候。此時的摘要會把尷尬的中間狀態混成一團,之後的代理便帶著細微偏差的理解繼續工作。第 2 篇提到的 context poisoning,等於透過摘要發生了。
因此越有經驗的人,越會像管理儀表一樣管理剩餘量。在 commit、測試通過、決策確定等邏輯節點,把狀態整理到檔案中;剩餘 20~30% 時收束一個節點,自己決定 /clear 或 /compact 的時機。即使無法避免壓縮,也能控制何時以及如何壓縮。
總結
- /clear 是刪除歷史,/compact 是以摘要替換歷史。前者捨棄脈絡並將剩餘量恢復到最大,後者保留脈絡主軸但會損失細節。
- 預設是在每個工作邊界執行 /clear。只有需要延續脈絡時才使用 /compact,並在指示中指定要保留的內容。
- 代理開始原地打轉時,讓它把狀態整理到檔案,再用 /clear 重新開始,通常比摘要更乾淨。
- auto-compact 只是安全裝置,最好配合工作節點自行決定壓縮時機。
以上是對話歷史管理。不過,有些脈絡即使執行 /clear 也不會消失,還會在每個回合一併傳送。這些是系統提示、CLAUDE.md、工具定義等常駐載入區域。下一篇會討論如何設計這項固定成本。核心是 CLAUDE.md 該放什麼、又該移除什麼。

![[AI 脈絡 #3] /clear 與 /compact 的選擇標準 封面圖](/assets/images/posts/dbbbbbf4-c659-46d5-8a59-05ef8e331a0d/1.jpg)