All notable changes to seekx are documented here.
Format follows Keep a Changelog. Versions follow Semantic Versioning.
- Documentation: aligned
README.zh-CN.md,README.ja.md, andREADME.ko.mdwith the EnglishREADME.md(structure, MCP / OpenClaw sections, CLI table, roadmap, packages tree).
- All published packages (
seekx,seekx-core,seekx-openclaw): version bump to 0.3.1 withseekx-coredependency range^0.3.1where applicable.
seekx-openclaw (new package — 0.3.0)
- First published OpenClaw memory-backend plugin: hybrid BM25 + vector search with reranking and CJK support.
- Ships
skills/directory andopenclaw.plugin.jsonfor OpenClaw host integration.
seekx-core
--min-score/min_result_scorethreshold supported by the search pipeline (post-fusion filter).- Reproducible benchmark workflows with lock-tolerance helpers (
bench/).
seekx (CLI)
seekx searchaccepts--min-score <n>to filter out low-confidence results.seekx onboardsupports non-interactive mode (--yes/ env-driven) for automated setup.--versionand MCP server version are now derived frompackage.jsonat runtime.
seekx-core
- Replaced
bun:sqlitewithbetter-sqlite3so thatseekx-corecan be loaded by Node.js runtimes (e.g. viajiti), removing the hard Bun-only constraint. - Removed top-level
awaitindb.tsfor compatibility with Node/jiti loaders.
seekx-openclaw
- Hardened runtime startup and file-access error paths.
- Removed
openclawpeerDependency(not on npm registry, caused install failures). - Replaced
workspace:*with the publishedseekx-coreversion in the published tarball.
seekx/seekx-core:README.mdin each published package directory for npm package pages.seekx/seekx-core:descriptionandkeywordsinpackage.jsonfor npm discovery and listing metadata.
seekx-core: Released 0.2.1 (patch bump with the npm metadata above).
seekx(0.2.3): Published tarball listedseekx-coreasworkspace:*, which npm clients cannot resolve from the registry; dependency is nowseekx-core: ^0.2.1. Avoidseekx@0.2.2for installs from npm; use 0.2.3 or later.
- CLI (
seekx): npm registry rejected a.tsfile asbin; added abin/seekx.jsshim sonpm install -g seekxinstalls a working executable.
Core (seekx-core)
- HyDE (Hypothetical Document Embeddings): generate a hypothetical answer and use its embedding as an additional vector retrieval pass.
- Weighted RRF: original query results receive higher weight (2×) than expanded/HyDE results (1×), with top-rank bonus for better fusion quality.
- Position-aware rerank blending: combine RRF ranking with cross-encoder scores instead of relying on reranker alone.
- FTS5 snippet extraction: return highlighted keyword-in-context snippets from full-text search results.
- Persistent LLM response cache with configurable TTL, stored in SQLite alongside the index.
- Dynamic collection sync in watch mode: automatically detect added or removed collections without restarting the watcher.
- Normalized result score filtering: post-fusion threshold (
min_result_score) to suppress low-confidence results.
CLI (seekx)
seekx onboardnow starts a background real-time indexer after initial setup so the index is ready immediately.- Progress reporting for both indexing and search operations.
- Improved search output formatting across text, JSON, and Markdown modes.
- Refactored CLI command actions and output formatter for consistency.
- Expanded query parsing is now more robust against malformed or empty LLM responses.
- Rerank document mapping: correctly associate reranker scores with their source chunks.
- Global
--jsonflag now propagates to all subcommands. - Configured search defaults (
default_limit,rerank,min_score) are now honored correctly. vec_chunkstable cleanup on document deletion; hybrid search mode semantics when vector index is unavailable.- Watcher per-path indexing no longer skips files in subdirectories.
- Chunk splitting now aligns on word boundaries; overlap windows respect word boundaries to avoid mid-word cuts.
Core (seekx-core)
- SQLite-backed document store with FTS5 full-text search and
sqlite-vecvector search. - Chinese-language FTS5 support: pre-tokenization at index time and query expansion at search time using
@node-rs/jieba. - Hybrid search pipeline: BM25 + vector KNN → Reciprocal Rank Fusion (RRF) → optional cross-encoder reranking → score normalization (top result = 1.0).
- Markdown-aware chunker: heading-path prefix in embedding content, ~900-token target with 15 % overlap.
- Remote API client (
SeekxClient) for OpenAI-compatible embed, rerank, and LLM expand endpoints; all methods degrade gracefully on failure. - L2 normalization of embeddings before insertion so that
vec0L2 distance equals cosine distance. - Two-level change detection:
mtimefast-path, then SHA-1 hash for accurate deduplication. indexDirectoryusing Bun's nativeGlobAPI for recursive file discovery with ignore patterns.- Real-time file watcher (
chokidarv4) with configurable debounce and incremental re-indexing. - YAML configuration (
~/.seekx/config.yml) with env-var override, per-service and top-level provider tiers, andwriteConfigKeyfor targeted updates.
CLI (seekx)
- 13 commands:
onboard,add,collections,remove,reindex,search,vsearch,query,get,watch,status,config,mcp. seekx onboard: interactive setup wizard with six provider presets (SiliconFlow, Zhipu AI, Jina AI, OpenAI, Ollama, Custom) and live API health checks.seekx status: full index statistics including embedded-chunk coverage, embed model name, and embedding dimension.seekx search/vsearch/query: structured output in human-readable,--json,--md, and--filesmodes.- MCP server (stdio transport) exposing four tools:
search,get,list,status. - Global
--jsonflag, defined exit codes, and error conventions.
- Requires Bun ≥ 1.1 (runtime).
- Vector search requires
sqlite-vecand a SQLite ≥ 3.41 (Homebrew on macOS).seekx onboardguides users through this setup. - Multi-tenant support, Feishu/DingTalk connectors, and multi-modal indexing are planned for future releases.