Skip to content

v0.2.0 — CLI-first with MLX reranker

Choose a tag to compare

@simonsysun simonsysun released this 16 Apr 06:54
· 75 commits to main since this release

What's new

SeekLink v0.2 is a major architecture refresh: the MCP server is replaced by a CLI + Unix-socket daemon, and an optional cross-encoder reranker brings precision gains on Apple Silicon.

CLI-first architecture

  • MCP server removed. All interaction is now via seeklink search / index / status / daemon.
  • Daemon mode (seeklink daemon): keeps the embedding model resident in memory. First query ~2s (model warmup), subsequent queries ~10ms. Auto-spawns on first use, never auto-exits.
  • Leaner dependencies: mcp[cli] and watchfiles removed. 4 runtime deps instead of 6.

MLX reranker (Apple Silicon)

  • Qwen3-Reranker-0.6B via MLX runs on Metal GPU for cross-encoder precision boosting.
  • Scores each (query, passage) pair with full cross-attention — more accurate than vector similarity alone.
  • ~60ms per pair on M3 Air. Default enabled; disable with SEEKLINK_RERANKER_MODEL="".
  • 100+ languages including Chinese and English. Apache 2.0 license.

Improved search fairness

  • Title weight 3.0 → 1.5: log entries and journal notes now compete fairly with titled permanent notes in search results. Override per query with --title-weight.

Freshness checks replace file watcher

  • Bidirectional mtime scan on every search / status: detects new files, modified files, and deleted files.
  • Warns to stderr instead of silently going stale. No background daemon required.
  • Full vault re-index (seeklink index) now prunes deleted entries from the database.

Security

  • Path traversal protection on seeklink index (rejects ../ escapes).
  • Concurrent daemon startup detection prevents orphaned processes.

Breaking changes

  • seeklink serve is removed. Use seeklink daemon for resident mode, or invoke CLI commands directly.
  • Default title_weight changed from 3.0 to 1.5. Pass --title-weight 3.0 to restore old behavior.
  • mcp[cli] dependency removed. Agents should call seeklink via subprocess or cli_client instead of MCP tools.

Configuration

Variable Default Description
SEEKLINK_VAULT . Vault root path
SEEKLINK_EMBEDDER_MODEL jinaai/jina-embeddings-v2-base-zh Embedding model
SEEKLINK_RERANKER_MODEL mlx-community/Qwen3-Reranker-0.6B-mxfp8 Reranker (empty = disabled)

Stats

  • 182 tests passing
  • 2 rounds of adversarial code review (Codex), 6 findings, all resolved
  • Benchmarked on real bilingual vault (Chinese + English, 50 notes / 505 chunks)