你在對話裡說「以後一律用 pnpm 不要用 npm」。下次開新對話,它真的用 pnpm 了。你沒改過任何檔案。
這不是 CLAUDE.md,是另一套機制:自動記憶(auto memory)。它跟 CLAUDE.md 一起在每次開場載入,差別是一套你寫、一套它寫。多數人不知道它存在,直到某天它「記得」一件你早就改主意的事。
這一篇講它的規則、它會記什麼、以及怎麼把它當成一個要定期稽核的東西。
CLAUDE.md 自動記憶 你寫 它寫(從你的糾正和偏好) 規則、慣例、架構 你是誰、你糾正過什麼、專案脈絡、外部資源在哪 每次開場整份載入 每次開場載入索引前 200 行/25KB 跟著 git 走(專案層) 只在這台機器,每個 repo 一個資料夾
它記什麼、記在哪
官方文件說它會存四種筆記:user(你的角色、專長、工作偏好)、feedback(你給它的糾正、你確認過的做法)、project(進行中的工作、期限、從程式碼看不出來的決定)、reference(外部資訊在哪,例如 issue tracker、儀表板)。它會跳過從程式碼推得出來的東西,也會跳過 CLAUDE.md 已經寫了的。不是每場對話都存,它自己判斷「這件事下次會不會有用」。
存在 ~/.claude/projects/<專案>/memory/。同一個 git repo 的所有 worktree 和子資料夾共用一個資料夾;不在 git 裡的專案用專案根目錄當名字。裡面有一個 MEMORY.md 當索引,每條記憶一行,加上一個檔案一條記憶的主題檔。開場時只載入 MEMORY.md 的前 200 行或 25KB,超過的部分不會被讀到;主題檔要用到時它才去讀。你看到介面上「Saved 2 memories」「Recalled 2 memories」,就是它在寫和讀這個資料夾。
它預設開著,/memory 可以關、可以瀏覽、可以開資料夾;也可以在某個專案的設定裡單獨關掉。它只在這台機器上,不會同步到別台、不會上雲端;主對話的記憶不會傳給子代理。9 月的更新還把 Slack 公開頻道的記憶改成逐頻道隔離,代表這套東西已經延伸到 Claude Code 以外的地方。
為什麼要稽核,以及怎麼稽核
好處很直接:你不用重講。你糾正過一次的事,它下次記得,這是「重講過的話的存放處」的自動版。
風險也直接。第一,它可能記錯。你當時說「這次先用 A」,它可能記成「一律用 A」。第二,它可能記到過期的東西。專案改版了,它記的路徑還是舊的。第三,它可能跟 CLAUDE.md 打架。你在 CLAUDE.md 寫了新規則,它的記憶裡還留著舊糾正,兩邊矛盾時它隨便挑一條,這句話跟 CLAUDE.md 那篇一樣。第四,你看不到它記了什麼,除非你去打開。
所以我把它當成第二份常駐檔來養,一個月看一次。做法是打 /memory,選自動記憶資料夾,打開 MEMORY.md 逐行看。刪掉三種:已經不對的、CLAUDE.md 已經有的(重複)、只在某次任務成立的(「這次先用 A」)。留下的多半是 feedback 那一類,那正是它最有價值的部分。
一個判斷:你想讓某件事永久成立,直接說「把這條加進 CLAUDE.md」,不要靠它自己記。它記的是「學到的」,CLAUDE.md 是「規定的」,兩者的權威不同。
動手做
在 Claude Code 裡打 /memory,選自動記憶資料夾,打開 MEMORY.md。第一次看通常會有驚喜,有些它記得的事你根本不記得講過。
要稽核的話,把 MEMORY.md 的內容貼給它(或另開一場對話),用這段:
下面是你(AI)自動記憶的索引。請幫我分成四堆並說明理由: 1. 已經不成立的:提到的路徑、工具、決定,跟目前專案狀態不符。 2. 跟 CLAUDE.md 重複的:這裡貼上我的 CLAUDE.md,重複的標出來。 3. 只在某次任務成立的:「這次」「先」「暫時」這類字眼的。 4. 值得留的:跨對話都成立的偏好與糾正。 第 4 堆裡,有沒有應該升格成 CLAUDE.md 規則的?列出來。不要直接改檔案,給我清單。 MEMORY.md:(貼上) CLAUDE.md:(貼上)
不想讓它自己記的,/memory 裡關掉,或在專案設定加 "autoMemoryEnabled": false。用網頁版的人沒有這套,Claude 專案裡的「專案指令」還是你自己寫。
做對了的樣子:你知道 MEMORY.md 在哪、打開過;裡面沒有跟 CLAUDE.md 重複的條目;沒有「這次先」這類過期句;你在對話裡說「記住 X」時,知道它會進自動記憶,而想永久的事你會說「加進 CLAUDE.md」。
站內延伸
- 你寫的那一份是什麼、不是什麼 → 常駐檔是便條不是憲法
- 定期修剪的節奏 → 定期修剪
- 交接時該傳什麼 → 交接單
來源: Claude Code:How Claude remembers your project — Auto memory(四種類型、儲存位置、200 行/25KB 載入上限、機器本機、/memory 開關與瀏覽、不傳給子代理);Claude Code changelog(2.1.272:Slack 公開頻道記憶逐頻道隔離)。
一套你寫、一套它寫,兩套都在每次開場載入。它記的是「學到的」,CLAUDE.md 是「規定的」,想永久的事要自己寫進去。一個月打開 MEMORY.md 看一次,刪掉過期的、重複的、只在某次成立的。
一套你寫,
一套它自己寫
什麼時候看這張:你沒改過任何檔案,它卻記得你上次糾正過的事。
- 它可能把「這次先用」記成「一律要用」
- 索引只讀前兩百行,超過的它看不到
- 想永久成立的事,直接叫它寫進常駐檔
第一個動作打開它自己寫的那份記憶索引,刪掉過期的、重複的、只在某次成立的。輸入 /memory 瀏覽,一個月一次。