mcpField
C
CompareGraph

CompareGraph

ローカル
github.com開発ツール04 日前に更新

CompareGraph について

CompareGraphは、ローカルにクローンした複数のリポジトリーを機能分類に対応付け、コード引用付きの比較表を作成します。プロジェクトの機能を評価するチームやコーディングエージェント向けです。リポジトリーの実行やモデル呼び出しは行わず、証拠要件と追跡可能な追記型記録で結論を管理します。

主な機能

  1. 01複数リポジトリーのコードグラフ構築
  2. 02機能分類に基づく比較表の作成
  3. 03解決可能なコード引用を主張に要求
  4. 04引用の古さや変更の確認
  5. 05主張と判断の追記型記録
  6. 06MCPサーバーの登録とエージェント設定

活用シーン

  1. 01競合や関連プロジェクトの機能比較
  2. 02複数プロジェクトの技術デューデリジェンス
  3. 03未知の分野の機能分類の作成
  4. 04エージェントに引用可能なプロジェクト情報を提供

MCP 対応

エージェントがリポジトリー比較データを参照するためのMCPサーバーを提供します。`setup`は検出したエージェントへの登録とワークスペースルールの追加に対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"massrelayai-comparegraph": {
"command": "npx",
"args": [
"-y",
"@massrelayai/comparegraph"
]
}
}
}
起動コマンドnpx -y @massrelayai/comparegraph

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@massrelayai/comparegraph0.1.3

ツール

18

掲載時のツール一覧 · 3 日前に更新

パラメーター型必須説明
limitintegerいいえページサイズ。デフォルトは 50
cursorstringいいえ前のページから返された不透明なカーソル

詳細

CompareGraph

複数のコードリポジトリを機能ごとに比較し、どれに何があるかを、それを示すファイルと行番号とともに確認できます。

CI リリース ライセンス:Apache-2.0、無料

始める · 使い方 · コマンド · MCP ツール · よくある質問 · トラブルシューティング · レポート

自分のプロジェクトや他の人のプロジェクトなど、関心のあるプロジェクトのクローンを手元に置き、比較したい機能を書き出します。CompareGraph はすべてのクローンを読み込んでひとつのグラフにまとめ、あなたやコーディングエージェントが、リポジトリごとの機能を一覧表に記入するのを支援します。各項目の回答は has、partial、none のいずれかで、コードまたは何も見つからなかった検索結果を示します。無料のオープンソース(Apache-2.0)ソフトウェアで、マシン上で動作する単一のプログラムです。クローンを読み込むだけで、実行することはありません。また、エンジンが AI モデルやネットワークを呼び出すこともありません。

4つのリポジトリ、code-review-graph、srclight、codanna、CodeGraphについて、4つの機能を比較した表です。4つすべてが全文検索と埋め込み検索に対応しています。モジュールコミュニティはcode-review-graphとsrclightにあり、CodeGraphでは一部対応、codannaでは非対応です。差分を考慮したレビューはcodanna以外のすべてにあります。ひとつのセルにはcode_review_graph/communities.py::detect_communitiesというコード引用があり、別のセルには何も見つからなかった検索結果が記録されています。各セルはfixtures/gold-mapにあるマッピングの正解データに基づく、合意済みの判定です。

10分で確認できること: インストール後、6つのコマンドを実行すると、小規模なサンプルについて同じ種類の表が画面に表示されます。自分のクローンで試す場合は、ビルドを追加してください。私たちのホストでは、85ファイルで0.82秒、797ファイルで6.20秒でした(計測レポート)。


始める

ランタイム不要の単一バイナリです。Linux x64およびarm64、macOS arm64およびx64、Windows x64に対応しています。それ以外の環境では、ソースからビルドしてください。

1. バイナリをインストールする

インストールスクリプトは、プラットフォーム用の comparegraph バイナリを1つダウンロードし、リリースの SHA256SUMS と照合して、~/.local/bin にコピーします。sudo は使用せず、それ以外の変更も行いません。必要であれば、先に内容を確認してください。

# macOS / Linux: fetch the script from the v0.1.3 tag, read it, then run it
curl -fsSLO https://raw.githubusercontent.com/MassRelayAI/comparegraph/v0.1.3/scripts/install.sh
less install.sh
COMPAREGRAPH_VERSION=v0.1.3 sh install.sh

# the same in one line, script from main, latest release
curl -fsSL https://raw.githubusercontent.com/MassRelayAI/comparegraph/main/scripts/install.sh | sh

# Windows x64 (PowerShell)
irm https://raw.githubusercontent.com/MassRelayAI/comparegraph/main/scripts/install.ps1 | iex

Windows:%LOCALAPPDATA%\Programs\comparegraph に書き込み、ユーザーの PATH に追加します。新しいターミナルを開いてください。COMPAREGRAPH_INSTALL_DIR でバイナリの保存先を変更できます。スクリプトが確認するのはチェックサムのみです。v0.1.2 以降のリリースにはビルド来歴のアテステーションも付属していますが、スクリプトでは確認しません。gh attestation verify <asset> -R MassRelayAI/comparegraph を使って、ご自身で確認してください(リリースノート)。

