KI & Agents
Context EngineeringModel Context ProtocolGraphifyObsidianTree-sitter

Context Engineering statt Prompting – Das mentale Modell des Agenten in Legacy-Codebases

Erfahre, wie du Coding-Agenten durch Context Engineering, Wissensgraphen und Obsidian-ADRs zielsicher durch komplexe Legacy-Codebases navigierst.

LKLukas Kopischke
Zuletzt aktualisiert am

Ein Entwickler öffnet Claude Code oder Cursor in einer gewachsenen Monolithen-Codebase mit 280.000 Zeilen Legacy-Code. Der Prompt lautet scheinbar harmlos: „Refaktoriere die Session-Verwaltung im Checkout“. Nach zwei Minuten liest der Agent blind 45 Dateien ein, flutet das Kontextfenster mit 180.000 Tokens, halluziniert veraltete Methoden und bricht mit Syntaxfehlern ab. Warum scheitert naives Vibe Coding in Brownfield-Projekten so spektakulär – und wie gibt man dem Agenten einen strukturierten Kompass, damit er nicht im Code-Dschungel ertrinkt?

Erfolgreiches Brownfield-Coding erfordert systematisches Context Engineering statt blindem Datei-Grepping: Graphify kartiert Code-Strukturen und Abhängigkeiten deterministisch als Wissensgraph, Obsidian fungiert als versioniertes Team-Gedächtnis für Architekturentscheidungen, und das Model Context Protocol (MCP) liefert dem Agenten punktgenaue Werkzeuge zur gezielten Abfrage. Die Grenze: Stark dynamischer Code ohne Typisierung erfordert weiterhin menschliche Leitplanken und lückenlose Testsuiten.

Kontext-Souveränität

Ein KI-Agent scheitert in Legacy-Code nicht an mangelnder Intelligenz, sondern an Kontext-Verschmutzung: Subtraktives Context Engineering und Wissensgraphen senken den Token-Footprint um 95 Prozent und bändigen den Blast-Radius.

Die 100k-Token-Falle: Warum naives Prompting an Legacy-Code zerschellt

Während Greenfield-Projekte auf einem sauberen Reißbrett mit isolierten Modulen starten, sind Brownfield-Codebases von Jahren impliziten Wissens geprägt. Hier treffen Sprachmodelle auf drei strukturelle Sollbruchstellen:

  1. Context Rot und die „Lost in the Middle“-Amnesie: Selbst bei Kontextfenstern von 200.000 bis zu einer Million Tokens sinkt die Aufmerksamkeitsdichte eines Modells massiv, wenn Hunderte Seiten unstrukturierter Quellcode, Boilerplate und Konfigurationsdateien in den Prompt gekippt werden (Context Poisoning). Randbedingungen in der Mitte des Textes werden systematisch übersehen.
  2. Der Blast-Radius von : In Legacy-Systemen existieren fast immer Klassen wie OrderManager oder SessionStore, an denen dutzende Subsysteme hängen. Ein unbedarfter Agent sieht beim Ändern einer Methode nicht, welche 14 Nebensysteme auf genau das alte Verhalten angewiesen sind.
  3. Das Rätsel der impliziten Verträge (Invisible Contracts): Code verrät nur das Wie, aber fast nie das Warum. Ohne Zugriff auf historische Architekturentscheidungen und dokumentierte Eigenheiten refaktoriert der Agent scheinbar umständliche, aber überlebenswichtige Workarounds und Fallbacks einfach weg.

Context Engineering statt Prompting: Das mentale Modell des Agenten

In der modernen Agenten-Architektur gilt der Grundsatz: Prompt Engineering steuert, was das Modell sagt – Context Engineering kuratiert, was das Modell sieht.

Ein erfahrener Principal Engineer lädt bei der Fehlersuche in einem gewachsenen Monolithen niemals 300.000 Zeilen Code auf einmal in sein biologisches Arbeitsgedächtnis. Das menschliche Gehirn stützt sich auf eine bewährte kognitive Hierarchie:

  1. Das topologische Schema: Eine mentale Landkarte der Systemgrenzen („Der Checkout-Service spricht asynchron über Kafka mit dem Buchungsjournal“).
  2. Das episodische Gedächtnis: Dokumentiertes Team-Wissen („Achtung: Die Steuerberechnung enthält einen historischen Rundungs-Fix für Skandinavien“).
  3. Das fokussierte Arbeitsgedächtnis: Nur die zwei bis drei tatsächlich geöffneten Dateien im Editor.

