Phase 0 bis Phase 7: Vom Pre-flight-Check zum fertigen Knowledge Graph mit 16 Node-Typen und 29 Edge-Typen.
Bevor die eigentliche Analyse startet, pruft Phase 0 die Voraussetzungen. Der Incremental-CheckPruft, ob bereits ein knowledge-graph.json existiert und ob sich seit dem letzten Lauf Dateien geandert haben (via Git-Diff). Bei inkrementeller Analyse werden nur geanderte Dateien neu analysiert. ist besonders wichtig: Existiert bereits ein Knowledge Graph? Wenn ja, welche Dateien haben sich seit dem letzten Lauf geandert?
# Phase 0: Pre-flight Checks
pre_flight:
steps:
- check_git_status # Gibt es uncommitted changes?
- load_config # .claude-learning/config.json
- check_existing_graph # knowledge-graph.json vorhanden?
- compute_diff # git diff --name-only seit letztem Run
- decide_mode # full vs. incremental
output:
mode: "full" | "incremental"
changed_files: string[]
config: Config
Was passiert? Phase 0 pruft, ob ein vorheriger Graph existiert. Falls ja, werden nur geanderte Dateien (via Git-Diff) neu analysiert. Das spart bei grossen Projekten erheblich Zeit.
Der Output von Phase 0 bestimmt, ob ein Full-Run (alles neu) oder ein Incremental-Run (nur Anderungen) durchgefuhrt wird. Die Konfiguration aus .claude-learning/config.json wird geladen, falls vorhanden.
Phase 1 (SCAN) dispatcht den project-scanner-Agent, der alle Code-Dateien inventarisiert. Ergebnis: Ein JSON mit Dateipfaden, Zeilenanzahlen, Sprachen und Frameworks.
Phase 2 (ANALYZE) teilt die Dateien in Batches von 20-30 Stuck auf und dispatcht bis zu funf file-analyzer-Instanzen parallel. Jede Instanz erzeugt einen Teil-GraphEin JSON-Objekt mit nodes und edges, das nur die Dateien eines Batches abdeckt. Cross-Batch-Referenzen werden als "pending" markiert und in Phase 3 aufgelost. mit Nodes und Edges.
In Phase 3 werden die Teil-Graphen aller Batches zu einem einzigen Graphen zusammengefuhrt. Der assemble-reviewerNimmt alle Batch-Ergebnisse (batch-1.json bis batch-N.json) und merged sie zu einem assembled-graph.json. Dabei werden doppelte Nodes dedupliziert und Cross-Batch-Edges aufgelost. lost dabei drei Hauptprobleme: Deduplizierung von Nodes (gleiche Datei in mehreren Batches referenziert), Auflosung von Cross-Batch-Edges (Import von Batch 1 zeigt auf Datei in Batch 3), und Konsistenz-Checks.
# merge-batch-graphs.py — Kernlogik
def merge_graphs(batch_files):
merged = {"nodes": [], "edges": []}
seen_ids = set()
for batch in batch_files:
for node in batch["nodes"]:
if node["id"] not in seen_ids:
merged["nodes"].append(node)
seen_ids.add(node["id"])
for edge in batch["edges"]:
# Cross-Batch-Edges aufloesen
if edge["source"] in seen_ids:
merged["edges"].append(edge)
return mergedDas Ergebnis — assembled-graph.json — enthalt alle Nodes und Edges, aber noch keine Layer-Zuordnung und keinen Lernpfad. Diese werden in Phase 4 und 5 hinzugefugt.
Phase 4 (ARCHITECTURE) dispatcht den architecture-analyzer, der den assemblierten Graph analysiert und 3-10 logische Layer identifiziert. Jeder file-Node wird genau einem Layer zugeordnet.
Phase 5 (TOUR) dispatcht den tour-builder, der einen geordneten Lernpfad erstellt. Der Pfad beginnt typischerweise beim Haupteinstiegspunkt und fuhrt durch die wichtigsten Komponenten.
// Nach Phase 5: Graph-Struktur
{
"nodes": [/* 16 Typen, 50-500 Nodes */],
"edges": [/* 29 Typen, 100-2000 Edges */],
"layers": [
{ "name": "Core", "nodes": ["..."] },
{ "name": "API", "nodes": ["..."] },
{ "name": "UI", "nodes": ["..."] }
],
"guided_tour": {
"steps": [
{ "order": 1, "node_id": "src/index.ts", "why": "..." }
]
}
}Phase 6 fuhrt die abschliessende Qualitatsvalidierung durch. Der graph-reviewerPruft Schema-Konformitat (erlaubte Node/Edge-Typen), referentielle Integritat (keine dangling references) und Vollstandigkeit (jede Datei hat mindestens einen Node). pruft den Graph gegen drei Dimensionen: Schema, Integritat und Vollstandigkeit.
Es gibt zwei Review-Modi: Inline-Validierung (schnell, regelbasiert, fur kleine Projekte) und LLM-Review (grundlicher, fur grosse oder komplexe Projekte). Die Wahl wird automatisch getroffen basierend auf der Graph-Grosse.
Die letzte Phase speichert den validierten Graph als knowledge-graph.json in .claude-learning/. Danach werden die Intermediate-Dateien (Batch-JSONs, assembled-graph.json) aufgeraumt — sie werden nicht mehr benotigt, da der finale Graph alle Daten enthalt.
Optional wird ein HTML-Dashboard automatisch generiert und im Browser geoffnet. Das Dashboard bietet eine interaktive Visualisierung des Graphen mit Suchfunktion, Layer-Filtern und der gefuhrten Tour.
# Phase 7: Save + Cleanup
save:
steps:
- write_knowledge_graph # .claude-learning/knowledge-graph.json
- generate_dashboard # .claude-learning/dashboard.html
- cleanup_intermediate # batch-*.json, assembled-graph.json
- update_config # Letzte Lauf-Zeitstempel
- auto_launch_dashboard # open dashboard.html