Codebase-Migration über Tage statt Minuten
Eine Framework-Migration über 4.000 Dateien ist kein Prompt, sondern ein Betriebsvorgang: tagelange Laufzeit, tausende Checkpoints, Pull Requests in verdaulichen Blöcken. Das Erfolgskriterium ist unbestechlich — die Tests laufen durch oder nicht.
Geeignet fürEntwicklungsteams mit großer Codebasis und belastbarer Testabdeckung, die eine Framework-Migration vor sich …
Guardrails: eigener Branch, kein Merge-Recht, Tests als Erfolgskriterium
Das Wichtigste auf einen Blick
- Geeignet für
- Entwicklungsteams mit großer Codebasis und belastbarer Testabdeckung, die eine Framework-Migration vor sich herschieben
- Ausgangssituation
- Im Beispiel: 2.600 betroffene Dateien, 45 Personentage geschätzt, zwei Anläufe nach je zwei Wochen abgebrochen
- Wir übernehmen
- Inventar, Migration Datei für Datei mit Checkpoint und Testlauf, Pull Requests von höchstens 400 Zeilen
- Bei Ihnen bleibt
- Ihre Daten und die Entscheidung, welche davon ein Modell sehen darf. Eigentum und Hoheit wechseln nicht.
- Vorhandene Systeme
- Welche Hardware und welche Schnittstellen sich weiterverwenden lassen, klären wir vor dem Angebot. Das Ergebnis steht schriftlich fest, bevor Sie beauftragen.
- Ihr Ergebnis
- Tests grün ist das Kriterium, nicht Modell zufrieden. Im Beispiel 78 % der Dateien automatisch migriert
- Preisrahmen
- ab 690 € im Monat für die Plattform (Einstiegsklasse)Business 1.490 €, Enterprise 3.900 €; der Migrationslauf selbst im Beispiel 180 € Modellbudget
- Reaktionszeit
- Zwei Korrekturversuche je Datei, danach markiert der Agent den Fall für Ihre Reviewfür die Plattform: Erstreaktion Ø unter 30 Minuten zur Geschäftszeit
- Dauer
- Der Lauf dauert Tage, nicht Minutenim Beispiel blieben 9 Personentage übrig, fast vollständig Review-Zeit
- Erster Schritt
- Der survey-Agent läuft über Ihr Repository und liefert Arbeitsliste, Automatisierungsquote und erwartete Modellkosten
1. Ausgangslage
| Kennzahl | Wert | Anmerkung |
|---|---|---|
| Dateien im Repository | 4 100 | davon 2 600 betroffen |
| Testabdeckung | 64 % | Zeilen, Kernmodule höher |
| Geschätzter Aufwand manuell | 45 PT | Schätzung des Teams |
| Bisherige Anläufe | 2 | beide nach zwei Wochen abgebrochen |
2. Agent-Design
- survey-agent — erstellt zu Beginn ein Inventar: betroffene Dateien, Muster, Abhängigkeiten, geschätzte Schwierigkeit je Datei. Ergebnis ist eine Arbeitsliste, die versioniert im Repository liegt.
- migrate-agent — arbeitet Datei für Datei ab. Je Datei: ändern, betroffene Tests ausführen, bei Fehlschlag maximal zwei Korrekturversuche, danach als „braucht Menschen“ markieren und weitergehen.
- batch-agent — gruppiert fertige Änderungen thematisch und erzeugt Pull Requests von höchstens 400 geänderten Zeilen — groß genug für Fortschritt, klein genug für echte Review.
Weil das Erfolgskriterium maschinell prüfbar ist. Eine Datei gilt als migriert, wenn die zugehörigen Tests grün sind — nicht, wenn das Modell zufrieden ist. Bei Dateien ohne Tests fällt diese Prüfung weg; sie gehen deshalb grundsätzlich in die manuelle Review.
3. Architektur
4. Code
import { defineAgent, step } from "@hostspezial/agent-sdk";
export default defineAgent({
name: "framework-migration",
// Tage statt Minuten: Der Lauf darf lange leben und muss
// jeden Neustart der Plattform ueberstehen.
budget: { eur: 180, wallClockMs: 72 * 3_600_000 },
async run(ctx) {
const files = await step(ctx, "survey", () => ctx.tools.repo.scan({ pattern: "**/*.ts" }));
const done: string[] = [], manual: string[] = [];
for (const file of files) {
// step() ist der Checkpoint. Nach einem Absturz setzt der Lauf
// bei genau dieser Datei auf — bereits erledigte werden
// uebersprungen, nicht erneut bearbeitet.
const r = await step(ctx, `migrate:${file}`, { retry: { attempts: 2 } }, async () => {
await ctx.tools.repo.edit(file, ctx.plan(file));
return ctx.tools.ci.runTests({ scope: file }); // das Erfolgskriterium
});
(r.passed ? done : manual).push(file);
// PRs in Review-Groesse statt eines 2 600-Dateien-Monsters.
if (done.length % 25 === 0) {
await step(ctx, `pr:${done.length}`, () => ctx.tools.git.openPr(done.slice(-25)));
}
}
return { migrated: done.length, manual: manual.length, manual };
},
});5. Ergebnis
Funktioniert nicht bei …
… Codebasen ohne nennenswerte Tests. Ohne maschinelles Erfolgskriterium verschiebt sich die gesamte Prüflast in die Review, und der Nutzen kippt ins Negative. … Änderungen, die fachliche Entscheidungen erfordern — ein neues Datenmodell ist keine Migration, sondern Design. … Repositories mit stark verflochtenen Modulen, in denen jede Änderung fünf andere berührt; dort scheitert die Aufteilung in kleine PRs. Und die Kosten sind nicht null: Ein Lauf dieser Größe liegt im dreistelligen Euro-Bereich an Modellkosten.
Erst das Inventar, dann die Entscheidung
Über Ihre Altanwendung sprechen.
Umfang, Sprache und Testabdeckung entscheiden, ob sich eine begleitete Migration trägt. Wir sehen uns Ihren Bestand an, bevor wir etwas zusagen. Ausführlich beschrieben ist das unter Agentic AI.
Betrieb in deutschen Rechenzentren
