Der GitHub-Ingenieur Stephen Toub veröffentlichte am 16. September einen Rückblick auf eine groß angelegte, vom Copilot-Agenten getragene Umschreibung: Die Runtime des Copilot-Agenten wurde vollständig von TypeScript/Node.js auf Rust umgestellt. Aus ursprünglich rund 430.000 Zeilen produktivem TypeScript-Code wurden am Ende 832.378 Zeilen produktiver Rust-Code, dazu kommen 468.000 Zeilen Rust-Unit-Tests und 174.000 Zeilen End-to-End-Tests.
Der Zeitraum erstreckte sich vom 12. Mai bis zum 21. August, etwa 14,5 Wochen. In dieser Zeit wurden 128 Pull Requests schrittweise in den Main-Branch gemergt, bei durchgehend fortlaufenden Releases – insgesamt 135 Versionen (100 Pre-Releases, 35 stabile Releases), im Schnitt rund 1,3 pro Tag.
Der Großteil des Codes stammt vom Modell – was macht dann der Mensch?
Toubs Einschätzung zu dieser Praxis fällt unmissverständlich aus:
"A project that would have taken a whole team of developers a year or two before agents was now completed primarily by a single developer, in only a few months."
Ein Projekt, für das vor der Agenten-Ära ein ganzes Entwicklerteam ein bis zwei Jahre gebraucht hätte, wurde nun größtenteils von einem einzigen Entwickler in nur wenigen Monaten fertiggestellt.
Als Hauptmodelle kamen Claude Opus 4.8, GPT-5.6 Sol sowie die Claude-Haiku-Reihe zum Einsatz; die für die Durchsatzoptimierung zuständigen Subagenten setzten bevorzugt auf Opus 4.8 und GPT-5.6 Sol. Darin lässt sich ein Signal erkennen: Bei dieser produktionsreifen Umschreibung eines eigenen Kernbestandteils setzte GitHub (ein Microsoft-Unternehmen) hauptsächlich auf Modelle des Konkurrenten Anthropic – und nicht durchgängig auf OpenAI.
Die Aufgaben der Menschen waren klar abgegrenzt. Bei den Interaktionen des federführenden Ingenieurs entfielen 31 % auf „Review, Tests und CI“, 17,4 % auf „technische Entscheidungen infrage stellen“ und 15 % darauf, „die Arbeit zu Ende zu bringen“. Die Entscheidungshoheit über Architektur, Design-Trade-offs und den finalen Merge lag stets beim Menschen. Das Modell lieferte die Codemenge, der Mensch behielt Richtung und Abnahme im Griff.
Verifiziert mit den alten Tests, rund fünfzig Ausfälle
Für die Umschreibung wurde kein neuer Abnahmemaßstab aufgestellt, stattdessen liefen die vorhandenen End-to-End-Tests fortlaufend gegen den neu geschriebenen Rust-Code, bei schrittweisem Rollout, damit Regressionen in kleinem Rahmen sichtbar wurden und früh auffielen. Auch ein paar technische Kennzahlen aus dem Prozess sind aufschlussreich: Die Trefferquote beim Prompt-Caching lag bei 96,22 %, die Kontextkomprimierung wurde über alle Sitzungen hinweg 5.116-mal ausgelöst.
Auch Rückschläge wurden ehrlich dokumentiert. Insgesamt gab es gut 50 bekannte Probleme, unterteilt in fünf Kategorien: unvollständige Migration, Zustands- und Lifecycle-Probleme, inkonsistente Verhaltensverträge, Probleme an der Host-Grenze sowie schlicht falsch formulierte Testerwartungen. Die meisten wurden noch vor dem stabilen Release behoben. Die letzte Kategorie ist besonders lehrreich für alle, die Migrationen durchführen: Wenn man neue Implementierungen an alten Tests misst, liegt der Fehler manchmal beim Test – nicht beim neuen Code.
Was das für Engineering-Teams bedeutet
Solche Fälle, in denen ein Unternehmen mit KI eine eigene Kernkomponente grundlegend umbaut, sagen mehr über die tatsächlichen Grenzen heutiger Coding-Agenten aus als jedes Benchmark-Ranking. Drei Lehren lassen sich direkt übertragen: Erstens sollte man keine Umschreibung in einem Rutsch erwarten – 128 schrittweise gemergte Pull Requests und mehrere Releases pro Tag funktionieren nur dank Continuous Integration, das Risiko verteilt. Zweitens müssen Abnahmekriterien vorab feststehen: Hier diente ausschließlich die vorhandene E2E-Testsuite als Maßstab – ohne einen solchen Maßstab lässt sich gar nicht beurteilen, ob das Modell richtig geschrieben hat. Drittens verlagerte sich der menschliche Aufwand vom Codeschreiben hin zu Review, Entscheidungen und dem Aufspüren von Lücken, wodurch der Umfang einer Umschreibung, die eine einzelne Person überblicken kann, um eine Größenordnung wächst.
Ein Vorbehalt bleibt: Die architektonischen Vorteile (In-Process-Einbettung, geringerer Speicherverbrauch, schnellerer Start) werden im Originaltext nur qualitativ beschrieben, ohne Vorher-Nachher-Zahlen zu Speicher, Latenz oder Durchsatz. Wie viel tatsächliche Performance die Umschreibung gebracht hat, lässt sich aus diesem Rückblick derzeit nicht überprüfen. Der Weg von TypeScript zu Rust ist zudem für die meisten Teams kein Standardrezept – er funktioniert nur, wenn eine belastbare Testsuite vorhanden ist und die Bereitschaft besteht, täglich zu releasen.
Quellen: GitHub Blog (Stephen Toub), CocoLoop; Angaben zu 832.000 Zeilen, 128 Pull Requests, 14,5 Wochen, 96,22 % Cache-Trefferquote und rund 50 bekannten Problemen gemäß dem offiziellen Rückblick abgeglichen.