XERJ:自分の数字が水増しだと白状する、コーディングエージェント向け検索エンジン

自分の最も面白い特徴が「自己申告」だというプロジェクトは珍しい。
XERJ はコードとドキュメントのための Rust 製検索エンジンで、コーディングエージェント向けに作られ、Elasticsearch 互換のワイヤプロトコルを持ち、Apache-2.0 ライセンスで公開されている。実際のドル建ての数字を並べたベンチマーク表がある。そしてもう一つ、GitHub のスター数が合成コホートによって約13倍に水増しされていることを認め、引用しないでほしいと頼むメンテナの注記もある。
どちらも時間を割く価値があるし、この二つは繋がっている。
何を狙った道具なのか
コーディングエージェントがコードベースを理解しようとするとき、まず手が伸びるのは grep だ。grep は正直で、パターンに一致する行を返す。ただし grep を使うエージェントは、その一致が意味を持つかどうかを確かめるためにファイルを読まなければならず、ファイルを読むことがコンテキストウィンドウを埋める。大きなファイル一つで、答えの価値を上回るトークンを食うこともある。
XERJ が用意する代わりはローカルインデックスだ。フォルダを指せば、autoindex がファイル種別を嗅ぎ分け、データセットを推定し、ゴミを捨て、データセットごとに別のインデックスを構築する。リポジトリにある実測ログはこうだ。593 個のデータセットを推定、フェーズ A で 1,955 個のジャンク/スキップファイル、続くフェーズ B で 8 ワーカーが 25,329 ファイルを索引化し、158.1 秒で完了、83,103 レコードが有効。
コードは tree-sitter で解析され、すべてを平坦なテキストにするのではなく、シンボルと行番号を保つ。だから xerj def <symbol> はファイルと行とシグネチャを返せる。リポジトリをまたぐ定義ジャンプ——エージェントが最初から欲しかったものだ。
ベンチマークを、慎重に読む
プロジェクトは 8 タスクを 4 言語で、各アーム 16 回ずつ実行し、推定ではなく実際の claude -p のトークン消費を測った。設定は三つ。記憶のみ、grep 駆動、XERJ。
記憶のみは 260,916 出力トークン、$11.18、16 問中 11 問正解。grep は 26,477 トークン、$3.27、16 問すべて正解。XERJ は 9,982 トークン、$1.58、こちらも 16 問すべて正解。
つまり、grep より出力トークンが約 2.7 分の 1、モデルの記憶に頼る場合より 26 分の 1、しかも正解率は変わらない。最良の単一ケース——Java のタスク——では 278 分の 1 だった。ユーザー報告ではエンドツーエンドでおよそ 5 倍。
ここで、この記事を書く価値を作っている但し書き。リポジトリの見出しは「grep よりトークン 40 分の 1」と謳う。本文の統制実験は 2.7 分の 1 と言う。同じ主張ではないし、その差はまさに、ベンチマーク主導のマーケティングが信用できない理由そのものだ。評価すべきは、README 自身が本文の数字を優先するよう書いている点だ。誇張した見出しと、それを訂正する脚注を同時に載せるのは妙な出荷の仕方だが、少なくとも訂正はそこにある。
ローンチ記事が誰も書かない制約
「エージェントのための検索」プロジェクトのほとんどが省いている一文がある。効果は、モデルがそのコードをすでに知っているかどうかに依存する。
非公開の社内コード、ニッチな分野、学習カットオフ以降のコードでは、検索は大きく効く。モデルには本当に推測できないからだ。逆に、モデルが一万回見てきた有名なオープンソースライブラリでは、インデックスは無意味か、むしろ有害ですらある。モデルがすでに知っているものを取りに行くためにトークンを使うことになる。
この一つの制約が、導入の仕方を変える。万能のアップグレードではない。特定の失敗モードへの対処だ。誰もブログを書いていないコードに取り組むエージェント、という失敗モードへの。
--insecure フラグは本物の信頼境界だ
xerj --insecure で起動すると TLS と API 認証が無効になる。ポートに到達できる者は実質スーパーユーザーで、すべてのインデックスを読み、書き、消せる。/_memory 配下のすべてを含めて。開発者一人のラップトップなら問題ないが、共有されるものの上では破滅的だ。
デフォルトはこのフラグよりましだ。新しいノードは 127.0.0.1 にバインドし、非ループバックアドレスへの平文バインドは、server.allow_insecure_network_bind = true を明示しない限り起動を拒否する。プロジェクトはさらに、0.0.0.0 で非セキュアに動かすことが実際の脆弱性だった(LAN 上のクライアントが認可なしに書き込めた)こと、そして修正済みであることを記録している。自分の過去の脆弱性に名前を付けるのは良い習慣だ。
テンプレートにすべき開示
instrumentation のコミットで、メンテナはこう書いている。リポジトリのスターとフォークは合成コホートによって約 13 倍に増幅されていた。実際のインストールデータは薄い——リリースアセットのダウンロードがおよそ 145、完了したインストールがおよそ 28。そして Cloudflare RUM は 7 月に記録を止めたので、サイトにあるゼロトラフィックのグラフは人為的な産物だ、と。
Elasticsearch 互換を名乗り、1,371 の適合性テストを通している(失敗ゼロ、スキップ 3)プロジェクトとしては、よくぞ公開したものだ。これはオープンソースのシグナルが今どういう状態かも教えてくれる。スター数はマーケティングの面であり、グロースループを回す者なら誰でも動かせる。信用に値する数字は、著者が自分の不利益になる形で自ら差し出したものだけだ。
ほかに出会うもの
インストールは curl からシェルへのパイプで、SHA256 を検証し、チェックサム用ツールが見つからなければ続行を拒む。このパターンにしては珍しくまともなガードだ。ビルドは静的 musl + jemalloc、Linux 優先で、Windows は手動インストール。xerj_plan と xerj_map を含む 13 のツールを公開する MCP サーバーがあり、xerj init は 1 コマンドで Claude Code か Cursor を配線する。scalar8 量子化つきの kNN をサポート。マルチノード配備には Helm チャートと compose ファイルが付く。
バージョンは 1.0.0-rc.x で、CLI はまだ動いている。CLA は Apache のものを改変したもので、弁護士のレビューは受けておらず、プレースホルダのフィールドが二つ残っているというメンテナの注記付き。多くのコミットはコーディングエージェントが書き、その旨がラベルされている。透明ではあるし、依存するコードは読むべきだという理由にもなる。
リファレンスコーディング、誰もベンチを取らない用途
README の奥に、一番面白い使い方が埋まっている。解こうとしている問題に最も近いオープンソースプロジェクトにインデックスを向け、参考コードをコンテキストに入れたまま自分の版を書く。
実際のエンジニアリングの多くはそうやって進む。すでに解いたライブラリを見つけ、読み、より狭いものを実装する。下手をするとリポジトリの半分をプロンプトに貼ることになる。うまくやるとは、「このプロジェクトはどこでバックプレッシャを扱っている?」と聞いて、ファイルと行と関数シグネチャを受け取れることだ。
これは上のベンチマークの限界も示す。リファレンスコーディングには他人のリポジトリのダウンロードと索引化が要り、時間とディスクとネットワークを食う。節約が効くのは 2 回目、3 回目のクエリで、1 回目ではない。評価するならタスク単体ではなくセッション全体を測るべきだ。
Elasticsearch 互換という主張
XERJ は Elasticsearch のワイヤプロトコルを喋り、プロジェクトは 1,371 の適合性テストが失敗ゼロ、スキップ 3 で通ったと報告している。それが本当なら、Elasticsearch 向けに書かれたツールはほぼそのまま向け先を変えられ、数百万ドキュメントのためにクラスタ費用を払ってきたチームには出口ができる。
Elasticsearch の SSPL ライセンスへの批判は妥当だ。SSPL は OSI の意味でのオープンソースではなく、検索エンジンの上に製品を載せたい企業にはそれが効く。だが「互換」はスペクトルだ。Query DSL のカバレッジ、アグリゲーション、アナライザの挙動に差が出る。どちら側にいるかを知る唯一の方法は、適合性テストスイートだ。
使うべきか
エージェントが社内コードや大規模なプライベートリポジトリ、どのモデルも見たことのないログや文書を扱うなら、筋は悪くない。ローカルで、Apache-2.0 で、ES 互換、tree-sitter のシンボル認識があり、ベンチマークは正直だ。逆に仕事の大半が公開ライブラリなら、grep とよく整えた ripgrep 設定で十分効くだろうし、維持するものはずっと少ない。
このプロジェクトから一つだけ持ち帰るなら、検索エンジンではなく開示の習慣を持ち帰ってほしい。自分の数字は水増しだと教えてくれる道具は、40 倍すごいと教えてくれる道具より、見る価値がある。
関連記事
大手5社がAIで表紙を作っていた、読者はもう見抜いている
米大手出版社5社のうち少なくとも3社が、公表も著者の同意もなくAIで表紙や販促コピーを生成していたと『Wired』が報道。公式説明と現場の証言は噛み合わず、表紙に名前を刷られた著者が最後に知る。
Character.AI が破産申請、ディズニーは 2000 万ドルで特許を押さえる
Character.AI が破産申請。ディズニーは 2000 万ドルでストーキングホースに名乗り出て、買うのは一部資産と特許ライセンスだけ。1 億 5000 万ドルのシリーズ A の話は、特許と月 800 万〜900 万ドルの損失で終わる。
AI エージェントに画面を見させるのは、もうやめよう——CLI-Anything がすべてのソフトにコマンドラインを与える
エージェントに画面を見させるのはやめる。CLI-Anything は 7 段階のパイプラインで GIMP、Blender、LibreOffice 用の CLI を生成し、テストとドキュメントまで添える。
Claude Codeを「求職パイプライン」に変えた男——69通の応募、20回の一次面接、そして内定
MITライセンスのフレームワークがClaude Codeを求職パイプラインに変えた。69通の応募、20回の面接。面白いのは書く工程ではなく、コンパイルしてPDFを読み、ATSを通す検証の工程だ。