Community编程与开发github.com

XERJ.code — 参考编码

克隆已解决你问题的代码库,进行本地索引,并在编写代码前检索精确实现——让智能体在重试循环中阅读代码片段,而非重新推导算法。

XERJ.code — 参考编码 是什么?

XERJ.code 是一个参考编码技能,专为 AI 编码智能体(如 Claude Code、Cursor 等)设计,旨在解决它们在处理不熟悉的 API、移植算法或重复遇到相同错误时的高成本迭代问题。该技能通过将昂贵的输出 token 消耗替换为廉价的输入 token 检索,显著降低编码成本。其核心工作流程是:克隆包含正确实现的远程仓库,使用 XERJ 工具进行本地索引,然后在编写代码前检索相关代码片段。测量表明,在处理模型未记忆的代码(如私有代码、内部 API、截止日期后的库或小众库)时,该技能比原生 Claude Code 减少 1.5 倍的输出 token 消耗,成本降低 1.3 倍,且不影响正确性。然而,对于模型已记忆的流行公共库,检索则成为开销,纯记忆模式最为经济。该技能完全集成在 `xerj` 二进制文件中,支持通过命令行或 MCP 工具(`xerj_code_search`)进行交互。它支持两种语料库类型:中心语料库(hub corpus)用于公共材料,本地语料库(local corpus)用于私有文件。XERJ.code 还内置了丰富的预定义语料库,覆盖搜索引擎、向量搜索、存储引擎、数据库、消息系统、安全、网络协议、合规文档等数十个领域,并附有详细的成本分析和性能评估案例研究。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clanker25/xerj/tree/main/tools/xerj-code

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

XERJ.code — 参考编码 是做什么的?

一个不了解 API 的智能体会猜测、运行、失败,然后再次猜测。每轮循环都会消耗昂贵的输出 token。本技能用检索来替代循环:克隆包含正确实现的仓库,使用 XERJ 进行索引,在编写代码前检索代码片段。

这种权衡是深思熟虑的。检索消耗的是输入 token,它们更便宜且可缓存;而循环消耗的是输出 token。有关具体计算,以及此权衡在哪些条件下会失败,请参见 COSTS.md。

现状,直言不讳:经过衡量,价值真实但狭窄。 (完整的案例研究,包含真实的 token 和美元数据:docs/case-studies/reference-coding/CASE_STUDY.md,2026-08-05。)

最有意义的比较对象是原生 Claude Code——即使用本身就能 grep 源代码工具的同一个智能体,而不是裸模型。在三种情况下,使用同一个智能体,以唯一客观标准(编译通过 + 通过隐藏测试)进行衡量:

  • 模型无法回忆的、具有合约(contract)的陌生代码(如一个密封(seal)、一个生成式句柄(generational handle)、一个惰性重填(lazy refill)、一种特定的哈希方案——在七个专门构建的库,21 次运行中测量):原生和 xerj 均解决 21/21;xerj 使用 1.5 倍更少的输出 token,成本比原生低 1.3 倍,因为检索替代了 grep。纯记忆模式失败 1/21,并消耗 6.5 倍的成本 进行挣扎。这是胜利,且是决定性的。编译器可以在重试循环中泄露 API 名称,但永远不会泄露合约。
  • 记忆化代码(任何流行的公共 crate——即使是 256 值的表,或 protobuf 风格的 varint):检索是开销。纯记忆模式成本最低;注入大量引用可能是最差的选择,因为模型会重新输出它被喂入的内容。

因此:当参考代码是模型未记忆的代码时使用此技能——你自己的私有/专有代码、内部 API、截止日期后的库或小众库。对于模型已经知道的公共库引用,此技能的成本高于其节省的成本。原生 vs xerj 的差距会随着语料库大小的增长而扩大(grep 拉取整个树到上下文中;检索只拉取一个片段)。

自 #977 起,整个循环已完全集成在 xerj 二进制文件中——xerj corpus add / xerj corpus index / xerj code——外加为没有 shell 的智能体提供的 xerj_code_search MCP 工具。旧的包装脚本(xc-corpus.sh、xc-index.sh、xc.py)已移除;你现有的 ~/.xerj-code 语料库和索引无需更改即可工作(请参阅下面的迁移)。

此仓库的常设语料库(自 2026-08-06 起为强制项)

在 xerj 仓库中,对于非平凡的引擎工作,检索优先于编写是强制要求,而非可选项。下面的每个语料库都在 hub/ 中拥有一个锁定的、经过许可证审查的定义——xerj corpus add --from hub/<name>.json 会以其他人使用的相同提交点重建它:

语料库项目适用场景
xerj-searchlucene, tantivy, meilisearch, quickwit, sonic, elasticsearch全文搜索、BM25、倒排索引、合并策略、拼写容错、段布局、ES 有线协议语义
xerj-vectorqdrant, usearch, instant-distance, hnswlibHNSW 构建、邻居启发式、量化、过滤式 kNN
xerj-storagesled, fjall, redb预写日志、刷新周期、崩溃恢复、压缩、页面分配
xerj-columnarclickhouse列式存储、聚合执行、压缩编解码器、向量化扫描

