CoreCode部落格

用法

Claude Code 上下文視窗詳解:上下文滿了怎麼辦、compact 會保留什麼

釋出於 · 最後核對

上下文視窗裝著 Claude 在這次工作階段裡知道的一切:你的指令、讀過的檔案、它自己的回覆,還有從來不會顯示在終端裡的內容。這一頁按 Anthropic 的 Explore the context window 文件,中文整理啟動時載入什麼、怎麼檢視用量、上下文滿了會怎樣、/compact 之後哪些內容還在,以及 /compact、/clear、/rewind 各自怎麼用。文件於 2026 年 10 月 30 日核對。

要點
  • 上下文視窗裡不只有你的對話:CLAUDE.md、auto memory、MCP 工具名和 skill 描述在你輸入任何內容之前就已經載入。
  • 執行 /context 可以看到按類別劃分的實時用量,以及最佳化建議。
  • 接近上限時 Claude Code 會自動壓縮,所以上下文滿了不會結束工作階段。
  • 壓縮後,專案根目錄的 CLAUDE.md 和 auto memory 會從磁碟重新注入;帶 paths: 的規則、子目錄裡的 CLAUDE.md 則要等再次觸發才會重新載入。
  • 想讓摘要保留你關心的內容,執行 /compact 並寫上重點,例如 /compact focus on the auth bug fix;切換到不相關的工作時用 /clear。

上下文視窗裡裝了什麼

文件用一個帶時間線的模擬,演示一次工作階段從啟動到壓縮的全過程,裡面用的是有代表性的 token 數字,不是你的真實用量。按文件的描述,順序大致是這樣:

subagent 的寫法見 Claude Code subagents 使用教程,skill 的寫法見 Claude Code skills 使用教程,CLAUDE.md 的寫法見 CLAUDE.md 怎麼寫。

怎麼檢視上下文用量

文件說,要看自己工作階段的真實用量,隨時執行 /context:它按類別給出實時明細和最佳化建議,包括載入了哪些 CLAUDE.md 和 auto memory 檔案。執行 /memory 可以開啟並編輯這些檔案。

命令文件裡對這兩個命令的描述如下:

命令文件的說明
/context [all]把當前上下文用量顯示成彩色網格,並針對佔用上下文較多的工具、memory 膨脹和容量告警給出最佳化建議。對話超出上下文視窗時,輸出裡會帶一條警告,顯示超出了多少、用哪個命令可以騰出空間。在全屏模式下,/context 會把逐項明細摺疊起來,讓網格保持可見,加上 all 可以展開。
/memory編輯 CLAUDE.md 檔案,開啟或關閉 auto memory,並檢視 auto memory 條目。

成本文件還提到,用 /usage 可以檢視當前的 token 用量,也可以配置狀態列來持續顯示。/usage 顯示的是工作階段費用、套餐用量限額和活動統計。

上下文滿了會怎樣

接近上限時,Claude Code 會自動壓縮,所以上下文視窗滿了並不會結束你的工作階段。自動壓縮的做法和時間線裡的 /compact 一步相同。

壓縮觸發的位置取決於你的模型和配置。文件把各模型的預設閾值,以及 Claude Code 對你的模型 ID 假設了錯誤視窗時怎麼修正,放在 model-config 頁面,這一頁沒有給出具體數字。

如果需要的是更大的視窗,而不是更短的對話:文件說 Fable 模型、Sonnet 5 及之後、Haiku 5.5、Opus 4.6 及之後、Sonnet 4.6 支援 1 million token 的上下文視窗,各套餐是否可用、怎麼選 [1m] 模型變體,見文件的 Extended context 一節。文件同時說明,視窗更大時壓縮的方式不變。

壓縮後什麼保留、什麼不保留

長工作階段壓縮時,Claude Code 會對對話歷史做摘要,讓它裝進上下文視窗。從 v2.1.198 起,摘要請求會沿用你工作階段的 extended thinking 配置:工作階段開著 thinking,摘要時就帶著 thinking 推理,否則就關著。thinking 隻影響摘要的生成,壓縮之後你的工作階段設定不變。每一類內容怎麼處理,取決於它是怎麼載入進來的:

