Unified Context Graph
lean-ctx erstellt einen einheitlichen Graphen, der Code, Commits, Tests, Wissen und Issues verbindet - für aufgabenbewusste Kontextbereitstellung und tiefgreifende Impact-Analyse.
Knotentypen
Der Graph enthält 8 Knotentypen, die verschiedene Aspekte deines Projekts repräsentieren:
File Quelldateien, die vom Indexer erfasst werden
Symbol Funktionen, Klassen, Typen und Variablen
Module Logische Gruppierungen (Pakete, Crates, Module)
Commit Git-Commits mit Nachricht und Metadaten
Test Testfunktionen und Testdateien
CIRun CI/CD-Pipeline-Läufe und Ergebnisse
Knowledge Projektwissen aus ctx_session
Issue Issues und Tickets, die mit Code verknüpft sind
Kantentypen
Kanten repräsentieren Beziehungen zwischen Knoten. lean-ctx verfolgt 11 Kantentypen:
| Kantentyp | Bedeutung | Beispiel |
|---|---|---|
Imports | Datei importiert eine andere Datei | A.ts → B.ts |
Calls | Funktion ruft eine andere Funktion auf | fn_a → fn_b |
Defines | Modul definiert ein Symbol | mod → fn |
TestedBy | Datei wird von einer Testdatei getestet | utils.rs → test_utils.rs |
ChangedIn | Datei wurde in einem Commit geändert | file → commit |
MentionedIn | Datei wird in einem Wissensfakt erwähnt | file → knowledge |
Affects | Issue betrifft eine Datei | issue → file |
Breaks | Commit bricht einen Test | commit → test |
Graph-Anreicherung
Die Anreicherung erweitert den Code-Graphen mit Daten aus Git, Tests und Wissen - für eine einheitliche Projektansicht.
Git-History-Indexer
Analysiert aktuelle Git-Commits (Standard: letzte 500) und erstellt Commit-Knoten mit ChangedIn-Kanten zu betroffenen Dateien.
Test-Indexer
Erkennt Testdateien anhand von Namenskonventionen (test_, _test, _spec) und verknüpft sie über TestedBy-Kanten mit Quelldateien.
Wissens-Brücke
Verknüpft über ctx_session erfasste Projektwissensfakten mit referenzierten Dateien über MentionedIn-Kanten.
MCP-Befehle
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.
Kontext-Abfragen
Verwenden Sie graphbasierte Kontextabfragen, um die relevantesten Dateien für jede Aufgabe zu finden - unter Nutzung struktureller, historischer und semantischer Verbindungen.
Verwendung
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 Funktionsweise
- Extrahiert Schlüsselwörter aus deiner Aufgabenbeschreibung
- Gleicht Schlüsselwörter mit Dateinamen und Commit-Nachrichten ab
- Erweitert Ergebnisse über Graph-Kanten (Imports, Tests, Wissen)
- Gibt eine sortierte Liste relevanter Dateien mit Beziehungskontext zurück
Interaktiver HTML-Export
Exportieren Sie deinen Abhängigkeitsgraphen als einzelne, eigenständige HTML-Datei. Die generierte Datei funktioniert vollständig offline - öffnen Sie sie in einem beliebigen Browser, um Ihre Codebasis visuell zu erkunden. Kein Server, keine Abhängigkeiten, nur eine HTML-Datei.
Verwendung
# 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 Interaktive Funktionen
Search Geben Sie einen Dateipfad-Teilstring ein, um passende Knoten sofort hervorzuheben
Pan & Zoom Klicken und ziehen zum Schwenken, scrollen zum Zoomen. Funktioniert wie eine Karte.
Node Details Klicken Sie auf einen Knoten, um seine Imports und abhängigen Dateien in einer Seitenleiste anzuzeigen
Reverse Deps Rechtsklicken Sie auf einen Knoten, um alle Dateien hervorzuheben, die von ihm abhängen (BFS-Traversierung)
PNG Export Laden Sie die aktuelle Canvas-Ansicht mit einem Klick als PNG-Bild herunter
Offline Keine externen Abhängigkeiten. Die gesamte App ist in einer HTML-Datei eingebettet.
Tipps
- Verwenden Sie --max-nodes, um die Visualisierung bei großen Projekten lesbar zu halten (50–200 ist ein guter Bereich)
- Führen Sie zuerst graph build aus, um sicherzustellen, dass der Index vor dem Export aktuell ist
- Die HTML-Datei kann sicher mit Teamkollegen geteilt werden - sie enthält keinen Quellcode, nur Dateipfade und Beziehungen
- Die Rechtsklick-Hervorhebung zeigt die vollständige Reverse-Dependency-Kette an, was es einfach macht, den Auswirkungsradius von Änderungen zu bewerten
Dashboard-API
| Endpunkt | Beschreibung |
|---|---|
/api/graph/stats | Knoten- und Kantenanzahl, Datenbankpfad |
/api/graph/enrich | Vollständige Graph-Anreicherung auslösen und Statistiken zurückgeben |