examhub .cc 用最有效率的方法,考取最有價值的認證
Vol. I
本篇導覽 約 31 分鐘

Session 狀態、續跑與分支

6,100 字 · 約 31 分鐘閱讀

Claude Code session state 是 CCA-F 考試 Domain 1.7「管理 Claude Code session state、resumption 與 forking」這道任務說明的隱形骨幹。Domain 1.7 坐落於 Domain 1(Agentic Architecture & Orchestration,佔比 27%)之中,而社群通過考試的報告一再顯示,每次考試平均有兩到三道情境題,正是建立在「resumption、forking 與全新 session 之間細微差異」之上的。若你誤解 Claude Code session state 的持久化、重放或分支方式,後續的情境也會跟著偏差——因為每個 coordinator-subagent 設計、每次 CI/CD 重跑、每個跨天的功能交付,其底層都是 Claude Code session state 的語義。

這份學習筆記完整走過架構師等級考生需要掌握的整個 Claude Code session state 面向:--resume <session-name>fork_session 的差異、Claude Code session state 在每輪之間究竟保存了什麼、程式碼修改後 stale tool results 如何侵蝕一個已 resume 的 Claude Code session state、何時 structured summary 加新 Claude Code session state 勝過單純 resumption、fork 在 Claude Code session state 之上開啟的平行探索模式,以及 /compact/memory 如何與 Claude Code session state 生命週期互動。Code Generation with Claude Code 與 Developer Productivity with Claude 這兩個情境群都大量依賴 Claude Code session state,預期兩個群組都會有題目深入探查這個面向。文末的「常見考試陷阱」章節與練習錨點,將所有理論直接轉譯為 CCA-F 考試實際測驗的題目形態。

什麼是 Claude Code Session State?範圍與生命週期

Claude Code session state 是你與 Claude Code 之間進行中對話的耐久、可序列化表示。一份 Claude Code session state 包含每一輪使用者訊息、每一輪助理訊息、Claude 發出的每個工具呼叫、你的環境回傳的每個工具結果、任何觸發過的 hook,以及將 Claude Code session state 綁定到工作目錄與可用 MCP 伺服器集合的元資料。正是 Claude Code session state 讓你能在晚上六點關掉終端機,隔天早上九點重新開啟,而不會失去三小時精心建立的工作脈絡。

Claude Code session state 與 context window 是不同的東西。Context window 是 Claude 在單次推論呼叫中實際看到的工作記憶切片;Claude Code session state 是完整的對話歷史記錄,context window 只是其中一個視窗檢視。當對話變長,context window 會進行壓縮(compaction)——但磁碟上的 Claude Code session state 仍保有每一輪的完整記錄。

Claude Code session state 是單一 Claude Code session 的持久化對話記錄:每條使用者訊息、每條助理訊息、每個工具呼叫與工具結果,加上 session 的工作目錄、session 名稱,以及附加的 MCP 伺服器設定。Claude Code session state 由 Claude Code 自動寫入磁碟,使對話可以跨越終端機重啟與跨日暫停並恢復。Claude Code session state 與即時的 context window 不同;context window 是 Claude Code session state 的壓縮視圖。 Source ↗

為什麼 Claude Code Session State 在 CCA-F 上如此重要

CCA-F 考試從六個情境群中抽取 Code Generation with Claude Code 和 Developer Productivity with Claude 的題目。兩個情境群都圍繞著跨週的功能交付、CI/CD 重跑、增量重構,以及 Claude Code session state 橫跨多個終端機 session、多個分支、多台機器的多 agent orchestration。考試測驗你能否:

  • 在正確的 Claude Code session state 上執行 resume,而非開啟一個已受污染的新 session。
  • 在需要獨立探索兩個平行方向時,對 Claude Code session state 執行 fork_session
  • 辨識一個 Claude Code session state 何時已變得 stale,必須改用 structured summary 加全新 Claude Code session state 取代。
  • 區分 Claude Code session state、CLAUDE.md 內容,以及 context window 三者的不同。

任何一點搞錯,Domain 1.7 的干擾選項就會乘虛而入。

Claude Code Session State 的生命週期

每個 Claude Code session state 都會經歷一個可預測的生命週期:

  1. 建立(Creation) — 當你在某個目錄啟動 claude,或在 Agent SDK 中開始新對話時,一個新的 Claude Code session state 就此誕生。除非你明確指定,否則會自動產生一個名稱。
  2. 成長(Growth) — 使用者輪次與助理輪次(含嵌入的工具呼叫和工具結果)持續附加到 Claude Code session state 的對話記錄中。
  3. 壓縮(Compaction) — 當 Claude Code session state 的對話記錄接近 context window 上限時,/compact 或自動壓縮會產生一份濃縮摘要,取代較舊的輪次。
  4. 持久化(Persistence)Claude Code session state 持續寫入磁碟,以 session 名稱和工作目錄為索引。
  5. Resumption--resume <session-name>(或 Agent SDK 的等效方式)可在之後的某天、某個終端機或某台機器上重新載入 Claude Code session state
  6. Forkingfork_session 從一個共用的基準 Claude Code session state 建立一個分歧的分支,父 Claude Code session state 保持原封不動。
  7. 退役(Retirement)Claude Code session state 記錄可以保持休眠,或明確放棄;Claude Code 不會自動刪除磁碟上的 Claude Code session state,因此記錄可能持續累積。

--resume 旗標:它做了什麼,以及它不做什麼

--resume <session-name> 旗標是從命令列重新進入特定先前 Claude Code session state 的主要方式。它將對話記錄重新載入 Claude 的 context,讓你可以繼續對話,彷彿從未離開過。

--resume <session-name> 是 Claude Code CLI 的旗標,可依名稱重新載入特定的持久化 Claude Code session state,並在當前終端機中繼續對話。此旗標會將完整的 Claude Code session state 對話記錄——使用者訊息、助理訊息、工具呼叫和工具結果——全部重放回 Claude 的 context,若歷史記錄超過 context window 則會進行壓縮。它在原地繼續現有的 Claude Code session state;不會分支或複製。 Source ↗

