CompareGraph について
CompareGraph は、チームやコーディングエージェント向けのローカル実行型 Rust CLI・MCP サーバーです。機能分類に基づいて複数のクローンリポジトリを比較し、ファイルと行番号の引用付きで判定を記録します。リポジトリを実行せず、モデルも呼び出しません。
主な機能
- 01複数リポジトリから共有 SQLite グラフを構築
- 02機能分類に沿ってクローンを比較
- 03ファイルと行番号の引用付きで判定を記録
- 04引用を検証し、主張の履歴を保持
- 05CLI と 18 個の MCP ツールを提供
- 06モデル呼び出しなしでローカル実行
活用シーン
- 01複数リポジトリ間で製品機能を比較
- 02複数プロジェクトのデューデリジェンス
- 03ソフトウェア分野の機能を整理
- 04引用付きのリポジトリ情報をコーディングエージェントに提供
MCP 対応
`comparegraph mcp` は標準入出力で 18 個のツールを提供します。17 個は読み取り専用で、1 個は主張の書き込み用です。セットアップコマンドは、マシン上で検出した対応エージェントに MCP サーバーを登録できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CompareGraph
すでにインストール済みですか? comparegraph doctor を実行してください。
Claude Code、Codex、Cursor、Gemini CLI、Windsurf、OpenCode、その他6つのエージェントで複数のリポジトリを比較
複数のクローンをまとめた1つのグラフ · すべてのセルに根拠付きの判定 · 29言語 · 100%ローカル、モデル呼び出しなし
Rust製の単一バイナリ
使い方 · コマンド · MCP ツール · よくある質問 · トラブルシューティング · ロードマップ · レポート
CompareGraph は、クローンした複数のリポジトリを 1 つの SQLite グラフに解析します。各クローンを分類体系(機能の「ファミリー」)に照らしてスコアリングし、クローンと機能ごとに、ファイルと行範囲への引用を添えた判定を記録します。CLI と MCP サーバーを備えた単一の Rust バイナリです。クローンを読み取りますが、実行はしません。モデルを呼び出すこともありません。
はじめに
ランタイムのインストールは不要です。必要なのは 1 つのバイナリだけです。Node ユーザーは、npx -y @massrelay-ai/comparegraph から同じバイナリを実行できます。
1. バイナリをインストールする
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/massrelay-ai/comparegraph/main/scripts/install.sh | sh
# Windows x64 (PowerShell)
irm https://raw.githubusercontent.com/massrelay-ai/comparegraph/main/scripts/install.ps1 | iex
リリースの SHA256SUMS(linux-x64、linux-arm64、darwin-arm64、darwin-x64、win32-x64。v0.1.2 以降は gh attestation verify <asset> -R massrelay-ai/comparegraph による証明も確認)と照合したうえで、~/.local/bin に書き込みます(Windows の場合は %LOCALAPPDATA%\Programs\comparegraph に書き込み、ユーザーの PATH に追加します。その後、新しいターミナルを開いてください)。COMPAREGRAPH_VERSION=v0.1.1 でリリースを固定できます。COMPAREGRAPH_INSTALL_DIR でバイナリの配置先を変更できます。
その他の方法:npm、Homebrew、手動、ソースから
npm:Node 18 以降を搭載した 5 つのプラットフォームすべてで利用できます(パッケージは同じリリースバイナリをラップします)。npx -y @massrelay-ai/comparegraph --version を実行するか、npm i -g @massrelay-ai/comparegraph を実行してください。
Homebrew:macOS および Linux の場合:brew install massrelay-ai/comparegraph/comparegraph。
手動:最新リリースから comparegraph-<platform> と SHA256SUMS を取得してください。Rust 1.85 以降が動作する環境でソースからインストールする場合:cargo install --locked --git https://github.com/massrelay-ai/comparegraph comparegraph(--locked が重要です。crates.io にある Perl 文法の最新リリースは yank されており、Cargo.lock でのみ解決できます)。
2. エージェントを設定する
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 にはセッション開始フックを設定します。エージェントの設定のみを行い、インデックス作成は行いません。
Claude Code をプラグインとして使う場合、またはエージェント独自のコマンドを使う場合
Claude Code をプラグインとして使う場合:7 つのスキル、サーバー、フックをまとめて 1 回でインストールします(Claude Code 2.1.275 以降が必要です。シェルから claude plugin install … を実行しても同じです)。
/plugin install comparegraph --marketplace massrelay-ai/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.massrelay-ai/comparegraph として登録されています。表には、すべてのクライアントの設定ファイルが記載されています。
3. クローンを追加してビルドする
comparegraph add ../some-clone --name some
comparegraph build some
クローンは読み取られますが、実行されることはありません。ワークスペースごとに 1 つのストアが .comparegraph/ の下に作成されます。再ビルドは増分的に行われ、build --full と同じハッシュになります。
4. 比較
comparegraph family add families/example-code-graph-tools # the taxonomy
comparegraph map some example-code-graph-tools # ranked candidates per feature, writes nothing
comparegraph claim some symbols.extraction has --author me --at <path>:<start>-<end>
comparegraph matrix example-code-graph-tools # features x clones, prevalence, gaps
ファミリーパックはバイナリには含まれず、このリポジトリに収録されています。そのため、このリポジトリをクローンして実行してください。以下のサンプルでは、収録されているサンプルを使い、実際の出力とともにこれらすべての手順を紹介しています。
収録サンプルですぐに始める
サンプルパックとサンプルリポジトリは、バイナリではなくリポジトリに収録されています。使用方法では、fixtures/typescript を10個の機能を含むサンプルパックと照合し、add から export vault まで、すべての手順の実際の出力を紹介しています。
アンインストールについては、エージェント、プラットフォーム、アンインストールを参照してください。
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つです | family、relate、matrix |
| 判定とともに証拠を保持する | いいえ | 主張に path:start-end とコンテンツハッシュを保存します |
| 裏付けられない主張を拒否する | いいえ | has と partial には有効な引用、none にはエンジンが実行した検索が必要です |
| コード移動後の変更を示す | いいえ | check は移動した引用を古いものとしてマークし、マトリックスには unknown* と表示されます |
| 誰が何を述べたかの履歴を保つ | いいえ | 主張と決定は追記のみです |
対象:自社製品を業界内で比較するチーム、複数プロジェクトのデューデリジェンス、業界の全体像を把握する新規参入者(family propose で分類体系のドラフトを作成できます)、MCP を通じて簡潔な事実を必要とするコーディングエージェントです。
動作の仕組み
- エンジンはモデルを呼び出しません。 すべてのスコア、バンド、説明、候補は保存済みの事実から計算されます。
- 主張には、現時点で解決できる引用が必要です。
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 を描画したものです。Obsidian では comparegraph export vault を実行すると、同じグラフをライブで表示できます。
プラグインと第 2 のエンジン
外部プロバイダーとは、stdin と stdout で JSON 行をやり取りする実行可能ファイルです。ホストはリクエスト行を 1 行書き込んで stdin を閉じ、最初の ok 応答が届くまで応答行を読み取ります。プロバイダーが出力する内容はすべてデータとして扱われ、独自の型に解析されます。comparegraph.toml に登録するか([providers.mine] command = "tools/my-provider")、comparegraph-provider-<name> として PATH に配置し、その横に comparegraph-plugin.toml マニフェスト(kind、name、protocol = "1"、languages、network)を置きます。マニフェストがない場合は、--allow-unverified を指定した場合にのみ実行されます。
完全なプロトコル、ガード、25 行の Python プロバイダー、code-review-graph アダプター(build --providers reference,crg の背後にある第 2 のエンジン)については、docs/dev/plugin-protocol.md を参照してください。
ファミリーと 7 つのスキル
ファミリーは rows.md を含むディレクトリです。2 つのパックが同梱されています。クイックスタート用の 10 個の機能を含む families/example-code-graph-tools と、マッピングのゴールドとなる 30 個の機能を含む families/code-graph-tools です。列のルール、同義語、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 | 採用、却下、保留の決定を、決定した人の名前と理由とともに記録します。 |
reading-the-vault | マトリックス、ボールト、JSON エクスポートを読み、欠落を正しく解釈します。 |
使用方法
docs/ 以下の4ページにリファレンスがあります。いずれもここから数クリックで開けます。
得られるもの
4つのレベルがあり、それぞれが「どのように把握しているか」に答えます。リポジトリの概要、モジュールのコミュニティ、シンボル(呼び出し元、呼び出し先、影響範囲、テスト、エントリーポイント、デッドコードの候補)、そして主張(判定、引用、作成者、経緯)です。各回答は、エビデンスクラスを含む1つのJSONエンベロープです。使用方法に表と実際のshowの回答があります。
CLI リファレンス
グローバルオプションの--rootと--prettyに続いて、動詞は4つのグループに分かれています。ビルドと調査、グラフクエリ、ファミリーと主張、エクスポートとエージェントです。コマンドには、重要なフラグとともにすべての動詞が記載されています。
MCP ツール
comparegraph mcpは、標準入出力経由で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項目はすべて使用方法に記載されています。
精度はどのくらいか
以下の数値はすべて、このリポジトリ内のレポートから引用しています。引用する前に、各レポートの注意事項を確認してください。いずれも2026-10-13に1台の共有ホストで測定されました。
手作業でラベル付けした呼び出し箇所のゴールドデータでは、CompareGraphの全件合算の適合率は0.995、再現率は0.834です。アダプター経由のcode-review-graphは0.956 / 0.736、codegraphは0.708 / 0.506です。38,258ファイルのリポジトリを499.6秒でビルドし、1.29Mエッジのグラフでimpactに2.5秒で回答します。以下の表に注意事項を記載しています。データ: accuracy.json、scale.json;パリティレポート:エンジンのパリティ。
手作業でラベル付けしたゴールド標準に対する呼び出しエッジ
ゴールドデータは、各プロジェクトのソースから無作為に選んだ呼び出し箇所(1プロジェクトあたり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+ が動作する環境であれば、ソースからビルドできます。ローカル環境のみで動作します。エンジンはネットワークへの接続を行わず、MCP サーバーは stdio 経由で通信し、ストアはユーザーが所有する 1 つの SQLite ファイルです。
アンインストール:上記のエントリーを削除し(プラグインを使用している Claude Code では /plugin uninstall comparegraph)、次にバイナリ(~/.local/bin/comparegraph、brew uninstall comparegraph、または cargo uninstall comparegraph)を削除して、各ワークスペースで rm -r .comparegraph を実行します。
FAQ とトラブルシューティング
- FAQ:code-review-graph や codegraph との違い(および、それらにあって comparegraph にない機能)、モデルを使用するかどうか(使用しません)、コードを代わりに採用するかどうか(しません)、一部の呼び出しエッジが 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 | リリースの作成方法:タグ、ワークフロー、レジストリエントリー、タップ、リリース後の確認事項 |
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 つのサーバーを複数のクライアントで再利用できます。