機制壓縮之後
系統提示和 output style兩者仍然生效
專案根目錄的 CLAUDE.md 和無範圍限定的規則從磁碟重新注入
Auto memory從磁碟重新注入
Skill 描述按你當前的 skills 重新構建並注入。需要 Claude Code v2.1.304 或更高版本
Git status 快照如果工作階段啟動時帶了一份,Claude Code 會從你的倉庫重新讀取一份新的
Claude 在 plan mode 裡寫的計劃從磁碟重新注入
帶 paths: frontmatter 的規則Claude Code 按需重新載入
子目錄裡的巢狀 CLAUDE.mdClaude Code 按需重新載入
Claude 讀過或編輯過的檔案Claude Code 重新讀取最多五個,按最近修改的優先
已呼叫的 skill 正文重新注入,每個 skill 上限 5,000 token,合計上限 25,000 token;最早的先被丟棄
後臺命令和後臺 subagent繼續執行。Claude Code 會提醒 Claude 哪些還在執行,避免它重複啟動
之前由 hook 加進來的上下文和對話的其餘部分一起被摘要
匹配 compact 來源的 SessionStart hookClaude Code 會執行它們,並把輸出加進壓縮後的上下文

有三點文件特別說明:

壓縮之前你能做什麼

在自動壓縮觸發之前,你可以自己動手。文件列了五種做法:

做法怎麼做
帶重點地壓縮開始一個長的新任務之前,執行帶說明的 /compact,例如 /compact focus on the auth bug fix。摘要會保留你選的內容,而不是自動壓縮猜測的重點。
壓縮對話的一部分執行 /rewind,選一條訊息,選擇 Summarize from here 或 Summarize up to here。
提前壓縮執行 /autocompact 並帶上 token 數,例如 /autocompact 500k,設定上下文視窗填到多滿才觸發自動壓縮。
任務之間清空切換到不相關的工作時執行 /clear。舊對話會擠掉你接下來需要的檔案,並且每條訊息都要為它付 token。
把大量讀取交給 subagent把調研交給 subagent,檔案內容留在它的上下文視窗裡,而不是你的。

命令文件對相關命令的說明:

命令文件的說明
/compact [instructions]透過摘要當前的對話來騰出上下文。可以選擇性地傳入摘要的重點說明。
/clear [name]開始一個上下文為空的新對話。傳入名字,可以在 /resume 選擇器裡給上一個對話加標籤。想在繼續同一個對話的同時騰出上下文,改用 /compact。用 /resume 可以恢復上一個對話。別名:/reset、/new。
/rewind把對話和(或)程式碼回退到之前的某個時間點,或者從選中的訊息開始做摘要。別名:/checkpoint、/undo。
/autocompact [auto|<tokens>]設定自動壓縮視窗:上下文視窗填到多滿之前 Claude Code 才自動壓縮。可以傳入 500k 這樣的大小,或用 auto 回到針對你模型調好的視窗。Claude Code 把這個值儲存到使用者設定,並應用於當前工作階段。需要 Claude Code v2.1.221 或更高版本。

讓上下文保持精簡

成本文件裡和上下文有關的建議,摘錄如下:

這些做法在費用上的效果,我們的 Claude Code 省錢指南裡有按成本角度的講解,快取的行為見快取說明;這一頁只講上下文字身怎麼運作。

常見問題

上下文視窗滿了,工作階段會中斷嗎?

不會。文件說 Claude Code 會在接近上限時自動壓縮,所以視窗滿了並不會結束你的工作階段。你也可以在它觸發之前自己執行 /compact,用重點說明決定摘要保留什麼。具體在什麼位置觸發,取決於你的模型和配置。

壓縮之後,CLAUDE.md 裡的規則還在嗎?

專案根目錄的 CLAUDE.md 和無範圍限定的規則會從磁碟重新注入。帶 paths: frontmatter 的規則和子目錄裡的 CLAUDE.md 不同:它們是按需重新載入的,在壓縮時會被摘要掉。如果一條規則必須跨壓縮保留,文件的建議是去掉 paths: frontmatter,或者把它移到專案根目錄的 CLAUDE.md。

/compact 和 /clear 有什麼區別?

/compact 摘要當前對話來騰出上下文,對話繼續;/clear 開始一個上下文為空的新對話,上一個對話可以用 /resume 恢復。命令文件說得很直接:想在繼續同一個對話的同時騰出上下文,用 /compact。切換到不相關的工作時,文件建議用 /clear。

來源