シェルへのパイプなしでインストール:Homebrew、npm、手動、ソースから

Homebrew、macOS および Linux:brew install massrelayai/tap/comparegraph。

npm、Node 18 以降を搭載した5つのプラットフォームすべてで利用可能(パッケージは同じリリースバイナリをラップしています):npx -y @MassRelayAI/comparegraph --version、または npm i -g @MassRelayAI/comparegraph。

手動: 最新リリースから comparegraph-<platform> と SHA256SUMS を取得し、sha256sum -c --ignore-missing SHA256SUMS で確認します。Rust 1.85 以降が動作する環境であれば、ソースから次のようにインストールできます:cargo install --locked --git https://github.com/MassRelayAI/comparegraph comparegraph(--locked は重要です。crates.io にある Perl 文法の最新リリースは yank されており、解決できるのは Cargo.lock のみです)。

2. サンプルで動作を確認する

サンプルリポジトリと機能の例一覧はバイナリではなくこのリポジトリに含まれているため、最初のコマンドでそのコピーをダウンロードします。任意のフォルダーで次のコマンドを実行してください。隣り合う2つのフォルダー comparegraph と cg-try が作成されます。

git clone --depth 1 https://github.com/MassRelayAI/comparegraph   # the sample lives here
mkdir cg-try && cd cg-try                                           # your workspace
comparegraph add ../comparegraph/fixtures/typescript --name tsfix   # read, never run
comparegraph build tsfix                                            # parse it
comparegraph family add ../comparegraph/families/example-code-graph-tools
comparegraph map tsfix example-code-graph-tools                     # places to read
comparegraph claim tsfix symbols.extraction has --author me --at src/util.ts:11-11
comparegraph matrix example-code-graph-tools                        # the table

表では、symbols.extraction に has が、残り9つの機能には -(未回答)が表示されます。どのコマンドも1秒以内に完了します。使い方では、各手順の実際の出力を確認できます。

3. 独自のリポジトリを比較する

サンプルパックにはコードグラフのツールが記述されています。独自の分野で使う場合は、小さな rows.md を作成して、機能一覧を自分で記述します。まずは3行あれば十分です。

comparegraph add ../your-lib --name mine --as-root   # any clones on your disk
comparegraph add ../their-lib --name theirs
comparegraph build mine && comparegraph build theirs
comparegraph family propose libs --repos mine,theirs # optional draft

family propose は機能ではなく、共有語の一覧(name、file、extract、...)を下書きします。重要な語を選び、それぞれを定義して、ファイルを families/libs/rows.md として保存してください。

---
family: libs
description: the three features I want to compare
---
| id | group | feature | definition | counts_as_has | tier | weight |
|---|---|---|---|---|---|---|
| search.fulltext | search | Full-text search | Search over names or text through an index | a query entry point over a full-text index | basics | 2 |
| search.embeddings | search | Embedding search | Search by vector similarity | code that embeds text and ranks by similarity | extra | 1 |
| graph.communities | graph | Module communities | Groups of related code found from the graph | a clustering pass over the graph | extra | 1 |

その後、手順2と同様に comparegraph family add families/libs、map、claim、matrix libs を実行します。map が示すのは確認すべき箇所であり、結論ではありません。ご自身またはエージェントがそれらを開き、各主張を記述します。列のルールについては使い方を参照してください。

4. エージェントを接続する(任意)
comparegraph setup --apply      # omit --apply for the plan; --scope project for an entry you commit
comparegraph doctor             # each client's state: aligned, stale, conflict, missing, plugin

マシン上で見つかったすべてのエージェント(12 種類:Claude Code、Codex、Cursor、Gemini CLI、OpenCode、Hermes、Windsurf、Antigravity、Kiro、Copilot、Copilot CLI、Qwen Code)に MCP サーバーを登録し、ワークスペースの指示ファイルに短いルールブロックを書き込みます。また、Claude Code にはセッション開始フックを設定します。エージェントを接続するだけで、インデックス作成は行いません。すでにインストール済みですか? comparegraph doctor で接続状況を確認できます。

Claude Code をプラグインとして使う、またはエージェント独自のコマンドを使う

Claude Code をプラグインとして使う場合: 7 つのスキル、サーバー、フックをまとめてインストールします(Claude Code 2.1.275 以降。シェルからも claude plugin install … で同じことができます)。

/plugin install comparegraph --marketplace MassRelayAI/comparegraph

プラグインを有効にすると、setup --apply は Claude Code のサーバーとフックをプラグインに任せ(その行には plugin と表示されます)、ルールブロックは引き続き書き込みます。

エージェント独自のコマンドをワークスペースで実行します。各コマンドは、setup が書き込むユーザースコープのエントリを書き込みます(Claude Code のデフォルトスコープである local は、doctor が読み取らないため、doctor では設定済みと認識されません)。

エージェントコマンド
Claude Codeclaude mcp add --scope user comparegraph -- comparegraph --root "$PWD" mcp
Codexcodex mcp add comparegraph -- comparegraph --root "$PWD" mcp
Gemini CLIgemini mcp add -s user comparegraph comparegraph -- --root "$PWD" mcp

