探索上下文視窗
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,選取一則訊息,然後選擇 Summarize from here 或 Summarize up to here。請參閱倒轉與摘要,了解每個選項會保留哪些內容,以及如何引導摘要。 - 提早壓縮:執行附帶 token 數量的
/autocompact,例如/autocompact 500k,以設定上下文視窗填滿到何種程度時執行自動壓縮。請參閱設定自動壓縮視窗,了解可接受的值與覆寫方式。 - 在任務之間清除:切換到不相關的工作時執行
/clear。舊的對話會排擠您接下來需要的檔案,而且每則訊息都會耗用 token。 - 委派大量讀取:將研究工作交給 subagent,讓檔案內容保留在它的上下文視窗中,而非您的上下文視窗。
如果您需要更大的視窗而非更精簡的對話,Fable 模型、Sonnet 5 及更新版本、Haiku 5.5、Opus 4.6 及更新版本,以及 Sonnet 4.6 皆支援 100 萬 token 的上下文視窗。請參閱延伸上下文,了解各方案的可用性,以及如何選取 [1m] 模型變體。在較大的上限下,壓縮的運作方式相同。
自動壓縮的執行時機取決於您的模型與設定。請參閱預設自動壓縮閾值,了解各模型的界限;若 Claude Code 對您的模型 ID(例如 LLM 閘道別名)假設了錯誤的視窗,請參閱為閘道或自訂模型 ID 修正視窗。
檢查您自己的會話
該可視化使用代表性數字。要在任何時刻查看您的實際上下文使用情況,請運行 /context 以獲取按類別的實時分解和優化建議,包括加載了哪些 CLAUDE.md 和自動記憶文件。運行 /memory 以開啟和編輯這些文件。
相關資源
有關時間線中顯示的功能的更深入覆蓋,請參閱這些頁面: