Session Memory 自動記憶

講義

從 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/ 下的記憶檔案,清理過時的記憶