サーバーは MCP Registry に io.github.MassRelayAI/comparegraph として登録されています。表に、各クライアントのファイルがすべて記載されています。

アンインストールについては、エージェント、プラットフォーム、アンインストールを参照してください。無料のオープンソースで、有料プランはありません。質問やバグの報告は GitHub issues へ、セキュリティ上の報告は SECURITY.md をご覧ください。


CompareGraph を選ぶ理由

6 つのプロジェクトのソースコードは合計 106.1 MB(推定約 2,650 万トークン)です。30 個の機能について 6 つすべてを対象にランク付けされた候補は 336 KB(約 8.4 万トークン)、マトリクスは 6 KB です。候補は確認する場所であり、判定ではありません。

6 つの調査用コピーと 30 個の機能を対象に、バイナリ 0.1.1 で測定しました。数値は docs/assets/cost.json、手法と注意事項は回答サイズのレポートをご覧ください。

リポジトリがたくさんあり、知りたいことは 1 つです。それぞれに何があるのか。各リポジトリを手作業で読む方法では規模に対応できず、行番号のない要約は検証できません。また、コードが移動するとメモは古くなります。検証可能な 5 つの特性を備えています。

  1. 決定論的です。 同じクローンとバージョンであれば、同じ store_hash が得られます。comparegraph check は再構築して比較し、増分ビルドは build --full と一致する必要があります(Plan 6 レポートにある 2 つの大規模ツリーでは一致しています)。
  2. すべての回答に証拠クラスが付与されます。 各エンベロープには observed、derived、inferred、unknown のいずれかと、エンジンが確認できない内容を示す limitations[] リストが含まれます。
  3. 主張には、現在も有効な引用が必要です。 has と partial には、保存済みノードと一致する --at path:start-end が必要です。一致しない場合、エンジンは拒否します。引用先が移動すると、check の後に unknown* と表示されます。
  4. none には、存在しないことの証明が必要です。 何も見つからない検索語を指定する --searched、または同じ検索語で、見つかったすべての項目を開いて却下したものとして --read-hits に指定する方法が使えます。あるいはグラフチェックを使います。グラフチェックでは、4 つのチャネル(シンボル、パス、コミュニティ用語、ノード種別)がすべて空である必要があります。--searched を指定した none では、absent-check --searched が返す上位 10 件のランク付き候補を、確認済みとして指定する必要があります(read_set)。上限を超えた候補は read_capped の制限として記録されます。上位 10 件に未確認の候補がある場合、主張は拒否され、その候補が示されます。
  5. エンジンにモデルはありません。 スコア、バンド、説明、候補はすべて保存済みの事実から算出されます。エージェントが内容を読むことはできますが、エンジンが行うのは保存、検証、拒否のみです。
単一リポジトリのコードグラフとの比較
必要なこと単一リポジトリのコードグラフCompareGraph
複数のリポジトリを 1 つの機能リストで比較するいいえ。インデックス 1 つにつきリポジトリは 1 つですfamily、relate、matrix
判定とともに証拠を保持するいいえ主張に path:start-end とコンテンツハッシュを保存します
裏付けられない主張を拒否するいいえhas と partial には有効な引用が、none にはエンジンが実行した検索が必要です
コードの移動後に何が変わったかを示すいいえcheck は移動した引用に古いという印を付け、マトリクスには unknown* と表示します
誰が何を述べたかの履歴を残すいいえ主張と判断は追記専用です

対象:自社製品を業界と比較するチーム、プロジェクト群のデューデリジェンス、新たに分野の全体像を把握する人(family propose で分類体系の草案を作成)、MCP を通じて簡潔な事実を必要とするコーディングエージェント。


仕組み

ワークフロー:リポジトリをクローンし、1 つのグラフ、分類体系、引用付きの判定、判断、マトリクスを作成

3 つのルール
  1. エンジンはモデルを呼び出しません。 スコア、バンド、説明、候補はすべて保存済みの事実から算出されます。
  2. 主張には、現在も有効な引用が必要です。 has と partial には、保存済みノードと一致する --at path:start-end が必要です。none には、何も見つからない検索語を指定する --searched、またはグラフチェックが必要です。それ以外の場合、エンジンは拒否するか、unknown を書き込みます。
  3. 主張と判断は、データベースによって強制される追記専用です。 変更は、置き換える対象を指定する新しい行として追加されます。最新のものが有効になり、履歴は保持されます。

search または map の候補には candidate のラベルが付き、has になることはありません。設計については、docs/design.mdをご覧ください。

フローとコードリングの図については、docs/design.mdをご覧ください。

グラフ内のファミリー

グラフ内のファミリー:10 グループに分類された 30 の機能、6 つのクローン、両方の読み手の判定が一致した 121 セル(has が 93、partial が 9、none が 19)。機能からクローンへ伸びる、判定別に色分けされたエッジで描画

ファミリーとは分類体系です。機能のグループで構成され、それぞれに定義と、その機能を備えていると見なす基準となるテストがあります。セルは、1 つのクローンと 1 つの機能の組み合わせで、判定(has、partial、none)を保持します。has と partial の場合は引用も保持します。この図は、マッピングのゴールドデータに含まれる合意済みセルを用いて、ファミリー code-graph-tools を描画しています。comparegraph export vault を実行すると、Obsidian で同じグラフをリアルタイムに表示できます。

プラグインと 2 つ目のエンジン

外部プロバイダーとは、標準入力と標準出力で JSON Lines を扱う実行可能プログラムです。ホストはリクエストを 1 行書き込み、標準入力を閉じて、最初の ok 応答まで回答行を読み取ります。プログラムが出力する内容はすべてデータとして扱われ、独自の型にパースされます。comparegraph.toml に [providers.mine] command = "tools/my-provider" として登録するか、PATH 上に comparegraph-provider-<name> として配置し、同じ場所に comparegraph-plugin.toml マニフェスト(kind、name、protocol = "1"、languages、network)を用意してください。マニフェストがない場合、--allow-unverified を指定したときに限り実行されます。マニフェストは宣言であり、署名ではありません。実行可能ファイルのハッシュは検証されず、プロバイダーはユーザーの権限で独立したプログラムとして実行されます。PATH 上で見つかった名前より先に検索される、comparegraph.toml 内のパスを指定することをおすすめします。マニフェストの network 値は COMPAREGRAPH_NETWORK としてプロバイダーに渡されますが、強制はされません。

プロトコルの全仕様、ガード、25 行の Python プロバイダー、code-review-graph アダプター(build --providers reference,crg で使う 2 つ目のエンジン)については、docs/dev/plugin-protocol.md をご覧ください。

ファミリーと 7 つのスキル

ファミリーは rows.md を含むディレクトリです。2 つのパックが同梱されています。クイックスタート用の families/example-code-graph-tools(機能 10 個)と、マッピングのゴールドデータである families/code-graph-tools(機能 30 個)です。列のルール、同義語、family propose については、使い方をご覧ください。

この手法は、skills/ にある 7 つのプレーン Markdown スキルで構成されており、どのエージェントでも参照できます。それぞれのスキルでは、その動詞を使う場面、正確なコマンド、エンジンが拒否する内容、確認方法を説明しています。Claude Code では、スキルと MCP サーバーが 1 つのプラグインとして一緒に提供されます(始める)。それ以外のエージェントでは、クローン内の skills/ ディレクトリを参照してください。

スキル概要
using-comparegraphエントリーポイント:適用するスキル、ワークフローの順序、判定の誠実さを保つ習慣。
adding-a-cloneクローンを比較対象またはルートとして登録し、パースして、ビルドを検証します。
defining-a-familyパックを作成し、family propose でひな形を用意して、安全に再読み込みします。
mapping-features候補となる根拠を見つけ、関連性を評価します。候補は手掛かりであり、判定ではありません。
writing-a-claim現時点で参照先を解決できる引用を付けて、has、partial、none、unknown を記録します。
recording-a-decision人の adopt、reject、park の判断を、名前と理由を添えて記録します。
reading-the-vaultマトリックス、Vault、JSON エクスポートを読み、ギャップを正しく読み取ります。

使い方

docs/ にある 4 つのページがリファレンスです。ここからそれぞれ数回クリックするだけでアクセスできます。

得られるもの

4 つのレベルがあり、それぞれが「どのように把握しているのか」に答えます。リポジトリの概要、モジュールのコミュニティ、シンボル(呼び出し元、呼び出し先、影響範囲、テスト、エントリーポイント、デッドコード候補)、そして主張(判定、引用、作成者、履歴)です。回答はすべて、エビデンスクラスを含む 1 つの JSON エンベロープです。使い方には表と実際の show の回答があります。

CLI リファレンス

グローバルオプションの --root と --pretty に続き、動詞は 4 つのグループに分かれています。ビルドと調査、グラフクエリ、ファミリーと主張、エクスポートとエージェントです。コマンドには、重要なフラグとともにすべての動詞が記載されています。

MCP ツール

comparegraph mcp は、stdio 経由で 18 個のツールを提供します(読み取り専用が 17 個、書き込みが 1 個:comparegraph_claim)。意図的に decide ツールは用意していません。MCP ツールには表があり、docs/catalog.json が機械可読な情報源です。catalog --check により、CI でその内容が検証されます。

Vault、設定、ライブラリ

comparegraph export vault --out ./vault は、生成された説明を含む Obsidian 形式の Markdown Vault を書き出します。設定には --root と COMPAREGRAPH_* 環境変数を使用し、クレートでは各動詞を関数として公開しています。この 3 つすべてについては使い方をご覧ください。


性能はどの程度ですか

以下の数値はすべて、このリポジトリ内のレポートから転載したものです。引用する前に、レポートの注意事項を確認してください。すべて、共有ホスト 1 台で 2026-10-13 に測定しました。

呼び出しエッジの精度と再現率。750 件の手作業でラベル付けしたゴールドデータにおけるエンジン別の値:CompareGraph 0.995 / 0.834(プール値)、code-review-graph(アダプター経由)0.956 / 0.736、codegraph 0.708 / 0.506。

スケール:4 つのツリーで解析したファイル数とノード数、エッジ数、ビルド秒数、および 129 万エッジの openclaw グラフでのクエリ時間。

