BlogHarness
Ein Repository für Coding-Agenten vorbereiten, mit Checks als Nachweis
Damit ein Coding-Agent zuverlässig arbeiten kann, muss sich ein frischer Checkout Ihres Repositorys mit Befehlen installieren, bauen und testen lassen, die dort stehen, wo der Agent sie liest. Und etwas anderes als das Gedächtnis eines Engineers muss belegen, dass diese Befehle noch funktionieren. Der entscheidende Test ist einfach: Führen Sie das dokumentierte Setup bei jeder Änderung in einer sauberen Umgebung aus und behandeln Sie einen Fehlschlag wie einen kaputten Build.
Was Ihre Engineers haben und ein Agent nicht
Jede Claude-Code-Sitzung beginnt mit einem leeren Kontextfenster, und andere Coding-Agenten arbeiten ähnlich. Abgesehen von organisationsweiten oder persönlichen Anweisungen und einem Gedächtnis, die zu Beginn geladen werden, weiß der Agent über Ihr Repository das, was das Repository ihm sagt, plus das, was er durch Suchen findet. Den Rest tragen Ihre Engineers im Kopf, etwa die Umgebungsvariable, die gesetzt sein muss, den Dienst, der vor den Integrationstests laufen muss, und den Test, der montags fehlschlägt.
Fehlt dieses Wissen, rät der Agent. GitHubs Dokumentation zum eigenen Cloud Agent sagt, dass Copilot Abhängigkeiten durch Ausprobieren finden und installieren kann, dass dies aber langsam und unzuverlässig ist und bei privaten Abhängigkeiten ganz scheitern kann. Vermutungen, die kompilieren, landen trotzdem im Review und sehen dort aus wie gewöhnlicher Code.
Sechs Fragen, die ein frischer Checkout beantworten muss
Wir stellen diese Fragen an einen sauberen Clone in einem Container oder auf einer Maschine, die das Repository noch nie gesehen hat. Ein Ja braucht einen Beleg: Der Befehl ist gelaufen.
- Installiert ein dokumentierter Befehl die Abhängigkeiten aus dem Lockfile, ohne Rückfragen und ohne Tools, die es nur auf Laptops gibt?
- Startet ein Befehl einen schnellen Testsatz, der jedes Mal dasselbe Ergebnis liefert, während langsame oder instabile Suites gekennzeichnet und ausgeklammert sind?
- Starten Datenbanken, Queues und andere Dienste aus einem Skript oder einer Container-Definition, mit den Testdaten, die die Tests erwarten?
- Ist festgehalten, welche Zugangsdaten das Setup braucht und welche die Agenten-Sitzung nie erhalten darf?
- Nennt eine Anweisungsdatei die Befehle, die Pfade, die der Agent nicht ändern darf, und die Konventionen, auf denen Reviewer bestehen?
- Hat diese Datei, samt der Agenten-Konfiguration drumherum, eine namentlich benannte verantwortliche Person?
Die dokumentierten Befehle zum CI-Job machen
Anweisungen veralten unbemerkt. Jemand benennt ein Skript um, und die Anweisungsdatei nennt noch das alte. Abhilfe schafft ein einziger Einstiegspunkt, den die Anweisungsdatei nennt und den ein CI-Job von einem sauberen Checkout aus ausführt. So bricht eine veraltete Anweisung einen Build statt eines Agentenlaufs.
#!/usr/bin/env bash # The one command agents and CI both run from a clean checkout. # Named in AGENTS.md; CI runs it on every change to setup files. set -euo pipefail pnpm install --frozen-lockfile pnpm build pnpm lint pnpm test:unit
Gehostete Agenten bringen eine eigene Setup-Schicht mit, die dieselbe Behandlung braucht. GitHub führt vor dem Start seines Cloud Agents einen Workflow copilot-setup-steps.yml aus, und zwar nur aus dem Default-Branch. Schlägt ein Setup-Schritt fehl, überspringt der Agent die restlichen Schritte und beginnt im aktuellen Zustand der Umgebung zu arbeiten. Ein kaputtes Setup zeigt sich dann als seltsames Verhalten des Agenten, nicht als roter Build. Der Workflow läuft bei Änderungen auch als normaler Check und lässt sich manuell starten, er ist also testbar.
In OpenAIs Codex Cloud bereitet Codex eine Umgebung gemeinsam mit Ihnen vor und testet sie, und die Veröffentlichung hält das vorbereitete Dateisystem fest, von dem neue Aufgaben starten. Änderungen an diesem vorbereiteten Setup erreichen neue Aufgaben nach erneuter Veröffentlichung, und bestehende Aufgaben behalten ihre eigenen Dateien. Manche gespeicherte Konfiguration gilt sofort für das aktive Setup, prüfen Sie also vor dem Test, welche Art von Änderung Sie vorgenommen haben.
Was in die Anweisungsdatei gehört und was nicht
Die Claude-Code-Dokumentation verlangt Anweisungen, die konkret genug sind, um sie zu überprüfen, etwa den exakten Testbefehl, und empfiehlt, jede CLAUDE.md unter 200 Zeilen zu halten, weil längere Dateien Kontext kosten und die Befolgung verschlechtern. Die Cursor-Dokumentation zu Rules rät davon ab, Styleguides zu kopieren, die ein Linter durchsetzen kann. Was die Datei braucht, ist kurz:
- Befehle für Installation, Build, Lint und schnelle Tests, genau so, wie die CI sie ausführt
- Pfade, die der Agent nicht ändern darf, etwa generierter Code, eingebundene Abhängigkeiten und bereits gemergte Migrationen
- Konventionen, auf denen Reviewer bestehen und die von üblichen Standards abweichen
- Was fertig bedeutet: welche Checks bestehen müssen und was die Beschreibung des Pull Requests enthält
Mehrere Tools lesen inzwischen AGENTS.md. Claude Code liest sie, wenn keine CLAUDE.md vorhanden ist, Cursor unterstützt sie im Wurzelverzeichnis und in Unterverzeichnissen, und GitHubs Cloud Agent liest AGENTS.md-Dateien neben seinen eigenen Anweisungsdateien. Eine gemeinsame Datei mit schlanken tool-spezifischen Ergänzungen verhindert, dass drei Kopien auseinanderlaufen. Durchsetzen kann keine dieser Dateien etwas: Laut Claude-Code-Dokumentation behandelt das Tool sie als Kontext. Eine Regel, die gelten muss, gehört deshalb in Berechtigungen, Hooks oder die CI.
Von den Antworten zu einer Arbeitsregel
Die Antworten entscheiden, wie Agenten in einem Repository arbeiten dürfen. Diese Regel wenden wir an:
- Alle sechs mit Ja beantwortet: Kandidaten für delegierte Aufgaben, die ein Reviewer prüfen kann, bei unverändertem Review und unveränderten Pflicht-Checks.
- Setup funktioniert, aber Tests sind instabil oder langsam: nur interaktive Arbeit, bei der ein Engineer die Testausgabe liest, bis der schnelle Testsatz stabil ist.
- Ein sauberer Checkout baut nicht: Das wird zuerst behoben, weil ein Agent dort sein Budget mit dem Wiederentdecken des Setups verbraucht.
In einem hypothetischen Service-Repository braucht ein Checkout eine lokale Postgres-Instanz, die Engineers vor Monaten gestartet haben, und ein Token für eine private Paket-Registry. Die Abhilfe sind eine Container-Definition für die Datenbank, ein Registry-Zugang, der nur dem Setup zur Verfügung steht, und das obige agent-check-Skript, jeweils als eine prüfbare Änderung.
Was Bereitschaft nicht löst
Ein vorbereitetes Repository beendet das Raten über die Umgebung. Es macht unklare Aufgaben nicht klar, schafft keine Review-Kapazität und macht Agenten nicht geeignet für Arbeit, die tiefes fachliches Urteil verlangt. Repositories, die von lizenzierten Tools, spezieller Hardware oder internen Systemen abhängen, passen vielleicht nicht in eine gemeinsam genutzte gehostete Sandbox, doch das schließt Delegation nicht aus. GitHubs Cloud Agent kann auf selbst gehosteten Runnern mit Zugriff auf interne Ressourcen laufen, empfohlen als kurzlebige Runner für jeweils einen Job, und ein selbst gehostetes oder lokales Setup funktioniert, wenn es reproduzierbar ist und dieselben Berechtigungen, Checks und Reviews hat. Erst wenn nichts davon möglich ist, bleibt interaktive lokale Nutzung als Ausweg.
Wenn Agenten-Änderungen lokal bestehen und in der CI scheiternHarness Engineering
Fragen
Brauchen wir für jedes Agenten-Tool eine eigene Anweisungsdatei?
Meist nicht. Halten Sie gemeinsame Fakten in AGENTS.md und ergänzen Sie eine kurze tool-spezifische Datei nur dort, wo ein Tool etwas braucht, das die anderen nicht brauchen. Prüfen Sie, welche Dateien jedes Tool lädt, denn die Standards unterscheiden sich.
Kann der Agent seine Anweisungsdatei selbst schreiben?
Einen Entwurf, ja. Das /init von Claude Code analysiert die Codebasis und schlägt eine CLAUDE.md vor, und Codex hat einen /init-Befehl, der eine AGENTS.md entwirft. Behandeln Sie den Entwurf wie einen Pull Request und ergänzen Sie, was der Agent nicht selbst herausfinden kann, etwa warum es eine Konvention gibt.
Wie oft sollte der Bereitschafts-Check laufen?
Bei jeder Änderung an den Dateien, die er abdeckt, etwa Lockfile, Setup-Skripte, Anweisungsdateien und CI-Konfiguration, und zusätzlich nach Zeitplan, damit äußere Änderungen wie ein abgelaufenes Registry-Token auffallen, bevor ein Agentenlauf scheitert.
Verwandte Leistungen
Harness Engineering
Das Setup, das einem Agenten sagt, wie er Ihren Code baut, testet und ändert, abgelegt in der Versionskontrolle.
Einführung von Coding-Agenten
Der Einsatz von Agenten, ausgeweitet von wenigen Pilotteams auf die gesamte Entwicklung, mit Schulungen und einem gemeinsamen Setup.
Evaluierungen auf Ihren Repositories
Tools, Modelle oder Einstellungen im direkten Vergleich, getestet an Änderungen, die Sie bereits gemergt haben, bevor Sie sich festlegen.
Mehr aus dem Blog
Agenten-Änderungen, die in der CI scheitern
Wie Sie eingrenzen, warum die Änderung eines Coding-Agenten in seiner eigenen Umgebung bestand und in der CI scheiterte, und welche Harness-Korrekturen eine Wiederholung verhindern.
Aufgaben an Cloud-Coding-Agenten übergeben
Was eine Aufgabe enthalten sollte, bevor sie an einen Cloud-Coding-Agenten geht: eine wiederverwendbare Vorlage, drei Prüffragen und Regeln für die Rückgabe der Arbeit.
Claude-Code-Anweisungen im Team
Wie ein Team CLAUDE.md-Dateien und Rules Verantwortlichen zuordnet, sie prüft und Einträge entfernt, die das Verhalten von Claude Code nicht mehr ändern.
Agentic SDLC
KI im Softwareentwicklungsprozess: was Coding-Agenten in jeder Phase übernehmen, wer jede Übergabe verantwortet und wie Sie das messen und steuern.
Quellen
- Claude-Code-Dokumentation: How Claude remembers your project
- GitHub Docs: Entwicklungsumgebung für Copilot Cloud Agent konfigurieren
- GitHub Docs: Best Practices für Aufgaben mit GitHub Copilot
- OpenAI-Codex-Dokumentation: Cloud environments
- Cursor-Dokumentation: Rules
- OpenAI Cookbook: Iterating development workflows with Codex
Mit einem Engineer sprechen
Bringen Sie eine Aufgabe mit, die Sie verbessern möchten. Das Gespräch dauert 30 Minuten und braucht keinen Zugriff auf Ihre Systeme oder Ihre Daten.
Die Buchung läuft über Google Kalender.
Lieber zuerst schreiben? Hinterlassen Sie Ihre E-Mail-Adresse und ein paar Zeilen, dann antworten wir mit Terminvorschlägen.
Sehen Sie in Ihrem E-Mail-Programm nach dem Entwurf
Senden Sie ihn von dort ab, und ein Engineer antwortet Ihnen persönlich mit Terminvorschlägen für ein 30-minütiges Gespräch. Hat sich kein Entwurf geöffnet, schreiben Sie uns an miki@cloudsail.com.