仅限参考(approach-only)的源码: elasticsearch(AGPL-3.0 / SSPL-1.0 / Elastic-2.0)和 sonic(MPL-2.0)。切勿将其代码复制到 Apache-2.0 的 XERJ 中;对于 ES,粘贴源码还会使该项目“与 Elasticsearch 不共享任何代码”的公开声明失效。meilisearch 的核心是 MIT 许可,但其企业版部分为 BUSL-1.1 许可——请先检查头部/路径。阅读设计,编写我们自己的实现。每个清单的 review.use 字段说明了仓库所属的类别;hub/README.md 解释了这三个类别。

中心语料库与本地语料库

两种语料库位于同一个本地节点上,各自回答不同类型的问题:

中心语料库本地语料库
内容锁定在特定提交点的公共材料:库源码、标准、法规、咨询源仅此机器拥有的文件:你正在工作的项目、私人文件、导出数据
使用时机当你需要无法从记忆中准确引用的细节时当答案在你自己的文件中时
添加方式xerj corpus add --from ./<slug>.json,然后 xerj corpus index <slug>xerj autoindex <folder>
查询方式xerj code <slug> "<问题>" · MCP xerj_code_searchxerj search "<词>" · xerj def "<符号>" · MCP xerj_search

使用 xerj autoindex --prefix <p> 索引的文件夹是上表中的本地路径,而非 xerj code 语料库:xerj corpus list 读取 ~/.xerj-code 并且不会列出 <p>,直到 xerj corpus add 注册该文件夹为止;搜索该文件夹的命令是 xerj search --prefix <p> 和 xerj def --prefix <p>。

对于你已能准确陈述的事实,两者都不使用:对于已记忆的内容,检索是开销(请参阅上面的状态说明)。

中心清单来自 corpus-hub 分支的检出(tools/xerj-code/hub/<slug>.json),或者在没有检出的情况下,来自其原始 URL。corpus index 和 code 都与正在运行的节点通信:

curl -fsSLO https://raw.githubusercontent.com/xerj-org/xerj/corpus-hub/tools/xerj-code/hub/<slug>.json
xerj corpus add --from ./<slug>.json   # 最后一行:下一步:xerj corpus index <slug>
xerj corpus index <slug>               # 结束:语料库 '<slug>' 可搜索:<N> 条记录
xerj code <slug> "<问题>"          # 代码片段前带有文件路径和行号

--from 读取本地文件:v1.0.0-rc.95 不获取 URL,传入 URL 会返回 no such manifest。

为当前项目选择合适的语料库

上述四个引擎语料库是本仓库的常设集合。完整的实时目录可在 hub.xerj.org 浏览,hub.xerj.org/llms.txt 中每个语料库占一行;节点已加载的内容可通过 xerj corpus list --url <node> 查看。每个语料库都锁定到一个提交点,并为每个来源记录其许可证。G7(一个包含五个问题的检索门控(retrieval gate),其测试套件在检索运行之前就已预注册)已对部分语料库进行了评分,但并非全部;每个中心页面都会说明。请根据项目的领域选择,而不是大小:

