TL;DR
Bei klassischer Software führt dieselbe Eingabe jedes Mal zum selben Ergebnis. Bei einem Coding-Agenten gilt das nicht. Dass der Agent dieselben Anweisungen schon oft ausgeführt hat, macht ihn nicht zuverlässiger. Ein Agent, der eine Aufgabe neunmal richtig gemacht hat, kann sie beim zehnten Mal falsch machen, und nichts kündigt an, welche Ausführung schiefgeht. Mit Erfahrung lässt sich die Schwankung der Ergebnisse deutlich reduzieren; klare Anweisungen und durchdachte Skills führen häufiger zum gewünschten Resultat. Fehler lassen sich aber nicht ausschliessen. Deshalb braucht es automatische Prüfungen, die immer gleich entscheiden, und nicht einen Menschen, der aufpasst.
Führ denselben Code zweimal aus, und das Ergebnis ist beide Male identisch. Gib einem Agenten dieselbe Aufgabe zweimal, und die Ergebnisse unterscheiden sich. Auch ein Mensch löst dieselbe Aufgabe nicht zweimal gleich. Bei Menschen setzt man aber noch etwas voraus: Je öfter jemand dasselbe tut, desto zuverlässiger wird er.
Macht jemand eine Aufgabe zum ersten Mal, prüfst du das Ergebnis genau. Hat er sie schon oft richtig gemacht, verlässt du dich darauf. Ein Agent, der dieselbe Aufgabe schon oft richtig gemacht hat, fängt beim nächsten Mal wieder bei null an. Beim Menschen bleibt das Gelernte im Kopf. Beim Agenten steht es in den Anweisungen, die du ihm geschrieben hast, und sonst nirgends. Was du bisher nur die ersten Male geprüft hast, musst du deshalb bei jeder Ausführung prüfen.
Dass derselbe Prompt jedes Mal eine andere Antwort ergibt, liegt am Verfahren selbst.
#In einem Prosatext fällt das kaum auf: Zwei Formulierungen derselben richtigen Antwort lesen sich als dieselbe Antwort. In einem Bild schon. Dieselbe Eigenschaft steckt hinter dem , der wochenlang tut, was er soll, und dann einmal nicht.
Lass dir von einem zweimal dieselbe Benutzeroberfläche entwickeln. Du bekommst zwei Layouts, beide vertretbar und doch schon auf den ersten Blick verschieden. Ein Sprachmodell setzt seine Antwort Token für Token zusammen und wählt dabei jedes Mal unter Fortsetzungen aus, die alle plausibel sind; nichts darin zwingt es, zweimal gleich zu wählen. ist eine Eigenschaft von Coding-Agenten.
Was eine Ausführung abweichen lässt, ist am Ergebnis nicht abzulesen.
#Die Ausführung, die schiefgeht, sieht genauso aus wie jede andere, solange sie läuft. Ihr Ergebnis klingt ebenso selbstsicher und ist gleich aufgebaut wie das einer korrekten Ausführung. Das Ergebnis verrät nicht, was bereits im Kontext stand, welche Anweisungen geladen wurden oder wie das Projekt in diesem Moment aussah.
Erfahrung zeigt, wo eine Ausführung schiefgehen kann, aber nie, welche schiefgeht.
#Eine erfahrene Person kann ziemlich genau auf die Stellen in einer Aufgabe zeigen, an denen ein Agent etwas falsch machen kann. Trotzdem kann sie nicht vorhersagen, bei welcher Ausführung genau das passieren wird.
Wer viel Erfahrung im Umgang mit Agenten hat, weiss, welche Anweisungen eher zu Fehlern führen oder wann der Kontext zu voll ist und der Agent nicht mehr verlässlich arbeitet. Man lernt, einen Skill so zu schreiben, dass er möglichst zuverlässig läuft.
Wer lange mit arbeitet, entwickelt vor allem ein Gespür dafür, wo eine Ausführung schiefgehen kann und wie man den Agenten anweisen muss, damit es gar nicht erst zu Problemen kommt.
Alles, was Erfahrung nicht ausräumen kann, muss eine deterministische Prüfung abfangen.
#Eine automatisierte und deterministische Prüfung, die ohne Interpretationsspielraum einfach «bestanden» oder «nicht bestanden» zurückgibt, verhält sich jedes Mal gleich. Genau diese Eigenschaft fehlt dem Agenten. Niemand muss dem Agenten bei der Arbeit zuschauen. Bewertet wird das Ergebnis. Solche Prüfungen begrenzen die Auswirkungen des nichtdeterministischen Verhaltens von Agenten, und sie einzurichten ist deine Aufgabe.
Weiter erkunden