Code-Graph-RAG について
Code-Graph-RAGは多言語のコードベースをナレッジグラフに索引化し、自然言語での検索、編集、最適化を行うCLIです。複数言語にまたがるコード構造を分析する開発者向けです。
主な機能
- 01Tree-sitterによる多言語索引化
- 02統一されたコードナレッジグラフ
- 03自然言語によるコード検索
- 04差分プレビュー付きAST編集
- 05デッドコード検出
- 06実行時の呼び出し追跡
活用シーン
- 01混在言語のモノレポの関係を調査
- 02名前や意図からコードを取得
- 03パッチ適用前に編集内容を確認
- 04エントリーポイントから到達不能コードを検出
MCP 対応
MCP サーバーとして動作し、Claude CodeなどのMCPクライアントから索引化したコードベースを検索・編集できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx code-graph-ragORCHESTRATOR_PROVIDERLLM provider for the orchestrator agent (openai, anthropic, google, azure, cohere, ollama)ORCHESTRATOR_MODELModel name for the orchestrator agentORCHESTRATOR_API_KEYシークレットAPI key for the orchestrator LLM provider (not needed for the default local ollama provider)CYPHER_PROVIDERLLM provider for Cypher query generation (openai, anthropic, google, azure, cohere, ollama)CYPHER_MODELModel name for Cypher query generationCYPHER_API_KEYシークレットAPI key for the Cypher LLM provider (not needed for the default local ollama provider)MEMGRAPH_HOSTHostname of the Memgraph databaseMEMGRAPH_PORTPort of the Memgraph databaseTARGET_REPO_PATHPath to the repository to analyze (auto-detected from working directory if not set)ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Code-Graph-RAG
Code-Graph-RAG は Tree-sitter で多言語のコードベースを解析し、利用可能な場合はコンパイラー級のフロントエンドとランタイムトレースで解析を強化します。サーバー不要の組み込みグラフデータベースにコード構造のナレッジグラフを構築し、平易な英語でコードをクエリ、編集、最適化できます。さまざまな言語が混在するモノレポも、統一されたグラフスキーマで処理できます。
1. インデックス作成: cgr start --update-graph でリポジトリを解析し、ナレッジグラフを構築します(高速化されています)
2. 質問: cgr start でグラフに基づいて質問に回答し、コードを編集します
最新ニュース 🔥
- 静音モードの強化: CLI の
--quietフラグにより、デッドコードと重複コードのスキャン行が表示されなくなり、出力がすっきりします。 - コンテキスト予算の修正: 対象が割り当てられた予算内に収まらない場合も正しく処理され、予期しない動作を防げるようになりました。
- コード品質: メソッド呼び出しに影響するデコレーターと修飾子の変更を報告する機能、およびサブモジュールの文法が正しく読み込まれるようにする変更が加えられました。
- CGR のプルーニング機能: ルートが存在しなくなったプロジェクトを削除する
cgr prune機能が追加されました。
全履歴については、NEWS.md をご覧ください。
できること
Code-Graph-RAG にリポジトリを指定すると、すべてのソースファイルを読み込み、関数、クラス、メソッド、モジュール、およびそれらの関係を抽出して、相互につながったグラフとして保存します。グラフを作成すると、次のことができます。
- コードベースについて自然言語で質問し、実際の構造に基づいた回答を得られます。
- 名前や意図を指定して、任意の関数、クラス、メソッドの実際のソースコードを取得できます。
- AST ベースの精密なパッチ適用と、変更前の差分プレビューを使って、エージェント経由でコードを編集できます。
- 言語のベストプラクティスや独自のコーディング規約に照らしてコードを最適化できます。
- エントリポイントから呼び出しと参照のエッジをたどり、デッドコードを見つけられます。
- ast-grep で AST パターンを使って構造的に検索し、書き換えられます。
- 実行時の動作を重ね合わせられます。テスト実行をトレースする(または本番環境の eBPF プロファイルを取得する)には
cgr traceを使い、実際に発生した呼び出しをグラフに統合します。これにより、静的解析では確認できないディスパッチを明らかにできます。
動作の仕組み
システムは次の2つのコンポーネントで構成されています。
- 多言語パーサー。 Tree-sitter ベースのパーサーがコードベースを読み込み、関数、クラス、メソッド、モジュール、およびそれらの関係を、言語に依存しない単一のスキーマでグラフに取り込みます。ツールチェーンが利用できる場合は、コンパイラー品質のフロントエンドが正確な情報を追加します(C/C++ の libclang、Go の
go/types、およびオプトインの Roslyn、javac、Jedi による C#、Java、Python の解析)。さらに、動的トレースによって実行時に観測された呼び出しを統合します。Tree-sitter が引き続き基盤となります。トレースで確認できるのは実行されたコードのみであり、コンパイラーフロントエンドで対象にできるのはツールチェーンでビルドできる範囲のみです。 - RAG システム(
codebase_rag/)。自然言語を Cypher クエリに変換し、一致するコードを取得して、AI による編集と最適化を実行する対話型 CLI です。
Source Code -> Tree-sitter Parser -> AST Analysis -> Knowledge Graph
|
User Query -> AI Model (Cypher Gen) -> Cypher Query -> Graph Results -> Response
グラフは、デフォルトでは組み込み SQLite ファイルに保存されます。Memgraph と Neo4j はオプトインのバックエンドで、同じ Cypher を実行します。グラフバックエンドで各バックエンドを比較しています。
全体像については、アーキテクチャ概要とグラフスキーマをご覧ください。
対応言語
Python、TypeScript、TSX、JavaScript、Rust、Go、Java、C、C++、C#、PHP、Lua、Dart、Julia に完全対応しています。Scala は開発中です。Ruby、Kotlin、Swift、Elixir、Haskell、Solidity、Bash、Nix は、プラグイン可能な ast-grep 層を通じて構造に対応しています(言語に備わっている場合、モジュール、関数、クラス、インポートを解析します)。言語ごとの対応機能については、言語サポートの一覧をご覧ください。
インストール
cgr は PyPI で公開されています。treesitter-full(tree-sitter 文法)、ast-grep(Ruby、Kotlin、Swift、Elixir、Haskell、Solidity、Bash、Nix)、および semantic(ベクトル検索)エクストラを指定して、システム全体にインストールしてください。
# with uv (recommended)
uv tool install "code-graph-rag[treesitter-full,ast-grep,semantic]"
# or with pipx
pipx install "code-graph-rag[treesitter-full,ast-grep,semantic]"
使用しているバージョンはどれですか?
バージョン系列は3つあり、それぞれ意図的に異なります。
| 場所 | 追跡対象 |
|---|---|
| git タグ | すべてのバージョン(マージごとに1つ) |
| GitHub Releases(バイナリ、署名) | 50バージョンごとに1つ、およびセキュリティ修正、破壊的変更、または release now とラベル付けされたマージ |
| PyPI | 50バージョンごとに1つ、およびセキュリティ修正、破壊的変更、または release now とラベル付けされたマージ |
そのため、main の最新タグは通常、最新リリースより先に進んでおり、パッチバージョンで数十個先行していることもよくあります。両者が一致するのは、リリース直後だけです。何かが滞っているわけではなく、リリース間隔が意図的に異なっています。セキュリティ修正、破壊的変更、またはメンテナーが release now とラベル付けしたマージは、この間隔を待ちません。それぞれ、リリースと PyPI へのアップロードが直ちに行われます。
uv tool install と pipx install でインストールされるのは、最新の PyPI バージョン、つまり最新の RELEASE であり、最新のタグではありません。中間のタグは、すべてのマージを指定できるようにするために存在します。バイナリと PyPI へのアップロードは上記の間隔に従います。
最新リリースより新しいコードを実行するには、git からインストールします。
uv tool install "code-graph-rag[treesitter-full,ast-grep,semantic] @ git+https://github.com/vitali87/code-graph-rag@main"
既存のインストールをアップグレードするには、uv tool upgrade code-graph-rag を実行します(pipx の場合は pipx upgrade code-graph-rag、git インストールの場合は pipx reinstall code-graph-rag)。その他のインストール方法については、アップグレードをご覧ください。
Python 3.12 以降と ripgrep も必要です。グラフはデフォルトで埋め込み SQLite ファイルに保存されるため、実行するデータベースサーバーはありません。Docker も cmake も不要です。Memgraph と Neo4j は引き続きオプションのバックエンドとして利用できます(グラフバックエンド)。前提条件、ソースからのインストール、環境設定の詳細は、インストールガイドをご覧ください。
メモ
wheel は純粋な Python(
py3-none-any)のため、Python 3.12 以降を使用するあらゆるプラットフォームにインストールできます。古いシステムのインタープリター(Debian Bookworm に付属するのは 3.11)では、インタープリターを明示的に指定する必要があります。コマンドについては、インストールをご覧ください。
クイックスタート
# Parse a repository into the graph, then query it
cgr start --repo-path /path/to/repo --update-graph
cgr start --repo-path /path/to/repo
グラフは ~/.cgr/graph.sqlite に書き込まれます(移動するには SQLITE_GRAPH_PATH を設定してください)。
代わりに Memgraph を使用するには、memgraph extra を使ってドライバーをインストールし、GRAPH_BACKEND=memgraph を設定してから、cgr daemon up で同梱の Memgraph と Qdrant のスタックを起動します。
インデックスを作成する各リポジトリで、最初のコマンドを繰り返します。グラフは共有されており、1つのプロジェクトを同期しても、ほかのプロジェクトには影響しません。空のグラフからやり直すには --clean を追加します。これにより、このプロジェクトだけでなく、共有グラフ内のすべてのプロジェクトが削除され、ほかのプロジェクトも削除される場合は事前に確認が求められます。
デフォルトのインデックスでは、オプトインのキャプチャグループは除外されます。追加するには --capture または CGR_CAPTURE を指定します。
クイックスタートガイドでは、パース、クエリ、エクスポートの手順を5分で説明しています。
MCP サーバー
Code-Graph-RAG はMCPサーバーとして動作するため、Claude Code やその他の MCP クライアントから、コードベースを直接クエリして編集できます。セットアップについては、MCP サーバーガイドをご覧ください。
ドキュメント
はじめに
ユーザーガイド
- CLI リファレンス
- 対話形式でのクエリ
- コードの最適化
- デッドコードの検出
- 動的呼び出しトレース
- グラフのエクスポート
- リアルタイム更新
- C/C++ セマンティックモード
- MCP サーバー
- 言語間の移植
アーキテクチャ
Python SDK
上級者向け
エンタープライズサービス
Code-Graph-RAG はオープンソースで、無料でご利用いただけます。さらに高度なニーズに応えるため、フルマネージドのクラウドホスト型ソリューションとオンプレミス導入を提供しています。
- クラウドホスト型導入:グラフデータベースと AI エージェント接続の両方に対応する、マネージドクラウドインフラストラクチャです。インフラストラクチャの管理は不要です。チームが開発に集中できるよう、スケーリング、更新、可用性の確保は当社が担います。
- オンプレミスおよびエアギャップ環境への導入:エアギャップネットワークを含む、お客様の環境内に Code-Graph-RAG を完全に導入できます。規制対象の業界やセキュリティに配慮が必要な組織に、データの完全な主権を提供します。
また、カスタム開発、統合コンサルティング、テクニカルサポート契約、チーム研修も提供しています。
貢献
貢献のガイドラインについては、CONTRIBUTING.mdをご覧ください。最初に取り組むのに適した PR は、TODO の issue から見つけられます。
サポート
問題や質問がある場合は、まずトラブルシューティングガイドを確認してから、issue を作成してください。
cgr が役に立った場合は、GitHub Sponsorsでの支援をご検討ください。cgr は cgr --version の実行時、およびターミナルでほとんどのコマンドが完了した後にページへのリンクを表示します。この表示を非表示にするには、CGR_SPONSOR_PLEDGE=false を設定してください。
アクセシビリティ
ACCESSIBILITY.mdでは、支援技術や代替設定を利用する方に向けた cgr とそのドキュメントの対応状況、既知の制限と回避策、およびアクセシビリティ上の障壁を報告する方法について説明しています。
ライセンス
MIT。LICENSEをご覧ください。
サードパーティ製コンポーネントとそのライセンスは、クレジットページに記載されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。