用途:对任意文本语料做按相关性排序的内容搜索,适合“哪些文件与某主题相关”“按相关度给文档排序”这类问题,而非精确正则匹配。
主要能力:单一 CLI 工具,每个进程内建内存 BM25 索引;支持本地目录、uploads、project、github.com/owner/repo[@ref] 等多种语料来源;可传多个查询复用同一索引;支持 include/exclude glob 过滤、片段行数、文件大小上限、JSON 输出、交互式 REPL 和统计输出;带会话级磁盘缓存,重复调用同一语料时加载更快。
使用方式:先安装依赖 uv pip install --system --break-system-packages bm25s,然后以 python3 $BM25 ./repo 'csrf middleware' 形式调用,可附加多个查询,或用 --json、--interactive、--top-k、--include、--exclude、--snippet-lines、--max-file-bytes、--stats、--no-cache 等选项。
适用场景:混合代码与文档的语料、非代码笔记与转录文本、需要 BM25 长度归一化打分的检索。若只需符号级代码定位,宜配合其他代码搜索技能。
限制:无 AST 感知,按文件切块;默认仅索引常见文本/代码扩展名,跳过 .git、node_modules 等目录;缓存位于 /home/claude 且随会话失效;除 github.com 语料需下载 tarball 外无额外网络请求。