你有沒有遇過這種狀況:用 Claude Code 寫到一半,突然發現它開始忘東忘西,code 質量明顯下降,甚至會重複做已經做過的事情?

那不是 Claude 變笨了,是你的 context window 快爆炸了

這篇要聊的就是 Claude Code 最重要但最容易被忽視的東西:context 管理。不懂這個,你再聰明的 AI 助手也會被你用到逐漸失能。

Context Window 是你最寶貴的資源

先講白一點:Claude 的 context window(你可以理解成 AI 能夠「記住」的東西)是有限的。每一次對話、每個你讀的檔案、每個指令的輸出,全部都會佔用 context。

當 context 開始滿的時候,Claude 的表現就會下降。它會開始「健忘」,做錯事情的頻率變高。這不是 bug,這是物理限制。

想像一下你的大腦 RAM,用滿了就會 lag。Claude 也是一樣。

所以context 管理就是你在用 Claude Code 時最重要的事。你可以寫得很完美,但如果 context 一直堆積垃圾,再完美的 code 也救不了。

給 Claude 驗證的方式

這是我看官方文件時最驚訝的一個點:如果你給 Claude 能驗證自己工作的方式,它的表現會暴增

什麼意思?就是不要只叫它「實作一個 email validation function」,而是:

1
2
3
4
5
寫一個 validateEmail function。測試案例:
- user@example.com 應該是 true
- invalid 應該是 false
- user@.com 應該是 false
實作完之後運行這些測試。

或者你在改 UI 的時候,不要就說「讓 dashboard 看起來更好看」,而是:

1
2
[貼一張 screenshot]
按照這個設計改。改完之後也拍個 screenshot,比較原本的有什麼差別,然後修復差異。

有驗證機制,Claude 才能自己抓到自己的錯誤。沒有驗證,你就變成唯一的 feedback loop,每次它出錯都要你來救。真的很吃記憶體吃到爆。

Explore → Plan → Code 的工作流

關鍵是 Plan Mode。你按 Ctrl+G 就能進去。

在 Plan Mode 裡,Claude 可以讀檔案、回答問題,但不會動任何東西。這很重要,因為這樣能夠分離「研究」和「實作」。

一個典型的流程長這樣:

第一步:Explore

1
2
讀 /src/auth 資料夾,了解我們怎麼處理 session 和 login。
也看看我們怎麼管理 environment variables 存密鑰。

第二步:Plan

1
2
我想加 Google OAuth。哪些檔案要改?
session flow 是什麼?給我一份計劃。

然後你可以按 Ctrl+G 直接在編輯器裡改這份計劃。

第三步:Implement

1
2
按照這份計劃實作 OAuth flow。
為 callback handler 寫測試,運行測試套件,修復任何失敗。

第四步:Commit

1
寫一份有意義的 commit 訊息,開一個 PR。

Plan Mode 有點麻煩,但值得。特別是當你在陌生的 codebase 裡,或是改動涉及很多檔案的時候。

但如果任務很明確(比如修個 typo、改個變數名稱),就直接做,不用規劃。

CLAUDE.md 怎麼寫才不會踩坑

CLAUDE.md 是一個特殊檔案,Claude 在每個新的 session 開始時都會讀它。裡面可以放 Bash command、code style、workflow 規則。

首先,跑 /init 讓 Claude 自動分析你的專案產生一份基本的 CLAUDE.md。

然後重點來了:讓它保持簡短

每一行都問自己:「如果我刪了這一行,Claude 會出錯嗎?」如果不會,就砍掉。太長的 CLAUDE.md 反而會讓 Claude 忽視重要的規則。

1
2
3
4
5
6
7
# Code Style
- Use ES modules (import/export), not CommonJS
- Destructure imports when possible

# Workflow
- Run typecheck after making code changes
- Prefer running single tests instead of full suite

這樣就夠了。不要把 API 文件、詳細說明、或自明的東西塞進去。那些東西用 link 就好,或者用 skill 檔案處理。

什麼該放,什麼不該放

