Praxisnotizen: Agentisches Refactoring – mit Agenten die Skulptur freilegen
Praxisnaher Durchgang zum agentischen Refactoring: Verträge, Prüfungen und Platzhalter für einsetzbaren Code für Teams, die dieses Muster ausliefern.
Diese Notizen rekonstruieren einen praktischen Weg rund um „Agentic Refactoring — Using Agents to Reveal the Sculpture from Vibe-Coded Rock“. Im Mittelpunkt stehen Verträge, Prüfungen und Platzhalter für einsetzbaren Code statt motivierender Rahmung. Halten Sie in der Phase „Überblick“ zuerst den Vertrag fest: benötigte Eingaben, Erfolgssignal und was bei einem Teilausfall passiert. Diese Checkliste hält spätere Codeänderungen ehrlich. Kleine, testbare Einheiten sind ausufernden Skripten vorzuziehen. Wenn ein Schritt fehlschlägt, sollte der Fehler auf genau eine Verantwortlichkeit zeigen und nicht auf eine verworrene Pipeline.
Der Ausgangspunkt
Die Phase „Ausgangspunkt“ funktioniert am besten, wenn man sie als messbare Oberfläche behandelt. Halten Sie ein Referenztranskript, einen Fehlerfall und eine Rollback-Notiz fest, bevor Sie den Umfang erweitern. Behandeln Sie diese Phase als Vertrag zwischen Eingaben und validierten Ausgaben. Benennen Sie die Artefakte, definieren Sie Erfolgsprüfungen und lassen Sie keine stille Teilerledigung zu. Halten Sie den Graph-Zustand flach und typisiert. Verschachtelte Blobs verbergen, welcher Knoten welches Feld geschrieben hat, und machen die Wiederaufnahme nach Unterbrechungen kaputt.
Erster Schnitt: Abstraktionen und Verträge
Die Phase „Erster Schnitt: Abstraktionen und Verträge“ funktioniert am besten, wenn man sie als messbare Oberfläche behandelt. Halten Sie ein Referenztranskript, einen Fehlerfall und eine Rollback-Notiz fest, bevor Sie den Umfang erweitern. Erfassen Sie Laufzeiten und Token- oder Abfragekosten neben den funktionalen Ergebnissen. Frühe Kostentransparenz verhindert böse Überraschungen auf der Rechnung, wenn der Ablauf von der Demo in gemeinsam genutzte Umgebungen wandert. Halten Sie den Graph-Zustand flach und typisiert. Verschachtelte Blobs verbergen, welcher Knoten welches Feld geschrieben hat, und machen die Wiederaufnahme nach Unterbrechungen kaputt.
Eine Abstraktion der Architektur schaffen
Die Phase „Abstraktion der Architektur“ funktioniert am besten, wenn man sie als messbare Oberfläche behandelt. Halten Sie ein Referenztranskript, einen Fehlerfall und eine Rollback-Notiz fest, bevor Sie den Umfang erweitern. Halten Sie die Konfiguration aus dem Anwendungscode heraus. Umgebungsdateien, Secret Stores und Feature Flags gehören an einen Ort, den Betreiber prüfen können, ohne den ganzen Graphen zu lesen. Halten Sie den Graph-Zustand flach und typisiert. Verschachtelte Blobs verbergen, welcher Knoten welches Feld geschrieben hat, und machen die Wiederaufnahme nach Unterbrechungen kaputt. Die Phase „Abstraktion der Architektur“ funktioniert am besten, wenn man sie als messbare Oberfläche behandelt. Halten Sie ein Referenztranskript, einen Fehlerfall und eine Rollback-Notiz fest, bevor Sie den Umfang erweitern. Kleine, testbare Einheiten sind ausufernden Skripten vorzuziehen. Wenn ein Schritt fehlschlägt, sollte der Fehler auf genau eine Verantwortlichkeit zeigen und nicht auf eine verworrene Pipeline.
Offensichtliche Komplexität entfernen
Legen Sie für die Phase „Offensichtliche Komplexität entfernen“ Eingaben, Verantwortlichen und Abschlusskriterien fest, bevor Sie Code ändern. Betreiber sollten den Schritt von einem bekannten Checkpoint aus erneut ausführen können, ohne verborgenen Zustand erraten zu müssen. Behandeln Sie diese Phase als Vertrag zwischen Eingaben und validierten Ausgaben. Benennen Sie die Artefakte, definieren Sie Erfolgsprüfungen und lassen Sie keine stille Teilerledigung zu. Setzen Sie eine menschliche Freigabe an Übergänge, die Geld ausgeben oder Produktionsdaten ändern. Was zur Compile-Zeit verdrahtet ist, ist fachlich noch lange nicht vollständig.
Die Tests standen im Weg
Legen Sie für die Phase „Die Tests standen im Weg“ Eingaben, Verantwortlichen und Abschlusskriterien fest, bevor Sie Code ändern. Betreiber sollten den Schritt von einem bekannten Checkpoint aus erneut ausführen können, ohne verborgenen Zustand erraten zu müssen. Erfassen Sie Laufzeiten und Token- oder Abfragekosten neben den funktionalen Ergebnissen. Frühe Kostentransparenz verhindert böse Überraschungen auf der Rechnung, wenn der Ablauf von der Demo in gemeinsam genutzte Umgebungen wandert. Setzen Sie eine menschliche Freigabe an Übergänge, die Geld ausgeben oder Produktionsdaten ändern. Was zur Compile-Zeit verdrahtet ist, ist fachlich noch lange nicht vollständig.
Dependency Inversion – wo sie geholfen hat
Legen Sie für die Phase „Dependency Inversion: wo sie geholfen hat“ Eingaben, Verantwortlichen und Abschlusskriterien fest, bevor Sie Code ändern. Betreiber sollten den Schritt von einem bekannten Checkpoint aus erneut ausführen können, ohne verborgenen Zustand erraten zu müssen. Halten Sie die Konfiguration aus dem Anwendungscode heraus. Umgebungsdateien, Secret Stores und Feature Flags gehören an einen Ort, den Betreiber prüfen können, ohne den ganzen Graphen zu lesen. Setzen Sie eine menschliche Freigabe an Übergänge, die Geld ausgeben oder Produktionsdaten ändern. Was zur Compile-Zeit verdrahtet ist, ist fachlich noch lange nicht vollständig. Legen Sie für die Phase „Dependency Inversion: wo sie geholfen hat“ Eingaben, Verantwortlichen und Abschlusskriterien fest, bevor Sie Code ändern. Betreiber sollten den Schritt von einem bekannten Checkpoint aus erneut ausführen können, ohne verborgenen Zustand erraten zu müssen. Kleine, testbare Einheiten sind ausufernden Skripten vorzuziehen. Wenn ein Schritt fehlschlägt, sollte der Fehler auf genau eine Verantwortlichkeit zeigen und nicht auf eine verworrene Pipeline.
Das Domänenmodell freilegen
Halten Sie in der Phase „Das Domänenmodell freilegen“ zuerst den Vertrag fest: benötigte Eingaben, Erfolgssignal und was bei einem Teilausfall passiert. Diese Checkliste hält spätere Codeänderungen ehrlich. Behandeln Sie diese Phase als Vertrag zwischen Eingaben und validierten Ausgaben. Benennen Sie die Artefakte, definieren Sie Erfolgsprüfungen und lassen Sie keine stille Teilerledigung zu. Cachen Sie stabile Systemanweisungen und Tool-Schemas. Dieselbe Präambel immer wieder zu senden ist eine häufige Quelle unnötiger Kosten.
So klappte die Arbeit mit dem Agententeam
Halten Sie in der Phase „Arbeit mit dem Agententeam“ zuerst den Vertrag fest: benötigte Eingaben, Erfolgssignal und was bei einem Teilausfall passiert. Diese Checkliste hält spätere Codeänderungen ehrlich. Erfassen Sie Laufzeiten und Token- oder Abfragekosten neben den funktionalen Ergebnissen. Frühe Kostentransparenz verhindert böse Überraschungen auf der Rechnung, wenn der Ablauf von der Demo in gemeinsam genutzte Umgebungen wandert. Setzen Sie nach teuren Schritten einen Checkpoint. Eine Wiederaufnahme sollte denselben LLM-Aufruf nicht erneut abrechnen, wenn ein Betreiber einen späteren Knoten wiederholt.
Die Architektur wurde endlich sichtbar
Halten Sie in der Phase „Die Architektur wurde endlich sichtbar“ zuerst den Vertrag fest: benötigte Eingaben, Erfolgssignal und was bei einem Teilausfall passiert. Diese Checkliste hält spätere Codeänderungen ehrlich. Halten Sie die Konfiguration aus dem Anwendungscode heraus. Umgebungsdateien, Secret Stores und Feature Flags gehören an einen Ort, den Betreiber prüfen können, ohne den ganzen Graphen zu lesen. Setzen Sie nach teuren Schritten einen Checkpoint. Eine Wiederaufnahme sollte denselben LLM-Aufruf nicht erneut abrechnen, wenn ein Betreiber einen späteren Knoten wiederholt. Halten Sie in der Phase „Die Architektur wurde endlich sichtbar“ zuerst den Vertrag fest: benötigte Eingaben, Erfolgssignal und was bei einem Teilausfall passiert. Diese Checkliste hält spätere Codeänderungen ehrlich. Kleine, testbare Einheiten sind ausufernden Skripten vorzuziehen. Wenn ein Schritt fehlschlägt, sollte der Fehler auf genau eine Verantwortlichkeit zeigen und nicht auf eine verworrene Pipeline.
Wie dieser Artikel entstand
Die Phase „Wie dieser Artikel entstand“ funktioniert am besten, wenn man sie als messbare Oberfläche behandelt. Halten Sie ein Referenztranskript, einen Fehlerfall und eine Rollback-Notiz fest, bevor Sie den Umfang erweitern. Behandeln Sie diese Phase als Vertrag zwischen Eingaben und validierten Ausgaben. Benennen Sie die Artefakte, definieren Sie Erfolgsprüfungen und lassen Sie keine stille Teilerledigung zu. Halten Sie den Graph-Zustand flach und typisiert. Verschachtelte Blobs verbergen, welcher Knoten welches Feld geschrieben hat, und machen die Wiederaufnahme nach Unterbrechungen kaputt.
Betriebs-Checkliste
Legen Sie für die Phase „Betriebs-Checkliste“ Eingaben, Verantwortlichen und Abschlusskriterien fest, bevor Sie Code ändern. Betreiber sollten den Schritt von einem bekannten Checkpoint aus erneut ausführen können, ohne verborgenen Zustand erraten zu müssen.
Dokumentieren Sie Normalfall und Wiederherstellungsweg gemeinsam. Wiederholungen, menschliche Freigaben und Dead-Letter-Behandlung sind Teil des Produkts und keine spätere Politur.
Setzen Sie eine menschliche Freigabe an Übergänge, die Geld ausgeben oder Produktionsdaten ändern. Was zur Compile-Zeit verdrahtet ist, ist fachlich noch lange nicht vollständig.
Schreiben Sie ein kurzes Runbook: wie man Schlüssel rotiert, die Queue leert und den letzten Ingest zurückrollt.
Kleine, testbare Einheiten sind ausufernden Skripten vorzuziehen. Wenn ein Schritt fehlschlägt, sollte der Fehler auf genau eine Verantwortlichkeit zeigen und nicht auf eine verworrene Pipeline.
Setzen Sie eine menschliche Freigabe an Übergänge, die Geld ausgeben oder Produktionsdaten ändern. Was zur Compile-Zeit verdrahtet ist, ist fachlich noch lange nicht vollständig.
Bevor Sie den Stack weiterreichen, frieren Sie Versionen ein, halten Sie ein Referenztranskript für den kritischen Pfad fest und prüfen Sie die Rollback-Schritte. Gemeinsame Umgebungen brauchen Rate Limits, Mandantenprüfungen und einen klar Verantwortlichen für die Secret-Rotation. Langweilige Zuverlässigkeit schlägt clevere Einmal-Demos.
Hinweis zu Batch 2e4d73bb1bc8: Provider-Schlüssel gehören nicht ins Repo, setzen Sie pro Sitzung eine Token-Obergrenze und legen Sie Transkripte neben die Eval-Fixtures, damit spätere Modellwechsel vergleichbar bleiben.