用法
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 數字,不是你的真實用量。按文件的描述,順序大致是這樣:
- 你輸入任何內容之前:CLAUDE.md、auto memory、MCP 工具名和 skill 描述都會載入進上下文。AGENTS.md 可以代替 CLAUDE.md 載入。你自己的配置還可能在這裡加入更多內容,比如 output style,或者
--append-system-prompt傳入的文字。 - Claude 工作時:每讀一個檔案,上下文就增加一塊;帶路徑範圍的規則會在匹配的檔案出現時自動載入;每次編輯之後,PostToolUse hook 會觸發。
- 後續的提問:subagent 在它自己獨立的上下文視窗裡做調研,所以大量的檔案讀取不會進到你的上下文裡,只有摘要和一小段後設資料會返回。
- 時間線的結尾:你執行
/compact,對話被替換成一份結構化的摘要。大部分啟動時的內容會自動重新載入,具體每一項怎麼處理見下表。
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.md | Claude Code 按需重新載入 |
| Claude 讀過或編輯過的檔案 | Claude Code 重新讀取最多五個,按最近修改的優先 |
| 已呼叫的 skill 正文 | 重新注入,每個 skill 上限 5,000 token,合計上限 25,000 token;最早的先被丟棄 |
| 後臺命令和後臺 subagent | 繼續執行。Claude Code 會提醒 Claude 哪些還在執行,避免它重複啟動 |
| 之前由 hook 加進來的上下文 | 和對話的其餘部分一起被摘要 |
匹配 compact 來源的 SessionStart hook | Claude Code 會執行它們,並把輸出加進壓縮後的上下文 |
有三點文件特別說明:
- 檔案重讀有大小限制。壓縮之後,Claude Code 會重新讀取 Claude 讀過或編輯過的最多五個檔案,選最近修改的。超過 5,000 token 的檔案只會以路徑引用的形式回來,不帶內容,顯示為
Referenced file而不是Read。 - 帶路徑的規則和巢狀 CLAUDE.md 會被摘要掉。它們是在 Claude 讀取、寫入或編輯觸發檔案時才載入進訊息歷史的,所以壓縮時和其他內容一起被摘要。如果一條規則必須在壓縮後保留,就去掉
paths:frontmatter,或者把它移到專案根目錄的 CLAUDE.md。 - skill 正文可能被截斷。skill 正文會重新注入,但大的 skill 會被截斷到每個 skill 的上限,總預算超出後最早呼叫的 skill 被丟棄。截斷保留檔案的開頭,所以把最重要的說明放在
SKILL.md靠前的位置。
壓縮之前你能做什麼
在自動壓縮觸發之前,你可以自己動手。文件列了五種做法:
| 做法 | 怎麼做 |
|---|---|
| 帶重點地壓縮 | 開始一個長的新任務之前,執行帶說明的 /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 或更高版本。 |
讓上下文保持精簡
成本文件裡和上下文有關的建議,摘錄如下:
- 任務之間
/clear。陳舊的上下文會讓之後每一條訊息都浪費 token。清空之前先用/rename,以後就能找到這個工作階段,再用/resume回去。 - 寫自定義壓縮說明。
/compact Focus on code samples and API usage告訴 Claude 摘要時要保留什麼。也可以在專案根目錄的 CLAUDE.md 裡寫:# Compact instructions When you are using compact, please focus on test output and code changes - 留意 MCP。MCP 工具定義預設是延遲載入的,所以在 Claude 用到某個具體工具之前,只有工具名和伺服器說明會進入上下文。執行
/context看什麼在佔空間。 - 優先用 CLI 工具。
gh、aws、gcloud、sentry-cli這類工具比 MCP 伺服器更省上下文,因為它們沒有逐個工具的列表。 - 精簡 CLAUDE.md。CLAUDE.md 在工作階段開始時載入進上下文。如果裡面有針對特定流程的詳細說明,即使你在做不相關的事,這些 token 也在。skill 只在被呼叫時才載入,所以把專門的說明挪進 skill 能讓基礎上下文更小。文件建議把 CLAUDE.md 控制在 200 行以內,只放必要的內容。
- 把冗長的輸出交給 subagent。跑測試、取文件、處理日誌檔案都可能佔用大量上下文,交給 subagent,冗長的輸出留在它的上下文裡,只有摘要回到主對話。
- 用 hook 預處理資料。文件的例子:與其讓 Claude 讀一個 10,000 行的日誌檔案去找錯誤,不如用 hook 對
ERROR做 grep,只返回匹配的行,上下文就從幾萬 token 降到幾百。
這些做法在費用上的效果,我們的 Claude Code 省錢指南裡有按成本角度的講解,快取的行為見快取說明;這一頁只講上下文字身怎麼運作。
常見問題
上下文視窗滿了,工作階段會中斷嗎?
不會。文件說 Claude Code 會在接近上限時自動壓縮,所以視窗滿了並不會結束你的工作階段。你也可以在它觸發之前自己執行 /compact,用重點說明決定摘要保留什麼。具體在什麼位置觸發,取決於你的模型和配置。
壓縮之後,CLAUDE.md 裡的規則還在嗎?
專案根目錄的 CLAUDE.md 和無範圍限定的規則會從磁碟重新注入。帶 paths: frontmatter 的規則和子目錄裡的 CLAUDE.md 不同:它們是按需重新載入的,在壓縮時會被摘要掉。如果一條規則必須跨壓縮保留,文件的建議是去掉 paths: frontmatter,或者把它移到專案根目錄的 CLAUDE.md。
/compact 和 /clear 有什麼區別?
/compact 摘要當前對話來騰出上下文,對話繼續;/clear 開始一個上下文為空的新對話,上一個對話可以用 /resume 恢復。命令文件說得很直接:想在繼續同一個對話的同時騰出上下文,用 /compact。切換到不相關的工作時,文件建議用 /clear。
來源
- Claude Code:Explore the context window(啟動時載入的內容、壓縮後保留什麼、上下文滿了怎麼辦、
/context) - Claude Code:Commands(
/context、/compact、/clear、/rewind、/autocompact、/memory、/usage) - Claude Code:Manage costs effectively(控制上下文的做法、自定義壓縮說明)