探索上下文視窗
Claude Code 上下文視窗在會話期間如何填充的互動模擬。查看自動加載的內容、每個文件讀取的成本,以及規則和 hooks 何時觸發。
Claude Code 的上下文視窗包含 Claude 對您的會話所知的一切:您的指令、它讀取的文件、它自己的回應,以及從不在您的終端中出現的內容。下面的時間線播放了從啟動到壓縮的完整會話:在您輸入任何內容之前加載的內容、每個文件讀取、規則和 hook 在 Claude 工作時添加的內容,以及子代理如何將大型讀取保持在上下文之外。請參閱書面分解以獲取相同內容的列表形式。
時間軸顯示的內容
該工作階段展示了一個現實的流程,包含代表性的權杖計數:
- 在您輸入任何內容之前:CLAUDE.md、自動記憶、MCP 工具名稱和 skill 描述都會載入到上下文中。AGENTS.md 檔案可以取代 CLAUDE.md 載入。您自己的設定可能會在此處添加更多內容,例如輸出風格或來自
--append-system-prompt的文字。 - 當 Claude 工作時:每次檔案讀取都會增加上下文,路徑範圍規則會自動與匹配的檔案一起載入,並且PostToolUse hook 會在每次編輯後觸發。
- 後續提示:子代理在其自己的獨立上下文視窗中處理研究,因此大型檔案讀取不會進入您的視窗。只有摘要和一個小的中繼資料預告片會返回。
- 在逐步解說的最後:您執行
/compact,它會將對話替換為結構化摘要。大多數啟動內容會自動重新載入;下表顯示每個機制會發生什麼。
壓縮後保留的內容
當長時間的工作階段進行壓縮時,Claude Code 會總結對話歷史以適應上下文視窗。自 v2.1.198 起,總結請求會繼承您工作階段的延伸思考設定,因此當您的工作階段啟用思考時,它會在啟用思考的情況下進行推理,否則保持關閉。思考只會影響摘要的生成方式;您的工作階段設定在之後保持不變。每種內容發生的情況取決於它的載入方式:
| 機制 | 壓縮後 |
|---|---|
| 系統提示詞和輸出風格 | 兩者仍然適用 |
| 專案根目錄 CLAUDE.md 和未限定範圍的規則 | 從磁碟重新注入 |
| 自動記憶 | 從磁碟重新注入 |
| Skill 描述 | 根據您目前的 skill 重新建構並重新注入。需要 Claude Code v2.1.304 或更新版本 |
| Git 狀態快照 | 如果工作階段開始時有快照,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.md 的頂部附近。
當您的上下文填滿時
Claude Code 會在您接近限制時自動壓縮,因此完整的上下文視窗不會結束您的工作階段。自動傳遞的工作方式與時間線中的 /compact 步驟相同。請參閱當上下文填滿時以了解它保留的內容。若要了解 Claude Code 何時也會壓縮您閒置的對話,請參閱閒置壓縮。
您也可以在自動傳遞運行之前採取行動:
- 使用焦點進行壓縮:在開始長時間新任務之前,運行帶有指令的
/compact,例如/compact focus on the auth bug fix。摘要保留您選擇的內容,而不是自動傳遞猜測的重要內容。 - 壓縮對話的一部分:運行
/rewind,選擇一條訊息,然後選擇從此處摘要或摘要至此處。請參閱重新開始和摘要以了解每個選項保留的內容以及如何引導摘要。 - 更早壓縮:運行
/autocompact並指定令牌計數,例如/autocompact 500k,以設定在自動傳遞運行之前上下文視窗的填滿程度。請參閱設定自動壓縮視窗以了解接受的值和覆蓋。 - 在任務之間清除:切換到不相關的工作時運行
/clear。舊對話會擠出您接下來需要的文件,並在每條消息上花費令牌。 - 委託大型讀取:將研究發送給子代理,以便文件內容保留在其上下文視窗中,而不是您的。
如果您需要更大的視窗而不是更小的對話,Fable 模型、Sonnet 5 及更高版本、Haiku 5.5、Opus 4.6 及更高版本以及 Sonnet 4.6 支援 100 萬 token 上下文視窗。請參閱擴展上下文以了解按方案的可用性以及如何選擇 [1m] 模型變體。壓縮在更大的限制下以相同方式運作。
自動壓縮運行的位置取決於您的模型和設定。請參閱預設自動壓縮閾值以了解每個模型的邊界,以及為閘道或自訂模型 ID 更正視窗,如果 Claude Code 為您的模型 ID(例如 LLM 閘道別名)假設了錯誤的視窗。
檢查您自己的會話
該可視化使用代表性數字。要在任何時刻查看您的實際上下文使用情況,請運行 /context 以獲取按類別的實時分解和優化建議,包括加載了哪些 CLAUDE.md 和自動記憶文件。運行 /memory 以開啟和編輯這些文件。
相關資源
有關時間線中顯示的功能的更深入覆蓋,請參閱這些頁面: