XERJ:Rust 写的 AI 数据检索层,自动索引让智能体读懂你的数据
XERJ:Rust 写的 AI 数据检索层,自动索引让智能体读懂你的数据
你的 AI 编码助手最烧钱的动作,可能不是写代码,而是一遍遍 grep 文件。创建仅三个半月的 XERJ 正在 GitHub Trending 上快速蹿升(5,605 星,单日新增 700+)。它是一个 Rust 写的本地搜索引擎,一条 `xerj autoindex
受控实验:三种智能体,同一批任务
XERJ 最有说服力的材料是一个叫”reference coding”(参考编码)的受控实验:8 个任务、4 种语言、每组 16 次运行,用真实的 claude -p token 计数。三组对照:只靠模型记忆的组花了 260,916 输出 token、11.18 美元,只解出 11/16;用 grep 找参考代码的组花 26,477 token、3.27 美元,16/16 全解;用 XERJ 检索的组只花 9,982 token、1.58 美元,同样 16/16。相比 grep 少 2.7 倍输出 token,相比纯记忆少 26 倍,单个 Java 任务上最高少 278 倍。
项目对适用边界同样诚实:收益被”模型是否已记住该代码”门控——在私有代码、内部系统、小众库和模型截止日期之后的代码上是大胜,在模型早已熟悉的热门公共库上则中性甚至有害。这个限定条件值得所有 RAG 工具抄作业:检索的价值不在检索本身,在模型不知道的那些部分。
图 1
不只是搜索:AST 感知索引与智能体记忆
技术路线上,XERJ 不是简单的全文索引。代码文件用 tree-sitter 解析,按 AST 感知方式索引——符号表加全文,智能体检索到的是”一个函数”而不是”一行匹配”。在 Apache Lucene 代码库(6,113 个源文件、51MB)上单线程进程内提取速度约每秒 1,500 个文件,重索引是增量的:内容字节级未变的文件直接跳过解析,典型的”改几个文件再跑一遍”场景 95% 以上文件不动。搜索引擎本身是 Rust 从零写的单静态二进制,不需要 JVM,README 明确说这不是 ES 的 fork 也不是重实现,而是与官方 ES YAML 一致性测试跑分对打的独立引擎(1366/1369 通过)。
与 ES 正面对标的基准测试里,最近一轮闭环跑分 55 胜 26 平 4 负,包括 1.72 倍摄取吞吐和 1.61 倍更小的磁盘占用。四场败局是同一个短板:高写入速率下的读 p99——项目把失败写成完整报告放在仓库里,而不是从表格里删掉,还附了一句”对你无法复现的数字保持怀疑,包括我们的”。
谁该用它:私有代码库和智能体记忆
应用场景上,最直接的三类用户:一是智能体天天在大型私有代码库里 grep 到烧钱的团队——检索替代通读,token 账单直接受益;二是需要给智能体做持久记忆的开发者,XERJ 内置 `/_memory` 命名空间和 `/.xerj-memory-*` 索引,把”agent 记住这个项目”变成一次查询而不是每次重新喂上下文;三是想把 RAG 落地但不想搭 Elasticsearch 集群 + 嵌入管道 + schema 设计的个人开发者——默认嵌入器是离线词法级的 lexical,神经嵌入是可选项(约 90MB 下载),零配置就能跑。
社区形态也有新意:参与项目的”门票”是跑一遍然后提一个简短的实地报告 PR(CLA 豁免),人和 AI 智能体都欢迎,智能体提 PR 还要声明自己是智能体写的。安全边界写得清醒:`–insecure` 意味着无 TLS 无鉴权、每个能连上端口的调用者都是超级用户,新节点默认只绑 127.0.0.1。推测这类”本地优先、智能体友好”的搜索层会成为编码智能体标配组件——当上下文窗口是最贵的资源,”先索引、再精确取段落”几乎必然是 grep 的终局。
核心观点:如果你的智能体经常在几十万行的私有仓库里翻找参考实现,XERJ 值得今天试一条 autoindex——在模型没背过的代码上,检索比记忆便宜一个数量级,这是目前少有人认真量化的事实。
— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn