控制 context
/context、@file、/clear、CLAUDE.md 怎麼寫才有用。
TL;DR
/context看現在裝了什麼、佔多少 tokens;@<file>塞檔進來、/clear清掉- CLAUDE.md 是 build-time context:寫專案規範、常用 cmd,不要塞詳細 code
- Context 像 RAM——裝太多就 swap。重要的東西釘在 CLAUDE.md,無關的 history 該 evict 就 evict
一個情境:Claude 第三次重新讀同一個檔
叫 Claude 改某個 service。它讀檔、改檔、跑 test、debug 一個 import 錯誤、修好。接著叫它改第二個相關 service——它又重新讀了一次同一份 schema。
不是它笨。中間的對話太長,前面讀過的東西被擠出去了。每次 LLM 呼叫都帶整個 context window 過去,有限的空間塞滿了你不需要的 debug 來回。
該主動 evict 還是開新 session?這篇講這個判斷。
Context 像 RAM
把 Claude 的 context 想成 RAM。容量有限,裝什麼很重要:
| 層 | 例子 | 怎麼控制 |
|---|---|---|
| 永久(build-time) | CLAUDE.md、@AGENTS.md | 編輯檔案,每次自動載入 |
| Session(對話 history) | 你的問題、Claude 的回覆 | /clear、/compact、/rewind |
| 暫時(tool 結果) | 讀過的檔、cmd 輸出 | 跟 history 一起壓縮或丟掉 |
CLAUDE.md 是釘住的 page——常用、不該被換出去。History 是 working set——太大就 swap。Tool 結果最便宜,丟了再讀一次就好。
看現在裝了什麼
/context 顯示目前用了多少 tokens、哪些檔被載入。長對話先看一眼再決定要不要清。
三種清理手段
| 指令 | 在做什麼 | 什麼時候用 |
|---|---|---|
/rewind(連按兩下 Esc) | 跳回前面訊息,丟掉中間來回 | Debug 完無關小 bug,不想留雜訊 |
/compact | 對話壓成摘要,保留學到的東西 | 同 task 鏈條延續但 history 太肥 |
/clear | 整個清掉,開新對話 | 換完全不相關的 task |
/clear 跟「開新 terminal session」差別:/clear 只清 history,CLAUDE.md 還在、permission 還在、cwd 還在。日常切 task 用 /clear 就夠。
@<file> 把檔釘進這次對話
這個 auth flow 怎麼運作的?@src/auth/session.ts
@ 直接把檔內容塞進 prompt,省掉 Claude 自己 grep 找檔。知道哪個檔相關就明講,比讓它猜快。
CLAUDE.md:給 Claude 看的快取摘要
每次對話自動載入,等於「這個 repo 的常駐系統提示」。三個位置:
CLAUDE.md(repo 根)——團隊共用、commit 進 gitCLAUDE.local.md——個人覆寫、不 commit~/.claude/CLAUDE.md——所有專案套用
判準:這東西是不是每次對話都會用到? 是就放,不是別塞。
| Do | Don't |
|---|---|
High-level 架構(「auth 在 src/auth/、session 用 JWT」) | 完整 code 片段 |
常用 cmd(pnpm dev、pnpm test:watch) | 一次性的實驗指令 |
| 不變的規範(命名、layer 分界、不可違反的決策) | 會頻繁變的 TODO list |
@prisma/schema.prisma 引用核心檔 | 把 schema 整份貼進來 |
@AGENTS.md(多 agent 系統延伸 context) | 重複 README 已有的內容 |
很多 repo 已經有 AGENTS.md 給其他 agent 工具用。CLAUDE.md 第一行寫 @AGENTS.md 就會自動載入,不用維護兩份。
該 evict 還是開新 session?
回到開頭情境的判斷:
- 同 task 鏈條延續、Claude 已經學到很多 →
/compact - 換不相關的 task →
/clear - 中間 debug 一段無關雜訊、想保留 codebase 理解 →
/rewind - 同樣的錯犯了第二次 → Esc 中斷 +
/memory寫進 CLAUDE.md
預設:新 task 就 /clear。LLM 在乾淨 context 上的表現幾乎都贏髒 context。
接下來
下一篇 Custom commands——把重複工作 codify 成一鍵 slash command。

