Skip to content

v0.11.0 - The Retriever

Choose a tag to compare

@eugeniughelbur eugeniughelbur released this 28 Jun 09:07
e8029cd

Search went from broken to hybrid. This release seals a large skill-audit + retrieval sprint: every command was real-tested, keyword search was fixed ~7x, and an optional local-and-private semantic layer now fuses in for meaning-based recall. It also ships the previously-unreleased Hermes, MCP-connector, Telegram-journal, and OKF-export work.

Breaking changes (migration)

Two command consolidations from the audit. Natural-language triggers still route correctly; only the explicit slash forms changed:

  • Calendar: /obsidian-agenda, /obsidian-meeting, /obsidian-schedule, and the old calendar-reconcile are now one command with modes.
    • /obsidian-agenda week -> /obsidian-calendar agenda week
    • /obsidian-meeting last -> /obsidian-calendar meeting last
    • /obsidian-schedule task:... -> /obsidian-calendar schedule task:...
    • calendar gap-check -> /obsidian-calendar reconcile
  • Decisions: /obsidian-adr -> /obsidian-decide --formal (default /obsidian-decide still logs lightweight decisions).

Highlights

Retrieval (the headline)

  • Keyword search fixed ~7x in vault_ops.search (the /obsidian-find + MCP engine): stopword filtering, raw/log de-weighting, and BM25-style sublinear-TF + length normalization. Measured on a 1,000+ note vault: recall@1 0% -> 57%, recall@10 5.7% -> 80%.
  • Optional local semantic search + hybrid (scripts/eval/semantic_search.py): embeddings from a local model (Ollama by default; pluggable to any OpenAI-compatible endpoint), chunk + mean-pool for long notes, cosine + Reciprocal-Rank-Fusion, a privacy carve-out, and a cached index. Fused into search with silent lexical fallback so it never breaks or hangs. Paraphrased recall@10 17% -> 51%; keyword hybrid -> 91%. Off by default; opt-in by setup. OBSIDIAN_SEARCH_SEMANTIC=0 to disable.
  • /obsidian-retrieval-eval - measures search quality (recall@k, MRR) so changes are verified, not guessed.

New commands

  • /obsidian-distill - condense a source into claims, each with provenance back to the exact block.
  • /obsidian-board-hygiene - bulk-triage a stale kanban board.

Bigger platform work (previously unreleased)

  • Hermes Agent native skill build + MCP curator tools + scheduled-agent blueprints.
  • MCP server (integrations/obsidian-mcp-server/) exposing the vault to any MCP client.
  • Telegram journal bot for phone capture + /obsidian-catchup.
  • OKF export (/obsidian-export okf) for Open Knowledge Format interop.

Also changed

  • Folder resolution is spec-driven (references/folder-map.md) - 12 commands no longer hardcode folder names.
  • /research-deep no longer fabricates vault paths during propagation (grounds every target first).
  • /podcast accepts Spotify URLs (bridges to the public RSS feed).
  • /obsidian-save absorbs /obsidian-log (writes the dev-log too).
  • /create-command fast-path skips the interview when the seed is complete.
  • scripts/link_graph.py - /obsidian-visualize no longer reads the whole vault into context.

44 commands, multi-platform, 26 smoke tests green. Full detail in CHANGELOG.md.