手作業でラベル付けした呼び出し箇所のゴールドデータにおいて、CompareGraph の精度はプール値で 0.995、再現率は 0.834 です。アダプター経由の code-review-graph は 0.956 / 0.736、codegraph は 0.708 / 0.506 です。CompareGraph は 38,258 ファイルのリポジトリを 499.6 秒でビルドし、129 万エッジのグラフに対する impact の回答時間は 2.5 秒です。注意事項については、以下の表をご覧ください。データ:accuracy.json、scale.json。パリティレポート:エンジンのパリティ。

手作業でラベル付けしたゴールドスタンダードに対する呼び出しエッジ

ゴールドデータ:各プロジェクトのソースから無作為に抽出した呼び出し箇所 150 件(合計 750 件)を、2 人の読み手が同じ基準に基づいて独立にラベル付けしました(どちらも言語モデルのエージェントであり、エンジンを知らされずに作業したわけではありません)。final には、両者の意見が一致した行のみが含まれます。ゴールドデータの作成方法:fixtures/gold/README.md。精度は回答できた箇所を対象とし、再現率はリポジトリ内を参照する箇所を対象とします(括弧内に表示)。カッパ係数は、2 人の読み手による呼び出し先の判定に対する Cohen のカッパ係数です。

プロジェクト(箇所数)読み手間のカッパ係数CompareGraph 精度 / 再現率code-review-graph(アダプター経由)精度 / 再現率codegraph 精度 / 再現率
graphmind (48)0.980.973 / 0.7500.963 / 0.5420.650 / 0.813
srclight (50)0.961.000 / 0.7801.000 / 0.7401.000 / 0.320
code-review-graph (53)1.001.000 / 0.9251.000 / 1.0000.913 / 0.396
hono (36)0.891.000 / 0.6670.880 / 0.611回答なし / 0.000
caddy (48)0.921.000 / 1.0000.897 / 0.7290.623 / 0.896
プール値 (235)0.950.995 / 0.8340.956 / 0.7360.708 / 0.506
集計件数:CompareGraph は回答済み 197 件中 196 件が正解、235 サイト中 196 件です。codegraph は回答済み 168 件中 119 件が正解、235 サイト中 119 件です。
出典:docs/reports/2026-10-12-engine-parity.md の「After Plan 6」と
「codegraph head-to-head」の各セクション。κ については「After Plan 5」の評価者間一致度(集計した is_call の κ は 0.94)を参照してください。
再現方法:scripts/gold-score.sh <project-copy> fixtures/gold/<project>/calls.jsonl --binary <comparegraph>、
scripts/compare-engines.sh(全エンジン)、scripts/h2h-codegraph.sh(codegraph)。

以下の制約を踏まえてご覧ください。プロジェクトごとのサイト数は 36~53 件のため、プロジェクトごとの誤差は約 0.1 です。caddy の 1.000 は「ラベル付けされたすべてのサイト」を意味します(Go 対応前に抽出した 48 サイト)。hono の適合率は回答済み 24 サイトに基づいています。codegraph は --graph-only モードで実行し、サイトごとに get_callees を 1 回呼び出しています。同じ名前のターゲットを複数列挙する場合、正解がその中にあれば、スコアラーはそのサイトを正解と数えます。hono では、検出したノードのうち最も絞り込まれたものが、呼び出しエッジのない無名のアロー関数であるため、回答されたサイトはありません。最も近い名前付き祖先を介した検索は実行していません。fixtures/gold/FLOORS.json の下限値は crates/comparegraph/tests/gold.rs でアサートされており、引き上げることはあっても引き下げることはありません。

ビルドとクエリの所要時間

数値は docs/assets/scale.json に記載されています。proof report(最終セクション)と Plan 6 report に基づいています。

指標結果出典セクション
5 つの調査対象プロジェクトのコールドビルド各 0.8 秒~6.4 秒。codegraph との比較では、codegraph の固定 12 秒の埋め込みモデル読み込み時間を除外した場合、4 プロジェクトで所要時間の比率は 0.50~1.29、hono では 5.12head-to-head
code-review-graph と比較したコールドビルド1.6~3.4 倍高速。比率のみ(ホスト負荷 37~73)After Plan 5
hermes-agent、10,288 ファイルフルビルド 93.2 秒、変更なしでの再ビルド 2.0 秒、1 ファイル編集後 47.5 秒。ストアのハッシュは --full と一致After Plan 6, build time and scale
openclaw、38,258 ファイルフルビルド 499.6 秒(8 分の目標に 20 秒届かず)、変更なしでの再ビルド 7.5 秒、1 ファイル編集後 289.7 秒、最大 RSS 3.54 GBAfter Plan 6, build time and scale
1.29M エッジの openclaw グラフに対するクエリimpact 2.5 秒、traverse 3.6 秒、dead-code 1.6 秒。RSS は 12~15 MBAfter Plan 6, query bounds