✅ 放進去 ❌ 不要放
Claude 猜不到的 Bash command Claude 能從 code 推出的東西
跟業界慣例不同的 code style 標準的語言慣例
測試指令和偏好的 test runner 詳細的 API 文件(用 link)
Repository etiquette 會經常改的資訊
專案特有的建築決策 長篇的解釋或教學
開發環境的奇怪需求 自明的最佳實踐

Context 管理技巧

用 /clear 清空無關的任務

從檔案 A 切到檔案 B,完全不同的任務?直接 /clear。這會重設 context window。

不要讓舊的 context 囤積在那邊,它只會讓 Claude 分心。

使用 /compact 和自動壓縮

當 context 快滿時,Claude 會自動壓縮舊的對話,保留重要的 code 和決策。

你也可以手動 /compact,告訴它要專注什麼:

1
/compact Focus on API changes only

或是用 Esc 兩次,選一個 checkpoint,然後選「Summarize from here」。這樣能局部壓縮一部分對話。

用 /rewind 回到之前的狀態

Claude 會自動在每個動作之前建立 checkpoint。如果它搞砸了,按 Esc 兩次或跑 /rewind,可以回復到任何之前的狀態。

甚至可以跨 session 保存,所以下次用 --continue 回來時,你還能 rewind。

/btw 問快速問題

你想問一個不相干的快速問題,但不想讓它進入 conversation history?用 /btw

1
/btw 這個 API 的參數什麼意思?

答案會在一個 dismissible overlay 裡,不會佔用你的 context。

用 Subagent 進行調查

這是我最喜歡的技巧。當 Claude 要讀很多檔案研究東西時,整個 codebase exploration 會吃掉超多 context。

改成用 subagent:

1
2
Use subagents to investigate how our auth system handles token refresh,
and whether we have any existing OAuth utilities I should reuse.

Subagent 會在自己的 context 裡跑,探索完之後回報給你,你的主 session 保持乾淨。

Session 管理

課程修正要快

發現 Claude 走錯方向?馬上修正。不要等。

Esc 停止它,或用 /rewind 回到之前。如果你已經修正了兩次同一個問題,context 被汙染了,就直接 /clear 重新開始,用更好的 prompt。

用 –continue 和 –resume 繼續上次的工作

1
2
claude --continue    # 接續最後一個 session
claude --resume # 選擇最近的 session

任務跨越多個 session 時很有用。用 /rename 給 session 取名字,像 "oauth-migration""memory-leak-debug"

常見的踩坑模式

廚房水槽 Session

你開始做一件事,然後問 Claude 不相干的問題,然後又回到第一件事。Context 滿是垃圾。

修: /clear 分開任務。

一直在修正

Claude 做錯,你修正。它還是做錯,你又修正。對話充滿失敗的嘗試。

修: 修正兩次之後,/clear 重新開始,用更精確的 prompt。

CLAUDE.md 太肥

檔案太長,Claude 會忽視重要的規則。

修: 無情地砍。如果 Claude 已經做對了,刪掉那個指令,或轉成 hook。

相信但不驗證

Claude 寫的 code 看起來合理,但其實沒處理邊界情況。

修: 一定要給驗證機制。沒有驗證就不要上線。

無限探索

你叫 Claude 「調查一下」,沒有限制範圍。它讀了幾百個檔案,context 爆炸。

修: 範圍要窄,或用 subagent。

真香的工作流總結

總結一下,這就是一個有效的 Claude Code 流程:

  1. 寫好 CLAUDE.md — 簡短、重點、有 git check-in
  2. 給驗證機制 — 測試、screenshot、預期輸出
  3. 用 Plan Mode — Explore → Plan → Implement → Commit
  4. 主動清理/clear 分開任務,/compact 壓縮舊內容
  5. 快速修正 — Esc 停止,/rewind 回復,不要等
  6. 用 subagent — 大型調查用獨立的 context
  7. 跨 session 繼續--continue--resume

就這樣。你的 Claude 就不會越用越笨。


原文來源:Best Practices for Claude Code - Claude Code Docs