Theme / v3.10.0

MemPalace

本地優先的 AI 記憶宮殿

基礎觀念

v3.10.0:輕量入口、PQL 與 XDG

掌握 v3.10.0 的重點:mempalace-light-mcp 3 工具 MCP server 與 Palace Query Language、host:harness:project 身分的 shared-brain rules、可選 native exact-vector search,以及新安裝遵循 XDG。

概述

MemPalace v3.10.0(2026-09-16,“lighter ways in for agents”)的核心命題:讓 agent 用更低的 schema 成本連上同一座宮殿。三個支柱——mempalace-light-mcp(3 工具 + Palace Query Language)、host:harness:project 身分規則、可選 native exact-vector search;另外新安裝的組態目錄遵循 XDG。

mempalace-light-mcp:3 個工具涵蓋整座宮殿(#2412)

問題

完整版 MCP server 有 45 個工具,schema 總計 41.6 KB。每一個 agent session 都要全額載入這份 schema——對「只想搜尋與協調」的輕量 agent 來說是純粹的 overhead。

解法

新的 mempalace-light-mcp 用三個工具覆蓋相同的能力面:

工具 涵蓋
palace_query 搜尋、taxonomy、KG、graph、diary、drawers、mining、tunnels
palace_exec 寫入與採礦操作
palace_coordinate RFC 003 協調(events、tasks、ack)

查詢用一行 Palace Query Language(PQL)字串:

FIND "oauth" IN backend/auth LIMIT 5

或結構化 dict。schema 約 10.6 KB——完整版的四分之一。

安全性質

  • 寫入走與完整版相同的 sanitizing handlers——drawer 文字維持 verbatim
  • 搜尋排名不變
  • stdio 是 hub-first(優先重用共用 Hub)
  • --read-only 拒絕 palace_exec 與 palace_coordinate

註冊方式

與完整版並存,不是取代:

claude mcp add mempalace-light -- mempalace-light-mcp

身分規則:host:harness:project(#2508)

mempalace rules 的身分模型從單一 --agent 改為三元身分:

--host --harness --project

同一個 agent 框架(harness)在不同機器(host)或不同專案(project)下,如今是不同的身分——fleet 裡的權限與規則可以精確到「這台機器上、這個框架、這個專案」。

配套:--mcp full|light 指定規則要命名哪個工具面;logstream watch --agent 的 state file 預設路徑對 Windows 的 host:harness:project 身分做了 sanitization,不需要私有路徑轉換。

新增 standalone native vector CLI 與可選 native wheels:

  • GitHub releases 附 native wheels 與平台執行檔
  • CLI 接受 JSON embedding vectors(--vector 或 stdin)——不嵌入文字、不需要 Python
  • Native extension 載入為 collection-scoped、釋放 GIL;本地與外部寫入都會 invalidate native cache
  • 複雜 filter 或無 native extension 時 fallback 回 Python
  • NumPy top-k:快取向量範數、排序前先 partition,保留 row-order ties

唯讀搜尋不再與 Writer 競爭

searcher.py 與 _open_search_collection 改以 read_only=True 開啟 collection——SQLite WAL reader mode 連線、不嘗試 schema 初始化、不碰 writer lease 鎖。CLI 與 agent 的搜尋可以與背景 MCP server 或寫入工作真正並行。

組態遵循 XDG(#148)

新安裝的組態解析順序:

  1. $MEMPALACE_CONFIG_DIR
  2. 既有 ~/.mempalace(含 config.json / people_map.json / palace/chroma.sqlite3)
  3. $XDG_CONFIG_HOME/mempalace
  4. ~/.config/mempalace

既有安裝維持 ~/.mempalace 不變;palace_path 預設 <config_dir>/palace。

其他新能力

  • CLI 寫入遵循 daemon write-routing policy:MEMPALACE_CLI_WRITE_ROUTING 或 write_routing.cli 設定 direct / prefer / require(預設 direct,不變);一旦提交給 daemon 就不會在錯誤時直接重跑
  • pgvector fleet 共用 tables:pgvector_shared_namespace 讓不同 palace path 的節點讀寫同一組 tables
  • Hybrid-rank 權重可調:vector / BM25 預設 0.6 / 0.4
  • Drawers 追蹤 last_modified:filed_at 維持建立時間
  • 搜尋結果標明日期來源:content_date_source(filename / frontmatter / body / mtime / unknown),在 mine 時記錄、不為舊 drawer 重建
  • mempalace_kg_timeline 支援分頁:硬編碼前 100 條上限移除
  • Logstream 無 cursor 時預設回最新事件
  • DeepSeek Harness plugin(.dsh-plugin/)

對既有使用者的影響

情境 影響
既有安裝 目錄不變,無需遷移
用 --agent 的自動化腳本 需遷移到 --host/--harness/--project
想省 schema 記憶體的 agent 加掛 light server(與完整版並存)

學習重點

  1. 「同一後座、兩個工具面」是 token 經濟學的實作:45 工具的 schema 每 session 全額載入;PQL 把它壓到四分之一,而且不改寫入路徑——省 token 不需要換後端。
  2. read_only=True 是 WAL 讀寫並行的正確姿勢:SQLite WAL 模式下,讀者本來就不該碰 schema 初始化與 writer 鎖;明確宣告唯讀意圖,資料庫才能給你並行。

來源:v3.10.0