CLAUDE.md:給專案一份「開機記憶」,AI 一啟動就懂你
上一課你把 Claude Code 裝好、跑出了第一個結果。用久了你大概會發現一件煩事:它每次重開都失憶。你昨天才告訴它「這專案用 Next.js、測試要跑 npm test、不要碰 legacy/ 那包舊程式碼」,今天重開一個對話,它又問你「這專案用什麼框架?測試怎麼跑?」——因為 Claude Code 每一次啟動,都是從一張白紙開始。
這不是它笨,是設計如此:每個對話都有全新的「脈絡窗(context window,你可以想成它的短期記憶)」,關掉就清空。要讓它跨對話記得事情,你得給它一份「開機就會自動讀」的檔案。這份檔案有固定的名字,叫 CLAUDE.md。寫好它,AI 一啟動就懂你的專案,不用再每次從零開始重講。
這堂學什麼
- CLAUDE.md 到底是什麼:為什麼它能讓 AI「跨對話記憶」,以及跟它有沒有差在哪
- 四層位置怎麼疊:組織、個人、專案、本機四種放法,決定誰看得到、要不要進 git
- 該寫什麼、不該寫什麼:一份好 CLAUDE.md 的解剖,以及一個可以直接抄的範本
- 正確的養成流程:別從空白開始——用
/init生草稿、精修、再持續維護 - 2026 新機制「自動記憶」:Claude 會自己做筆記,它跟 CLAUDE.md 怎麼分工
- 進階整理:
@匯入與子目錄各自的 CLAUDE.md,加上四個新手常踩的坑
觀念一:CLAUDE.md 是專案的「開機記憶」
先把最核心的畫面立起來。CLAUDE.md 就是一份放在專案根目錄的 Markdown 純文字檔,名字固定(全大寫 CLAUDE)。Claude Code 每次啟動,會自動把它整份讀進這次對話的脈絡——等於每次開機都先幫你把「這專案的須知」念一遍給 AI 聽。

差別很直接:沒有它,你每開一個新對話都要重講框架、指令、慣例;有了它,這些事開場就在 AI 腦子裡,它直接進入狀況。你可以把 CLAUDE.md 想成貼在新人座位上的一頁 A4 新人須知:最重要的規矩、指令、禁區,一進門就看得到。
觀念二:四層位置,全部疊加
很多新手以為 CLAUDE.md 只能放專案根目錄,其實它有四種位置,各自負責不同範圍,而且會全部疊在一起載入(不是互相覆蓋)。載入順序是從最廣到最貼近你,所以越後面讀到的、越貼近你的設定,優先權越高。

- 組織政策(公司 IT 部署,個人關不掉):公司統一規範,你自己一個人用不到,知道有這層即可。
- 使用者(
~/.claude/CLAUDE.md):放你所有專案共用的個人偏好,例如「回答一律用繁體中文」「commit 訊息用中文」。設一次,每個專案都吃得到。 - 專案(
./CLAUDE.md或./.claude/CLAUDE.md):這堂的重點。放跟這個專案綁定的規矩,會進 git,團隊每個人共用同一份。 - 本機(
./CLAUDE.local.md):只有你、只在這個專案的私人設定,例如你自己的測試網址。記得加進.gitignore,不要上傳。
對個人使用者來說,九成場景就用專案那層(./CLAUDE.md),把個人跨專案偏好丟到 ~/.claude/CLAUDE.md,這兩層搞懂就夠了。
觀念三:CLAUDE.md、自動記憶、README——別搞混
到了 2026,Claude Code 的「記憶」其實有兩套系統,加上一個老朋友 README,新手最容易混淆。一張圖講清楚:

- CLAUDE.md:你寫的規則與指令,每次開場全部載入。這是你主動掌控 AI 行為的地方。
- 自動記憶(auto memory):Claude 自己寫的。這是 2026 新增、預設開啟的機制——它一邊做事一邊把學到的東西(常用指令、你糾正過的偏好、除錯心得)記進
~/.claude/projects/<專案>/memory/底下的MEMORY.md。你不用動手,它自己累積。當你在畫面上看到「Writing memory / Recalled memory」,就是它在寫或讀這份筆記。 - README.md:寫給人看的專案介紹與安裝步驟。Claude 不會自動整份讀它(要的話你得自己叫它讀,或用等一下講的
@匯入)。
一句話分工:CLAUDE.md 是你下給 AI 的指令,自動記憶是 AI 幫自己做的筆記,README 是給人類看的說明書。 兩套記憶系統可以並存:你負責寫「規矩」,它負責記「它學到的細節」。
claude --version 可看)。它只會把 MEMORY.md 的前 200 行(或 25KB)在開場載入,所以它會自己把細節搬到別的分頁檔、保持索引精簡。想看它記了什麼,打 /memory 就能瀏覽、編輯、刪除——全部都是你看得懂的純文字。實戰:別從空白開始,三步養出一份好 CLAUDE.md
新手最容易犯的錯,是打開一個空檔案對著它發呆。正確做法是先讓 AI 生草稿,你再精修,之後持續維護。

