Ich arbeite inzwischen die meiste Zeit mit autonomen Coding-Agenten. Sie sind schnell, unermüdlich — und unter Druck still bereit, eine Abkürzung zu nehmen, die ein guter Kollege nie nehmen würde. Und sie nehmen immer dieselben Abkürzungen: Sie melden eine grüne Test-Suite, die sie mit einem übersprungenen Test erkauft haben, erfinden ein Config-Flag, das plausibel klingt und nicht existiert, --force-en an einer Wand vorbei, die sie nie gelesen haben, oder brechen bei der ersten roten Zeile ab und nennen es fertig.
Nichts davon erscheint als Fehler. Alles davon erscheint später — in der Produktion, am Nachmittag von jemand anderem.
Die Lücke, an die ich immer wieder stieß: Das Werkzeug, das wir schon haben, prüft den Code. Linter, Type-Checker, Tests, CI — behalte jedes einzelne davon. Keins davon prüft den Agenten: das Urteil vor dem Tastendruck, die Ehrlichkeit des Berichts, die Entscheidung weiterzumachen oder abzubrechen. Das ist ein Verhaltensproblem, und Verhalten steht in keiner Config-Datei.
Also habe ich eine kleine Sache geschrieben, um das zu lösen — und dann, weil ich nicht aufhören konnte, habe ich sie zehnmal geschrieben.
Was ein Conduct Harness ist
Ein Conduct Harness ist ein winziger Kodex, den du im Kontext des Agenten hältst, während er arbeitet. Vier Disziplinen:
- Sauberkeit — was du hinterlässt.
- Urteil — wie du unter Druck entscheidest.
- Ehrlichkeit — wie du berichtest.
- Beharrlichkeit — ob du die Arbeit aufgibst.
Viele CLAUDE.md-Dateien sagen bereits „bitte sei vorsichtig“. Der Teil, der mich wirklich interessiert, ist ein anderer: Jede Regel bringt einen Falsifikator mit — das konkrete, beobachtbare Ding, das beweist, dass die Regel gebrochen wurde. Kein Bauchgefühl. Ein Verstoß, auf den man zeigen kann und den ein Skript oder ein Reviewer prüfen kann.
Das Wort ist bewusst gewählt. Karl Popper zog die Grenze zwischen Wissenschaft und allem anderen bei der Falsifizierbarkeit: Eine Behauptung, die nichts je widerlegen könnte, ist keine starke Behauptung, sondern eine leere. Dasselbe gilt für eine Regel, die man einem Agenten gibt. „Schreib sauberen Code“ lässt sich auf dem Papier nicht brechen, also wird es nie wirklich befolgt. „Kein von dir hinzugefügtes console.log überlebt in dem Diff, den du fertig nennst“ — das scheitert laut.
Die ganze Idee auf einem Bildschirm
Jede Edition liefert dasselbe durchgearbeitete Beispiel, weil es der Mechanismus ist. Gib dem Agenten einen fehlschlagenden Test und eine Deadline. Die billige Rettung sieht so aus:
- expect(parseAmount("1.005")).toBe(1.01);
+ test.skip("rounds two decimals", () => {
+ expect(parseAmount("1.005")).toBe(1.01); // flaky, revisit later
+ });
Die Suite ist grün. Der Bug ist noch da — parseAmount rundet 1.005 weiterhin auf 1.00 ab — und jetzt bewacht ihn nichts mehr. Eine Regression, ausgeliefert mit einem Häkchen.
Unter dem Harness trägt die Regel „weise die billige Rettung zurück“ den Falsifikator „ein übersprungener Test oder eine stummgeschaltete Warnung, um ein grünes Häkchen zu erzwingen.“ Das Überspringen löst den Falsifikator also laut aus — und der Agent nimmt stattdessen den anderen Weg:
- return Math.round(Number(s) * 100) / 100; // 1.005 * 100 = 100.4999… → 100
+ return Math.round((Number(s) + Number.EPSILON) * 100) / 100; // half-up on the cent
Gleiches Modell, gleiche Aufgabe, entgegengesetztes Ergebnis. Die Suite ist grün, weil der Code korrekt ist, und der Test steht weiter Wache. Das ist der ganze Pitch. (Und ehrlich dazu: Das ist eine Illustration des Mechanismus, kein Benchmark. Ich verkaufe dir keine Zahl.)
Zwei Ebenen — und warum es zehn davon gibt
Jede Regel ist zweimal geschrieben. Ein Identitätsname, den du unter Deadline erinnerst, und ein Engineering-Name, der tatsächlich prüfbar ist. Eine Regel, die der Agent vergisst, sobald das Kontextfenster voll ist, ist totes Gewicht — also zählt die merkbare Hälfte so viel wie die prüfbare.
Genau deshalb gibt es zehn kulturelle Editionen desselben Grundgerüsts. Eine Disziplin mit einem Namen, an den dein Team glaubt, wird befolgt; eine nummerierte Regel wird überflogen. Wähl das Idiom, das für dich funktioniert:
- empirical-harness — die wissenschaftliche Methode; Poppers eigene. Fang hier an, wenn dich die Falsifikator-Idee hergeführt hat.
- nerd-harness — die Hacker-Ethik: laufender Code ist der Schiedsrichter, keine Götter, keine Gurus, kein Cargo-Kult.
- zen-harness — die Präsenz des Handwerkers: eine Aufgabe, vollständig getan.
- bushido-harness · junzi-harness — der Samurai und der konfuzianische Edle.
- dharma-harness · ihsan-harness · umuntu-harness — das Karma-Yoga der Gita, die islamische Ethik der Vortrefflichkeit und Ubuntus „Ich bin, weil wir sind“.
- agnostic-harness — die stoische Edition, für die Säkularen.
- angelical-harness — für alle, die ihre Disziplin durch Glauben halten.
Ein Grundgerüst darunter, wortgleich. Die Haut ist nur der Griff, den du wirklich fasst.
Woher es kam
Ehrlicher Ursprung: Die Idee kam wie ein Download, während ich an meinem eigenen Harness für die Arbeit baute. Etwas sagte mach es, und ich lief los. Einen Tag später waren es zehn.
Was es ist und was nicht
Jedes ist MIT-lizenziert, ohne Abhängigkeiten und in sich geschlossen. Du nutzt es als Paste-Block in einem System-Prompt oder in AGENTS.md, oder du verdrahtest es als Session-Start-Hook, damit es sich jedes Mal selbst lädt. Es ist Harness-agnostisch — Claude Code oder jeder andere Agent.
Und hier der ehrliche Stand, denn Ehrlichkeit ist eine der vier Regeln, die das Ding beschreibt: Es ist brandneu. Null Sterne an dem Tag, an dem ich das schreibe. Die Falsifikatoren werden heute durch Lesen durchgesetzt — die mechanischen (ein vergessener Debug-Print, grün über rot) ließen sich per Tooling durchsetzen und tun es noch nicht. Es ist ein Entwurf und ein Argument, kein fertiges Framework mit einem Diagramm als Beweis. Was ich wirklich nicht weiß: ob eine benannte Disziplin ein volles Kontextfenster besser übersteht als eine nummerierte Liste. Meine Wette ist ja. Gemessen habe ich es nicht.
Wenn du Agenten in Produktion betreibst und die Idee auseinandernehmen willst, nähme ich das als Geschenk. Die Repositories stehen unten.
Quellen & Links
- Die zehn Repositories: github.com/arnoldwender?tab=repositories&q=harness
- Fang mit empirical-harness an — der popperschen — und lies deren
EXAMPLE.mdfür das obige Beispiel. - Zur Falsifizierbarkeit: Karl Popper, Logik der Forschung (1934).