レポートに記載された注意事項:ビルド時間は 40 コアで負荷 6~15 の状態で計測しているため、秒数ではなく比率を参考にしてください。hermes-agent のビルドは Plan 6 のレーン B1 終了時点より 1.40 倍遅くなっています。このリグレッションは計測されていますが、原因は特定されていません。クエリの上限値は、ハブシンボル 1 つ(呼び出し元 3,156 件)、デフォルト設定で、それぞれ 1 回実行した結果です。4.4k ファイルの非公開製品モノレポは 103 秒でビルドされ(53k ノード)、そのハーネス比較対象 3 件のビルド時間は 25 秒、81 秒、436 秒です(proof report の最終セクションを参照)。12 個の機能に対するランキング付き map は、製品で 1.2 秒、454k ノードの比較対象で 12.1 秒かかります。 再現方法:scripts/compare-engines.sh、scripts/h2h-codegraph.sh、および COMPAREGRAPH_PROFILE=1 comparegraph build <repo>。

code-review-graph との重複(シンボルとエッジ)

3 つのプロジェクトにおけるノードと解決済みエッジのジャッカード係数(パリティレポートの「After the review fixes」、シンボルと継承については「After the precision and recall pass」):

指標graphmindsrclightcode-review-graph
シンボル(関数、メソッド、クラス、型)0.9460.9880.939
呼び出し(解決済み)0.7130.9690.963
インポート(ファイル間)0.6470.9040.901
テスト(テストからテスト対象のシンボルへ)0.1190.6050.513
継承と実装0.9380.6670.730

テストリンクは、3 つすべてのプロジェクトで弱点となっています。再現方法:scripts/compare-engines.sh。

適合性フィクスチャ(リファレンスエンジン)

comparegraph conform reference は fixtures/ にあるゴールデンフィクスチャを実行します。基準値(ノード 0.95、エッジ 0.85、 再現率と適合率)を下回るプロバイダーは拒否されます。このコミットでの出力:

フィクスチャノードの再現率 / 適合率エッジの再現率 / 適合率
go1.00 / 1.001.00 / 1.00
java1.00 / 1.001.00 / 1.00
python1.00 / 1.000.952 / 1.00
rust1.00 / 1.001.00 / 1.00
typescript1.00 / 1.000.955 / 1.00

5 つのフィクスチャは、それぞれ小規模なリポジトリです。手作業で確認したグラフに対して抽出器を検証するものであり、あらゆる言語機能を検証するものではありません。

機能マッピングのゴールドスタンダード

2 つ目のゴールドスタンダードでは、map(機能からコードへのマッピング)とグラフを利用した不在チェックを評価します。対象は families/code-graph-tools/rows.md の 30 の機能と、コードグラフツールの調査用コピー 6 件で、計 180 組を 2 人の独立した評価者が読み、121 組で合意しました。59 件の不一致はスコアから除外しています(合意した場所のうち 13 件には、エンジングラフ内にノードがありません)(手法とカッパ係数: fixtures/gold-map/README.md)。ランキングはクローン 3 件で調整し、残りの 3 件で 1 回測定しました。ツールがこれまで見たことのないリポジトリに対する実質的な数値は、ホールドアウト列に示されています。

precision@5recall@5注記
map、ホールドアウトクローン(CodeGraph、codanna、ripwire)0.0380.149確認すべき数値
map、調整用クローン(graphmind、srclight、code-review-graph)0.1610.523調整済み
map、6 件すべてを統合0.1130.393ランキング前の 0.046 / 0.141 から改善
同じ語句での単純な全文 OR 検索、統合0.0460.141ランキングなしの自前エンジン
同じ語句での codegraph symbol_search、統合0.0360.118同じルールで評価
不在チェック、統合1.00(1 回の呼び出し)0.05(19 件中 1 件)誤りはないが、ほとんど回答しない

目標(ホールドアウトの recall@5 が 0.50 以上、precision@5 が 0.30)は未達です。ホールドアウト機能のうち、ゴールドの場所が最初の 200 件の候補に含まれるのは 3 分の 1 にとどまります。ストアにあるのはシンボル名、パス、コミュニティキーワードであり、ドキュメント本文はないためです。次の改善策はロードマップに記載されています。relate の帯域は既知の弱いシグナルです。このファミリー以外のリポジトリも 0.5 を超えるスコアになります(docs/decisions.md、「Plan 7 IMP」)。relate が実行されるまでは、マトリックスにそのクローンの結果として not run と表示され、limitations[] にもその旨が記載されます(matrix --relate は未実行の項目を先にスコアリングします)。参照資料: docs/reports/2026-10-14-mapping-gold-first-measurement.md と、 パリティレポートの「Feature-mapping baselines」。再現方法:scripts/map-score.sh、scripts/map-baselines.sh。

回答サイズ

調査用コピー 6 件の 30 機能について、map の回答の合計は 336 KB(推定で約 84 k トークン)で、ソースの 106.1 MB(約 26.5 M トークン)に対して 316 対 1 です。回答は読むべき場所をランキングしたもので、判定ではありません(前述のホールドアウト recall@5 は 0.149)。そのため、読者は引き続きファイルを開く必要があります。手法、クローンごとの数値、注意点: docs/reports/2026-10-14-answer-size.md。 再現方法:scripts/answer-size.sh を実行し、続けて node scripts/readme-assets.mjs を実行します。

## 言語

