~/projects / lore-vault
active 2026—

Lore Vault - Coding Agent 自架記憶服務

— 給 Claude Code 等 coding agent 使用的自架記憶服務。以專案為範圍保存決策與交接筆記,透過 SQLite FTS5 與向量混合檢索找回,提供 MCP 端點、Web UI 與 Docker 一鍵部署。

給 Claude Code 等 coding agent 使用的自架記憶服務。以專案為範圍保存決策與交接筆記,透過 SQLite FTS5 與向量混合檢索找回,提供 MCP 端點、Web UI 與 Docker 一鍵部署。

STATUS
active

專案總覽

專案簡介

Lore Vault 是給 coding agent(Claude Code 與其他 MCP 客戶端)使用的自架記憶服務。agent 把架構決策、踩過的坑與交接事項寫成筆記,之後在同一個專案內透過關鍵字加語意的混合檢索找回來。它取代了我先前以 Open Notebook 搭建的專案記憶系統,一個 docker compose 就能啟動 HTTP API、MCP 端點、Web UI 與備份。

核心理念

  • 以專案為範圍:vault 由 git remote 自動對應,範圍在儲存層強制執行,跨專案查詢必須明示

  • 先索引、後全文:查詢只回標題與摘要,需要時才取全文,不淹沒 context window

  • 空間分離:開發(dev)、世界觀(lore)、私人(personal)三個 space 互不混用

  • 可降級:服務不可達時,本機殼仍能以唯讀快照提供關鍵字檢索


我的職責

作為本專案唯一開發者,我負責:

系統架構設計

  • 設計 space → vault → 筆記/文件段落的分層資料模型與 git remote 對應規則

  • 規劃 SQLite FTS5 關鍵字與 embedding 向量的混合檢索管線

  • 設計 HTTP 與 stdio 兩種 MCP 接入方式共用同一份工具定義

核心功能實作

  • 檢索:FTS5 與 bge-m3 向量以 RRF 融合排序

  • ask:把檢索結果交給模型整理成逐點回答,並機械檢查引用的筆記 id

  • 文件:上傳 PDF、Word、PowerPoint 後在背景切段並與筆記一起檢索

  • 記憶管線:以 hook 收集 agent 工作片段,每日蒸餾成概念並在工具呼叫前注入

  • 營運:doctor 對帳檢查、VACUUM INTO 驗證備份、啟動時自動 schema 遷移

  • Web UI:搜尋、瀏覽與編輯筆記,管理文件與 vault,健康檢查與維護


核心功能

1. 專案範圍記憶

  • vault 依 git remote 正規化為 key,支援改名別名

  • 所有讀寫都帶 vault,跨 vault 查詢必須明示

2. 混合檢索與 ask

  • SQLite FTS5 關鍵字加 Ollama bge-m3 向量,回傳受字數預算控制

  • ask 以檢索結果產生附來源的回答,定位為參考而非唯一事實來源

3. MCP 接入

  • 內建 Streamable HTTP 端點 /mcp,一行 claude mcp add 即可接入

  • 本機 stdio 殼可自動從工作目錄推算 vault,並在服務離線時降級為本地快照

4. 自架與發行

  • Docker Compose 一鍵啟動,可選 Ollama 與 cloudflared 隧道 profile

  • 安裝 kit 支援 --update、--dry-run、--rollback,方便在其他機器接入


使用技術

後端

  • Python:主要開發語言(uv 管理)

  • FastAPI + Uvicorn:HTTP API

  • SQLite FTS5 + NumPy:關鍵字與向量檢索

  • MCP SDK:HTTP 與 stdio 兩種接入

AI / 檢索

  • Ollama(bge-m3):1024 維 embedding

  • OpenAI API:摘要與 ask 回答

前端與部署

  • Vite + TypeScript:Web UI,Playwright 端對端測試

  • Docker Compose:自架部署


專案狀態

目前版本:v0.1.1

  • ✅ 已取代舊專案記憶系統,舊資料 1455 則匯入並對帳一致

  • ✅ 混合檢索、ask、文件檢索與 Web UI 上線

  • ✅ 記憶管線每日蒸餾與概念注入運作中

  • ✅ Docker 自架發佈與安裝 kit

  • 🔄 持續改善檢索品質與多機接入流程


開發挑戰與成就

1. 中文查詢的全文檢索

挑戰:FTS 把中文問句組成整句片語,導致關鍵字幾乎無法命中。

解法:修正查詢組裝方式,並建立固定題組做回歸測試。

成果:59 題回歸的 top-10 命中率由 72.5% 提升到 85%。

2. 不中斷的系統切換

挑戰:要把日常在用的舊記憶系統換掉,同時不能遺失任何筆記。

解法:先匯入再逐筆對帳,舊系統保留觀察期作為退路。

成果:1455 則筆記完整遷移,所有 agent 與專案設定改指新服務。

3. 保護 context window

挑戰:記憶越多,agent 一次查詢吃掉的 context 越多。

解法:檢索只回標題與摘要並套用字數預算,全文按需取用。


未來規劃

  • 擴充概念層的檢索支援

  • 讓世界觀與創作資料也能放進 lore space 管理

  • 通用化多機安裝流程


專案亮點

技術創新

  • ✅ 儲存層強制的專案範圍,跨專案查詢必須明示

  • ✅ FTS5 與向量以 RRF 融合的混合檢索

  • ✅ 服務離線時的唯讀快照降級

開發品質

  • ✅ 固定題組的檢索回歸測試

  • ✅ 驗證式備份與啟動時 schema 遷移


技術棧:Python、FastAPI、SQLite FTS5、Ollama(bge-m3)、MCP、Vite + TypeScript、Docker 授權:MIT 目前階段:v0.1.1,日常使用中

相關作品