繼續特定的先前對話

--resume 是精確的。你傳入 session 名稱,Claude Code 就載入那個確切的 Claude Code session state——不是最近的那個,不是相似的那個,而是那個被命名的那個。若你平常同時進行三個功能的開發,claude --resume feature-auth-rewriteclaude --resume feature-billing-migration 分別給你兩個獨立 Claude Code session state 的延續,互不污染。

此旗標的作用範圍受限於 Claude Code session state 建立時的工作目錄。在不同目錄中 resume 一個 Claude Code session state 可能直接失敗,或在 Claude 嘗試讀取已移動的檔案時產生路徑不符的錯誤。設計多 repo 工作流程的架構師,應將 Claude Code session state 的建立嚴格綁定在 repo 根目錄,以確保 resume 合約能夠成立。

考試為何如此重視 --resume

CCA-F 的 Code Generation 和 Developer Productivity 情境經常把正確答案藏在類似這樣的問題裡:「一位開發者昨天下午花時間帶著 Claude Code 完成了認證模組的複雜重構。今天早上他開啟新的終端機,想從上次停的地方繼續。他該怎麼做?」正確做法是 claude --resume <session-name>,指向昨天下午的 Claude Code session state。干擾選項通常是:

  • 開啟一個全新的 Claude Code session state 並重新貼上昨天的脈絡。錯——浪費 context 預算,也失去工具結果的完整性。
  • 在新的 Claude Code session state 中使用 /compact。錯——/compact 作用於當前 Claude Code session state 的對話記錄;一個全新的 Claude Code session state 根本還沒有任何對話記錄可以壓縮。
  • 透過 fork_session 從昨天的 Claude Code session state 分支出來。錯——fork 建立的是分支,但開發者想要的是繼續現有 Claude Code session state 的主線,而不是從它分歧。

考試獎勵能從 Claude Code session state 語義的基本原理排除每個干擾選項的考生。

--resume 繼續特定的已命名 Claude Code session state;它是唯一能在終端機重啟後完整保留該 Claude Code session state 的原語。 當情境描述開發者「從上次停的地方繼續」——同一個分支、同一個功能、同一個思路——答案幾乎總是 --resume <session-name> 指向先前的 Claude Code session state。在環境沒有任何實質改變的情況下,用貼上摘要的方式開啟新 Claude Code session state 嚴格上是劣等的。 Source ↗

fork_session:從共用基準建立獨立分支

--resume 是繼續一個 Claude Code session state,而 fork_session 是分支它。Fork 以當前 Claude Code session state 作為基準,建立一個新的、獨立的 Claude Code session state,從相同的歷史開始,但往後獨立演化。父 Claude Code session state 保持不變;子 Claude Code session state 可以分歧而不污染主線。

fork_session 是 Agent SDK 的原語,透過從現有 Claude Code session state 的特定對話時間點分支,建立一個新的、獨立的 Claude Code session state。子 Claude Code session state 繼承分支點之前的所有輪次,但此後獨立演化;子 Claude Code session state 中的變更不會自動傳播回父 Claude Code session state。Fork 是平行探索模式的原語——從共用的基準 Claude Code session state 執行兩個或多個分歧的方向。 Source ↗

典型的 Fork 情境:從同一份分析跑兩種測試策略

想像一個 Developer Productivity with Claude 情境:一位資深工程師花了一小時帶著 Claude Code 走遍一個大型程式碼庫,討論模組邊界,並請 Claude 摘要現有的測試覆蓋率。這份分析存在名為 codebase-analysisClaude Code session state 中。現在工程師想探索兩種測試策略:

  • Branch A:使用 Hypothesis 的基於屬性的測試(property-based tests),疊加在現有的 pytest 測試套件上。
  • Branch B:使用 pytest-regressions 的快照測試(snapshot tests),取代整合測試。

兩個分支共用同一個基準 Claude Code session state。重新解釋程式碼庫兩次會浪費一小時,也會在兩份 Claude Code session state 記錄之間引入不一致。在全新的 Claude Code session state 中重新開始每個分支會丟棄分析成果。正確的架構決策是從共用基準執行 fork_session,產生兩個獨立的 Claude Code session state 分支:

父 Claude Code session state: codebase-analysis(基準)
├── fork: test-strategy-property-based
└── fork: test-strategy-snapshot

每個 forked Claude Code session state 各自獨立演化。工程師可以並排比較兩個 fork,選出勝者,並在不動到主線 Claude Code session state 的情況下丟棄落敗的那個。

Fork 作為 Context 隔離的原語

Fork 在 Claude Code session state 邊界之間也有 context 隔離的作用。從 coordinator spawn 出來的 subagent,可以 fork coordinator 的 Claude Code session state 到特定時間點,在 forked Claude Code session state 中執行自己的工作,並回傳結果,而不會污染 coordinator 的對話記錄。Agent Teams 文件明確描述了這個模式:coordinator 的 Claude Code session state 保持乾淨,因為 subagent 是在 forked Claude Code session state 上運作,而不是共用的 Claude Code session state

父子獨立性是永久的

一旦 fork,子 Claude Code session state 中的變更永遠不會自動傳播回父 Claude Code session state。如果 property-based-tests 的 fork 發現了一個嚴重的設計缺陷,工程師必須手動將這個洞察帶回父 Claude Code session state 或一個新的 fork。Fork 在 Claude Code session state 記錄之間建立的是獨立性,而不是同步機制。這是一個考試等級的區分:假設「fork 的變更會自動流回父 Claude Code session state」的考生,將會設計出錯誤的 orchestration 系統。