项目是……从……开始原因
搜索引擎 / 查询引擎xerj-search倒排索引、BM25、合并策略、段布局、ES 有线协议语义
向量搜索 / ANNxerj-vector、faiss、annoyHNSW 构建、邻居启发式、量化、过滤式 kNN;faiss 是参考 ANN 实现,annoy 是森林变体
存储引擎 / KVxerj-storage、duckdb、rocksdb、leveldb、badger、lmdb、pebble、valkey-src预写日志、崩溃恢复、压缩、页面分配;LSM-vs-B 树;pebble 用于 L0 子层级和范围删除语义;valkey 用于内存 KV 服务器的数据结构
分析 / 列式存储xerj-columnar、duckdb、arrow-rs、parquet-format、iceberg列式布局、编解码器、向量化扫描、表格式
数据库服务器sqlite-src、postgres-src解析器、规划器、执行器——该领域研究最多的两个代码库
消息传递 / 共识kafka-src、rabbitmq、nats-server、etcd-src、raft-rs、dragonboat日志压缩、传递语义、法定人数/租约正确性
监控 / 时序influxdb、prometheus-srcTSDB 布局、降采样、抓取/摄取路径
TLS / 加密 / 隧道rustls、openssl、s2n-tls、boringtun手写现代 TLS、加固先例、恒定时间模式
QUIC / HTTP / 网络quinn、nghttp2、curl-src、libuv、caddy、envoy、nginx协议状态机、连接池、事件循环
压缩 / 序列化zstd、lz4、brotli、zlib-ng、snappy、protobuf、flatbuffers、capnproto、msgpack-c格式设计、分块/熵编码、零拷贝模式
密钥 / 配置服务openbao带有封缄/解封(seal/unseal)、租约机制的 KV 存储
API 设计审查rust-api-guidelines、msft-api-guidelines、zalando-restful-api-guidelines、google-eng-practices命名、错误形式、版本控制;Zalando 的指南是条款最完整的 REST 策略集,google-eng-practices 拥有代码审查理论
协议/规范合规openapi-spec、graphql-spec、json-schema-spec、w3c-css、whatwg-specs、ecma262、nats-protocol、kafka-protocol用于判断实现的规范性文本——HTML/DOM/URL 实时标准、ECMAScript 语法、有线协议框架
在阅读 RFC 前定位正确的 RFCietf-rfc-abstracts每个 RFC(共 9,015 条)一条记录:编号、标题、日期、摘要——无需拉取全文即可了解“哪个 RFC 实际涵盖了 X”(TLP-5.0)
生产运维 / SREgitlab-runbooks、school-of-sre、tldr-pages、mozilla-ssl-configs、twelve-factor真实的故障处理手册、完整的 SRE 课程大纲、按工具分类的命令语法、已部署的 TLS 配置、部署原则
管理 Unix 系统freebsd-handbook、openbsd-faqrc/ZFS/jail/网络程序、OpenBSD 的规范常见问题解答
针对托管 API 进行文档编写github-api-descriptiongithub.rest 的 OpenAPI 描述——字段语义、枚举值、预览头
数据存储操作文档valkey-docs、etcd-docs命令语义、配置选项、调优指南——各数据存储的运维参考
遥测 / 可观测性集成otel-proto 的 semconv 部分(候选——G7 2/5,暂停于语义轨道)OpenTelemetry 语义约定,用于属性名称;词汇轮次未能弥合释义到规范性散文之间的鸿沟
国际化unicode-cldrCLDR 区域设置数据结构、日历/数字/日期骨架
Rust 依赖的安全审查rustsec-advisories、rust-vulns 包(xerj corpus add --from 配合中心配方)每条公告一条文本记录(共 1,963 条:RustSec + crates.io OSV,零别名重叠):受影响版本、修复的版本、271 条记录的受影响函数符号列表;该包仍是修补对挖掘的载体(#1111 的缺陷类研究)
Python 依赖的安全审查pysecPYSEC 公告记录,包含受影响和修复版本、CVE/GHSA 别名
跨生态系统依赖审计ghsa-db经 GitHub 审查的公告(36,263 条文本记录):CVSS 向量、补丁范围、受影响的跨 npm/PyPI/Go/Rust/maven 等的包
Go 模块的安全审查go-vulndbGo 团队整理的公告(4,577 条):受影响的包和符号、修复版本、GO ID 及 CVE 别名
正则表达式拒绝服务先例redos-precedent634 条特定于正则表达式的 ReDoS 公告(CWE-1337/185 类,非裸 CWE-400):利用的输入、受影响的函数、有界重写
加密误用先例crypto-misuse-precedent721 条 CWE-326/327/328/329/347 类公告:弱密码、硬编码密钥、nonce 重用、签名验证绕过、填充预言、ECB
漏洞 / 弱点分类mitre-cwe、mitre-capecCWE 弱点定义和 CAPEC 攻击模式,ID 级别
对手技术 / 检测工程mitre-attckATT&CK v19.2 每条技术记录:技术 ID、策略、检测数据源、过程示例(企业/移动/工控;软件和组对象不在范围内)
补丁优先级排序cisa-kev已知被利用漏洞目录,每条 CVE 一条记录——野外利用状态、强制性修复日期
Web 应用程序安全操作指南owasp-cheatsheetsCheat Sheet 系列中按主题划分的应对措施手册——会话管理、认证密钥、错误处理、上传处理
规划 Web 应用渗透测试owasp-wstgWeb 安全测试指南 v4.2 目录:每个测试的目标和方法,按类别组织(认证、授权、会话、输入处理)
处理活跃攻击活动cisa-alertsCISA 公告的入侵指标、所需行动和缓解措施(2025-05..2026-10 窗口)
查询终端可见性osquery-config-examples实际部署的 osquery 包和计划查询形状
非软件领域(税务、雇佣、英国法律)ecfr-title-12、ecfr-title-29、ecfr-title-26、uk-legislation合并的现行法规,每个文件一个章节
航空(联邦航空条例,FARs)ecfr-title-1414 CFR 每个章节一个文件:能见度最低要求、应答机空域、检查间隔、航行优先权
海上避碰规则navrulesCOMDTINST M16672.2D 每条规则文本——碰撞危险、狭窄水道、交叉局面、灯光和声音信号
可访问的 UI 组件govuk-design-systemGOV.UK 组件选项和可访问性标准——确切的选项语义(maxwords 与 maxlength、分隔符文本、焦点加载行为)
制药 / 药品标签dailymedFDA 标签章节:适应症、禁忌症、给药时机
临床治疗指南cdc-clinicalCDC 性传播感染治疗方案和剂量、梅毒脱敏治疗、麻疹临床体征
餐饮服务安全fda-food-codeFDA 食品法典 2022 条款:手接触表面、作为公共卫生控制的时间、日期标记、裸手准备
交通控制设备mutcdFHWA MUTCD 第 11 版(修订版 1):标志和信号设置条件、标线、工作区典型应用
建筑工程(英格兰)uk-building-regs2010 年建筑法规(SI 2010/2214)每条条款:Parts A–P 的要求,威尔士变异

相关技能