跳到主內容

Theme / v15.10.0

Claude-Mem

Claude Code 持久化記憶系統

基礎觀念

v13.29.0~v13.34.2:Work State、非同步 Hooks 與 File Read Gate

🔴 進階|v13.28.0 → v13.34.2 十個 release 的升級重點:agent 的 to-do list 進入 claude-mem、hooks 寫檔即返、SessionStart 從 44 秒到毫秒、File Read Gate 以實測數據回歸,以及 prompt-cache 連續修復。含互動測驗與升級檢查清單。

概述

claude-mem 在 2026-10-03 至 10-06 連發十個版本(v13.29.0~v13.34.2,無跳號)。四條主線:

  1. Work state(v13.29.0):agent 的 to-do list 成為 claude-mem 的一級公民
  2. 非同步化(v13.30.0/31.0):hooks 不等 worker、SessionStart 不等資料庫與網路
  3. File Read Gate(v13.32.0/33.0):擋下整檔 Read、給 observation timeline——帶著實測數據
  4. Prompt-cache 連續修復(v13.30.1/v13.34.2):兩次「自己弄壞快取、自己修好」

一、Work state:agent 的 to-do list(v13.29.0)

“Every session now opens with a work-state section ahead of memory… Claude Code gives Claude 5 models no native to-do tool, so until now nothing recorded what was in progress or what was left when a session ended.”

  • 兩個 MCP 工具:work_state_write 追加一筆到具名清單(欄位上限 2,000 字元)並回覆該清單仍開啟的項目;work_state_read 回傳所有開啟項目(includeClosed 可含已完成/已丟棄)
  • SessionStart 以它開場:規則 + 所有開啟項目(各附最後變更時間),上限 3,000 字元(無開啟項目時 806 字元);記憶體塞進 10,000 字元上限的剩餘空間
  • 存資料庫不存 repo:新的 append-only work_state_entries 表(schema v61)

二、Hooks 不再等 worker(v13.30.0 / v13.31.0)

v13.30.0 把 hooks 從「等 worker 處理」改為「寫檔即返」:

  • observation、file-edit、Stop 與 SessionEnd hooks 把事件寫入 ~/.claude-mem/state/hook-spool/ 後退出——不等 worker、不啟動 worker;7 天未處理移至 expired/
  • SessionStart 讀 worker 預先準備的 context-cache/(記憶變更後約 2 秒刷新)
  • worker 以 GET /api/ready 串流啟動階段(starting → db_ready → routes_ready → ready)

v13.31.0 對付 SessionStart 的兩個等待源(1.2 GB 資料庫實測約 3 秒、最糟 44 秒):

查詢 之前 之後
每專案最新記憶 ~21,700 rows / 63 MB project+date 索引(schema v63),約 4 ms
project-alias 查詢 7,499 pages covering index(schema v64),355 pages / 9 ms

開雲端同步也先用本機預計算 context,pull 在背景跑——session 啟動不等網路。

v13.30.1 修 resume:--continue/--resume//resume 恢復中的對話不再注入新 timeline——重新渲染的啟動 context 會改變 prompt prefix、破壞 prompt-cache 重用。

三、File Read Gate:一次帶著數據的回歸(v13.32.0 / v13.33.0)

這個功能的歷史本身就是教材:4 月首次建置→弄壞 Edit→當天軟化為 allow+context→v12.0.0 出的是軟化版→7 月 hook 非同步化後非同步 hook 根本無法擋任何東西→v13.32.0 以「targeted Read 放行」解決 Edit 問題後回歸,預設開啟。

擋下條件(全部成立):Claude Code 主 session(非 Codex/Kimi/Qwen/subagent)、smart_outline 可解析的程式碼檔(非 markdown/YAML/TOML/JSON)、workspace 內、≥1,500 bytes、最新 observation 比檔案新、整檔 Read、tree-sitter CLI 已安裝。

