CompareGraph について
CompareGraphは、ローカルにクローンした複数のリポジトリーを機能分類に対応付け、コード引用付きの比較表を作成します。プロジェクトの機能を評価するチームやコーディングエージェント向けです。リポジトリーの実行やモデル呼び出しは行わず、証拠要件と追跡可能な追記型記録で結論を管理します。
主な機能
- 01複数リポジトリーのコードグラフ構築
- 02機能分類に基づく比較表の作成
- 03解決可能なコード引用を主張に要求
- 04引用の古さや変更の確認
- 05主張と判断の追記型記録
- 06MCPサーバーの登録とエージェント設定
活用シーン
- 01競合や関連プロジェクトの機能比較
- 02複数プロジェクトの技術デューデリジェンス
- 03未知の分野の機能分類の作成
- 04エージェントに引用可能なプロジェクト情報を提供
MCP 対応
エージェントがリポジトリー比較データを参照するためのMCPサーバーを提供します。`setup`は検出したエージェントへの登録とワークスペースルールの追加に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
18掲載時のツール一覧 · 3 日前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | ページサイズ。デフォルトは 50 |
| cursor | string | いいえ | 前のページから返された不透明なカーソル |
詳細
CompareGraph
複数のコードリポジトリを機能ごとに比較し、どれに何があるかを、それを示すファイルと行番号とともに確認できます。
始める · 使い方 · コマンド · MCP ツール · よくある質問 · トラブルシューティング · レポート
自分のプロジェクトや他の人のプロジェクトなど、関心のあるプロジェクトのクローンを手元に置き、比較したい機能を書き出します。CompareGraph はすべてのクローンを読み込んでひとつのグラフにまとめ、あなたやコーディングエージェントが、リポジトリごとの機能を一覧表に記入するのを支援します。各項目の回答は has、partial、none のいずれかで、コードまたは何も見つからなかった検索結果を示します。無料のオープンソース(Apache-2.0)ソフトウェアで、マシン上で動作する単一のプログラムです。クローンを読み込むだけで、実行することはありません。また、エンジンが AI モデルやネットワークを呼び出すこともありません。
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 Code | claude mcp add --scope user comparegraph -- comparegraph --root "$PWD" mcp |
| Codex | codex mcp add comparegraph -- comparegraph --root "$PWD" mcp |
| Gemini CLI | gemini mcp add -s user comparegraph comparegraph -- --root "$PWD" mcp |
サーバーは MCP Registry に io.github.MassRelayAI/comparegraph として登録されています。表に、各クライアントのファイルがすべて記載されています。
アンインストールについては、エージェント、プラットフォーム、アンインストールを参照してください。無料のオープンソースで、有料プランはありません。質問やバグの報告は GitHub issues へ、セキュリティ上の報告は SECURITY.md をご覧ください。
CompareGraph を選ぶ理由
6 つの調査用コピーと 30 個の機能を対象に、バイナリ 0.1.1 で測定しました。数値は docs/assets/cost.json、手法と注意事項は回答サイズのレポートをご覧ください。
リポジトリがたくさんあり、知りたいことは 1 つです。それぞれに何があるのか。各リポジトリを手作業で読む方法では規模に対応できず、行番号のない要約は検証できません。また、コードが移動するとメモは古くなります。検証可能な 5 つの特性を備えています。
- 決定論的です。 同じクローンとバージョンであれば、同じ
store_hashが得られます。comparegraph checkは再構築して比較し、増分ビルドはbuild --fullと一致する必要があります(Plan 6 レポートにある 2 つの大規模ツリーでは一致しています)。 - すべての回答に証拠クラスが付与されます。 各エンベロープには
observed、derived、inferred、unknownのいずれかと、エンジンが確認できない内容を示すlimitations[]リストが含まれます。 - 主張には、現在も有効な引用が必要です。
hasとpartialには、保存済みノードと一致する--at path:start-endが必要です。一致しない場合、エンジンは拒否します。引用先が移動すると、checkの後にunknown*と表示されます。 noneには、存在しないことの証明が必要です。 何も見つからない検索語を指定する--searched、または同じ検索語で、見つかったすべての項目を開いて却下したものとして--read-hitsに指定する方法が使えます。あるいはグラフチェックを使います。グラフチェックでは、4 つのチャネル(シンボル、パス、コミュニティ用語、ノード種別)がすべて空である必要があります。--searchedを指定したnoneでは、absent-check --searchedが返す上位 10 件のランク付き候補を、確認済みとして指定する必要があります(read_set)。上限を超えた候補はread_cappedの制限として記録されます。上位 10 件に未確認の候補がある場合、主張は拒否され、その候補が示されます。- エンジンにモデルはありません。 スコア、バンド、説明、候補はすべて保存済みの事実から算出されます。エージェントが内容を読むことはできますが、エンジンが行うのは保存、検証、拒否のみです。
単一リポジトリのコードグラフとの比較
| 必要なこと | 単一リポジトリのコードグラフ | CompareGraph |
|---|---|---|
| 複数のリポジトリを 1 つの機能リストで比較する | いいえ。インデックス 1 つにつきリポジトリは 1 つです | family、relate、matrix |
| 判定とともに証拠を保持する | いいえ | 主張に path:start-end とコンテンツハッシュを保存します |
| 裏付けられない主張を拒否する | いいえ | has と partial には有効な引用が、none にはエンジンが実行した検索が必要です |
| コードの移動後に何が変わったかを示す | いいえ | check は移動した引用に古いという印を付け、マトリクスには unknown* と表示します |
| 誰が何を述べたかの履歴を残す | いいえ | 主張と判断は追記専用です |
対象:自社製品を業界と比較するチーム、プロジェクト群のデューデリジェンス、新たに分野の全体像を把握する人(family propose で分類体系の草案を作成)、MCP を通じて簡潔な事実を必要とするコーディングエージェント。
仕組み
3 つのルール
- エンジンはモデルを呼び出しません。 スコア、バンド、説明、候補はすべて保存済みの事実から算出されます。
- 主張には、現在も有効な引用が必要です。
hasとpartialには、保存済みノードと一致する--at path:start-endが必要です。noneには、何も見つからない検索語を指定する--searched、またはグラフチェックが必要です。それ以外の場合、エンジンは拒否するか、unknownを書き込みます。 - 主張と判断は、データベースによって強制される追記専用です。 変更は、置き換える対象を指定する新しい行として追加されます。最新のものが有効になり、履歴は保持されます。
search または map の候補には candidate のラベルが付き、has になることはありません。設計については、docs/design.mdをご覧ください。
フローとコードリングの図については、docs/design.mdをご覧ください。
グラフ内のファミリー
ファミリーとは分類体系です。機能のグループで構成され、それぞれに定義と、その機能を備えていると見なす基準となるテストがあります。セルは、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 に測定しました。
手作業でラベル付けした呼び出し箇所のゴールドデータにおいて、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.98 | 0.973 / 0.750 | 0.963 / 0.542 | 0.650 / 0.813 |
| srclight (50) | 0.96 | 1.000 / 0.780 | 1.000 / 0.740 | 1.000 / 0.320 |
| code-review-graph (53) | 1.00 | 1.000 / 0.925 | 1.000 / 1.000 | 0.913 / 0.396 |
| hono (36) | 0.89 | 1.000 / 0.667 | 0.880 / 0.611 | 回答なし / 0.000 |
| caddy (48) | 0.92 | 1.000 / 1.000 | 0.897 / 0.729 | 0.623 / 0.896 |
| プール値 (235) | 0.95 | 0.995 / 0.834 | 0.956 / 0.736 | 0.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.12 | head-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 GB | After Plan 6, build time and scale |
| 1.29M エッジの openclaw グラフに対するクエリ | impact 2.5 秒、traverse 3.6 秒、dead-code 1.6 秒。RSS は 12~15 MB | After 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」):
| 指標 | graphmind | srclight | code-review-graph |
|---|---|---|---|
| シンボル(関数、メソッド、クラス、型) | 0.946 | 0.988 | 0.939 |
| 呼び出し(解決済み) | 0.713 | 0.969 | 0.963 |
| インポート(ファイル間) | 0.647 | 0.904 | 0.901 |
| テスト(テストからテスト対象のシンボルへ) | 0.119 | 0.605 | 0.513 |
| 継承と実装 | 0.938 | 0.667 | 0.730 |
テストリンクは、3 つすべてのプロジェクトで弱点となっています。再現方法:scripts/compare-engines.sh。
適合性フィクスチャ(リファレンスエンジン)
comparegraph conform reference は fixtures/ にあるゴールデンフィクスチャを実行します。基準値(ノード 0.95、エッジ 0.85、
再現率と適合率)を下回るプロバイダーは拒否されます。このコミットでの出力:
| フィクスチャ | ノードの再現率 / 適合率 | エッジの再現率 / 適合率 |
|---|---|---|
| go | 1.00 / 1.00 | 1.00 / 1.00 |
| java | 1.00 / 1.00 | 1.00 / 1.00 |
| python | 1.00 / 1.00 | 0.952 / 1.00 |
| rust | 1.00 / 1.00 | 1.00 / 1.00 |
| typescript | 1.00 / 1.00 | 0.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@5 | recall@5 | 注記 | |
|---|---|---|---|
map、ホールドアウトクローン(CodeGraph、codanna、ripwire) | 0.038 | 0.149 | 確認すべき数値 |
map、調整用クローン(graphmind、srclight、code-review-graph) | 0.161 | 0.523 | 調整済み |
map、6 件すべてを統合 | 0.113 | 0.393 | ランキング前の 0.046 / 0.141 から改善 |
| 同じ語句での単純な全文 OR 検索、統合 | 0.046 | 0.141 | ランキングなしの自前エンジン |
同じ語句での codegraph symbol_search、統合 | 0.036 | 0.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 Code | claude | ~/.claude.json / .mcp.json | CLAUDE.md | mcpServers.comparegraph |
| Codex | codex | ~/.codex/config.toml / .codex/config.toml | AGENTS.md | [mcp_servers.comparegraph] テーブル |
| Cursor | cursor --scope project | .cursor/mcp.json(ユーザースコープは未検証のためスキップ) | AGENTS.md | mcpServers.comparegraph |
| Gemini CLI | gemini | ~/.gemini/settings.json / .gemini/settings.json | GEMINI.md | mcpServers.comparegraph |
| OpenCode | opencode | ~/.config/opencode/opencode.json / opencode.json | AGENTS.md | mcp.comparegraph |
| Hermes | hermes | ~/.hermes/config.yaml(プロジェクトスコープなし) | AGENTS.md | mcp_servers.comparegraph |
| Windsurf | windsurf | ~/.codeium/windsurf/mcp_config.json(プロジェクトスコープなし) | AGENTS.md | mcpServers.comparegraph |
| Antigravity | antigravity | ~/.gemini/antigravity/mcp_config.json(プロジェクトスコープなし) | GEMINI.md | mcpServers.comparegraph |
| Kiro | kiro --scope project | .kiro/settings/mcp.json(ユーザースコープなし) | AGENTS.md | mcpServers.comparegraph |
| GitHub Copilot(VS Code) | copilot --scope project | .vscode/mcp.json(ユーザースコープなし) | .github/instructions/comparegraph.instructions.md | servers.comparegraph |
| GitHub Copilot CLI | copilot-cli | ~/.copilot/mcp-config.json(プロジェクトスコープなし) | AGENTS.md | mcpServers.comparegraph |
| Qwen Code | qwen | ~/.qwen/settings.json(プロジェクトスコープなし) | GEMINI.md | mcpServers.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.md | CLI リファレンス |
docs/mcp-tools.md | 18 個の MCP ツール |
docs/faq.md、docs/troubleshooting.md | よくある質問と解決方法 |
docs/catalog.json | 18 個の 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 をご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。