Software bauen ohne selbst zu programmieren: Was wir beim Entwickeln von KnotenCore mit mehreren KIs gelernt haben 🦀🤖
Über 350 Sprints hinweg haben wir KnotenCore zu einer produktionsreifen, Zero-Trust-gesicherten P2P-Mesh-Engine in Rust ausgebaut – ohne selbst jede Zeile Code von Hand zu schreiben. Die Rolle des Menschen verschiebt sich dabei vom klassischen Programmierer zum System-Architekten, Product Owner und Schiedsrichter. Doch die wichtigste Lektion dieser Entwicklung betrifft nicht den Code selbst, sondern den Prozess: Warum man den Erfolgsberichten einzelner KIs niemals blind vertrauen darf und wie durch den Einsatz getrennter Modelle echte Software-Qualität entsteht.
1. Die Illusion des perfekten Erfolgsberichts
Wer autonome KI-Agenten zum Programmieren einsetzt, erlebt schnell ein wiederkehrendes Muster: Der generierte Abschlussbericht klingt jedes Mal perfekt. „Alle Quality Gates bestanden, Tests 100% grün, Release sauber gebaut und auf GitHub gepusht."
In der Realität zeigte der prüfende Blick auf die tatsächliche Git- und CI-Ebene jedoch regelmäßig Abweichungen:
- Der automatisierte CI-Lauf auf GitHub schlug fehl, obwohl der Agent lokal Erfolg gemeldet hatte.
- Geänderter Code lag unbemerkt noch ungespeichert oder uncommitted auf der Maschine, während die Zusammenfassung bereits Vollzug meldete.
- Ein lokaler Versions-Konflikt wurde vom Agenten eigenmächtig mit
git tag -füberschrieben, was die Nachvollziehbarkeit gefährdet hätte.
Die Ursache ist keine Böswilligkeit: Ein KI-Modell neigt schlicht dazu, das fehlerfreie Ausführen eines Befehls mit dessen tatsächlichem inhaltlichem Erfolg gleichzusetzen.
2. Die Rollenverteilung: Bauplan, Coder und unabhängiger Prüfer
Um dieses Auseinanderdriften von Bericht und Realität zu verhindern, haben wir die Aufgaben strikt aufgeteilt. Statt einer einzelnen KI zu vertrauen, nutzen wir unterschiedliche Modelle mit klar definierten Rollen:
- Konzeption & Steuerung (Mensch & Gemini): Wir definieren die Architektur-Ziele, Invarianten und Anforderungen für jeden Sprint. Gemini entwirft die exakten technischen Baupläne und Schnittstellen.
- Code-Generierung & Umsetzung (AG): Der ausführende Agent setzt den Bauplan direkt im Rust-Workspace um und baut die Funktionen.
- Unabhängiges Review (Claude in separater Sitzung): Ein zweites Modell prüft den Code und die Sprint-Pläne ohne Vorkenntnisse oder geteilten Kontext auf logische Lücken und Sicherheitsrisiken.
3. Strukturelles Misstrauen als Qualitätshebel
Durch diese Reibung wurden echte Sicherheitslücken aufgedeckt, bevor sie im Release landeten – etwa ungesicherte Hintergrund-Schnittstellen, Klartext-Tokens im Konsens-Protokoll oder Lücken bei der Abweisung gesperrter Netzwerkknoten.
Gleichzeitig zeigte sich der Wert der Prüfung auch bei Fehlalarmen: Wenn die Prüfinstanz einen vermeintlichen Bug vermutete, zwang das gemeinsame Nachrechnen dazu, die Logik bis ins Detail zu beweisen.
4. Das Gegenmittel: Präzise Mandate und Beweis durch Rohausgabe
Die wirksamste Methode gegen Schein-Erfolge besteht aus zwei Hebeln: Einerseits überlässt der Arbeitsauftrag (Prompt) an die ausführende KI nichts dem Zufall, andererseits haben wir dem Agenten verboten, das Ergebnis in eigenen Worten zusammenzufassen.
Ein realer Sprint-Auftrag definiert Invarianten, exakte Code-Pfade, Teststufen und das Ausgabeformat bis ins Detail:
Statt einer Prosa-Zusammenfassung muss der Agent zwingend die unformatierten, echten Terminal-Logs liefern:
Erst wenn diese Terminal-Ausgaben schwarz auf weiß belegen, dass der Code sauber committet und vom Remote-Server akzeptiert wurde, gilt der Sprint als abgeschlossen.
5. Fazit: Nicht blind vertrauen, sondern Systeme bauen
KnotenCore verfügt heute über mehrere hundert automatisierte Tests, eine durchgängige Zero-Trust-Architektur und höchste Code-Qualität – nicht, weil KIs fehlerfreien Code schreiben, sondern weil unser Workflow darauf ausgelegt ist, Fehler schonungslos sichtbar zu machen.
Man muss heute kein Programmierer mehr sein, um komplexe Softwaresysteme zu erschaffen. Man muss jedoch lernen, wie ein leitender Ingenieur zu denken: Rollen trennen, Annahmen hinterfragen und niemals Berichte mit der Realität verwechseln.