
Freshvault
io.github.KIOKO-LAB由 GitHub 帳號 KIOKO-LAB 發布v0.4.0更新於 Oct 24, 2026
Local semantic search over your Obsidian vault - always fresh, never reindex.
概覽
Freshvault 讓助理對 Obsidian 筆記庫進行本機語意搜尋,索引自動保持最新,不必手動重建。
- 可以做什麼
- 對筆記進行語意搜尋,可依資料夾、標籤與修改時間限定範圍,並提升精確標題比對,每則筆記最多回傳兩個片段。取得完整筆記及其在筆記庫連結圖中的反向連結與出鏈。查看索引新鮮度:筆記與片段數量、被排除數量、上次同步時間與監看器狀態。三個工具皆為唯讀。
- 適用情境
- 適合把筆記存放在 Obsidian 筆記庫、希望助理據此回答問題的人,尤其是韓語、日語等非英語內容,且不想執行索引或監看指令。
- 執行需求
- 透過 npx 執行的本機程序,需要 Node 20+ 以及執行中的 Ollama 與 bge-m3 嵌入模型(由 setup 精靈下載)。筆記庫路徑由環境變數 FRESHVAULT_VAULT 或 setup 指令設定。也可改用相容 OpenAI 的嵌入端點,透過 FRESHVAULT_EMBED_API 與 FRESHVAULT_EMBED_URL 設定,需要驗證時使用 FRESHVAULT_EMBED_KEY。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Freshvault,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
freshvault
[CI] [npm] [MCP Registry] [node]
Your Obsidian vault is Claude's memory. Always fresh, always local.
Every other vault-search MCP makes you re-run an index command, babysit a watch terminal, or click "Update Index" in a web UI. freshvault watches your vault from inside the MCP server: edit a note, and Claude sees it seconds later. Automatically. Forever.
- 🔄 Never reindex — the file watcher lives in the server process; boot catch-up absorbs offline edits
- 🔒 100% local — embeddings via Ollama (
bge-m3), your notes never leave your machine - 🌏 Multilingual by default —
bge-m3handles Korean, Japanese, and 100+ languages that English-only defaults fail on - 🎯 Benchmark-driven retrieval — unconditional BM25 fusion wrecked Korean paraphrase queries (82.5% → 47.5% top-1), so it's off; pure dense missed identifier queries outright (57.1%), so it's not gone either. Lexical scoring is gated on code-like query tokens: paraphrase 82.5% → 82.5% (identical), identifiers 57.1% → 100% — receipts
- 🪶 No vector DB, no Docker, no Python — JSON metadata + a Float32 sidecar, plain Node, source you can read in one sitting
- 🧠 Chunking that respects sentences — YAML frontmatter stripped, splits on paragraph/sentence boundaries (CJK-aware)
Install
Prerequisites: Node 20+ and Ollama.
That's it. The wizard detects your Obsidian vault, pulls the embedding model, builds the index, and registers with Claude Code. There is no step 2, and there is never a step 2: no index command to re-run, no watch terminal, no background service.
Manual install (Claude Desktop / Cursor / Windsurf)
Claude Code one-liner:
Use
Just ask Claude about your notes:
"Search my notes for what I wrote about cache eviction strategies"
Three tools, all read-only:
Scoped queries competitors gate behind settings or paywalls work per-query here:
"Search my notes tagged #project modified after June for the budget discussion"
How it works
- Incremental: only changed/deleted notes are re-embedded (mtime+size diff), debounced 4s
- Safety net: a 60s mtime sweep catches events the watcher misses (network drives, atomic-rename editors)
- Multi-client safe: first server process becomes the writer (heartbeated lock); others are readers that hot-reload and promote themselves if the writer dies
- Transactional: an embedding-server outage mid-index can never lose or corrupt notes
- Scale: vectors live in a packed Float32 sidecar (fast startup, compact); brute-force cosine over thousands of chunks is milliseconds. Honest note: search is still linear — sub-100ms into tens of thousands of chunks, but this is not a vector DB replacement for huge corpora
Multiple vaults
Register one server per vault — index files are kept per-vault automatically:
Other embedding servers (LM Studio, LiteLLM, OpenAI-compatible)
Anything speaking /v1/embeddings works; FRESHVAULT_EMBED_KEY for authenticated endpoints (never written to the config file).
Configuration
Everything works with zero config after setup. Override when needed:
Commands: setup · serve (default) · index (manual escape hatch) · status
Ignore patterns
Patterns follow gitignore semantics, matched against vault-relative paths:
- A slash anywhere but the end anchors the pattern to the vault root. A trailing slash only means "directory" — it does not anchor.
*and?never cross a/.**crosses directories only as a whole path segment (**/x,x/**,x/**/y); glued inside a segment it collapses to a single*, as in git.- Matches end on a segment boundary —
Templatesnever matchesTemplatesOld. !negation and character classes are not supported; such patterns match nothing.FRESHVAULT_IGNOREis comma-separated, so a pattern cannot contain a comma.
Behaviour change since v0.3.0. v0.3.0 treated a trailing slash as a root anchor, so
Templates/excluded only the vault-rootTemplates/and silently indexed every nested one — no warning, just a quietly polluted index. Patterns shaped likeTemplates/,/Templates,**/xanda/**/bnow exclude more than before (/Templatespreviously matched nothing at all). Conversely,**glued inside a segment (Daily**md) no longer crosses/. Runfreshvault statusafter upgrading and compare the excluded count if it matters to you.
Benchmark
Two retrieval micro-benchmarks ship in-repo (node scripts/bench.mjs): ko-bench (30 Korean notes, 40 paraphrase queries) and id-bench (38 technical notes, 14 identifier queries). Both run under three scoring modes — dense, hybrid-always, and the shipped gated mode — and the script checks the no-regression contract itself. Results and the bge-m3-ko (85.0% top-1, 634MB) import guide in docs/ko-bench.md.
Roadmap
- MCPB bundle for one-click Claude Desktop install
- Reranking pass for large vaults
- PDF text extraction at index time
License
MIT © Kioko Lab
來源:README.md,提交 dc6c610
工具
0版本歷史
1- v0.4.0最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分