Claude Code memory 完整教學
4 招寫好 CLAUDE.md 降 token,附 5 個複製 prompt 貼 Claude Code 自動改
黃志弘 Leo
2026-04-17 發佈 · 2026-10-09 更新 · 780 人看過
5 個直接貼進 Claude Code 的提示詞
下面 5 個提示詞直接複製貼到 Claude Code,它會自己看你的 CLAUDE.md、告訴你要改哪裡、等你 OK 再動手。底下文章再解釋每一招為什麼能省 token、原理是什麼。
幫我健檢這個專案的 CLAUDE.md,目標是降低 context token 消耗,照下面順序做:
1. 跑 `wc -l CLAUDE.md` 告訴我現在幾行
2. 掃描檔案裡用 # 開頭的「給人看的歷史/原因/脈絡」註解
(不是規則本身,是解釋「為什麼有這條」那種)
列出來,改包成 <!-- --> 區塊註解格式
3. 找出「只跟某一種檔案類型有關」的規則
(例如只跟 API、前端元件、SQL migration 有關)
拆成獨立 .claude/rules/xxx.md,加 YAML frontmatter 的 paths 欄位綁 glob
從主 CLAUDE.md 刪掉搬出去的部分
4. 檢查有沒有很長的段落(git workflow、風格指南等)適合用 @path 搬到外部檔
5. 全部改完後再跑一次 `wc -l CLAUDE.md` 告訴我差多少行
每一步動手前先列計畫給我看,我說 OK 再改。參考 https://code.claude.com/docs/en/memory 的規則。會得到什麼:一份改動計畫 + 改完前後的行數對比。Claude 會一步一步來,不會亂改。
花多久:看你 CLAUDE.md 多大,通常 10 - 30 分鐘一次講完。
掃我的 CLAUDE.md,把裡面用 # 開頭的「人類註解」(歷史原因、某某人決定的、為什麼有這條這種給人看的脈絡,不是規則本身)全部改包成 <!-- --> 區塊註解。
改之前先列出你找到哪幾段,等我 OK 再改。改完跑 `git diff CLAUDE.md` 給我確認。我的 CLAUDE.md 裡有些規則只跟特定檔案類型有關(例如只跟 src/api/ 有關、只跟 React 元件有關、只跟 SQL migration 有關)。
幫我把這些規則拆到 .claude/rules/ 底下各自獨立檔,每個檔加上 YAML frontmatter:
---
paths:
- "對應的 glob"
---
從主 CLAUDE.md 刪掉搬出去的規則。先給我拆分計畫(每一組會變成哪個檔、paths 寫什麼),我說 OK 再動。
規則格式參考 https://code.claude.com/docs/en/memory跑 `wc -l CLAUDE.md`。如果超過 200 行,幫我分析:
1. 列出檔案裡每一大段的行數
2. 找出哪幾段最適合搬出去:
- 歷史脈絡 → 用 HTML 註解 <!-- --> 包起來
- 只跟某種檔案有關 → 搬去 .claude/rules/
- 長範例 / 完整流程 → 搬去 docs/ 用 @path 拉回來
3. 估算砍完後會剩幾行
先給我建議清單,我選做哪幾項再動手。找出我 CLAUDE.md 裡「很長的段落而且跨專案通用」的內容(例如 git workflow、個人 code style 偏好、commit 規範)。
幫我搬到外部檔,主檔改用 @path 拉進來:
- 跨專案個人偏好:搬到 ~/.claude/xxx.md,用 @~/.claude/xxx.md
- 專案內細節:搬到 docs/xxx.md,用 @docs/xxx.md
先列你要搬哪幾段、目標檔名,我說 OK 再動。為什麼 CLAUDE.md 會影響 token
控制 token 有兩層。模型這一層,在 Claude Code 裡可以調 effort(low、medium、high、xhigh、max 五級),或直接請它回答簡短一點。
另一層是 context,也就是你的 CLAUDE.md。它在每次 session 一開始就完整載入,寫得越長,每次對話開始前就先用掉越多 token。這一層換哪個模型都一樣,所以底下 4 招不管你用哪一版 Claude 都適用。
CLAUDE.md 寫久了,裡面常會留著給舊模型的指令。Claude Code 2.1.283 以後可以在 session 裡打 /doctor prompt-audit,它會找出寫給舊模型的指令、指到不存在的檔案或指令、互相矛盾的規則,列出建議修改,你說要改它才動手。
4 招寫好 CLAUDE.md(每招都附 before / after + 為什麼能省)
每一條規則都來自 Anthropic 官方 Claude Code memory 文件,code.claude.com/docs/en/memory。範例都可以直接複製改你的 CLAUDE.md。
<!-- --> 區塊註解
Before(爛)— 那兩段歷史每次都被載入
# Rules
# 2025-08-15: 這條是因為 Sarah 反映她 PR 一直被 reject 才加的
# 不要刪,跟 Compliance team 確認過
- Always include type annotations on exported functions
# Mike 覺得這條未來可能要拿掉
- Prefer `import type` over `import { type }`After(好)— 兩段註解被剝掉,Claude 只看到規則本身
# Rules
<!--
2025-08-15: 這條是因為 Sarah 反映她 PR 一直被 reject 才加的
不要刪,跟 Compliance team 確認過
-->
- Always include type annotations on exported functions
<!-- Mike 覺得這條未來可能要拿掉 -->
- Prefer `import type` over `import { type }`馬上做:跑 grep -n "^#" CLAUDE.md 找你現在用 # 開頭的人類註解,包成 <!-- -->。
注意:程式碼區塊 ``` 裡的註解會保留;用 /memory 命令打開檔案時你還是看得到 — 給人看的內容沒消失,只是不進 Claude context。
.claude/rules/ + paths 條件載入(這招省最多)
.claude/rules/*.md 加 YAML frontmatter 的 paths 欄位,規則只在 Claude 動到符合 glob 的檔案時才載入 context。寫前端時不會載 API 規則;改 API 時不會載前端規則。每次 session 開頭 = 0 token。Before(爛)— 全部塞主 CLAUDE.md,每次 session 都載
# CLAUDE.md(主檔)
## API rules(50 行)
- All endpoints must validate input with zod
- Use standard error response from src/api/errors.ts
- ... 還有 47 行
## React rules(50 行)
- Functional components only, no class components
- Tailwind only, no CSS modules
- ... 還有 47 行
## DB rules(50 行)
- Migrations must be reversible
- ... 還有 48 行150 行 ≈ 1500 token,每次 session 都吃。寫前端的時候,後端規則也照載。
After(好)— 拆三檔,條件載入
# .claude/rules/api.md
---
paths:
- "src/api/**/*.ts"
---
- All endpoints must validate input with zod
- Use standard error response from src/api/errors.ts# .claude/rules/react.md
---
paths:
- "src/components/**/*.tsx"
- "src/pages/**/*.tsx"
---
- Functional components only, no class components
- Tailwind only, no CSS modules# .claude/rules/db.md
---
paths:
- "migrations/**/*.sql"
- "src/db/**/*.ts"
---
- Migrations must be reversible省多少:session 開頭從 1500 token → 0 token。改 API 時只進 API 那 50 行,其他兩組完全不載。
馬上做:翻你的 CLAUDE.md,找「只跟某種檔案有關」的規則(API only、React only、SQL only、tests only),各自拆一個檔到 .claude/rules/,paths 寫對應 glob,再從主檔砍掉。
為什麼能省:CLAUDE.md 每次 session 開始完整載入 context。600 行 ≈ 6,000 token,200 行 ≈ 2,000 token,每次 session 差 4,000 token。一天開 10 次 session 就差 4 萬 token。而且官方說超過 200 行連 Claude 遵守規則的程度都會降。
典型超過 200 行的原因(去這幾種地方瘦)
- 「為什麼這個專案存在 / 我們以前用 v1 怎樣怎樣」歷史脈絡 → 用招 1 包進
<!-- --> - 「給新隊友的 onboarding 流程」 → 搬到
docs/onboarding.md - 「只跟特定檔案類型有關的規則」 → 用招 2 拆到
.claude/rules/ - 長範例 / 完整 git workflow / DB schema 解釋 → 拆到
docs/然後用招 4 的@import拉進來
wc -l CLAUDE.md # 看現在多長
grep -c "^#" CLAUDE.md # 看有多少 # 開頭的「人類註解」wc -l 確認。
@path 拆檔(搭配招 2、招 3 的結構工具)
.claude/rules/ 變成條件載入 — 那才是真省)。典型寫法
# Project Rules
- 2-space indent
- Run `npm test` before commit
- API handlers in src/api/handlers/
@~/.claude/my-personal-style.md # 跨專案共享
@docs/git-workflow.md # 細節外移官方說 @path 最多遞迴 4 層(A 引 B、B 引 C……最多往下引 4 次)。
- 跨專案個人偏好(home 路徑
@~/...) - 主檔結構模組化,方便日後抽出去
.claude/rules/
.claude/rules/。
招 2(.claude/rules/ + paths)> 招 3(200 行)> 招 1(HTML 註解)> 招 4(@import 不直接省)
想立刻看效果:先做招 1(最簡單,5 分鐘)再做招 2(最省,30 分鐘)。
進階:Skills 比 Rules 更省 token
Anthropic 還有第三層機制:Skills。用對地方比 rules 還省。
| 機制 | 何時載入 context | 適合內容 |
|---|---|---|
| CLAUDE.md | 每次 session 開始(完整載入) | 每天都要 Claude 記住的規則 |
.claude/rules/ + paths |
Claude 讀到符合 glob 的檔案時 | 跟特定檔案類型綁的規則 |
| Skills | 你 invoke 或 Claude 判斷相關時 | 偶爾才需要的工作流(複雜任務) |
判斷原則:常駐 → CLAUDE.md;條件性 → rules;on-demand → skills。寫對位階就是省 token。
範例對比:爛 CLAUDE.md vs 好 CLAUDE.md
下方為示範性對比,目的是讓你看出結構差異,不是實測壓 token 數據。
爛寫法
- 單檔 600+ 行
- 包含「Why this exists」這種給人看的長段落
- 所有規則都常駐(前端規則改後端時也載入)
- 沒有 import 拆檔
- 「format code nicely」這種不可驗證的指令
每次 session 燒掉 6,000+ token 在 context 開頭。
好寫法
- 主檔 80 行內,只放每天必要規則
- 歷史脈絡用
<!-- -->註解,不進 context - 前端/後端規則拆進
.claude/rules/*.md+ paths - 用
@docs/git-workflow.md拉外部細節 - 「Use 2-space indentation」這種具體可驗證
session 開頭只進約 800 token,遵守度更高。
順帶釐清:CLAUDE.md ≠ auto memory
很多人搜「Claude memory」會把這兩個搞混,官方文件其實有清楚對照表(節錄):
| CLAUDE.md | Auto memory(Claude Code 近期版本內建) | |
|---|---|---|
| 誰寫 | 你 | Claude 自己 |
| 內容 | 規則、工作流 | Claude 學到的偏好、debug 經驗 |
| 載入 | 每次 session 完整載入 | 每次 session 載入索引 MEMORY.md 的前 200 行或 25KB |
| 適合 | 程式風格、架構、流程 | build 指令、debug 心得、Claude 自己學到的偏好 |
兩者互補不取代。官方完整對照表
CLAUDE.md 和 MEMORY.md 放在哪裡
依官方文件整理(2026/10)。同時有好幾份時不會互相覆蓋,Claude 會全部讀,越靠近你所在資料夾的越晚讀到。
- 個人 CLAUDE.md:
~/.claude/CLAUDE.md。只有你,所有專案都套用 - 專案 CLAUDE.md:專案根目錄的
CLAUDE.md或.claude/CLAUDE.md。整個團隊共用,跟著程式碼一起進版控 - CLAUDE.local.md:專案根目錄的
CLAUDE.local.md。只給你自己,記得加進.gitignore - 公司統一的 CLAUDE.md:Mac 在
/Library/Application Support/ClaudeCode/CLAUDE.md,Windows 在C:\Program Files\ClaudeCode\CLAUDE.md。公司 IT 統一派送,個人設定排除不掉 - auto memory:
~/.claude/projects/<專案>/memory/,裡面的MEMORY.md是索引,每則記憶一個檔。Claude 自己寫,只存在這台電腦
不用自己去找路徑:在 Claude Code 裡打 /memory,會列出這些檔案,選一個就用編輯器打開,也可以在這裡開關 auto memory。想確認這次 session 實際載入了哪幾份,打 /context。
如果專案裡只有給其他 AI 工具用的 AGENTS.md、沒有 CLAUDE.md,Claude Code 2.1.277 以後會直接讀 AGENTS.md。