用 /init 生一份草稿
在你的專案資料夾裡開 Claude Code,直接打:
/init
它會自己掃過整個專案,推斷你的技術棧、找出建置與測試指令、觀察程式碼慣例,自動生一份 CLAUDE.md 草稿。這是最省事的起點,別自己從零寫。
2026 的貼心改動:如果專案已經有 CLAUDE.md,/init 不會覆蓋它,而是提出改進建議讓你選擇,所以放心跑不會弄丟原本的內容。
刪到只剩精華(這步最多人跳過)
/init 生出來的草稿常常太囉嗦,把 AI 從程式碼一看就知道的東西也寫進去了。你的工作是刪:把「AI 自己看得出來」的廢話砍掉,只留「AI 猜不到、但每次都需要知道」的事。
官方建議一份 CLAUDE.md 控制在 200 行以內。為什麼要這麼克制?因為它每次開場都佔用 AI 的脈絡(記憶空間),塞太多不但燒 token,還會稀釋重點、讓它更不聽話。把它當一頁 A4,不是一本手冊。
照四個區塊補齊內容
一份好的 CLAUDE.md 大致長這樣——技術棧、常用指令、慣例、禁區,四塊講完收工:

可以直接抄這個範本改:
# 專案說明
這是一個電商後台,前端 Next.js 15 (App Router) + TypeScript,
後端 Node.js + PostgreSQL。
## 常用指令
- 開發:`npm run dev`
- 測試:`npm test`(改完程式一定要跑)
- 型別檢查:`npm run typecheck`
## 慣例
- 元件放 `src/components/`,一個元件一個資料夾
- 用 2 空格縮排、不用分號
- API 錯誤一律回 `{ error: string }` 格式
## 注意
- 不要碰 `legacy/` 資料夾,那是舊系統
- commit 訊息用中文
寫的訣竅是具體到可以驗證:寫「用 2 空格縮排」而不是「格式排好看」;寫「commit 前跑 npm test」而不是「記得測試」。越具體,AI 越照做。
持續維護,不是寫完就丟
CLAUDE.md 是養出來的,不是一次寫死。判斷「什麼時候該加一條」很簡單:當你發現自己又在對話裡打同一句糾正、或 AI 第二次犯同樣的錯,就把它寫進 CLAUDE.md。
最省事的做法是直接跟 Claude 說:「把『改完 API 一定要更新對應的測試』這條加進 CLAUDE.md。」它會幫你寫進去。反過來,過期、用不到的規矩要主動刪掉——留著只會佔記憶、製造矛盾。
進階:@ 匯入與子目錄各自的 CLAUDE.md
專案變大之後,你會想把規矩拆開整理。有兩個進階招式,新手先知道有,用得到再回來查:

@匯入:在 CLAUDE.md 裡寫@docs/style-guide.md,開場時就會把那個檔案一起展開載入,方便把長內容拆成多檔管理。相對路徑以「CLAUDE.md 自己的位置」為準,而且最多疊四層(A 匯入 B、B 再匯入 C…到第四層為止)。注意:@後面接路徑就會真的去匯入,如果你只是想在文字裡提到某個檔名、不想匯入它,要用反引號把它包起來(寫成`@README`)。- 子目錄各放一份:大專案可以在
frontend/、backend/各放一個 CLAUDE.md,只寫該區的規矩。根目錄那份開場就載入,子目錄那份則是Claude 讀到該區檔案時才載入——這樣能省下平常用不到的脈絡空間。
.claude/rules/ 資料夾,把不同主題(測試、API、安全)拆成一檔一主題,甚至用 paths 設定讓某條規矩「只在改到特定檔案時才載入」。這是給大型專案的整理術,個人小專案先用單一 CLAUDE.md 就很夠。常見坑
坑 1:CLAUDE.md 塞太多,AI 反而不聽話
新手直覺以為「寫越多它越懂」,結果剛好相反。CLAUDE.md 每次全份載入,塞成一本手冊會稀釋重點,重要規矩反而被淹沒,它就開始「選擇性遵守」。症狀是:明明寫了規矩,AI 卻常常沒照做。解法:回頭把它砍到 200 行內,只留 AI 猜不到、每次都需要的事;真的很多,就用上面講的 @ 匯入或 .claude/rules/ 拆檔。想確認哪些檔案這次真的被載入了,打 /memory 會列出來——沒出現在清單裡的檔案,AI 根本看不到。
坑 2:改了 CLAUDE.md,AI 卻好像沒吃到
你在對話中途改了 CLAUDE.md,或在對話裡口頭交代了一條規矩,結果 AI 沒反應、或過一陣子又忘了。兩個常見原因:一是子目錄的 CLAUDE.md 要 Claude 讀到那區檔案時才會載入,不是開場就吃;二是只在對話裡講、沒寫進檔案的指令,/compact(壓縮對話)之後會消失——只有專案根目錄的 CLAUDE.md 會在壓縮後被重新讀回來。解法:重要規矩一律寫進(根目錄的)CLAUDE.md,別只用嘴巴講;剛改完檔案沒生效,最保險是重開一次 Claude Code。
坑 3:@ 匯入沒作用,或不小心把整個檔案吸進來
用了 @ 匯入卻沒效果,常見兩種:第一次遇到外部匯入時 Claude Code 會跳一個核准對話框列出要匯入的檔案,如果你當時按了拒絕,匯入就會被停用、而且之後不會再問;另一種是路徑打錯或超過四層深度。反過來的坑是:你只是想在 CLAUDE.md 裡「提到」某個檔名,沒包反引號,結果 @ 開頭被當成匯入指令、把整份檔案吸進脈絡。解法:確認核准過、路徑對;純提及檔名時用 `@檔名` 包起來。
坑 4:把秘密寫進 CLAUDE.md,跟著 git 外洩
CLAUDE.md(專案那層)是會進 git、被團隊看到的檔案。有人圖方便把資料庫密碼、API 金鑰、內部網址直接寫進去當「背景資訊」,一 push 就外洩了。解法:秘密永遠不進會版控的檔案。私人、機密的內容放 ./CLAUDE.local.md,並確認它在 .gitignore 裡(跑 /init 選個人版會自動幫你加)。另外,如果你想留註解給人類看、又不想浪費 AI 的脈絡,可以用 HTML 註解 <!-- 這行給維護者看 -->——Claude 載入時會把區塊層級的 HTML 註解剝掉,不佔 token。
作業
- 生一份 CLAUDE.md:挑一個你手上的專案(沒有就用第 3 課做的那個),開 Claude Code 打
/init,看它自動生出草稿。 - 精修:打開那份草稿,刪掉「AI 一看程式碼就知道」的廢話,補上至少一條「AI 猜不到」的慣例或禁區(例如「commit 訊息用中文」「不要動
xxx/資料夾」)。目標:全份壓在自己讀得完的長度。 - 設一條個人偏好:在
~/.claude/CLAUDE.md(沒有就新建)寫一行「回答一律用繁體中文」,重開 Claude Code,感受一下它跨專案都吃到這條。 - 看看它的筆記:打
/memory,瀏覽 Claude 幫你自動記了什麼(自動記憶),順便確認你的 CLAUDE.md 有出現在載入清單裡。 - 驗收:重開一個新對話,問它「這個專案用什麼技術、測試怎麼跑?」——如果它不用你講就答得出來,你的 CLAUDE.md 就成功了。
下一課預告
CLAUDE.md 讓 AI 記住「這個專案」的規矩。但如果你有一套流程——例如「幫我把一段訪談逐字稿整理成重點摘要」或「照公司格式產一份週報」——是想在很多專案、很多次都重複使用的呢?每個專案都複製一份 CLAUDE.md 顯然很蠢。
這時候需要的是 Skills(技能):把一套專業流程打包成一個模組,平常收在旁邊不佔記憶,AI 判斷需要時才自動載入來用。它比 CLAUDE.md 更聚焦、更可攜。下一課(第 5 課),我們就來把你最常重複的工作,一個一個打包成 Skill。