v13.33.0 的兩個修正:

  • Marketplace 安裝修復:plugin 依賴的 install script 被關閉、tree-sitter CLI 不存在——gate 對每個檔案都「無法解析」、從未擋過任何東西。現在 worker 啟動時背景下載 CLI(clean-room 實測 5 秒到位),釘選 0.26.9 並驗 SHA-256
  • 門檻提高為 32 KB:eval 數據顯示
檔案 Sonnet 5.5 Opus 5.5
49 KB,擋下 −38% −30%
19 KB,擋下(v13.32.0 行為) −6% +20%
19 KB,不擋(本版) −1% 0%

19 KB 檔擋下來對 Opus 反而更貴——所以門檻上調。擋下後 Edit 仍可用:5 次編輯全部以 Grep + 15 行 targeted Read 完成、只改到目標行。

四、Prompt-cache 連續修復(v13.30.1 / v13.34.2)

兩次都是「改變已送出的訊息內容 → prefix 快取失效」:

  • v13.30.1(resume 注入 timeline)——見第二節
  • v13.34.2:v13.29.0 起 worker 在每個請求前修剪 observer 對話史——掉出最近 8 則的 tool-use 內容被就地替換成 stub。從第 5 次 observation 起,每個請求都改動了較早的訊息,OpenRouter/Gemini 等以 prefix 記快取的 provider 無法重用。修復:不再修剪——同 generation 內已送出的訊息原樣重送。代價:generation 更快觸及 size budget、長 session 更常 recycle;成本影響未量測、不做宣稱(release notes 原文明言)
隨堂測驗

為什麼 v13.34.2 說「修剪歷史」會弄壞 prompt-cache?

💡 想先看個提示?

快取以「前面都一樣」為前提。

五、新 provider、host 與其他

  • openai-compatible provider(v13.29.0):對任何 OpenAI /chat/completions 端點跑 observer;presets 含 nvidia-nim、deepseek、groq、together、ollama、lmstudio、vllm、minimax 等;多 key 支援
  • Codex subscription provider:經 Codex CLI app-server 用 ChatGPT 訂閱跑 observer
  • Pi 與 DeepSeek Harness(v13.34.0):mem_search/mem_timeline/mem_get_observations 漸進召回(Pi);DSH 另有 mem_save/mem_context;安裝器改為詢問你實際用的 agents 並預選
  • 雲端同步修復(v13.31.1):Supabase 的 Cloudflare 防火牆依內容擋上傳、worker 誤判 invalid token——server 改壓縮上傳、worker 視 HTML 401/403 為可重試失敗
  • 超大 transcript:Stop hook 從檔尾 bounded chunks 反向讀——2.16 GB 約 1 ms / 27 MB
  • 失敗的 tool call 也成 observations(PostToolUseFailure);新 /handoff skill 寫 HANDOFF.md;plan mode 下 14 個唯讀工具免權限提示

六、升級注意:v13.29.0 的預設值變更

  • CLAUDE_MEM_LLM_TIMEOUT_MS:30,000 → 180,000(3 分鐘)
  • OpenRouter 預設模型 → cohere/north-mini-code:free(舊模型已除役)
  • Subagent observations 預設不進 SessionStart(CLAUDE_MEM_CONTEXT_MAIN_AGENT_ONLY=true)
  • Hooks 不再以 exit 2 阻擋 session;UserPromptSubmit hook timeout 60 → 15 秒
  • Worker 拒絕未知 host 名(DNS-rebinding 防護)
  • Antigravity 用戶需重跑 npx claude-mem install --ide antigravity

隨堂總結測驗

隨堂測驗

小美的 Claude Code 裝了 v13.33.0,她 Read 一個 20 KB 的 TS 檔(已有 observations)。會發生什麼?

💡 想先看個提示?

記住 32 KB 這條線。

動手升級檢查清單

升級 v13.34.2:動手檢查清單

逐項勾選,確認你已完成升級必要的步驟(進度會保存在此瀏覽器)

0 / 5

延伸閱讀