Artikel

KI-Agenten schreiben Code. Kontrolle muss deterministisch bleiben.

KIProgrammierung

KI-Agenten verändern die Softwareentwicklung grundlegend. Sie schreiben Code, erklären Code, refaktorieren Code, erzeugen Tests, erweitern APIs und korrigieren Fehler. Das ist nützlich. Manchmal sogar verblüffend nützlich. Aber es ändert nichts an einer alten Wahrheit der Softwareentwicklung: Am Ende zählt nicht, ob Code plausibel klingt. Am Ende zählt, ob er korrekt, wartbar und prüfbar ist.

Genau deshalb braucht KI-gestützte Programmierung eine deterministische Kontrollschicht. Als Misstrauensvotum gegen KI und als technische Notwendigkeit.

KI ist produktiv, aber nicht deterministisch genug

Ein KI-Agent arbeitet wahrscheinlichkeitsbasiert. Er erkennt Muster, kombiniert Kontexte, schlägt Lösungen vor und erzeugt Code, der oft überzeugend aussieht. Das Problem liegt genau darin: überzeugend ist nicht dasselbe wie korrekt.

Ein Agent kann eine Methode falsch benennen, einen Typ nur scheinbar sauber behandeln, eine Sicherheitsprüfung übergehen, eine bestehende Konvention verletzen oder ein Refactoring beginnen, das größer wird als der eigentliche Fehler. Besonders gefährlich sind Änderungen, die oberflächlich funktionieren, aber langfristig die Struktur verschlechtern.

Der klassische Satz „läuft doch“ reicht hier nicht. Gerade bei KI-generiertem Code muss eine zusätzliche Ebene prüfen, was der Agent erzeugt hat.

Deterministische Kontrolle ist die letzte Barriere

Deterministische Werkzeuge haben einen anderen Charakter als KI. Sie interpretieren nicht frei. Sie raten nicht. Sie prüfen Regeln.

Ein Linter prüft Formatierung, Syntaxnähe und Stilregeln.
Eine statische Analyse prüft Typen, Rückgabewerte, unerreichbaren Code und falsche Annahmen.
Tests prüfen erwartetes Verhalten.
CI-Pipelines prüfen reproduzierbar, ob ein definierter Qualitätsstandard eingehalten wird.
Automatisierte Refactoring-Werkzeuge ändern Code nach festen Regeln statt nach sprachlicher Plausibilität.

Diese Werkzeuge sind nicht kreativ. Genau das ist ihre Stärke.

KI kann Vorschläge machen. Die deterministische Kontrollschicht entscheidet, ob diese Vorschläge die technischen Mindestanforderungen erfüllen.

Linting ist keine Kosmetik

Linting wird oft unterschätzt, weil es angeblich nur um Stil geht. Das ist zu kurz gedacht. Einheitliche Formatierung reduziert kognitive Last. Wer Code liest, soll nicht ständig entscheiden müssen, ob eine Abweichung Absicht oder Nachlässigkeit ist.

Bei KI-Agenten ist Linting noch wichtiger. Agenten produzieren häufig Code, der syntaktisch korrekt ist, aber sich nicht sauber in das bestehende Projekt einfügt. Ein konsequenter Linter zwingt den Output zurück in die Projektkonvention.

Das ist kein ästhetisches Detail. Es ist technische Hygiene.

Erzwingbares Refactoring statt gut gemeinter Vorschläge

Refactoring durch KI ist riskant, wenn es nicht begrenzt wird. Ein Agent kann aus einer kleinen Änderung eine umfassende Umstrukturierung machen. Das wirkt professionell, erzeugt aber oft neue Angriffsflächen: mehr Dateien, mehr Abhängigkeiten, mehr Abstraktionen, mehr mögliche Fehler.

Besser ist erzwingbares, regelbasiertes Refactoring. Werkzeuge wie Rector, PHP-CS-Fixer, ESLint-Fixes oder IDE-Inspections können definierte Transformationen reproduzierbar durchführen. Sie ändern nicht, was ihnen gerade sinnvoll erscheint, sondern was ausdrücklich als Regel hinterlegt wurde.

