xerj 命令执行与流程引擎

xerj-org/xerj 访问 GitHub ↗
🔤 Rust ★ 6923 ⑂ 0 daily #13 (+1648) 抓取 2026-10-17

一句话简介

基于 Rust 的命令执行与任务流程管理框架,提供轻量、安全的脚本运行和依赖编排能力。

标签

  • Rust
  • 任务调度
  • 命令执行
  • 流程引擎
  • CLI工具

适用应用场景

  • 自动化脚本编排与执行
  • 构建系统中的任务依赖管理
  • CI/CD 流水线步骤控制
  • 命令行工具链批处理

README 中文摘要

项目概述

XERJ 是一个社区维护的本地 AI 搜索引擎,通过自动索引任意文件夹,让编码智能体不再逐文件读取源码,而是按需精准拉取所需代码片段。其核心场景是参考式编程:让智能体克隆并索引与当前任务最相关的开源项目,检索它们的既有实现后再编写自己的代码,从而显著减少 token 消耗。

性能对比:参考式编程

在与 claude -p 的端到端对照实验中(8 个任务、4 种语言、每组 16 次运行):

方案 输出 token 成本 通过率
仅凭记忆 260,916 $11.18 11/16
grep 驱动 26,477 $3.27 16/16
XERJ 9,9982 $1.58 16/16

相比 grep 减少 2.7 倍输出 token,相比纯记忆减少 26 倍,单任务最高达 278 倍。实际开发场景中用户普遍报告约 5 倍降幅。其价值边界在于模型对代码的熟悉程度:对私有、内部、小众或训练截止后的代码收益显著,对热门公共库则基本无差异。

快速安装与启动

一行安装脚本:

curl -fsSL https://xerj.org/get | sh
xerj --insecure --data-dir ./data &      # 启动节点,绑定 127.0.0.1
xerj init                                 # 自动接入 Claude Code/Cursor(MCP + skill)
xerj autoindex ~/my-project               # 索引任意目录
xerj search "how do we rotate the WAL segment"   # 返回带文件:行号的排序段落
xerj def "euler_to_rotationmatrix"       # 跳转定义
xerj gain                                 # 查看实际收益统计

--insecure 表示关闭 TLS 与 API Key 认证,仅适用于单用户开发机。新节点默认绑定 127.0.0.1,绑定其他接口需显式授权。Windows 与离线安装参见官方文档。

文件夹自动索引

autoindex 无需编写 schema 或配置管道,会自动嗅探每个文件并按数据集建立独立索引。源码经 tree-sitter 解析,保留符号与行号,而非纯文本。典型输出:

phase A: 593 datasets inferred, 1955 junk/skipped files
phase B: indexing 25329 files with 8 workers
done in 158.1s, 593 datasets, 83103 records live, 790 junk records

支持格式包括 CSV、JSON、JSONL、XML、YAML、SQLite、PDF、DOCX、PPTX、XLSX、EPUB、Jupyter Notebook、roff man 页、HTML、邮件(.eml/mbox,含 Google Takeout)。Unity 工程享有原生支持:文本序列化的场景、预制体、资源按 GameObject/Component 切分,.meta 文件映射为 GUID 表。

搜索接口

XERJ 兼容 Elasticsearch REST API,可直接使用 Kibana、ES 客户端或 _cat/indices:

curl "localhost:9200/ax-*/_search?q=checkout+error"
curl localhost:9200/ax-orders/_search -H 'content-type: application/json' -d '{
  "query": { "range": { "total": { "gte": 100 } } },
  "aggs":  { "by_status": { "terms": { "field": "status" } } }
}'

向量与混合检索复用 ES 的 knn 与 semantic 语法,默认嵌入器为离线词法特征哈希,神经嵌入模式需下载约 90 MB 模型文件。

MCP 接入

xerj --insecure --data-dir ./data &
xerj mcp        # stdio MCP 服务

MCP 客户端配置:

{
  "mcpServers": {
    "xerj": {
      "command": "/home/you/.local/bin/xerj",
      "args": ["mcp"],
      "env": { "XERJ_URL": "http://localhost:9200" }
    }
  }
}

共暴露 13 个工具,覆盖搜索(全文/语义/向量/混合)、代理记忆(/_memory/{namespace})、知识图谱、计划生成等。开箱即用,可直接对接 Claude Code、Cursor 等支持 MCP 的客户端。

重排序与本地决策

可选的 rerank 阶段会将顶部结果发送至 TypeSafe AI 的 Jev 服务重排,在 FiQA 测试上将 nDCG@10 从 0.24 提升至 0.36。该功能需显式配置密钥且默认关闭。本地等效能力通过 POST /v1/systemone 与 POST /_decide 提供,基于已有标注样本做相似度匹配,无需联网,在 AG News(120k 标注)上标签预测准确率达 92%。

Elasticsearch 兼容性

实现了索引、文档、bulk、搜索、聚合、映射、kNN、scroll、reindex 与 _cat 等端点。当前一致性测试套件通过 1366/1369 用例,剩余差异公开列在 engine/tests/es-compat-yaml。注意 scroll 为有界快照,超出窗口会返回 400 而非静默截断,大结果集应使用 search_after。

基准测试

对比 Elasticsearch 8.13.4 的闭环测试结果:55 胜、26 平、4 负,摄入吞吐高 1.72 倍、磁盘占用小 1.61 倍。唯一落败项为高写入并发下的读 p99 延迟,详情见对应 playbook。代码索引层面,tree-sitter 解析在 Lucene 检出(6,113 文件、51 MB)上单线程达 约 1,500 文件/秒(13 MB/秒),解析占总耗时约 72%。重复索引走增量:内容字节级一致的文件直接复用上次结果,常见编辑后重跑场景中未变更文件通常超过 95%。

典型用例

  • 参考式编程:检索同类项目实现后编写代码。
  • 代码库问答与 RAG:返回带文件:行号的段落而非目录列表。
  • 安全审计:跨文件类型查询 sink 模式、密钥与危险调用。
  • 日志与事件分析:混合格式转为带聚合的索引。
  • 代理长期记忆:/_memory/{namespace} 按语义跨会话检索。

从源码构建

git clone https://github.com/xerj-org/xerj
cd xerj/engine
cargo build --release -p xerj-server
./target/release/xerj --insecure --data-dir ./data

运行一致性测试:

cargo run --release -p es-yaml-runner -- --dir tests/es-compat-yaml/yaml

协议与许可

采用 Apache 2.0 协议。社区贡献以一份简短的实地报告 PR 为核心:人类与 AI 代理均可提交,纯报告类豁免 CLA,无需签署即可合并。代码变更需遵循 CONTRIBUTING.md 并签署 CLA(每个贡献者一次)。

摘要更新于 2026-10-16 00:33:41 · 原文 27460 字符 · md5 63fe592a0dba…