統合コンテキストグラフ
lean-ctxはコード、コミット、テスト、ナレッジ、イシューを接続する統合グラフを構築し、タスク認識型のコンテキスト提供と深いインパクト分析を実現します。
ノードタイプ
グラフにはプロジェクトの様々な側面を表す8つのノードタイプが含まれます:
File インデクサーが追跡するソースファイル
Symbol 関数、クラス、型、変数
Module 論理的グルーピング(パッケージ、クレート、モジュール)
Commit メッセージとメタデータを持つGitコミット
Test テスト関数とテストファイル
CIRun CI/CDパイプラインの実行と結果
Knowledge ctx_sessionからのプロジェクトナレッジ
Issue コードにリンクされたイシューとチケット
エッジタイプ
エッジはノード間の関係を表します。lean-ctxは11のエッジタイプを追跡します:
| エッジタイプ | 意味 | 例 |
|---|---|---|
Imports | ファイルが別のファイルをインポート | A.ts → B.ts |
Calls | 関数が別の関数を呼び出し | fn_a → fn_b |
Defines | モジュールがシンボルを定義 | mod → fn |
TestedBy | ファイルがテストファイルによってテスト | utils.rs → test_utils.rs |
ChangedIn | ファイルがコミットで変更 | file → commit |
MentionedIn | ファイルがナレッジファクトで言及 | file → knowledge |
Affects | イシューがファイルに影響 | issue → file |
Breaks | コミットがテストを破壊 | commit → test |
グラフエンリッチメント
エンリッチメントはGit、テスト、ナレッジのデータでコードグラフを拡張し、統合プロジェクトビューを作成します。
Git履歴インデクサー
最近のGitコミット(デフォルト:直近500件)を解析し、影響を受けるファイルへのChangedInエッジを持つCommitノードを作成します。
テストインデクサー
命名規則(test_、_test、_spec)でテストファイルを検出し、TestedByエッジでソースファイルにリンクします。
ナレッジブリッジ
ctx_sessionで記録されたプロジェクトナレッジファクトをMentionedInエッジで参照ファイルにリンクします。
MCPコマンド
ctx_graph enrich # Enrich graph with git, tests, knowledge
ctx_graph build # Index code structure
ctx_graph status # Show node/edge counts Community Detection (Louvain)
The Louvain algorithm clusters files into communities based on their dependency relationships. Files that frequently import each other or share transitive dependencies are grouped together, enabling smarter context preloading and relevance scoring for task-driven queries.
PageRank
Computes file importance scores based on the dependency graph structure. Files imported by many others (structural hubs) receive higher PageRank, which is used by Spectral Relevance and Boltzmann Allocation to prioritize high-impact files during context assembly.
コンテキストクエリ
グラフベースのコンテキストクエリを使用して、構造的、履歴的、意味的な接続を活用し、あらゆるタスクに最も関連するファイルを見つけます。
使用方法
ctx_graph context "fix auth bug" # Find relevant files for task
ctx_graph related src/auth.rs # Connected files
ctx_graph impact src/auth.rs # Blast radius analysis
ctx_graph symbol src/auth.rs::verify # Symbol definition/usages 仕組み
- タスク説明からキーワードを抽出
- キーワードをファイル名とコミットメッセージにマッチング
- グラフエッジ(インポート、テスト、ナレッジ)で結果を拡張
- 関係コンテキスト付きの関連ファイルのランク付きリストを返却
インタラクティブ HTML エクスポート
依存関係グラフを単一の自己完結型 HTML ファイルとしてエクスポートします。生成されたファイルは完全にオフラインで動作します--任意のブラウザで開いてコードベースを視覚的に探索できます。サーバー不要、依存関係不要、HTML ファイル1つだけです。
使用方法
# Export full graph (all nodes)
lean-ctx graph export-html --out graph.html
# Limit to 100 most-connected nodes
lean-ctx graph export-html --out graph.html --max-nodes 100
# Custom project root
lean-ctx graph export-html --out graph.html --root /path/to/project インタラクティブ機能
Search ファイルパスの部分文字列を入力すると、一致するノードが即座にハイライトされます
Pan & Zoom クリック&ドラッグでパン、スクロールでズーム。地図のように操作できます。
Node Details 任意のノードをクリックすると、サイドバーにインポートと依存先が表示されます
Reverse Deps ノードを右クリックすると、そのファイルに依存するすべてのファイルがハイライトされます(BFS 走査)
PNG Export ワンクリックで現在のキャンバスビューを PNG 画像としてダウンロード
Offline 外部依存関係なし。アプリ全体が1つの HTML ファイルに埋め込まれています。
ヒント
- --max-nodes を使用して大規模プロジェクトの可視化を読みやすく保ちます(50–200が推奨範囲)
- エクスポート前に graph build を実行して、インデックスが最新であることを確認してください
- HTML ファイルはチームメイトと安全に共有できます--ソースコードは含まれず、ファイルパスと関係のみです
- 右クリックハイライトは完全な逆依存チェーンを表示し、変更の影響範囲を簡単に評価できます
ダッシュボードAPI
| エンドポイント | 説明 |
|---|---|
/api/graph/stats | ノードとエッジの数、データベースパス |
/api/graph/enrich | 完全なグラフエンリッチメントをトリガーし統計を返却 |