Das verschiebt Refactoring von Geschmack zu Kontrolle.

Statische Analyse ist der Realitätscheck

Besonders stark ist statische Analyse, wenn KI-Agenten mit streng typisierten Projekten arbeiten. Werkzeuge wie PHPStan, Psalm, TypeScript, mypy oder vergleichbare Systeme erkennen Fehler, die im normalen Testlauf nicht zwingend sichtbar werden.

Ein Agent kann behaupten, ein Wert sei immer vorhanden. Die statische Analyse fragt: Ist das beweisbar?

Ein Agent kann ein Array verwenden, als hätte es eine feste Struktur. Die statische Analyse fragt: Ist diese Struktur garantiert?

Ein Agent kann einen Rückgabewert ignorieren. Die statische Analyse fragt: Darf er das?

Diese Fragen sind trocken, aber entscheidend. Sie verhindern, dass plausibler Code in produktive Systeme gelangt.

Tests reichen allein nicht

Tests sind wichtig, aber sie sind keine vollständige Absicherung. Tests prüfen konkrete Fälle. Statische Analyse und Linting prüfen Klassen von Fehlern.

Gerade KI-Agenten können Code erzeugen, der die vorhandenen Tests passiert, aber trotzdem strukturell falsch ist. Vielleicht wird ein Randfall nicht getestet. Vielleicht wurde eine Sicherheitsannahme verändert. Vielleicht wurde ein Fehler nur verdeckt, nicht gelöst.

Deshalb braucht es mehrere Barrieren:

Erstens: Formatierung und Stil.
Zweitens: statische Analyse.
Drittens: automatisierte Tests.
Viertens: Architektur- und Sicherheitsregeln.
Fünftens: menschliche Kontrolle bei fachlich relevanten Änderungen.

Keine einzelne Schicht reicht aus. Zusammen bilden sie ein belastbares System.

Der Agent darf schreiben, aber nicht entscheiden

Der entscheidende Punkt ist Rollenverteilung. Ein KI-Agent darf Code erzeugen. Er darf Vorschläge machen. Er darf repetitive Aufgaben beschleunigen. Er darf Boilerplate reduzieren. Er darf Fehler suchen.

Aber er sollte nicht die letzte Instanz sein.

Die letzte Instanz muss ein reproduzierbarer Prüfprozess sein. Ein Prozess, der nicht beeindruckt ist von gut formulierten Erklärungen. Ein Prozess, der nicht müde wird. Ein Prozess, der bei Regelverstößen einfach stoppt.

In professionellen Projekten sollte KI-Code daher nie direkt als fertig gelten. Fertig ist Code erst, wenn er die deterministischen Prüfungen besteht.

Besserer Code entsteht durch Reibung

Viele Entwickler wollen KI-Agenten möglichst frei arbeiten lassen. Das ist verständlich, aber gefährlich. Gute KI-gestützte Entwicklung entsteht nicht durch maximale Freiheit, sondern durch produktive Begrenzung.

Der Agent bekommt Kontext, Ziel und Grenzen.
Die Tools prüfen Regeln, Typen und Tests.
Die Pipeline verhindert unkontrollierte Änderungen.
Der Entwickler bewertet Architektur, Fachlichkeit und Risiko.

So entsteht nicht nur schnellerer Code, sondern besserer Code.

Fazit

KI-Agenten sind ein mächtiges Werkzeug. Aber sie ersetzen keine technischen Qualitätsbarrieren. Im Gegenteil: Je mehr Code von KI erzeugt wird, desto wichtiger werden deterministische Prüfungen.

Linting, statische Analyse, Tests, CI und regelbasiertes Refactoring sind keine bürokratischen Hürden. Sie sind die letzte Verteidigungslinie gegen plausiblen, aber falschen Code.

Die produktive Zukunft der Softwareentwicklung liegt deshalb nicht in „KI statt Kontrolle“. Sie liegt in „KI plus Kontrolle“.

Der Agent schreibt. Die Maschine prüft. Der Mensch entscheidet.

0 Kommentare