llmgraph について
llmgraphは、コーディングエージェントや編集前後の依存関係を確認する開発者向けに、呼び出し関係と変更の影響を分析します。証明できた結果と解析上の盲点を区別し、根拠と不確実性を示します。
主な機能
- 01呼び出し元と追跡不能な呼び出しの特定
- 02変更による影響の分析
- 03編集後の未対応呼び出しの確認
- 04結果の確実性のラベル付け
- 05回答の根拠の説明
活用シーン
- 01関数シグネチャ変更前の呼び出し箇所の確認
- 02編集で対応漏れした呼び出し箇所の確認
- 03証明済み依存と動的呼び出しの盲点の切り分け
MCP 対応
呼び出し関係、変更の影響、盲点、根拠を照会するツールを備えたMCPサーバーを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
LLMGRAPH
あらゆるコールグラフには死角があります。LLMGRAPH はその場所を教えます。
LLMGRAPH は、証明できる呼び出しだけを描きます。見つけられない呼び出しは数え、分かりやすい言葉でその内容を示すので、エージェントは編集する前に死角を把握できます。
私はコーディングエージェントのための真実のレイヤーとして LLMGRAPH を作りました。その真実には死角も含まれます。エージェントは推測しますが、LLMGRAPH は可能な範囲を証明し、証明できないことを明示します。3 つのオープンソースリポジトリで 50 問を使ったブラインドテストでは、確信を持って答えた内容に誤りはありませんでした。
2 つの関数。同じ名前。エージェントには見分けられません。LLMGRAPH なら見分けられます。
grep は名前を読み取ります。LLMGRAPH は呼び出しをたどります。証明できることは証明し、できないことは、たどれなくなった行まで示します。
zod には addIssueToContext が 2 つあります。テキスト検索では両者が混ざってしまいます。
$ rg -n addIssueToContext # zod v3.23.8
146 lines, from both copies, mixed together
LLMGRAPH はそれらを分け、根拠も示します。
llmgraph · who_calls addIssueToContext (src/helpers/parseUtil.ts:72): 71 in a set
⚠︎ type checker starting: answers use our own reading for now; 71 calls unchecked
◇ within_these 71 calls -> one of 1 (closed: repo only) [c] w1
⚠︎ plus 7 dynamic calls nearby that could reach anything w2
– ruled out: 71 same-name calls (proven: other target) [c] w3
assumes [c]: our own reading, not confirmed by the checker
(lines trimmed)
よく似た候補 71 件を除外し、その理由も示します。 型チェッカーがまだ確認していない箇所についても、そのことを明示します。
もう一方の呼び出し元は?
エージェントが変更に取りかかる前に、呼び出し元を把握しておくべきです。requests で super_len(o) を super_len(o, strict) に変更し、check_my_changes に尋ねてみましょう。
llmgraph · check_my_changes: 1 file changed, 16 calls break
16 breaks: misses "strict" w1
⚠︎ breaks if it runs super_len src/requests/models.py:526 PreparedRequest.prepare_body (within_these, one of 1, closed: repo only) [c] w2
⚠︎ breaks if it runs super_len src/requests/models.py:575 PreparedRequest.prepare_content_length (within_these, one of 1, closed: repo only) [c] w3
⚠︎ breaks if it runs super_len tests/test_utils.py:62 TestSuperLen.test_io_streams (within_these, one of 1, closed: repo only) [c] w4
… 13 more test call sites
⚠︎ plus 9 dynamic calls nearby that could reach super_len w18
(lines trimmed)
実際のものだけを、壊れる呼び出しとして 16 件特定しました。 ブラインドテストの担当者によるテキスト検索でも、同じ 16 件が見つかり、それ以上でも以下でもありませんでした。追跡できない動的呼び出し 9 件も、無視せず明示されます。
その後、型チェッカーの解析が追いつきます。数秒後にもう一度尋ねてみましょう。
llmgraph · who_calls super_len (src/requests/utils.py:135): 16 certain
✓ certain src/requests/models.py:526 PreparedRequest.prepare_body w33
+1 more (all certain, same file) w34
✓ certain tests/test_utils.py:62 TestSuperLen.test_io_streams w35
+13 more (all certain, same file) w36
⚠ plus 9 dynamic calls nearby that could reach anything w37
(lines trimmed)
リリース済みのプログラムでは、「独自の読み取り」から 16 件の certain へ。 ラベルは証明済みの内容を超えることはなく、証明できた時点ですぐに更新されます。
5 つのラベル
ほかのツールは、うわさをもとにコードベースの概略を描き、自信ありげに死角を埋めます。LLMGRAPH が使うのは 2 色です。証明した内容を示すインクと、証明できていない内容を示す分かりやすい警告です。両者を取り違えることはありません。
| ラベル | 意味 |
|---|---|
certain | 関数がちょうど 1 つであると証明できます。 |
exactly_these | 既知の集合であり、そのすべてが実際にここで実行される可能性があります。 |
within_these | 既知のリストのいずれかです。リストにあるものの中には、ここでは実行されないものもあります。 |
maybe_more | 候補はありますが、ほかにもある可能性が残っています。 |
cannot_see | 手がかりがありません。 |
回答には確率を示す数値はありません。何が除外されるかを示します。
テストプロジェクトでの測定結果
エージェントが尋ねてから 1 秒以内に、型チェッカーが呼び出し元を確認します(Python)。また、LLMGRAPH が保存内容を取り込んだ後なら、check_my_changes は 1 秒以内に回答します。無関係なコードにも現れる名前では、プレーンテキスト検索が誤った行を何百件も返した一方、LLMGRAPH は誤った呼び出し元を 1 件も示さず、エージェントが読み取るトークン数も半分未満でした。重複のない固有の名前では、削減効果はありません。
測定方法、生データ、LLMGRAPH が苦手とするケースについては、BENCHMARKS.md をご覧ください。
エージェントが尋ねられること
| ツール | 回答する内容 |
|---|---|
who_calls | この関数を呼び出すすべての箇所と、確認できない呼び出し。 |
what_breaks_if_changed | 直接的または間接的にこの関数に依存するすべてのものと、確認できないもの。 |
check_my_changes | 編集後に、更新し忘れた呼び出し元と、確認できないもの。 |
what_is_unknown | 視界の届かない箇所(動的呼び出し、未知の型、読み取れないファイル)とその理由。 |
explain | その回答に至った理由、つまり回答の 1 行を裏付ける根拠。 |
コードはお使いのマシン上で読み取られ、解析されます。コード、パス、シンボル名、リポジトリ名、クエリ、回答がこちらに送信されることはありません。リリース済みのプログラムで確認したところ、接続先は beta.llmgraph.in のみです。利用状況のカウントとクラッシュレポートはデフォルトで有効になっており、無効にできます(npx -y llmgraph-mcp telemetry off)。ライセンス確認は常に有効です。プライバシーページ。
インストール
Claude Code(プラグイン):
claude plugin marketplace add brainfoods-studio/llmgraph-agent-plugin
claude plugin install llmgraph@llmgraph
このプラグインは、エージェントが関数名やクラス名を検索する前に、LLMGRAPH の回答を提示します。また、検索を妨げることはありません。エージェントが処理を終了しようとする際、保存された編集によって呼び出しが certain に該当し、確実に壊れるものが残っていれば、一度だけ停止してそれらを一覧表示します。それ以外の場合に処理を妨げることはありません。また、npx -y llmgraph-mcp hook off を実行すると、両方の機能を無効にできます。
任意の MCP エージェント: サーバーとして npx -y llmgraph-mcp を追加します(Windows では、一部のエージェントで cmd /c npx -y llmgraph-mcp が必要です)。Google で一度サインインすれば、エージェントが質問します。Claude Code、Antigravity、Cursor、Codex、Gemini CLI、Windsurf、OpenCode 向けのセットアップガイドがあります。Claude Code と Antigravity での動作を確認済みです。
現在の制限: Windows x64 · Python と TypeScript/JavaScript(その他の言語は cannot_see として報告され、何もないものとして数えられることはありません) · プランごとの行数上限までのリポジトリ · 招待制ベータ版、招待をリクエスト · 個人向けプランはトライアル付きで 1 種類、料金。
このリポジトリには、MIT ライセンスのオープンなセットアップファイルが含まれています。LLMGRAPH エンジンはクローズドソースであり、EULAに基づいてお客様のマシン上で動作します。Brainfoods Studio、インド · [email protected] · [email protected]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。