claude-mem 完整教學 2026:9.9 萬星 AI 代理長期記憶,讓 Claude Code/Codex/Cursor 跨 session 記住你的專案(安裝、hooks、mem_search、隱私與成本一次學會)

claude-mem 是 GitHub 上超過 9.9 萬顆星的 AI 代理長期記憶系統(Apache-2.0,TypeScript),用 5 個 lifecycle hooks 自動捕捉你與 Claude Code 的每一次工具使用,壓縮成語意化的 observation 存進本機 SQLite+ChromaDB,下次開新 session 再自動注入相關上下文。本文完整拆解它的安裝方式(Claude Code、Codex、Cursor、OpenCode 等)、hook 生命週期、worker 服務與資料庫結構、13.35 版的 mem_search 三層漸進式檢索、settings.json 常用設定與隱私開關、成本與資料落地位置、維運與健康檢查指令,以及與 mem0、basic-memory、CLAUDE.md 的完整比較。

  • Dennis
  • 11 分鐘閱讀
claude-mem 完整教學 2026:9.9 萬星 AI 代理長期記憶,讓 Claude Code/Codex/Cursor 跨 session 記住你的專案(安裝、hooks、mem_search、隱私與成本一次學會)

一句話結論

claude-mem 是一套掛在 AI coding agent 上的「本機長期記憶壓縮系統」:它用 5 個 lifecycle hooks 自動把你與 Claude Code 的每一次工具使用記下來,交給一個小模型壓縮成語意化摘要(observation),存進本機的 SQLite +向量資料庫,下一個 session 開始時再自動把相關上下文注入回去。它不是叫你手寫 CLAUDE.md,而是讓記憶自動發生。

截至 2026 年 10 月 11 日,官方 repo 已累積 99,675 顆星、8,739 次 fork,授權 Apache-2.0,npm 最新版為 13.35.0(2026-10-09 發布),也是 Trendshift 上的熱門榜常客。

項目內容
專案thedotmack/claude-mem
主要語言TypeScript(同時內含 Python 的 Chroma 服務)
授權Apache-2.0(作者 Alex Newman,@thedotmack)
Stars / Forks99,675 / 8,739(2026-10-11 查詢)
最新版本npm 13.35.0(2026-10-09),累積 252 個版本
支援宿主Claude Code、Cursor、Windsurf、Codex CLI、OpenCode、Antigravity CLI、Grok Bot、T3 Code、Pi、OMP、DeepSeek Harness、OpenClaw
系統需求Node.js ≥ 20、Bun ≥ 1.0(自動安裝)、uv(自動安裝)、SQLite(內建)

為什麼 AI coding agent 需要記憶?

因為「同一個專案的上下文」是最貴、也最容易蒸發的資源。實際痛點有三個:

  1. 每次開新 session 都要重新交代一次。 你昨天花了兩小時讓 Claude 搞懂這個 repo 的目錄慣例、部署流程、踩過的坑,今天它全部忘光。
  2. /compact 只是把當前對話壓短,不是累積知識。 壓縮完的摘要只活在這個 session 裡,session 一關就沒了。
  3. CLAUDE.md 要靠人維護。 你必須記得把「這次學到的事」寫回去,而且它會越寫越長、越長越貴。

claude-mem 的解法和這三條正面對撞:自動捕捉(不用你動手)、持久化(跨 session 存在本機資料庫)、選擇性注入(只把相關的撈出來,不是把整包塞回去)。官方文件把最後一點叫做 progressive disclosure(漸進式揭露),也是它省 token 的核心。

安裝:一行指令,或從 plugin marketplace

最短路徑是一行 npx:

# Claude Code(預設)
npx claude-mem install

# 其他宿主,加 --ide 參數
npx claude-mem install --ide opencode      # OpenCode 1.3.4+ / 2.x
npx claude-mem install --ide t3code        # T3 Code(Codex + Claude Code)
npx claude-mem install --ide antigravity   # Antigravity CLI
npx claude-mem install --ide pi            # Pi 原生擴充
npx claude-mem install --ide dsh --dsh-profile tui   # DeepSeek Harness

或者直接在 Claude Code 裡面裝:

/plugin marketplace add thedotmack/claude-mem
/plugin install claude-mem

重新啟動 Claude Code,新 session 就會自動帶入上一個 session 的上下文。

安裝流程分三段:裝 runtime(自動補 Bun 與 uv,並偵測你機器上的 IDE 讓你多選)→ 登入(OAuth 裝置碼,免信用卡)→ 選記憶供應商。想完全跳過登入也可以:

# 完全不碰 cmem.ai,直接用你的 Claude 方案跑記憶壓縮
npx claude-mem install --provider claude

⚠️ 最容易踩的坑:npm install -g claude-mem 只會裝到 SDK/library,不會註冊 hook、也不會啟動 worker 服務。一定要用 npx claude-mem install 或 /plugin 指令。

它怎麼運作?5 個 hook + 一個本機 worker

整個系統可以想成一條「捕捉 → 壓縮 → 儲存 → 注入」的資料流:

Claude Code session
   │  UserPromptSubmit / PostToolUse / Stop / SessionEnd
   ▼
5 個 lifecycle hooks(hook-command.ts 編排)
   │  把工具使用事件 enqueue 進 worker
   ▼
本機 Worker Daemon(Express,port = 37700 + uid % 100)
   ├─ SDK Agent:呼叫小模型把事件壓成 observation / summary
   ├─ PendingMessageStore:佇列與重試,worker 掛掉也不擋你的 session
   └─ ChromaSync:同步向量嵌入
   ▼
儲存層
   ├─ SQLite(claude-mem.db):sessions / observations / summaries / user_prompts
   └─ ChromaDB(chroma.sqlite3):語意搜尋用的向量
   ▼
下個 session 的 SessionStart → 語意化上下文注入

Hook 的實際分工如下:

Hook 事件做什麼Timeout
Setup版本標記檢查,版本不符時提示你跑 npx claude-mem repair60s
SessionStart啟動 worker、注入上一次的上下文60s
UserPromptSubmit註冊 session、啟動 SDK agent、做語意化注入60s
PostToolUse捕捉工具使用,寫入 worker 佇列120s
Stop(Summary)請 SDK agent 產生 session 摘要120s
SessionEnd關閉 session、清空待處理訊息30s

有兩個設計值得稱讚:

  • worker 掛掉不會擋住你:傳輸層錯誤(ECONNREFUSED、timeout、5xx)一律 exit 0,只有「客戶端自己的 bug」(4xx、TypeError)才 exit 2。也就是說,記憶服務壞掉最糟的情況是「這次沒記到」,不會變成「Claude Code 打不開」。
  • 重複寫入會去重:以 SHA256(memory_session_id + title + narrative) 的前 16 碼當 content_hash,30 秒內相同內容只留一筆,避免同一件事被記五次。

檢索:13.35 版的 mem_search 三層漸進式揭露

記憶存得多不是重點,撈得準又便宜才是。claude-mem 13.35.0 把檢索收斂成單一工具 mem_search,強制走三層:

層回傳什麼成本概念
step 1/3 index精簡索引(標題+ID)約 50–100 tokens/筆
step 2/3 context你挑選的 anchor 前後時間脈絡中等
step 3/3 details只針對選定 ID 取完整內容約 500–1,000 tokens/筆

Agent 可以在任何一層停下——如果索引標題就足以回答問題,它不會去抓細節。每一輪回覆結尾都會附上可讀的 Continue with: 游標(27 字元,ms_ 開頭),搜尋範圍、選項與已揭露 ID 都存在伺服器端,15 分鐘後過期,所以 agent 不需要在對話裡搬運整包搜尋結果。

幾個硬性上限值得記住(避免你以為壞掉):

  • limit 最多 20 筆索引;maxDetails 預設 3、上限 5;depthBefore/depthAfter 預設 2、上限 3
  • 查詢字串上限 500 字元/1 KiB UTF-8
  • mode: "auto" 會用排名式詞彙檢索自動挑 anchor,完全不呼叫 LLM(所以不花模型費用)

另外有三個工具仍保留給舊客戶端與進階過濾:search、timeline、get_observations;需要主動寫入記憶時則用新的 save_memory:

// 請 agent 直接記下一條偏好或決策(worker runtime)
save_memory({
  text: "本專案的 DB migration 一律用 alembic,不要手寫 SQL",
  title: "Migration 慣例",
  project: "my-app"
})

常用設定:~/.claude-mem/settings.json

所有設定集中在這個檔案(首次執行自動建立)。以下是實務上最常動的幾個:

