你有沒有過這種經驗:
花了半小時跟 Claude Code 說清楚你的專案架構,解釋為什麼這裡不用 ORM、那裡要用自定義的錯誤格式、這個 naming convention 有歷史原因不要改——然後隔天開新 session,一切歸零。
它不記得。你得再說一遍。
這不是 Claude 的問題,是 LLM 的根本限制:每個 session 都是一個全新的對話,沒有上一次的任何記憶。你在 CLAUDE.md 寫的東西只能覆蓋靜態規範,卻沒辦法保留「上週我們決定把 API 分層重構,目前做到一半」這種動態的工作狀態。
claude-mem 就是為了解決這件事而生的。
它在背後做了什麼
安裝之後,claude-mem 會在 Claude Code 的整個生命週期裡掛上 5 個自動化 hook:
- SessionStart:新 session 開始,自動把過去相關記憶注入進來
- UserPromptSubmit:你每次送出訊息,它都在旁邊記錄
- PostToolUse:Claude 每次用工具之後,觀察結果被自動捕捉
- Stop:Claude 停止回應時,這段互動被整理壓縮
- SessionEnd:session 結束,把這次的重要發現存進資料庫
這些全部在背景自動執行,你不需要手動做任何事。
存下來的東西不是原始對話記錄——claude-mem 會用 AI 先做語義壓縮,把「這次做了什麼、發現了什麼、決定了什麼」提煉出來存進 SQLite。搜尋的時候再透過 Chroma 向量資料庫做混合搜尋(語義 + 關鍵字),讓過去的記憶能被準確召回。
怎麼搜尋過去的記憶
claude-mem 提供 4 個 MCP 工具,設計成一個 3 層查詢工作流:
1 | 第一層:search(query) |
這個設計很聰明:先篩選,再取詳情。不是一次把所有記憶都塞進 context,而是讓 Claude 先看摘要索引、決定哪些值得深挖,才去取完整內容。官方說這樣可以省下 約 10 倍的 token 消耗。
安裝只要一個指令
在 Claude Code session 裡執行:
1 | /plugin marketplace add thedotmack/claude-mem |
重啟 Claude Code 之後,hook 自動生效。從下一個 session 開始,它就會默默在背後記錄。
注意:用
npm install -g claude-mem只會裝 SDK library,不會啟動 hook 和 worker 服務。一定要用上面的/plugin指令。
系統需求:Node.js 18+、最新版 Claude Code。Bun 和 uv 如果沒有會自動安裝,不用自己準備。
你不想被記住的東西,用 <private> 包起來
有些對話內容你不想讓它留存——臨時的測試代碼、你自己罵幾句出氣的抱怨、包含客戶資訊的討論。
用這個語法就能排除:
1 | <private> |
claude-mem 會跳過 <private> 標籤裡的內容,不進行捕捉和儲存。
用 Web UI 看 Claude 的「腦袋」
Worker 服務跑起來之後,打開 http://localhost:37777 可以看到一個即時更新的記憶流 UI。
你可以看到:
- 每個 session 記錄了哪些觀察
- AI 壓縮後的摘要長什麼樣
- 哪些記憶被成功召回並注入到當前 session
對於理解「它現在知道什麼」非常直觀。
適合哪種人用
最有感的場景:
- 長期進行中的個人專案,每天都在跟 Claude Code 互動
- 做了很多架構決策、有很多「這樣做的原因」需要保留
- 討厭每次新 session 都要重新解釋同樣的背景資訊
比較沒差的場景:
- 用 Claude 處理一次性的、互相獨立的任務
- 專案有非常詳細的 CLAUDE.md,靜態規範已經夠用
- 對話主要是問問題而不是持續推進一件事
總結
claude-mem 解決的是 AI 開發工具最根本的一個痛點:context window 的邊界讓 AI 永遠活在當下。
它用 5 個 lifecycle hook 自動記錄、AI 壓縮摘要、向量搜尋召回,讓 Claude Code 在下一個 session 開始時,能帶著「上次我們做到哪」的記憶繼續工作。
核心要點:
- 全自動運作,不需要手動整理
- 3 層查詢設計讓 token 消耗保持可控
<private>標籤給你完整的隱私控制- Web UI 讓記憶系統的狀態一目了然
如果你是 Claude Code 的重度使用者,試試看——你可能會訝異於它記得多少你以為早就消失的東西。
資源
