每次冗長的 Claude Code 工作階段都以同樣的方式結束:你失去數小時的進度,然後從頭開始。
解決辦法不是更聰明的模型,而是 Claude Code 團隊內部使用但從未寫過指南的系統。
大多數開發者沒有它,也不知道它的存在。
以下是完整系統 👇
🧠在深入之前,我每天在 Telegram 頻道分享 AI 與 vibe coding 的筆記:https://t.me/zodchixquant

上下文工程的真正意義
Claude 每次工作階段都會讀取數千行程式碼。其中大部分是雜訊,而真正重要的 5% 在第二小時就被淹沒了。
這時 Claude 開始發明函數並修復你從未寫過的錯誤。解決辦法不是更大的模型,而是控制進入工作階段的內容。
以下是 Claude Code 團隊在自己的單一儲存庫中使用的 6 種模式。

模式 1:分層 CLAUDE.md(步驟 1–3)
一個 CLAUDE.md 不夠。Claude Code 團隊運行三個層級,每個層級針對不同的關注點。
步驟 1:根目錄 CLAUDE.md 包含專案全域規則
在專案根目錄放置一個 CLAUDE.md,保持在 100 行以內。它應該回答 Claude 每次提問時會問的四個問題:
1# 專案:[名稱]23## 技術棧4- 執行環境:Node 22、TypeScript 5.55- 框架:Next.js 15、React 196- 資料庫:Postgres 16、Drizzle ORM7- 測試:Vitest、Playwright89## 慣例10- 匯入:僅使用來自 `@/` 的絕對路徑11- 元件:kebab-case 檔案、PascalCase 匯出12- 測試:與檔案同目錄,命名為 `[file].test.ts`13- 提交:採用 Conventional Commits,不加上 co-author 頁尾1415## 不要觸碰16- `infra/terraform/`(由維運團隊管理)17- `migrations/`(自動產生,絕不手動編輯)18- `vendor/`(已提交的依賴套件)1920## 預設行為21- 在宣告任務完成前執行 `npm test`22- 每次編輯後用 `tsc --noEmit` 進行型別檢查23- 儲存時用 Prettier 格式化
步驟 2:子目錄 CLAUDE.md 包含模組專屬上下文
在規則會改變的任何資料夾中新增 CLAUDE.md。當 Claude 在該資料夾工作時,它會讀取最接近的那個檔案,再加上根目錄的規則。
範例:src/auth/CLAUDE.md:
1# 驗證模組23此模組負責工作階段管理與 OAuth 流程。45## 規則6- 絕不記錄令牌,即使經過截斷7- 所有工作階段讀取都透過 `getSession()`,絕不直接操作原始 Cookie8- 新增供應商需要先進行安全審查才能合併910## 優先閱讀的檔案11- `session.ts`:了解合約12- `providers/index.ts`:了解註冊模式
步驟 3:個人 CLAUDE.md 在 ~/.claude/CLAUDE.md
這是你的全域偏好層。存在於任何儲存庫之外,適用於所有地方。
1## 我的偏好2- 在進行多檔案編輯前,先解釋你要做什麼3- 如果你的請求看起來會造成破壞,請提出異議4- 偏好組合勝過繼承5- 我在 macOS 上使用 zsh 工作
這三層會疊加:全域偏好 + 專案規則 + 模組規則。Claude 會在每次提問時讀取所有三層,無需透過你的上下文重新上傳。
模式 2:精準檔案參考(步驟 4–5)
預設的「讓 Claude 自己找出哪些檔案重要」是最慢、最笨的上下文使用方式。
步驟 4: @file 參考搭配自動補全
當你在提示中輸入 @ 時,Claude 會開啟一個模糊檔案選擇器。用它來取代用文字描述檔案。
不好:「看看使用者驗證程式碼和工作階段輔助工具」
好:「看看
@src/auth /session.ts 和
@src/auth /providers/google.ts,修正令牌重新整理」
精準參考只會載入那些檔案。文字描述會迫使 Claude 搜尋、讀取 4–5 個候選檔案,然後有一半時間選錯。
步驟 5:用 /focus 限定整個工作流程的範圍
對於較長的任務,將 Claude 的整個工作階段範圍限定到特定資料夾:
1/focus src/auth src/api/auth-routes
現在所有搜尋、grep 和讀取操作都只在這兩個資料夾內進行。
在聚焦任務上減少 60–80% 的上下文使用量,而且 Claude 不會再「好心」地讀取它不需要的無關檔案。
執行 /focus clear 來重設。
模式 3:壓縮並繼續(步驟 6–8)
長時間的工作階段會達到上下文限制而崩潰。訣竅不是避免長時間工作階段,而是透過受控的壓縮來管理它們。
步驟 6:用 /stats 監控上下文使用量
定期執行 /stats。
當上下文使用量超過 70% 時,你就進入了危險區域。超過 85% 時,Claude 會開始悄悄丟棄早期訊息而不告訴你。
步驟 7:/compact 搭配保留指令
/compact 單獨使用會摘要對話。加上指令,你可以告訴 Claude 哪些內容要逐字保留:
1/compact 保留:目前任務計劃、所有關於驗證重構的決定、步驟 3 中失敗的測試輸出
步驟 8:/resume 用於跨越多天的工作階段
如果任務跨越多天,請在每個工作階段結束時執行 /compact 保留:...,並在開始下一個工作階段時執行:
1claude --resume [工作階段 ID]
或者直接使用 claude --continue 來恢復最近的工作階段。它會從你離開的地方繼續,並保留壓縮後的狀態。
模式 4:先計劃再閱讀(步驟 9–10)
最大的上下文洩漏是 Claude 在理解檔案之前就開始編輯。計劃模式強迫它先閱讀,再寫入。
步驟 9:對每個有風險的任務切換計劃模式
在觸及多個檔案的任務之前,按下 Shift+Tab 進入計劃模式。
在計劃模式下,Claude 只能閱讀。它會解釋它將做什麼,列出所有計劃觸及的檔案,並顯示建議的變更。在你批准之前什麼都不會執行。
節省效果顯著:一次閱讀、一次編輯,而不是閱讀 8 個、編輯錯 3 個、還原、重新閱讀、再次編輯。
步驟 10:透過鉤子為敏感路徑鎖定計劃模式
讓危險區域強制啟用計劃模式。在 .claude/settings.json 中:
1{2 "hooks": {3 "PreToolUse": [4 {5 "matcher": "Edit(src/auth/**)|Edit(migrations/**)",6 "hooks": [7 {8 "type": "command",9 "command": "claude-require-plan-mode"10 }11 ]12 }13 ]14 }15}
任何對 src/auth/*\ 或 migrations/\\* 的編輯嘗試都會觸發計劃模式要求。Claude 無法繞過它。
模式 5:子代理上下文隔離(步驟 11–13)
子代理是保持主上下文最小化的最乾淨方式。每個子代理都在自己的視窗中運行,因此父工作階段永遠不會看到雜訊。
步驟 11:設計子代理時使用最小工具面
將工具限制為工作所需。一個 code-reviewer 不需要 Write 或 Edit。一個 doc-updater 不需要 Bash。工具面越小,浪費在無關文件與工具描述上的上下文就越少。
1---2name: code-reviewer3description: 審查程式碼變更以找出錯誤與安全問題4tools: Read, Grep, Glob5model: sonnet6---
步驟 12:只傳遞代理所需的檔案參考
不要說「審查最近的變更」。要說「審查 @src/auth/session.ts 和 @src/auth/providers/google.ts」。
子代理只會讀取那些檔案,而不是它對「最近」的最佳猜測。
步驟 13:對子代理使用較便宜的模型
根據任務設定每個代理的模型。Sonnet 用於審查和測試任務,Haiku 用於文件更新和 lint,Opus 只用於需要深度推理的架構或安全審查。
如有需要可全域設定:
1export CLAUDE_CODE_SUBAGENT_MODEL="claude-sonnet-4-6"
較便宜的子代理 = 每美元更多子代理呼叫 = 更多隔離 = 更小的主上下文。
30 分鐘的上下文工程入門
10 分鐘: 撰寫一個精簡的根目錄 CLAUDE.md,包含技術棧、慣例、勿觸清單和預設行為。
5 分鐘: 在你最常編輯的 2–3 個模組中新增子目錄 CLAUDE.md。
5 分鐘: 在 ~/.claude/CLAUDE.md 中建立個人 CLAUDE.md,包含你的偏好。
5 分鐘: 在 .claude/skills/ 中為你最常執行的工作流程建立一個技能。
5 分鐘: 將 Shift+Tab 變成肌肉記憶,並以計劃模式開始每個多檔案任務。
完成了!
你的下一次工作階段將為相同的工作量減少 50–70% 的上下文使用。到第五次工作階段時,這些模式會變成反射動作,你將完全不再遇到限制。
上下文不是 Claude 為你管理的東西。而是你設計的東西。
現在你有了這個系統。
感謝閱讀!
我每天在 Telegram 頻道分享 AI、財務與 vibe coding 的筆記:https://t.me/zodchixquant