設定預設說明
CLAUDE_MEM_PROVIDERclaude記憶壓縮用哪家:claude/gemini/openrouter/codex/cmem
CLAUDE_MEM_MODELclaude-haiku-4-5-20251001壓縮用的模型;也可用 claude-sonnet-5、claude-opus-4-8
CLAUDE_MEM_MODEcode模式與輸出語言,如 code--zh(簡中)、code--ja、code--es
CLAUDE_MEM_CONTEXT_OBSERVATIONS50每次注入幾筆 observation
CLAUDE_MEM_WORKER_PORT37700 + (uid % 100)worker 埠號,同機多使用者自動錯開
CLAUDE_MEM_DATA_DIR~/.claude-mem資料根目錄(DB、Chroma、log、settings 全在底下)
CLAUDE_MEM_SKIP_TOOLS略不記錄的工具清單(預設排除 TodoWrite、AskUserQuestion 等)
CLAUDE_MEM_SESSION_START_INCLUDE_ALL_SOURCESfalse是否在所有宿主注入彼此(Claude Code + Codex)的記憶

實務建議(來自官方 Production Guide,23 天、3,400+ 筆 observation 的實測):

{
  "CLAUDE_MEM_MAX_CONCURRENT_AGENTS": 3,
  "CLAUDE_MEM_SEMANTIC_INJECT": true,
  "CLAUDE_MEM_SEMANTIC_INJECT_LIMIT": 5,
  "CLAUDE_MEM_TIER_ROUTING_ENABLED": true
}

其中 CLAUDE_MEM_TIER_ROUTING_ENABLED 官方實測可省約 52% 成本且不掉品質(把不同難度的壓縮工作分派給不同等級模型),SEMANTIC_INJECT 則是把「注入最近幾筆」升級成「注入最相關幾筆」的關鍵開關。

隱私控制

  • <private> 標籤:把不想被存進記憶的內容包起來,例如 `<private>` 這段 API key 與內部主機名不要記 `</private>`。
  • 資料落地位置:預設全在本機 ~/.claude-mem/(claude-mem.db、chroma.sqlite3、logs)。要用雲端同步(cmem.ai)是選項,不是強制。
  • Markdown 筆記匯入是 opt-in:設定 CLAUDE_MEM_MEMORY_WATCH_ROOTS 才會監看指定資料夾(最多 8 個),而且會跳過隱藏檔、symlink 與超過 64 KiB 的檔案,也不會改寫你的原始檔。
  • 原生記憶橋接:當你讀取 Claude Code/Codex 自己的記憶資料夾時,PreToolUse hook 會自動補一份 mem_search 結果當上下文(上限 10,000 字元),可用 CLAUDE_MEM_MEMORY_SEARCH_HOOK_ENABLED=false 關閉。

成本、資料量與維運

「記憶」不是免費的:每筆 observation 都要呼叫模型壓縮一次。好消息是壓縮模型可以選便宜的小模型(預設就是 Haiku 等級),壞消息是用得越勤,壓縮費用越高。官方 installer 預設會引導你註冊 CMEM Pro(含 30 天試用,讓記憶「跑在你的方案之外」),試用到期後可以改用自己的 OpenRouter/Gemini key、或直接回歸 Anthropic 方案來負擔:

供應商記憶壓縮跑在哪費用歸屬適用情境
CMEM Pro(預設)cmem.ai 的 cmem-observer 模型訂閱制,前 30 天試用不想管 API key、想先試效果
OpenRouter你的 OpenRouter 額度依用量想自由換模型、有現成額度
Gemini API你的 Gemini key依用量(有免費額度)已有免費 Gemini 額度
Anthropic 方案你的 Claude 方案額度併入方案用量不想多付一份錢
--provider host本機已登入的 agent(loopback)無需 API key離線/自架派
--provider codex你的 ChatGPT 訂閱(透過本機 Codex CLI)併入訂閱已經有 ChatGPT 訂閱

資料量成長可以預期(官方實測、每天正常開發用):

指標每天每月
observation 筆數約 120約 3,600
session summary約 40約 1,200
SQLite 檔案約 0.8 MB約 24 MB
Chroma 向量庫約 4 MB約 120 MB

也就是說,一年下來大約是「幾百 MB」等級,本機硬碟完全吃得下,但備份與清理要有計畫。日常維運指令:

# worker 健康狀態
curl -s "http://127.0.0.1:${CLAUDE_MEM_WORKER_PORT:-37777}/api/health"

