🚀 gograph
grep でトークンを燃やし尽くすのはもうやめよう。AIエージェントにグラフを。
gograph は、Go リポジトリのローカルかつ AST 対応のコールグラフを構築し、50 以上のクエリツールを CLI と MCP 経由で公開します。これにより、コーディングエージェントは生のファイルを読むことなく、パッケージ、シンボル、コールチェーン、ルート、SQL、環境変数、テストを自在にナビゲートできます。
ネットワークゼロ。実行ゼロ。シークレット読み取りゼロ。
gographは純粋な静的解析です — コードを実行したり、API 呼び出しを行ったり、.go以外のファイルを開いたりすることは一切ありません。
🚀 クイックスタート
# インストール
brew install ozgurcd/tap/gograph
# グラフを構築
gograph build . --precise
# 試してみる — ValidateToken を呼び出しているのは誰?
gograph callers "ValidateToken"
# 1 回の呼び出しで完全なコンテキスト(ノード + ソース + 呼び出し元 + 呼び出し先 + テスト)
gograph context "ValidateToken"
# 編集前の変更計画(呼び出し元、テスト、ルート、SQL、環境リスク)
gograph plan "ValidateToken"
💡 なぜ gograph なのか?
gograph 自身のコードベース(70 ファイル、518 シンボル、16 パッケージ)でベンチマーク済み:
| タスク | grep -rn |
gograph |
削減効果 |
|---|---|---|---|
loadGraph の呼び出し元を検索 |
158 行のノイズ(コメント、ドキュメント、変数) | 56 個の正確な構造的呼び出し箇所 | ノイズを約 65% 削減 |
| シンボル定義の特定 | "Symbol" に一致する 842 行 | 83 個の真の型/メソッド宣言 | ノイズを約 90% 削減 |
| 1 つの関数本体を読む | cat でファイル全体の 180 行以上を出力 |
source で正確な 12 行の関数を抽出 |
トークンを約 93% 削減 |
| シンボルを完全に理解する | 4〜5 回の個別ツール呼び出し | 1 回の呼び出し: context がすべてを束ねる |
ツール呼び出しを 80% 削減 |
✨ 主な機能
50 以上のクエリツール — callers、callees、impact、context、plan、review、errorflow、orphans、hotspot、coupling など。完全なコマンドリファレンス →
ネイティブ MCP サーバー — すべてのツールが MCP エンドポイントとして利用可能で、Claude、Cursor、Copilot、および任意の MCP 互換エージェントに対応。ワンコマンドでセットアップ: gograph add-claude-plugin
トークン節約の複合コマンド — context は 5 回の呼び出しを置き換えます。plan は 8 回を置き換えます。explain はアーキテクチャの物語を合成します。エージェントのラウンドトリップを最小化するために設計されています。
設計段階からの安全性 — ネットワークなし、コード実行なし、シークレットなし、.env ファイルの読み取りなし。AI 作業ツリーディレクトリ(.claude/、.cursor/、.agents/)は自動的に除外されます。
アーキテクチャの強制 — 境界ルール、API ドリフト検出、複雑度ゲート、デッドコードの掃討、神オブジェクト検出、結合度分析。CI で gograph gate を実行できます。
エージェントコンプライアンス監査 — セッションテレメトリは、エージェントが編集前に plan を実行し、編集後に review を実行したかを追跡します。エージェントの行動を A〜F で採点し、実行可能な推奨事項を提示します。
📖 コマンドリファレンス
すべてのコマンドは --json(機械可読な出力)と --files-only(フラットなファイルリスト)をサポートします。
| カテゴリ | コマンド | 機能 |
|---|---|---|
| インデックス | build . [--precise], stale, stats |
AST を解析しグラフを書き込む。鮮度を確認。インデックスの健全性。 |
| ナビゲーション | query, callers [--depth N], callees [--depth N], path, source, node |
シンボルの検索、コールチェーンの追跡、ソースの抽出。 |
| コンテキスト | context, explain, focus, endpoint |
1 回の呼び出しで構造データをまとめて提供。トークン節約。 |
| 変更分析 | plan, review, risk, impact [--uncommitted|--since], changes [--git], api --since |
編集前の計画、編集後のレビュー、リスク分析、影響範囲、ドリフト。 |
| アーキテクチャ | boundaries, coupling, complexity, godobj, orphans, arity |
品質ゲート、デッドコード、結合度、神オブジェクト。 |
| 型と構造体 | fields, implementers [--test-only], interfaces, embeds, constructors, literals, usages, mutate, schema |
構造体フィールド、インターフェースの充足、型の使用状況。 |
| インフラストラクチャ | routes, sql, envs, errors, concurrency, globals, httpcalls, deps [--transitive], dependents, imports |
HTTP ルート、SQL、環境変数、並行処理、外向き HTTP 呼び出し、インポート。 |
| テスト | tests, fixtures, mocks |
テストカバレッジマップ、ヘルパー、モック実装。 |
| エラー追跡 | errorflow [--no-tests], trace |
エラー文字列から HTTP エントリポイントへの逆 BFS。 |
| 診断 | hotspot, returnusage, skeleton, diagram, changes, public |
ホットスポット、戻り値の使用状況、API シグネチャ、Mermaid 図。 |
| CI/CD | check [--since|--uncommitted], gate, snapshot save|diff|list|drop |
ポリシーチェック、閾値の強制、メトリクススナップショット。 |
| テレメトリ | session create|end|audit|cleanup |
エージェントのコンプライアンス追跡とグレーディング(A〜F)。 |
| LLM-Wiki | wiki [--output dir] |
llm-wiki/ を生成 — ゼロコストのエージェントオリエンテーション向けの機械優先 Markdown ページ(概要、アーキテクチャ、ホットスポット、ルート、環境、エラー、並行処理、パッケージ別、API サーフェス)。 |
| サマリー | summary [--json] |
1 回の呼び出しによるコードベースのブリーフィング: トップ 3 ホットスポット、最も不安定なパッケージ、最も複雑な関数、オーファン数、神オブジェクト数。5 回の個別呼び出しを置き換え。 |
| 未テスト | untested [--pkg name] [--top N] [--json] |
呼び出し元はあるがテストエッジがゼロの関数 — オーファンやシンボル単位のテストクエリでは見えないカバレッジギャップ。1 回のスイープで N 回の tests <sym> 呼び出しを置き換え。 |
| ドキュメント | doc <pkg[.Symbol]> [--json] |
go doc のラッパー — 任意の標準ライブラリまたはサードパーティシンボルのシグネチャと doc コメント。グラフ不要。コールチェーンがプロジェクト外に出るときのギャップを埋める。 |
例付きの完全なコマンドリファレンス: gograph.identuum.ai/docs/command-reference
アーキテクチャ境界の強制
.gograph/boundaries.json で境界を定義します:
{
"layers": [
{ "name": "domain", "packages": ["internal/domain/**"], "may_import": [] },
{ "name": "handler", "packages": ["internal/handler/**"], "may_import": ["internal/service/**", "internal/domain/**"] }
]
}
gograph boundaries を実行 — 違反時はコード 1 で終了します。CI/CD で動作します。
🤖 AI エージェント連携
ワンコマンドセットアップ(Claude Desktop + Claude Code):
gograph add-claude-plugin
これにより MCP サーバーが登録され、CLAUDE.md のステアリングルールが注入され、Go シンボルに対する grep を gograph ツールにリダイレクトする PreToolUse フックがインストールされます。
代替手段 — Claude Code プラグインマーケットプレイス経由でインストール:
/plugin marketplace add ozgurcd/gograph
/plugin install gograph@gograph
Claude Code のプラグインマーケットプレイスを通じて gograph を検出し、Go 作業時に自動有効化される SKILL.md を提供します。これにより、エージェントに必須ワークフロー(capabilities → build → plan → context → review)と、Go シンボル検索に grep/rg/find を使用してはならないことを教えます。
gograph バイナリ自体は別途インストールする必要があります(brew install ozgurcd/tap/gograph または go install github.com/ozgurcd/gograph@latest)。完全なワンコマンドブートストラップ(MCP 配線 + CLAUDE.md ルール + PreToolUse フック)には上記の gograph add-claude-plugin を使用してください。Claude Code のプラグイン UI 内から gograph を検出・インストールしたい場合は、プラグインマーケットプレイスを使用してください。
その他のエージェント(Cursor、Copilot、Antigravity など):
gograph mcp . # stdio 経由で MCP サーバーとして実行
.cursorrules または AI システムプロンプトに追加します:
アーキテクチャやリポジトリに関する質問に答える前に、利用可能な
gograph_*MCP ツールを確認し、grep/find の代わりにそれらを使用してください。まずgograph capabilitiesを実行してください。
すべてのコマンドは --json で機械可読な出力をサポートします:
gograph callers "ValidateToken" --json
# → {"schema_version": "1", "command": "callers", "status": "ok", "count": 2, "results": [...]}
完全な連携ガイドについては、docs/coding-agent-usage.md を参照してください。
llm-wiki/ によるゼロコストのオリエンテーション: セッションごとに 1 回 gograph wiki を実行すると、機械優先 Markdown ページのディレクトリが生成されます — 概要、アーキテクチャ図、ホットスポット、ルート、環境変数、エラー箇所、並行処理、パッケージ別ドキュメント、そして完全な API サーフェス。エージェントは数十回の個別ツール呼び出しを発行する代わりに、これらのページを読みます:
gograph build . --precise
gograph wiki # ./llm-wiki/ に書き込む
# その後読み込む: llm-wiki/README.md → project.md → rules.md → agent-contract.md → overview.md
llm-wiki/ を .gitignore に追加してください — これらのファイルはセッションごとに再生成されます。
📊 出力例
gograph build . を実行すると、生成された GRAPH_REPORT.md が AI に凝縮されたコンテキストマップを提供します:
外部依存関係(技術スタック)
| モジュール | バージョン |
|---|---|
github.com/gin-gonic/gin |
v1.9.1 |
github.com/jackc/pgx/v5 |
v5.5.5 |
重要なシンボル(発信呼び出し数順)
| シンボル | 種類 | ファイル | 行 | 発信呼び出し数 |
|---|---|---|---|---|
(Server).Start |
method | server.go |
42 | 18 |
ValidateAuth |
function | auth.go |
12 | 14 |
🤔 なぜ Language Server(gopls)を使わないのか?
gopls は人間の IDE 向けに最適化されています。gograph はターミナルベースの LLM 向けに最適化されています:
- プロトコルのミスマッチ —
goplsはfile:line:colの座標を返します。その後エージェントは実際のコードを読むためにcat/sedを実行しトークンを消費する必要があります。gographは正確な構造的スライスを抽出し、Markdown として整形します。 - グラフレベルの診断 —
goplsはホバーと定義ジャンプを行います。gographは逆 BFS エラー追跡、完全な影響範囲分析、そしてコールグラフ全体にわたる PR レベルの変更計画を行います。 - 合成可能なインテリジェンス —
goplsは一度に 1 つの質問に答えます。gograph contextはノード + ソース + 呼び出し元 + 呼び出し先 + テストを 1 回の呼び出しで束ねます。gograph planは影響、ルート、SQL、環境、テストリスクを 1 つのチェックリストに集約します。
正確性モデル
- デフォルトモードは Go AST 解析とベストエフォートのヒューリスティクスを使用します。不完全またはコンパイルできないリポジトリも許容します。
- Precise モードは型チェック済みのエンリッチメントを使用し、コンパイル可能なパッケージを必要とします。
- ヒューリスティック抽出器(ルート、SQL、テスト、エラーマッピング)はナビゲーション補助であり、権威あるプログラム解析ではありません。
非目標(Non-goals)
- 多言語パースは行わない
- AI/モデル API 呼び出しは行わない
- 埋め込みや SaaS バックエンドは行わない
- テレメトリは行わない
- コンパイラ/型チェッカーの正確性を置き換えるものではない
🤝 コントリビューション
プルリクエスト歓迎です!ビルド、テスト、コントリビューションのガイドラインについては CONTRIBUTING.md を参照してください。
言語サポート:
gographは現在 Go のみをパースします。アーキテクチャは拡張可能です — Python、TypeScript、Rust などを追加したい場合は、まず issue を開いてください。
📄 ライセンス
MIT — LICENSE を参照してください。








VIP会員