29 言語を解析します。そのうち5言語は詳細に解決され、4言語には測定済みのゴールドスタンダードがあります。見出しだけでなく、各ティアを確認してください。 すべての文法(tsx、jsx、mjsを別々に数えて32 ID)には、コミット済みのグラフダイジェストを含むフィクスチャが fixtures/languages/にあります。そのため、文法の更新でグラフが少しでも変わるとCIが失敗し、意図的にゴールドデータを更新する必要があります。

ティア言語エンジンが抽出する内容
解析済み(29)typescript(+tsx)、javascript(+jsx、mjs)、python、rust、go、java、ruby、php、swift、kotlin、dart、scala、c、cpp、csharp、objc、perl、r、bash、powershell、sql、yaml、toml、hcl、dockerfile、graphql、css、scss、htmlシンボル、ファイル、包含関係、インポート、および抽出器が報告する直接呼び出し。設定ファイルとマークアップ(yamlからhtmlまで)からはシンボルのみを抽出します。比較する際はノイズとして扱ってください。
解決済み(5)typescript/javascript、python、rust、go、javaファイルに解決されたインポート、宣言された型、型付きレシーバー、バレル再エクスポート、継承(extends、implements)、テストリンクを追加します。goには設計上、継承エッジがありません
測定済みtypescript(hono、graphmind、code-review-graph)、python(srclight、code-review-graph)、rust(graphmind)、go(caddy)には呼び出しエッジのゴールドデータがあります。解決済みの5言語すべてに適合性フィクスチャがありますゴールドデータの表。javaにはフィクスチャのみあります
制限事項、既知の不足点、スキップされるファイル

レジストリには32個の識別子があります(tsx、jsx、mjsはそれぞれの言語とともに数えます)。未解決の言語では、同じ言語ファミリー内に限り、名前だけで信頼度0.5の呼び出しをバインドします。既知の不足点:Javaのnew T()には呼び出しサイトがなく、Rustではトレイトメソッドとそのimplが同じ修飾名を共有し、Goではメソッドの戻り値に対する呼び出し、range変数、ジェネリクスはまだ何にもバインドされません (Plan 7 candidates)。すべてのビルドでスキップされるもの:ディレクトリ node_modules、target、dist、build、.git、vendor、__pycache__、.venv、venv、.gitignoreまたは .ignoreで除外されたファイル、ミニファイ済みファイル。スキップ数は実行時のlimitationsに記録されます。


エージェント、プラットフォーム、アンインストール

comparegraph setup はエントリーを書き込みます。comparegraph doctor は各クライアントの状態(aligned、stale、conflict、 missing、unverified、plugin)を報告します。--client all は、インストールされているように見えるクライアントのみを対象にします。plugin:comparegraph@comparegraph が有効で、--client all を使用した場合は Claude Code プラグインに任せます。強制的に書き込むには、--client claude を指定します。PATH 上で登録済みのバイナリに解決される単独の comparegraph コマンドは、整合しているものとして扱われます。setup --apply は追加のみを行い、<file>.bak-<unix-seconds> という名前のバックアップを残します。異なるエントリーは、--force を指定しない限り変更されません。

setup は、エージェントの指示ファイルにルールブロックを書き込み、Claude Code の場合は SessionStart フックも書き込みます。詳細は使い方をご覧ください。

12 のクライアント、そのファイル、および削除する内容
エージェント--client設定(ユーザー/プロジェクト)ルールファイルアンインストール時に削除する内容
Claude Codeclaude~/.claude.json / .mcp.jsonCLAUDE.mdmcpServers.comparegraph
Codexcodex~/.codex/config.toml / .codex/config.tomlAGENTS.md[mcp_servers.comparegraph] テーブル
Cursorcursor --scope project.cursor/mcp.json(ユーザースコープは未検証のためスキップ)AGENTS.mdmcpServers.comparegraph
Gemini CLIgemini~/.gemini/settings.json / .gemini/settings.jsonGEMINI.mdmcpServers.comparegraph
OpenCodeopencode~/.config/opencode/opencode.json / opencode.jsonAGENTS.mdmcp.comparegraph
Hermeshermes~/.hermes/config.yaml(プロジェクトスコープなし)AGENTS.mdmcp_servers.comparegraph
Windsurfwindsurf~/.codeium/windsurf/mcp_config.json(プロジェクトスコープなし)AGENTS.mdmcpServers.comparegraph
Antigravityantigravity~/.gemini/antigravity/mcp_config.json(プロジェクトスコープなし)GEMINI.mdmcpServers.comparegraph
Kirokiro --scope project.kiro/settings/mcp.json(ユーザースコープなし)AGENTS.mdmcpServers.comparegraph
GitHub Copilot(VS Code)copilot --scope project.vscode/mcp.json(ユーザースコープなし).github/instructions/comparegraph.instructions.mdservers.comparegraph
GitHub Copilot CLIcopilot-cli~/.copilot/mcp-config.json(プロジェクトスコープなし)AGENTS.mdmcpServers.comparegraph
Qwen Codeqwen~/.qwen/settings.json(プロジェクトスコープなし)GEMINI.mdmcpServers.comparegraph

ルールブロックをアンインストールするには、から までの行を削除します。フックをアンインストールするには、コマンドが comparegraph doctor --brief である SessionStart エントリーを削除します。