當 CCA-F 情境描述「兩種不同的方向」、「平行探索」或「從共同 Claude Code session state 進行 A/B 比較」時,選 fork_session。當情境描述「繼續昨天的工作」、單一 Claude Code session state 的線性延續時,選 --resume。關鍵字提示是分歧(fork)對比延續(resume)。 Source ↗

Resume vs Fork vs 新 Session:Claude Code Session State 決策樹

這三個原語——resume、fork、new——涵蓋了考試測驗的每一種 Claude Code session state 狀態轉換。一棵決策樹讓任何 Claude Code session state 題目的選擇都變得機械化。

決策樹

  1. 新工作是否與先前 Claude Code session state 走的是完全相同的方向?
    • 是 → --resume <session-name>
    • 否 → 繼續步驟 2。
  2. 新工作是否與先前 Claude Code session state 有大量共用的脈絡,但需要獨立分歧?
    • 是 → 從先前的 Claude Code session state 執行 fork_session
    • 否 → 繼續步驟 3。
  3. 自先前 Claude Code session state 寫入後,環境是否有實質性的改變(檔案修改、相依套件升版、切換分支),使得先前的對話記錄已 stale?
    • 是 → 開啟新的 Claude Code session state,以 structured summary 作為種子。
    • 否 → 繼續步驟 4。
  4. 預設值 — 不帶 summary 開啟新的 Claude Code session state。只有在沒有任何先前的 Claude Code session state 有參考價值時,這才是正確選擇。

決策樹為何重要

CCA-F 考試會提出情境題幹,讓你在 Claude Code session state 上做出的直覺選擇是錯的。一位開發者在大規模 rebase 之後「resume」了三天前的 Claude Code session state——而這個 Claude Code session state 充滿了已不存在的檔案的引用。正確的架構決策不是 resume;而是針對先前 Claude Code session state 的決策產出一份 structured summary,開啟新的 Claude Code session state,並以那份 summary 作為脈絡注入。若不這樣做,舊 Claude Code session state 中的 stale tool results 會在整個新 Claude Code session state 中持續誤導 Claude。

為 Claude Code Session State 取個可被發現的名稱

--resume 需要一個 session 名稱。一個叫做 session-2026-04-23-afternoonClaude Code session state,一週後很難找到。設計全團隊 Claude Code 工作流程的架構師,應該採用命名慣例:feature/auth-rewrite-v2bugfix/billing-rounding-issuerefactor/user-service-split。一致的命名讓 Claude Code session state 的持久化成為整個工程團隊共享的可發現知識庫。

Stale Tool Results:Resume 後的 Claude Code Session State 潛在殺手

Claude Code session state resumption 最高嚴重度的失敗模式就是 stale tool result。當 Claude 使用 Read 工具讀取一個檔案時,工具結果——那個時間點的檔案內容——會永遠嵌入 Claude Code session state 的對話記錄中。隔天你 resume 這個 Claude Code session state 時,那個工具結果依然在那裡。但磁碟上的檔案可能自上次 Claude Code session state 寫入後已經改變了。

Stale tool resultsClaude Code session state 中已持久化的工具呼叫回傳值,這些值已不再反映底層資源的當前狀態。常見原因:Claude Code session state 寫入之間的檔案編輯、相依套件升版、git rebase、切換分支、資料庫遷移,或執行改變建置輸出的測試。Resume 一個 Claude Code session state 時,Claude 會將這些 stale results 當作權威的脈絡重新讀入,並可能根據過時的假設做出決策,產出錯誤或不一致的程式碼。Stale tool results 是 Claude Code session state 的缺陷,而不是 context window 的缺陷。 Source ↗

Stale Tool Results 如何侵蝕 Claude Code Session State