Wenn Entwickler von einem KI-Agenten verlangen, 50 Quelldateien ungefiltert einzulesen, fordern sie etwas Kognitiv Unmögliches: Das Modell ertrinkt in syntaktischem Rauschen. Context Engineering rekonstruiert genau diese kognitive Hierarchie für den Agenten: Graphify liefert das topologische Schema, Obsidian das episodische Gedächtnis, und Repomix schützt das Arbeitsgedächtnis vor Rauschen.

Was brauche ich? (Prerequisites)

  • Topologische Code-Landkarte: zur lokalen, deterministischen Analyse des Quellcodes über .
  • Persistenter Wissensspeicher: Ein lokales Vault mit Architektur-Entscheidungen (), Systemgrenzen und bekannten Schulden-Tags (#tech-debt).
  • Werkzeug-Schnittstelle: Ein lokaler Server (MCP), der den Wissensgraphen und das Vault für Claude Code, Cursor oder Antigravity exponiert.
  • Subtraktive Kontext-Kompression: Ein Werkzeug wie zum Slicen auf reine Typ- und Methodensignaturen.

Wie kann ich das prüfen? (Verification & Audit)

  • Topologie-Audit: Führe graphify query "Welche Module rufen X auf?" im Terminal aus und verifiziere, dass alle statischen Abhängigkeiten im Output auftauchen.
  • MCP-Konnektivität: Prüfe in den Agenten-Einstellungen (z. B. claude mcp list), dass graphify-mcp und obsidian-mcp aktiv sind und Werkzeuge wie get_neighbors und read_note anbieten.
  • Token-Disziplin: Überwache bei einer Refaktorisierung, dass der Session-Footprint unter 10.000 Tokens bleibt, statt das Kontextfenster mit 100.000 Tokens zu überfluten.

Typische Praxisszenarien (Use Cases)

  • Sichere Refaktorisierung: Vor dem Ändern einer Methode fragt der Agent den Graphen nach allen Aufrufern ab und schützt bestehende Verträge.
  • Orientierung in fremden Monolithen: Schnelles Erkennen von Datenflüssen („Wie fließt ein Webhook durch das System?“) ohne manuelles Durchsuchen dutzender Dateien.
  • Multi-Agenten-Handoffs: Ein Architektur-Agent dokumentiert seinen Plan in einer Obsidian-Notiz, die ein nachgelagerter Ausführungs-Agent verlustfrei übernimmt.

Die dreistufige Navigations-Kaskade: Von der Topologie zum minimalen Diff

Gutes Context Engineering arbeitet subtraktiv: Kontext entsteht durch das Weglassen von Rauschen. Statt die Codebase mit grep zu durchforsten, folgt der Agent einer dreistufigen Konsultationskette:

Tier 1: Topologische Landkarte

Graphify MCP

Mithilfe lokaler AST-Parser wird der Quellcode in einen Wissensgraphen überführt. Der Agent fragt über Werkzeuge wie graphify:query() und get_neighbors() gezielt ab, welche Klassen interagieren, welche Communities existieren und wo kritische God-Nodes lauern.

Tier 2: Lebendiges Gedächtnis

Obsidian MCP

Über das Obsidian-MCP-Gateway greift der Agent auf dokumentierte Architektur-Entscheidungen zu (obsidian:search_notes()). Statt zu raten, warum ein Fallback existiert, liest er den zugehörigen ADR und teilt das mentale Modell des Teams.

Tier 3: Chirurgisches Slicing

Repomix / Diff

Erst wenn Zielort und Nebenwirkungen geklärt sind, lädt der Agent den konkreten Quelltext. Unbeteiligte Funktionskörper werden ausgeblendet und nur Signaturen übergeben. Der finale Patch betrifft exakt die minimal notwendigen Zeilen.


Werkzeug-Matrix: Volltext-Grep vs. Vector-RAG vs. GraphRAG

Kein Werkzeug löst alle Probleme allein. Die folgende Matrix vergleicht die gängigen Kontext-Strategien nach Skalierbarkeit, Token-Effizienz und Kopplungserkennung:

Strategie / WerkzeugMechanismusToken-VerbrauchErkennung von KopplungenStärken & Schwächen im Brownfield
Naives Datei-GreppingVolltextsuche & ganze DateienExtrem hochSehr schwach (Zufall)❌ Verstopft Kontextfenster; übersieht transitive Aufrufe
Klassisches Vector-RAGSemantische Ähnlichkeit (Text-Chunks)MittelSchwach❌ Findet ähnlichen Text, ignoriert aber Programmlogik
Aider Repo-MapTree-sitter + PageRank-SkelettSehr niedrigGut✅ Schnelle Übersicht; ❌ keine Absichts-Dokumentation
Graphify Knowledge GraphAST + Sehr niedrigExzellent✅ Deterministische Topologie & God-Node-Erkennung
Obsidian Vault via MCPBidirektionale Markdown-WikilinksMinimalMittel (Dokumentiert)✅ Liefert das „Warum“; ❌ veraltet ohne Team-Disziplin

Kontext-Budget im Stresstest: Simulator für Token-Verbrauch und Regressionsrisiko

Erprobe selbst, wie sich unterschiedliche Kontext-Strategien in realen Legacy-Szenarien auswirken. Wähle ein Projekt-Szenario, schalte die Komponenten der MCP-Toolchain zu und beobachte, wie sich Token-Verbrauch, das Risiko für Kontext-Kollaps und die Erkennung versteckter Kopplungen verändern:

Brownfield Context & Agent Architecture SimulatorLive Sandbox
Deterministischer Vergleich von Naivem Grepping, Vector-RAG und 3-Tier MCP Hybrid Stack bei variabler Codebase-Größe und Architektur-Komplexität.

Brownfield Context & Agent Architecture Simulator

Vergleiche Token-Footprint, Kontext-Kollaps und Tool-Traces für Legacy-Codebases.

Fintech Monolith (Java/Spring)• 320,000 Zeilen Code • 1450 Dateien
Stack: Java 17, Spring Boot, Hibernate, Oracle DB
Aufgabe:SEPA-Webhook Idempotenz-Fix & Rücklastschrift-Logging
Kosten / Turn
$0.010
Latenz
1.8s - 3.2s
Kontext-Verbrauch:3,450 Tokens(1.7% von 200k)
Lost-in-the-Middle:4%
Kopplungserkennung:7 / 7 Call-Sites
Optimaler Arbeitszustand: Zielgerichteter AST-Schnitt, minimale Token-Verschwendung, alle Kopplungen deterministisch erfasst.
Zusammensetzung des Kontextfensters unter der gewählten Strategie:
System & Instruction
1.200 Tokens
AGENTS.md Leitplanken
Graphify Topologie
1.200 Tokens
AST Call-Graph & God-Nodes
Obsidian Living Memory
650 Tokens
Kuratierte ADRs & #tech-debt
Codebase Payload
400 Tokens
Chirurgischer AST Slice

Was zeigt dieses Experiment?

Der Simulator demonstriert den Hebel von Context Engineering: Während naives Einlesen in einem 320.000-Zeilen-Projekt über 180.000 Tokens verbrennt und die Aufmerksamkeitsspanne des Modells überfordert, reduziert der 3-Tier-Stack den Footprint auf unter 4.000 Tokens. Gleichzeitig steigt die Erkennung versteckter Kopplungen von 14% auf 100%.

Was beweist das Experiment ausdrücklich nicht?

Das Experiment modelliert statische Aufrufbeziehungen via AST. Es beweist nicht, dass hochgradig dynamische Konstrukte (wie Reflection in Java, dynamisches eval() in JavaScript oder komplexe Dependency-Injection-Container zur Laufzeit) fehlerfrei aufgelöst werden. Solche dynamischen Bindungen erfordern weiterhin automatisierte Integrationstests und manuelle Code-Reviews.


Das Schutzgeschirr: Codebase-Zoning und Leitplanken gegen Kollateralschäden

In gewachsenen Systemen entscheidet das Schutzgeschirr (Agent Harness) über den Erfolg: Klare Zonen und deterministische Leitplanken verhindern, dass der Agent ungewollte Zerstörung anrichtet.

Topologie vor Datei-Inhalt abfragen
  • Immer zuerst den AST-Graphen (graphify query) nach Aufrufern und Nachbarn befragen
  • Kuratierte Architekturnotizen in Obsidian auf bekannte Ausnahmen (#tech-debt) prüfen
  • Nur die minimal betroffenen Dateien und Signaturen ins Kontextfenster laden
  • Vor Refactorings automatisierte Characterization Tests ausführen
Blinde Großflächige Datei-Dumps
  • Niemals ganze Verzeichnisse ungefiltert in den Prompt werfen
  • Keine Refaktorisierungen an God-Nodes vornehmen, ohne alle Aufrufer vorher identifiziert zu haben
  • Nicht darauf vertrauen, dass ein LLM undokumentierte Business-Logik aus 4.000 Zeilen Spaghetticode errät
Vorsicht bei zentralen God-Nodes

Module mit mehr als 30 ausgehenden oder eingehenden Kanten im Wissensgraphen bergen extremes Regressionsrisiko. Weist der Wissensgraph eine Klasse als God-Node aus, sollte der Agent niemals die Klassensignatur oder Schnittstelle ändern, sondern ausschließlich abwärtskompatible Adapter oder Überladungen implementieren.

Automatisierte Graph-Aktualisierung im CI

Führe Graphify im Pre-Commit-Hook oder in der CI-Pipeline mit --update aus. Dadurch bleibt die Datei graphify-out/graph.json stets synchron zum Git-Head, ohne dass der Agent bei jedem Task teure Neuindizierungen anstoßen muss.


Das Agenten-Protokoll: Verbindliche Direktiven für AGENTS.md und CLAUDE.md

Damit Coding-Agenten wie Claude Code, Cursor oder Antigravity den Wissensgraphen und das Obsidian-Vault nicht ignorieren, müssen die Verhaltensregeln in Projektdateien wie AGENTS.md oder CLAUDE.md verbindlich verankert werden:

Agent Prompt
Context Engineering Agent ProtocolZiel: Claude Code / Cursor / Antigravity
Kopiere diese Arbeitsanweisung in deine AGENTS.md oder CLAUDE.md, um den Agenten auf die MCP-Kontext-Pipeline zu verpflichten.

Du arbeitest in einer gewachsenen Brownfield-Codebase. Halte dich strikt an dieses 3-Stufen-Protokoll:

  1. TOPOLOGIE-CHECK VOR CODE-ZUGRIFF:

    • Führe vor dem Lesen oder Bearbeiten von Quellcodedateien IMMER einen Graphify-Aufruf aus: graphify:query(question="<Modul oder Funktion>")
    • Prüfe mit graphify:get_neighbors(node="<Name>", depth=1) alle Aufrufer und Abhängigkeiten.
    • Wenn ein Modul als 'God Node' identifiziert ist, behandle die Signatur als unveränderlich.
  2. ARCHITEKTUR-ABGLEICH VIA OBSIDIAN:

    • Frage das Obsidian-Vault per MCP nach relevanten Architekturentscheidungen ab: obsidian:search_notes(query="<Domäne oder Problem> #tech-debt")
    • Beachte historische Workarounds und dokumentierte Schnittstellen-Einschränkungen.
  3. CHIRURGISCHES SLICING:

    • Lies niemals ganze Verzeichnisse oder Dateien über 500 Zeilen vollständig ein.
    • Nutze gezielte AST-Slices oder begrenzte Zeilenbereiche.
    • Nach jedem Edit: Führe die Projekt-Tests aus und verifiziere, dass keine Nachbarknoten gebrochen wurden.

Vier Sicherheitsprüfungen vor dem ersten Brownfield-Commit

Verwende diese vier Prüfpunkte, bevor du ein KI-gestütztes Refactoring in die Produktion entlässt:

  • Wissensgraph initialisiert: graphify wurde über das Projekt ausgeführt und graphify-out/graph.json ist aktuell.
  • MCP-Tools verbunden: Der Agent hat im Session-Start Zugriff auf graphify_query und obsidian_search_notes.
  • God-Node-Analyse erfolgt: Alle aufrufenden Module der Zielklasse wurden identifiziert und im Testplan berücksichtigt.
  • Regressions-Suite grün: Unit- und Integrationstests laufen lokal erfolgreich durch, ohne dass verwaiste Abhängigkeiten verbleiben.

Quellen und weiterführende Kacheln

Primärquellen und Spezifikationen

Verwandte Kacheln im Digital Garden