# 資料庫統計
sqlite3 ~/.claude-mem/claude-mem.db "
  SELECT 'observations' AS metric, COUNT(*) AS value FROM observations
  UNION ALL SELECT 'summaries', COUNT(*) FROM session_summaries
  UNION ALL SELECT 'pending', COUNT(*) FROM pending_messages WHERE status='pending'
  UNION ALL SELECT 'active_sessions', COUNT(*) FROM sdk_sessions WHERE status='active';"

# 同機/多機同步(以 created_at + title 去重,可重複執行)
claude-mem-sync push <remote-host>
claude-mem-sync status <remote-host>

健康指標的警戒線(官方 Production Guide):

指標健康值警戒值處理
pending_messages(pending)0–5> 10看 worker log,必要時重啟
pending_messages(failed)0持續增加可能是 circuit breaker 被觸發
sdk_sessions(active)0–3> 5 卡住孤兒 session,重啟 worker
WAL 檔案大小< 10 MB> 20 MB執行 PRAGMA wal_checkpoint(TRUNCATE)
每日錯誤數0–2> 10檢查 log 模式

和替代方案比一比

方案型態授權自動捕捉檢索方式最適合
claude-memhook +本機 worker +MCPApache-2.0✅ 自動(hooks)mem_search 漸進式+向量+FTS想「開箱就有記憶」的 Claude Code/Codex 使用者
CLAUDE.md/專案指令純文字檔—❌ 手寫維護每次全量注入只放少量、穩定的專案規則
Claude Code 內建 compact/resume對話內專有⚠️ 半自動只在同一 session單次長任務
mem0記憶層 API/服務(約 6.7 萬星,Apache-2.0)Apache-2.0❌ 需自行整合向量檢索 API自己開發產品、要把記憶做進 App
basic-memoryMarkdown +知識圖譜 +MCP(約 4,100 星,AGPL-3.0)AGPL-3.0⚠️ 筆記為主知識圖譜/MCP想用 Obsidian 生態、堅持 markdown 可讀可帶走
EverOS代理記憶作業系統開源⚠️ 需整合超圖記憶研究/多代理架構實驗

選型建議很簡單:你的痛點是「跟 AI coding agent 的對話記憶」就選 claude-mem;痛點是「產品裡要有記憶功能」就選 mem0;痛點是「知識要能自己帶著走」就選 basic-memory。

6 個實務陷阱

  1. npm i -g claude-mem 不等於安裝完成。 只裝 SDK,hook 與 worker 都不會註冊。請用 npx claude-mem install。
  2. 埠號衝突。 預設埠是 37700 + (uid % 100),同機多個 profile 用同一組 UID 時仍可能撞到;設 CLAUDE_MEM_WORKER_PORT 固定值後重啟 worker。
  3. 版本升級後 hook 對不上。 用 claude plugin update 之類外部方式升級後,Setup hook 會提示你跑 npx claude-mem repair,照做即可(hook 永遠 exit 0,不會擋住 Claude Code)。
  4. 記憶壓縮會花錢。 用最便宜的小模型+開啟 tier routing;不要把 CLAUDE_MEM_CONTEXT_OBSERVATIONS 一路往上調。
  5. CMEM 代幣要小心。 repo README 明確寫著 CMEM 是第三方發行的代幣,只是被作者「公開擁抱」當社群催化劑。這與 claude-mem 本體的 Apache-2.0 開源授權是兩件事,遇到任何要求你買代幣才能解鎖功能的說法,請自己判斷真偽。
  6. 繁體中文沒有專屬 mode。 內建語言模式目前是 code--zh(簡體中文)與 code--ja(日文)等;繁體使用者想要繁中 observation,得用 /mode-creator 自建模式,或接受簡中輸出。

站內延伸閱讀

資料來源

  • GitHub:thedotmack/claude-mem(README、CHANGELOG 13.35.0、docs/architecture-overview.md、docs/production-guide.md、docs/codex-provider.md、docs/security.md)
  • 官方文件:claude-mem 文件站(Installation、Configuration、Modes & Languages、Troubleshooting、Architecture)
  • npm:claude-mem 套件頁(latest 13.35.0)
  • GitHub API 查詢:stars/forks/授權/語言/建立與更新時間(2026-10-11)

📬 訂閱 most.tw 電子報

每週精選 AI 工具教學與技術乾貨,直接送到你的信箱。免費、隨時可退訂。

訂閱即表示同意收到 most.tw 電子報,隨時可一鍵退訂。

💬 有問題想討論?加 LINE 聯絡我

歡迎透過 LINE 官方帳號直接留言,我會盡快回覆你的問題。

加入 LINE 好友