情境:昨天你請 Claude Code 讀取 src/auth/session.py。Read 工具回傳了檔案內容,這份內容被釘入 Claude Code session state 中。隔夜,你(或同事,或 rebase)編輯了那個檔案——加了一個新函式、移除了一個參數、重構了一個輔助函式。今天早上你 --resume 這個 **Claude Code session state**,並請 Claude 加上一個新的測試案例。Claude 查看 **Claude Code session state** 內部記錄的 src/auth/session.py`,產出了:

  • 引用一個已不存在的輔助函式的程式碼。
  • 預期一個已被移除的參數。
  • 完全遺漏了新加入的函式。

產出的程式碼是錯的。Claude 並沒有幻覺——Claude 讀的是 Claude Code session state,而 Claude Code session state 包含的是昨天真實的 Read 結果。工具結果已 stale;Claude Code session state 已受損。

告知 Agent 有哪些檔案已變更

在程式碼修改後 resume 一個 Claude Code session state 時,你必須明確告知 agent 哪些東西改變了。刷新 Claude Code session state 的幾種選項:

  • 重新讀取受影響的檔案 — 最簡單的修法。請 Claude 對已變更的檔案重新執行 Read。新的 Read 結果會在 context 中取代 stale 的那個(儘管 stale 的版本仍存在於 Claude Code session state 的對話記錄中)。
  • 執行 git diff 或同等指令 — 給 Claude 一個顯示確切變更的工具結果,讓它能在 resumed Claude Code session state 中對照內部記錄與當前的檔案系統。
  • 提供摘要說明 — 對於大型 rebase,一段「我 rebase 到 main 上並解決了 X、Y、Z 的衝突」的文字說明,已足夠讓 Claude 在 resumed Claude Code session state 中重新定向。
  • 放棄該 Claude Code session state — 若改動過多,resume 已是徒勞。以 structured summary 加新的 Claude Code session state 重新開始。

重大變更後 Resume 通常是錯的

Agent SDK 文件明確說明:resume 一個 Claude Code session state 會保留對話記錄的完整度,但不會重新驗證它是否仍符合當前的環境狀態。在沒有變更偵測步驟的情況下,在 Claude Code session state 上圍繞 --resume 設計自動化的架構師,終將交出有缺陷的 pipeline。考試會直接測這個——它會呈現一個有數小時時間差、並且提到 rebase 或升版的情境,而正確答案會是「以 structured summary 開啟新的 Claude Code session state」,而不是「resume 舊的 Claude Code session state」。

在重大程式碼變更後 resume Claude Code session state,是 CCA-F 最常見的陷阱。

CCA-F 考試會呈現類似這樣的情境:「一位開發者 resume 了昨天的 Claude Code session state。隔夜,另一位團隊成員合併了一個 PR,重構了該 session 先前讀取過的三個檔案。Claude 現在產出了引用已不存在的函式的程式碼。」

干擾選項通常包括:

  • 「使用 /compact 縮短 Claude Code session state 的 context。」錯——compaction 保留 Claude Code session state 中的 stale 資訊,只是縮短了它。
  • 「用不同的 session 名稱重新執行 --resume。」錯——問題出在那個命名的 Claude Code session state 本身,不在呼叫方式。
  • 「告訴 Claude 忽略 Claude Code session state 先前的 context。」錯——Claude 無法可靠地忽略對話記錄;Claude Code session state 的對話記錄就是它的事實基礎。

正確答案是以 structured summary 開啟新的 Claude Code session state,摘要已完成的決策與程式碼當前狀態,並讓 Claude 在那個新的 Claude Code session state 中重新讀取受影響檔案的當前狀態。Stale tool results 是 Claude Code session state 的缺陷,而不是 context window 的缺陷。 Source ↗

Structured Summary:何時新的 Claude Code Session State 勝過 Resume

Structured summary 是架構師從 stale Claude Code session state 脫身的安全出口。當一個 Claude Code session state 已累積數小時的歷史,但環境已大幅變動,正確做法是產出一份簡潔的結構化摘要,開啟新的 Claude Code session state,並以那份摘要作為種子。

Structured Summary 交接包含什麼

一份用於程式碼 Claude Code session state 交接的良好結構化摘要,通常包含:

  • 目標 — 一到兩句話說明先前 Claude Code session state 試圖達成什麼。
  • 已做的決策 — 先前 Claude Code session state 中採用的架構選擇、模式和函式庫。
  • 程式碼當前狀態 — 先前 Claude Code session state 中修改了哪些檔案、如何修改的。
  • 未解決的問題 — 先前 Claude Code session state 標記的未處理模糊點。
  • 後續步驟 — 新的 Claude Code session state 應該先做的具體行動。

一份好的摘要大約是 200–600 個 token。過於龐雜的摘要違背了開啟新 Claude Code session state 的初衷——若你需要 5000 個 token 才能摘要,那不是在摘要,而是在重新貼上。

/compact 指令及其對 Claude Code Session State 的限制

/compact 是 Claude Code 內建的斜線指令,會請 Claude 壓縮自身的 Claude Code session state 對話記錄。它將較舊的輪次替換為 Claude 產生的摘要,為同一個 Claude Code session state 的 context window 釋放空間。/compact 與跨 session 交接之間的主要差異:

  • /compact 在原地操作當前的 Claude Code session state 對話記錄。那個 Claude Code session state 中的原始記錄被摘要取代。
  • /compact 無法跨越 Claude Code session state 邊界——它不是「把這份摘要複製到新的 Claude Code session state」的原語。
  • /compact 最適合作為預防性維護,在 Claude Code session state 接近 context 上限時使用,而非在 Claude Code session state 已 stale 後的緊急修復手段。

/memory 指令與長期知識

/memory/compactClaude Code session state 本身都不同。/compact 縮短當前 Claude Code session state 的對話記錄;/memory 則呈現為每個新 Claude Code session state 提供種子的 CLAUDE.md 記憶檔案。/memory 關乎跨 session 的持久指令;/compact 關乎同一 Claude Code session state 內的空間管理。把這兩個原語搞混的架構師,會對 Claude Code session state 建立出錯誤的心智模型。考試獎勵能清楚區分 /memory/compactClaude Code session state 持久化的考生。

Structured summary handoff 是將一個已完成或已受損的 Claude Code session state 萃取成一份簡潔的結構化文字摘要(目標、決策、當前狀態、後續步驟),並以那份摘要作為第一輪使用者訊息,為全新的 Claude Code session state 提供種子的做法。這個模式是當先前 Claude Code session state 累積了 stale tool results、環境有實質改變,或 coordinator 要將工作交接給有隔離 Claude Code session state 的 subagent 時,推薦的恢復路徑。 Source ↗

何時「新 Session 加 Summary」勝過 Resume

考試測驗五個場景,在這些場景中,新的 Claude Code session state 加 structured summary 都勝過對舊 Claude Code session state 執行 --resume

  • 程式碼重大變更(合併、rebase、重構)發生在 Claude Code session state 寫入之間。
  • 相依套件升版,改變了 Claude 在先前 Claude Code session state 中讀取過的 API。
  • 切換分支,使工作目錄現在呈現與 Claude Code session state 對話記錄所反映的不同檔案。
  • Token 過於龐大的 Claude Code session state,即使 /compact 後仍接近 context 上限。
  • Subagent 交接,subagent 需要一個隔離的 Claude Code session state,而非 coordinator 的完整歷史。

如果情境提到上述任何一個觸發條件,答案就是 structured summary 加新的 Claude Code session state——不是 resume,不是 fork。

平行探索模式:Fork Claude Code Session State 進行 A/B 比較

Fork 在 Claude Code session state 之上開啟了一個高價值的架構模式:平行探索。工程師在一個 Claude Code session state 中建立共用分析,fork 成兩個或多個分支,各自跑到完成,然後比較 forked Claude Code session state 記錄之間的結果。

從共用程式碼庫分析跑兩種測試策略

典型的考試情境:「一位資深工程師在單一 Claude Code session state 中花了一小時分析一個舊版程式碼庫。工程師希望評估兩種測試策略,但不想重跑分析。最有效率的方法是什麼?」

正確答案:從共用分析基準 fork 兩次 Claude Code session state,在各自 forked Claude Code session state 中執行每種測試策略,比較結果。干擾選項包括:

  • 在同一個 Claude Code session state 中依序執行兩種策略。錯——第一種策略的程式碼會污染第二種策略的 Claude Code session state
  • 開啟兩份全新的 Claude Code session state 記錄並重新貼上分析。錯——浪費一小時的 context 建構過程,並引入摘要誤差的風險。
  • 使用 subagent 而不 fork Claude Code session state。錯——subagent 可以解決隔離問題,但引入了 orchestration 的額外負擔;fork Claude Code session state 是更簡單的原語。

從共用需求跑三種 API 設計選項

另一個常見形態:「一個產品團隊希望 Claude 從共用的需求 Claude Code session state 中產出三個候選的 API 設計。哪種方式能最小化 context 重建成本?」

將需求分析的 Claude Code session state 三向 fork,每個候選設計一個。比較三份 forked Claude Code session state 記錄,選出勝者。

遷移路徑探索

基礎設施情境:「一位 SRE 需要評估從 PostgreSQL 遷移到兩種不同資料庫的方案。基準分析存在 Claude Code session state 中。該用什麼模式?」

Fork 基準的 PostgreSQL 分析 Claude Code session state,每個候選目標一個 fork。每個 forked Claude Code session state 各自獨立探索遷移機制。

這個模式在涉及 Claude Code session state 的每個 Code Generation 和 Developer Productivity 情境中反覆出現。將它記成反射動作。

白話說明

Claude Code session state 的抽象機制,一旦錨定在熟悉的生活情境上,就會變得直觀。以下三個類比涵蓋了 Claude Code session state 行為的完整面貌。

類比一:總鋪師的辦桌帳本與備料清單

想像一位承辦喜宴的總鋪師。備料帳本就是你的 Claude Code session state——完整的備料庫存、半成品、貼在牆上的備忘便條,以及開著的菜單本,上面滿是臨場批注。工作台就是 context window:帳本(Claude Code session state)中的一部分備料在任何時刻都擺在手邊。

週四傍晚收工,週五早上回來繼續(對 Claude Code session state 執行 --resume)——你從上次停的地方繼續。滷汁還在鍋裡,備料還在檯面上,批注過的菜單還在眼前。在原地繼續 Claude Code session state 是有效率的,因為一夜之間什麼實質的東西都沒有改變。

現在你想測試同一道菜的兩種變化:一種用紅糟,一種用豆腐乳。你不需要清空備料台兩次;你 fork 那份菜單。你影印開著的菜單本,貼到兩個不同的燉鍋上,從共用的起點 Claude Code session state 分歧。兩道菜用同樣的三層肉和同樣的辛香料;只有醬底不同。Fork 讓你不需要重複一小時的備料,就能評估兩條路徑。

現在想像一夜之間,幫手重新整理了備料庫。罐子移位了,標籤換了,有一樣食材被用掉了。若你盲目地繼續按舊菜單的批注去找(「鹽在第二層架子右邊」),你會找不到——這就是 Claude Code session state 中的 stale tool results。正確做法是暫停,重新清點備料,並寫一份一段話的structured summary(「我們在用這塊肉、這款紅糟、這批蔬菜」)交給自己,作為新一輪辦桌 Claude Code session state 的開場指令。

類比二:Git 分支與工作目錄

Claude Code session state 可以乾淨地對應到大多數 CCA-F 考生已熟悉的 git 心智模型。

  • Claude Code session state 的對話記錄就是一個分支的 commit 歷史。
  • --resume <session-name> 就是 git checkout <branch>——你重新進入那個 Claude Code session state 的分支,繼續線性地加 commit。
  • fork_session 就是 git checkout -b new-branch <base-ref>——你從另一個分支歷史的特定時間點建立一個新的 Claude Code session state 分支,往後獨立演化。
  • Stale tool results 就像一個從未 git pull 的工作目錄——你的本地視圖(Claude Code session state 內部)落後於現實,建立在那個視圖上的行動將會衝突。
  • Structured summary 加新 Claude Code session state 就像把一個長期分支歸檔、寫一份簡潔的 changelog,然後從 main 開出一個新分支,並把那份 changelog 固定在頂端。
  • /compact 就像把許多 commit squash 成一個摘要 commit——它保留了 Claude Code session state 的精華,但失去了細粒度的歷史。
  • /memory 就像 repo 共用的 README——每個新的 Claude Code session state 都以同一份 README 開始;它不是 Claude Code session state 專屬的。

考試中途若你回想起這個類比,正確的 Claude Code session state 原語通常就會顯而易見。

類比三:開卷考的兩份不同考題

想像一位學生正在進行開卷考。學生花了三小時建立一本關於特定主題的習題筆記本——就說是複變分析好了。那本筆記本就是 Claude Code session state。監考官現在發下兩份需要相同背景理論的不同考題。學生希望從同一個 Claude Code session state 出發作答。

選項 1(錯): 先作答考題 A,再用同一本筆記本作答考題 B。Claude Code session state 現在混入了 A 的草稿;B 的答案更難辨識,可能也被 A 的選擇所污染。

選項 2(錯): 丟掉筆記本,重新開始兩次。浪費了三小時在 Claude Code session state 中建立的理論工作。

選項 3(對——fork): 把筆記本影印兩份。一份標上「考題 A 草稿」,另一份標上「考題 B 草稿」。各自在自己的影印本上作答。比較結果,選出勝者,歸檔落敗的那份。這就是 fork_session 用一張圖說清楚 Claude Code session state 的樣子。

現在想像考試中場休息時,監考官宣布學生一直使用的某個定理有更新——定理陳述新增了一個前提條件。學生的筆記本裡釘著舊的定理陳述。繼續使用筆記本 Claude Code session state 而不重新讀取新定理,將導致錯誤的答案。正確做法是寫下一段話摘要說明上半場完成了什麼,把它交給一本新的筆記本(新的 Claude Code session state),並從當前的定理重新推導。Stale tool resultsstructured summary handoff,一張圖說清楚。

Context Window vs Claude Code Session State:不要混淆兩者

一個在 CCA-F 上意外常見的錯誤,是將 context window 與 Claude Code session state 混為一談。兩者相關但不相同。

Context Window

Context window 是 Claude 在單次推論呼叫中看到的即時、記憶體中的對話表示。它有硬性的 token 上限(依模型而定;Claude 4 系列支援非常大的視窗,但仍是有限的)。Context window 是短暫的——每一輪都從底層的 Claude Code session state 重新建構。

Claude Code Session State

Claude Code session state 是完整對話的持久化、磁碟記錄。Claude Code session state 的大小在實際上沒有硬性上限;隨著輪次累積,它可以無限成長。Claude Code session state 是耐久的——它可以在程序結束、終端機關閉和機器重開機後存活。

兩者如何互動

每次推論呼叫都從把 Claude Code session state 載入 context window 開始。若完整的 Claude Code session state 對話記錄能放入 context window,就全部載入。若放不進去,壓縮就介入:Claude Code session state 中較舊的輪次在餵給 Claude 之前,先被替換成摘要。即使 context window 只看到壓縮後的視圖,完整的 Claude Code session state 仍保留在磁碟上。

考試陷阱

CCA-F 的題目會描述一位開發者在長時間的 Claude Code session state 之後「耗盡了 context」,並問該怎麼做。正確答案涉及 /compact(縮短當前的 Claude Code session state 對話記錄)、structured summary 加新的 Claude Code session state(完整重置但保留洞察),或 fork(為了隔離而分支 Claude Code session state)。錯誤答案會建議 --resume 本身能解決 context 問題——resume 只是重新載入了原本就已溢出的同一份 Claude Code session state 對話記錄。

/compact/memory:相鄰的 Claude Code Session State 原語

兩個斜線指令經常作為 Claude Code session state 題目的干擾選項出現。你需要精確地知道每個指令做了什麼。

/compact

/compact 在原地壓縮當前的 Claude Code session state 對話記錄,以 Claude 產生的摘要取代較舊的輪次。Claude Code session state 的名稱和身份被保留;只有對話記錄的主體改變了。當一個 Claude Code session state 仍有使用價值但正在接近 context 上限時,使用 /compact

/memory

/memory 呈現並編輯 CLAUDE.md 記憶層次結構:全域、專案、目錄。記憶檔案會自動作為種子注入每個新的 Claude Code session state;它們不是 Claude Code session state 專屬的。/memory 是用於跨 session 持久指令的正確原語(「永遠使用 pytest」、「未經明確許可不要編輯 legacy/*.py」);它不會持久化或還原任何特定的 Claude Code session state

關鍵字消歧義

  • 「當前的 Claude Code session state 越來越長,想保留同樣的 context 但讓它能放進去」→ /compact
  • 「每個新的 Claude Code session state 都應該知道我們的程式碼規範」→ /memory,而非 /compact
  • 「把昨天的 Claude Code session state 帶回來」→ --resume,而非 /compact,也非 /memory
  • 「從今天共用的 Claude Code session state 分出兩種方向」→ fork_session,而非 /compact,也非 /memory

考試命題者習慣在單一題目的選項中混入這四個 Claude Code session state 原語。沒有練習消歧義的考生很容易失分。

四個 Claude Code session state 原語,每個一句話:

  • --resume <session-name> — 重新載入特定的已命名 Claude Code session state,在原地繼續它。
  • fork_session — 在對話記錄的某個時間點分支一個 Claude Code session state;父與子各自獨立演化。
  • /compact — 透過 Claude 產生的摘要,在原地縮短當前的 Claude Code session state 對話記錄。
  • /memory — 檢視或編輯 CLAUDE.md 記憶檔案,這些檔案為每個新的 Claude Code session state 提供種子(不專屬於任何一個 Claude Code session state)。

干擾線索:若某個答案聲稱 /compact 能跨越 Claude Code session state 邊界,那是錯的。若某個答案聲稱 fork_session 會改變父 Claude Code session state,那是錯的。若某個答案聲稱 --resume 建立了新的 Claude Code session state,那是錯的。 Source ↗

常見考試陷阱:CCA-F 上的 Claude Code Session State 陷阱

CCA-F 積極利用五種與 Claude Code session state 相關的反覆出現陷阱模式。

陷阱一:Rebase 後還在 Resume

答案選項讓 --resume 和「新的 Claude Code session state 加 structured summary」對立。情境會提到 rebase、merge 或重大的隔夜變更。預設選舊 Claude Code session state--resume 的考生,會掉入 stale tool result 的失敗。正確答案幾乎總是新的 Claude Code session state 加 structured summary。

陷阱二:該 Resume 卻選了 Fork

一位開發者想要「繼續」一個 Claude Code session state——工作是線性的,沒有分支。干擾選項建議 fork_session。Fork 在這裡是錯的,因為它建立了一個兄弟 Claude Code session state,而不是延續。若工程師只希望一個 Claude Code session state 的分支繼續往前走,--resume 才是正確的。

陷阱三:/compact 被當成跨 Session 的原語

一個答案選項聲稱 /compact 可以把摘要從一個 Claude Code session state 複製到新的 Claude Code session state。這是錯的——/compact 只作用於當前的 Claude Code session state 對話記錄。跨 Claude Code session state 記錄的摘要交接,需要手動把摘要複製到新 Claude Code session state 的開場訊息中。

陷阱四:假設 Subagent 繼承完整的 Claude Code Session State

CCA-F Domain 1.3 明確測驗這個;它會滲入 1.7。Subagent 不會自動接收 coordinator 的 Claude Code session state。若情境描述 coordinator spawn 出一個 subagent,並期望 subagent「知道我們剛才討論的內容」,正確的架構決策是在 coordinator Claude Code session state 的 spawn 時間點執行 fork_session,或透過 subagent 在自己的全新 Claude Code session state 中的開場指令明確傳遞 context。

陷阱五:把 /memory 與 Claude Code Session State 持久化混淆

一個答案選項建議使用 /memory「儲存當前的 Claude Code session state 供以後使用」。錯——/memory 編輯的是 CLAUDE.md 檔案,這些檔案是 Claude Code session state 種子指令,而非 Claude Code session state 儲存空間。Claude Code session state 由 Claude Code 自動持久化;沒有任何手動儲存指令需要對 Claude Code session state 執行。

「什麼情況都 resume」是 CCA-F Domain 1.7 中關於 Claude Code session state 最高頻率的錯誤。

情境會描述一位開發者在重大環境變更後回到工作——rebase、相依套件升版、切換分支、合併的 PR。答案選項中會有對舊 Claude Code session state 執行 --resume 的選項,考生會選它,因為 resume 舊的 Claude Code session state 感覺上很有效率。

考試獎勵能認識到:當環境已改變時,Claude Code session state 中的 stale tool results 使 resume 主動有害的考生。正確做法是:

  1. 針對先前 Claude Code session state 的決策與程式碼當前狀態,產出一份 structured summary。
  2. 開啟新的 Claude Code session state
  3. 以那份 summary 作為開場的使用者訊息,為新的 Claude Code session state 提供種子。
  4. 讓 Claude 在新的 Claude Code session state 中重新讀取受影響檔案的當前狀態。

這條路徑保留了洞察,同時丟棄了污染舊 Claude Code session state 的 stale 工具觀察。--resume 保留了所有東西,包括 stale 的觀察——而那正是 Claude Code session state resumption 的失敗模式。 Source ↗

練習錨點:Code Generation 與 Developer Productivity 情境形態

Claude Code session state 相關的 CCA-F 練習題,集中在六種形態,來自 Code Generation with Claude Code 和 Developer Productivity with Claude 兩個情境群。

形態 A:隔天繼續

「一位開發者昨天的 Claude Code session state 在功能做到一半時結束。隔夜什麼都沒有改變。該用什麼指令?」正確答案:claude --resume <session-name> 指向先前的 Claude Code session state。干擾選項:新的 Claude Code session state、fork、/compact

形態 B:Rebase 後的 Resumption

「一位開發者 resume 了一個 Claude Code session state;隔夜另一位工程師合併了一個觸及該 Claude Code session state 讀取過三個檔案的 PR。Claude 現在產出錯誤的程式碼。」正確答案:放棄舊的 Claude Code session state,產出 structured summary,開啟新的 Claude Code session state,在新的 Claude Code session state 中重新讀取檔案。干擾選項:/compact、換一個 session 名稱、「忽略先前的 context」。

形態 C:平行 A/B 探索

「一位工程師希望從一份共用的程式碼庫分析 Claude Code session state 評估兩種測試策略,且不想重建 context。」正確答案:從共用基準 Claude Code session state 執行兩次 fork_session。干擾選項:在同一個 Claude Code session state 中依序執行、兩份全新的 Claude Code session state 記錄、spawn subagent。

形態 D:Coordinator-Subagent 交接

「一個 coordinator Claude Code session state 花了大量 context 建立計畫;它現在要 spawn 一個 subagent 執行其中一步。Subagent 必須知道計畫,但不能污染 coordinator 的 Claude Code session state。」正確答案:在 spawn 時間點 fork coordinator 的 Claude Code session state,或以 structured summary 作為 subagent 在全新 Claude Code session state 中的開場指令。干擾選項:假設 subagent 自動繼承 coordinator 的 Claude Code session state、使用 /memory

形態 E:Context 上限恢復

「一個 Claude Code session state 累積了數小時的輪次,正在接近 context window 上限。開發者想要繼續同樣的線性工作。」正確答案:/compact 在原地縮短當前的 Claude Code session state 對話記錄。干擾選項:開啟新的 Claude Code session state、fork、/memory

形態 F:跨團隊知識交接

「一位開發者希望把一個複雜的功能交接給同事,同事明天會在自己的機器和自己的 Claude Code session state 上繼續工作。」正確答案:以 structured summary 作為開場指令,在同事的新 Claude Code session state 中提供種子。干擾選項:直接分享 Claude Code session state 檔案(脆弱、路徑相依)、/memory(是指令,不是 Claude Code session state)。

記住這六種形態,就能涵蓋考試在 Claude Code session state 上出題的絕大多數 Domain 1.7 題目。

區分說明:CCA-F 不考哪些 Claude Code Session State 內容

CCA-F 是基礎認證。有幾個相鄰的主題明確超出範圍,不應該占用 Claude Code session state 的複習時間。

CCA-F 範圍之外

  • Fine-tuning、RLHF 和模型權重操作。
  • Vision 和 computer-use API 的具體細節。
  • Streaming API 的實作細節。
  • Rate limitingClaude Code session state 上的 token 計算演算法。
  • 雲端供應商設定 — Bedrock、Azure AI、GCP Vertex 與 Claude Code session state 的整合全部超出範圍。
  • Prompt caching 的內部機制。

若你發現自己在 Claude Code session state 的脈絡下研究上述任何一項,請重新導向。考試測驗的是 Claude Code session state 原語的架構層級行為,而不是底層的儲存實作或 Claude Code session state 資料的雲端路由。

CCA-F 確實期望你掌握的

  • 認識 --resumefork_session/compact/memory 是針對 Claude Code session state 具有不同範圍的獨立原語。
  • 套用 stale tool results 測試,判斷 Claude Code session state 應該 resume 還是以 summary 開啟新 session。
  • 使用 fork_session 設計 Claude Code session state 的平行探索。
  • 以 structured summary 作為種子注入新的 Claude Code session state,完成人與人之間、agent 與 agent 之間的工作交接。
  • 避開「常見考試陷阱」中的五個陷阱模式。

Claude Code Session State 常見問題 (FAQ)

在 CCA-F 考試中,--resumefork_session 有什麼差異?

--resume <session-name> 重新載入特定的持久化 Claude Code session state,並在原地繼續它——同一個 Claude Code session state 名稱、線性延續、沒有分支。fork_session 在一個 Claude Code session state 的對話記錄的某個時間點分支,建立一個新的、獨立的 Claude Code session state;父與子的 Claude Code session state 記錄各自獨立演化,永遠不會自動合併。工作是線性的時候用 resume(「繼續昨天的功能」);工作從共用基準 Claude Code session state 分歧出去的時候用 fork(「從同一份分析嘗試兩種測試策略」)。關鍵字消歧義是延續(resume)對比分歧(fork)。

什麼時候應該開啟新的 Claude Code session state 而不是 resume?

當環境在先前的 Claude Code session state 寫入後有實質性的改變時,就應該開啟新的 Claude Code session state:其他貢獻者編輯了檔案、相依套件被升版、發生了 rebase 或 merge,或 git 分支已切換。在這些情況下,先前 Claude Code session state 的工具結果已 stale——它們把過時的檔案視圖釘在對話記錄中——resume 會導致 Claude 產出引用已不存在的函式、參數或檔案的程式碼。正確的恢復方式是產出決策與當前狀態的 structured summary,開啟新的 Claude Code session state,並以那份 summary 作為開場的使用者訊息提供種子。

什麼是 stale tool results,它們為何對 Claude Code session state 如此重要?

Stale tool resultsClaude Code session state 中已持久化的工具呼叫回傳值,這些值已不再符合底層資源的當前狀態。昨天 Claude Code 對 src/auth.py 執行 Read 時,那個時間點的檔案內容被嵌入 Claude Code session state 的對話記錄中。若檔案在隔夜被編輯了,那份嵌入的內容在 Claude Code session state 中就已過時。Resume 那個 Claude Code session state 會把 stale 的內容重放回 Claude 的 context,而 Claude 會把它當作權威資訊——導致程式碼引用了已被移除的函式、遺漏了新函式,或假設了已過時的簽章。CCA-F 考試直接測驗 stale tool results:當情境提到 Claude Code session state 寫入之間發生了 rebase、merge 或相依套件升版時,正確答案會拒絕 resume,改選 structured summary 交接到全新的 Claude Code session state

/compact/memory--resumefork_session 有何不同?

/compact/memoryClaude Code session state 內部的斜線指令;--resumefork_sessionClaude Code session state 邊界的原語。/compact 透過摘要較舊的輪次,在原地縮短當前的 Claude Code session state 對話記錄——適合在 session 進行中釋放 context window 空間,不適合跨越 Claude Code session state 邊界。/memory 檢視並編輯 CLAUDE.md 記憶檔案,這些檔案會自動為每個新的 Claude Code session state 提供持久指令種子——適合跨 session 的規範,不適合保留任何特定的 Claude Code session state 對話記錄。--resume 依名稱重新開啟特定的先前 Claude Code session statefork_sessionClaude Code session state 分支成獨立的子 session。CCA-F 考試習慣在答案選項中混入這四者;請把每個的範圍背下來。

我可以用 fork_session 來建立 subagent 嗎?

可以——fork 是 Claude Code session state 上 coordinator-subagent context 隔離的兩種主要模式之一。當 coordinator 在 spawn 時間點 fork 自己的 Claude Code session state,並把 forked Claude Code session state 交給 subagent 時,subagent 擁有 coordinator 的完整歷史作為共用基準,但可以獨立演化,而不污染父 Claude Code session state。另一種方式是明確的 structured summary 交接,coordinator 寫一份簡潔摘要,subagent 以那份摘要作為開場指令,在全新的 Claude Code session state 中開始。Fork 更精確(Claude Code session state 記錄之間沒有任何東西在摘要中遺失),但較重(完整的對話記錄被複製);summary 交接較輕,但需要 coordinator 正確識別 subagent 需要知道哪些內容。

如何為長期運行的專案命名 Claude Code session state 記錄?

採用讓 resumption 能跨日、跨團隊成員被發現的 Claude Code session state 命名慣例。好的模式:feature/auth-rewrite-v2bugfix/billing-roundingrefactor/user-service-splitexploration/property-based-tests。避免像 session-2026-04-23-afternoon 這樣自動產生的名稱——一週後你需要選出正確的 Claude Code session state 來 resume 時,這類名稱無法對應到意圖。Claude Code session state 名稱是你傳給 --resume <session-name> 的 key,因此請把它們當成團隊 Claude Code session state 慣例中的短期分支名稱一樣對待。

Resume 一個 Claude Code session state 會重置 context window 嗎?

不會。Resume 會把完整的 Claude Code session state 重新載入 context,若那個 Claude Code session state 的對話記錄超過 context window 上限,就會自動或手動觸發壓縮。Resume 不給你全新的 context 預算;它還原的是 Claude Code session state 最後一次持久化時的狀態。若一個 Claude Code session state 在暫停前已快逼近 context 上限,resume 同一個 Claude Code session state 就會重現同樣的限制——有時是立即重現。若是 context 上限的恢復,/compact 可以縮短當前的 Claude Code session state 對話記錄;若要真正獲得全新的 context 預算,就以 structured summary 開啟新的 Claude Code session state

延伸閱讀

Related ExamHub topics: 自主任務執行的 Agentic Loop, Multi-Agent Coordinator-Subagent Patterns, Context Management in Large Codebases, CLAUDE.md Hierarchy and Modular Organization, Plan Mode vs Direct Execution.

官方資料來源