プラットフォーム:各リリースでは、専用のランナーで linux-x64、linux-arm64、darwin-arm64、darwin-x64、win32-x64 向けにビルドし、それぞれを SHA256SUMS に記載されたリリースアセットとして配布します。Homebrew tap はリリースに追随します。テストスイートは linux-x64 のみで実行されます。Rust 1.85 以降が動作する環境であれば、ソースからビルドできます。ローカルのみで動作します。エンジンはネットワーク通信を行わず(自分で確認する方法と、まだ強制されていないことについてはFAQをご覧ください)、MCP サーバーは stdio 経由で通信し、ストアは所有者自身が管理する単一の SQLite ファイルです。

アンインストール:上記のエントリーを削除し(プラグインを使用している Claude Code では /plugin uninstall comparegraph)、次にバイナリを削除します(~/.local/bin/comparegraph、brew uninstall comparegraph、または cargo uninstall comparegraph)。さらに、各ワークスペースで rm -r .comparegraph を実行します。


FAQ とトラブルシューティング

  • FAQ:code-review-graph や codegraph との違い(および、それらにあって本ツールにはないもの)、モデルを使用するか(いいえ)、コードを自動で採用するか(いいえ)、一部の呼び出しエッジが 0.5 なのはなぜか、無料かどうかとサポート担当者、何も送信されないことを確認する方法、信頼できないリポジトリをどう扱うか、そして本ツールが行わないことについて説明します。
  • トラブルシューティング:no workspace や拒否された none クレームから、セッション開始フックが無反応になる問題まで、原因とともに 12 の症状を説明します。
  • まず comparegraph doctor を実行してください。ストア、すべてのプロバイダー、各クライアントの登録状況が報告されます。

ロードマップ

以下の項目はまだどれも実装されておらず、順序はメンテナーが決定します。各項目の根拠となる測定値を含む全リスト:docs/roadmap.md。

  • 次に測定する改善策:ストアにテキストチャネル(ドキュメントコメントとシグネチャのトークン)を追加し、ファミリーごとの同義語を導入して、未確認のクローンでの map に対応します。
  • 採用した機能の Port-kit エクスポート、機能統計のエクスポート、クレームのインポート、family import/export。
  • グラフ同等性クエリ、C/C++/C# リゾルバー、ファイルごとの解析キャッシュ、対応クライアントの追加(Zed、Continue)。

ドキュメント

ドキュメント内容
docs/reports/README.mdすべての測定結果と、その判定およびステータスの一覧
docs/dev/scripts.md各数値を再現するスクリプト
docs/dev/release.mdリリースの作成方法:タグ、ワークフロー、レジストリエントリー、tap、リリース後の確認事項
docs/dev/plugin-protocol.md外部エンジン向け JSON-lines プロトコル、制限、適合性、25 行の例
docs/dev/pid-namespaces.mdテストが PID 名前空間で実行される理由と、その有効化方法
docs/dev/language-fixtures.md文法ごとのフィクスチャ、コミット済みダイジェスト、文法の更新後にゴールドデータを再生成する方法
docs/usage.md利用できる機能、設定、ボールト、ライブラリの使用方法
docs/commands.mdCLI リファレンス
docs/mcp-tools.md18 個の MCP ツール
docs/faq.md、docs/troubleshooting.mdよくある質問と解決方法
docs/catalog.json18 個の MCP ツールと 9 個のエラーコード。自動生成され、CI でチェックされます
docs/decisions.md暫定的な決定、その代替案、決定を変更する条件
docs/design.md設計
docs/roadmap.md今後の予定と各計画で残された項目、および各項目の根拠となる測定結果
docs/THIRD_PARTY_NOTICES.md改変したコードの出所とライセンス
skills/7 つの手法スキル
fixtures/gold/README.md呼び出しエッジのゴールドデータの作成方法とラベル付け
fixtures/gold-map/README.md機能マッピングのゴールドデータの作成方法
families/サンプルパックと 30 機能の code-graph-tools パック
CHANGELOG.mdリリースごとの変更
CONTRIBUTING.md、AGENTS.md、CODE_OF_CONDUCT.md貢献に関するガイド:リング、不変条件、禁止事項の一覧

コントリビューション、ライセンス、サードパーティ製コード

セキュリティに関する報告は [email protected] または非公開のアドバイザリー(SECURITY.md)へ、行動規範に関する報告は同じアドレス(CODE_OF_CONDUCT.md)へお送りください。

まず CONTRIBUTING.md と AGENTS.md をお読みください。バグ修正では、失敗するテストから始めてください。抽出処理の変更では適合性フィクスチャを拡張してください。また、エンジンにモデルやネットワークへの呼び出しを追加しないでください。CI では clippy、各種テストスイート、適合性および言語のダイジェスト、cargo-deny(ライセンス、アドバイザリー、ソース;deny.toml)を実行します。ベンダー化されたパーサーレイヤーは graphmind(MIT)に由来します。詳しくは docs/THIRD_PARTY_NOTICES.md をご覧ください。ライセンスは Apache-2.0 です。詳しくは LICENSE をご覧ください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。