從 v2.1.59 版本開始,Claude Code 引入了自動記憶功能(Session Memory)。 這個功能讓 Claude 能夠在不同會話之間記住重要的上下文和偏好, 大幅減少了每次開啟新會話時的重複說明。
自動記憶如何運作?
在每次會話中,Claude 會觀察你的互動模式、偏好和反饋。當會話累積到一定長度後(大約 10,000 tokens), Claude 會自動提取有價值的記憶並儲存。你會看到以下提示:
- 會話開始時:
Recalled X memories——Claude 載入了之前保存的記憶 - 會話進行中:
Wrote X memories——Claude 從當前對話中提取並保存了新記憶
記憶類型
Claude 會自動分類和儲存不同類型的記憶:
- user:使用者偏好,例如「偏好繁體中文」、「喜歡簡潔的 commit message」
- feedback:來自使用者的修正和反饋,例如「不要在函數名前加底線」
- project:專案相關知識,例如「此專案使用 monorepo 架構」
- reference:參考資訊,例如「部署腳本在 scripts/deploy.sh」
首次記憶提取
記憶提取並非每輪對話都會觸發。第一次提取通常在會話達到約 10,000 tokens 後才會發生。 這是為了確保 Claude 有足夠的上下文來做出有意義的記憶判斷,而不是記住瑣碎的細節。
手動添加記憶
你可以使用 # 前綴來明確告訴 Claude 記住某件事:
# Remember that our API uses snake_case for all endpoints
# Our CI pipeline requires all tests to pass before merge
# The legacy module in src/old/ should not be modified
使用 # 標記的訊息會被優先保存為記憶,不需要等待自動提取。
Memory 與 CLAUDE.md 的關係
初學者常常混淆這兩個功能。它們的定位不同:
- CLAUDE.md = 指令。你主動編寫的規則和規範,每次會話都會載入。適合團隊共享的專案標準
- Memory = 學習到的上下文。Claude 從互動中自動學到的知識。個人化,不適合團隊共享
兩者互補:CLAUDE.md 定義「應該怎麼做」,Memory 記住「上次做了什麼、你喜歡什麼」。
記憶檔案結構
記憶儲存在 ~/.claude/projects/ 目錄下,按專案路徑組織:
~/.claude/
├── projects/
│ ├── Users-erik-my-project/
│ │ ├── memories.jsonl # 專案級記憶
│ │ └── ...
│ └── Users-erik-another-project/
│ ├── memories.jsonl
│ └── ...
└── memories.jsonl # 全域記憶
你可以直接查看和編輯這些檔案,但通常不需要手動干預。 如果某條記憶不再正確,你可以在會話中告訴 Claude「忘記關於 X 的記憶」。
實用技巧
- 在新專案的第一次會話中,多花時間解釋你的偏好——這些都會被記住
- 當 Claude 犯錯時,明確糾正它。這個反饋會被記為 feedback 類型的記憶
- 定期檢查
~/.claude/projects/下的記憶檔案,清理過時的記憶