你上週跟 AI 講過:這個專案回覆一律用繁體中文、測試指令是 npm test、改完價格要連 FAQ 一起改。今天開一個新對話,它全忘了。你再講一次。明天又開一個,再講一次。
這不是它記性差,是它根本沒有記性。每個對話視窗都是從零開始的,上一個視窗發生過什麼,它一個字都看不到。你每次開場花的那三分鐘「先交代一下背景」,就是在替它補這段空白,而且每次補的內容幾乎一樣。
工具廠商的解法很直白:既然每次都要講同一段話,那就寫成一個檔案放在專案資料夾裡,AI 每次開場自己去讀。Claude Code 讀的檔案叫 CLAUDE.md;Codex、Cursor、Cline 和其他二十幾家工具讀的叫 AGENTS.md。名字不同,做的是同一件事。
[ 你開一個新對話 ]
|
v
工具先去專案資料夾找檔案
|
+-- Claude Code ─────> CLAUDE.md
|
+-- Codex / Cursor / Cline ─> AGENTS.md
|
v
檔案內容塞進對話最前面,當成「開場已經講過的話」
|
v
你的第一句指令才進來
它是每次開場都會讀的便條,不是憲法
先講一個很常見的誤會:CLAUDE.md 不是「不可違背的最高指導原則」。
Claude Code 的官方文件寫得很清楚,這些檔案「被當成脈絡,不是強制設定」——context, not enforced configuration。它的實際運作方式,是在每次對話開始時把檔案內容當成一則使用者訊息塞在最前面。所以 AI 會讀、會盡量照做,但沒有嚴格遵守的保證,尤其當指令模糊或互相矛盾的時候。Codex 那邊的 AGENTS.md 也是同一個性質:載入、併進提示詞,不做機械式的合規檢查。
這件事為什麼重要?因為你會想把「絕對不准把金鑰 commit 上去」這種死線寫進去,然後以為安全了。它不安全。文件自己說,要不管 AI 怎麼想都擋下來的事,用 hook 或權限設定,不要靠 CLAUDE.md。怎麼用 hook 擋,hook 擋金鑰那篇會講。這裡先記住一句:便條是用來省掉重講的,不是用來當保險的。
那它到底存哪裡、什麼時候讀?兩家整理在一起:
| Claude Code(CLAUDE.md) | Codex(AGENTS.md) | |
|---|---|---|
| 個人全域 | ~/.claude/CLAUDE.md | ~/.codex/AGENTS.md |
| 專案共用 | 專案根目錄 CLAUDE.md(跟著 git 走) | 專案根目錄 AGENTS.md |
| 只給自己 | CLAUDE.local.md(放進 .gitignore) | AGENTS.override.md |
| 子資料夾 | 有,但用到那個資料夾的檔案時才讀 | 有,從根目錄往下串接 |
| 多個檔案怎麼合 | 全部串接,近的排後面 | 全部串接,近的排後面 |
| 大小 | 官方建議 200 行以內 | 預設上限 32 KiB |
兩個細節值得多看一眼。多個檔案是串接,不是覆蓋——全域的、專案的、子資料夾的會一起進去,靠近你工作位置的排在後面;很多人以為後端的規則在改前端時會自動被隔絕,不是這樣,規則放哪一層那篇會細講。還有,Claude Code 讀 CLAUDE.md、不讀 AGENTS.md;如果你的專案已經有 AGENTS.md,在 CLAUDE.md 裡寫一行 @AGENTS.md 就能把它整個引進來,兩邊共用一份。
第一份該寫什麼:它自己查不到、而你重講過第二次的事
新手最常犯的錯是把它寫成專案說明書:技術棧、資料夾結構、每個模組在做什麼。這些 AI 打開專案自己就查得到,寫進去只是每次開場多燒一段 token,還稀釋了真正重要的那幾條。官方文件的判準只有四條,我原文照翻:
- AI 第二次犯同一個錯的時候
- Code review 抓到一件「它本來就該知道這個專案是這樣」的事
- 你在對話裡打了跟上次一模一樣的糾正或說明
- 一個新同事也需要同樣的背景才能上手
換句話說,它是你重講過的話的存放處,不是專案的百科。放進去的東西要具體到可以驗證:「用兩格縮排」比「格式要整齊」有用,「commit 前跑 npm test」比「記得測試」有用。兩條規則互相打架,AI 會隨便挑一條,所以定期回頭刪掉過期的,跟新增一樣重要。
還有一件 2026 年才有的事要分清楚。Claude Code 現在有「自動記憶」(auto memory),是 AI 自己在對話中記下你的糾正與偏好,存在它自己的資料夾裡,每次開場也會載入。這跟 CLAUDE.md 是兩套,一套你寫,一套它寫。想確認某條規則有沒有被讀到,在對話裡打 /context,底下「Memory files」會列出這次載入了哪些檔案。沒列出來的,它就是看不到。
動手做
只用 Claude 或 ChatGPT 網頁版的人,沒有 CLAUDE.md,但有同一個概念。Claude 網頁版的「專案(Projects)」有一格「專案指令」,免費版就有;ChatGPT 在設定裡有「自訂指令」。把你每次開場都在重講的那幾句寫進去,效果一樣:以後在那個專案裡開的每個對話,它都先讀過。可以直接貼這份起手式,把括號填掉:
這個專案的固定規則(每次對話都適用): 1. 回覆一律用繁體中文,用詞照台灣習慣。 2. 我是(你的角色,例如:行政、不會寫程式),解釋時不要用工程術語,要用就先講白話。 3. 這個專案在做:(一句話)。 4. 絕對不能做的事:(例如:不要幫我編造數字;資料不足就說不足)。 5. 改完 A 要記得連動 B:(例如:改了報價表就要提醒我更新報價信範本)。 6. 交付前先自己檢查:(例如:日期格式是民國年還是西元年)。
在用 Claude Code 的,三步。在專案裡打 /init,它會掃描專案生出第一版 CLAUDE.md(已經有的話它會提修改建議,不會蓋掉)。然後做減法(先砍掉一半),把它自己查得到的東西刪掉——資料夾結構、用了哪些套件,這些留著只是浪費。接著加上只有你知道的三到五條:測試指令、改 A 要連動 B、絕對不能碰的地方。最後打 /context 確認檔案有出現在 Memory files 裡。想看全部記憶檔案在哪,打 /memory。
在用 Codex、Cursor、Cline 的,手寫一份 AGENTS.md。Codex 沒有 /init 這種指令,就在專案根目錄新增一個純文字檔叫 AGENTS.md(大寫)。內容跟上面那六條同一個骨架,把「回覆語言」那條換成「測試指令」「建置指令」這類工具需要的事。Cursor 與 Cline 除了各自的規則資料夾(.cursor/rules/、.clinerules/),也都讀 AGENTS.md,所以一份就夠。同一個專案有人用 Claude Code的話,讓 CLAUDE.md 裡只寫一行 @AGENTS.md,兩邊就不會各說各話。
⚠️請實測|ChatGPT 專案功能|「自訂指令」免費版確定有;「專案(Projects)」的免費版額度與是否開放,各地區與時間點不同,寫這篇時我沒有親自在免費帳號上確認。看到有就照專案指令寫,沒有就用自訂指令。
做對了的樣子:下一個新對話,你不用再講那句話,它就照做了;/context 列出的 Memory files 裡有你的檔案;整份不超過 200 行,而且沒有任何一條是它打開專案就能自己查到的;沒有兩條規則互相矛盾。
第一條規則怎麼找?翻你最近三次跟 AI 的對話,找出你講過不只一次的句子。那一句就是。不用想「應該寫什麼」,只要找「已經重講過什麼」。
它是你重講過的話的存放處,第二次講同一句就該寫進去。它會被讀、不會被強制,絕對不能發生的事用 hook 或權限擋。Claude Code 讀 CLAUDE.md,其他多數工具讀 AGENTS.md,一行 @AGENTS.md 可以讓兩邊共用一份。
站內延伸
- 檔案放哪一層、多個檔案怎麼疊 → 規則放哪一層
- 砍完該加哪些「它猜不到的死規定」 → AI 猜不到的默會知識
- 把語氣規則寫成固定指引 → 找方法AI 品牌語氣一致化
來源: Claude Code:How Claude remembers your project(檔案位置、載入順序、200 行建議、「context, not enforced configuration」原句);OpenAI Codex:AGENTS.md(~/.codex/AGENTS.md、串接規則、32 KiB 上限);agents.md 開放格式;Cursor Rules;Cline Rules。
它是便條,
不是憲法
什麼時候看這張:你每次開新對話,都要把同樣的背景再講一遍。
- 它沒有記性,不是記性差,所以要重講的就寫下來
- 寫了不代表它一定照做,那是脈絡不是強制力
- 越長越沒人維護,兩百行你會顧,八百行你會放到爛
第一個動作回想這週你重複講過的一句要求,把它寫進專案的規則檔,只寫那一句。五分鐘,之後每次開場它都會讀到。