AgentenOpen Source 🇷🇺 27.07.2026 01:02

Wie man Claude Code dazu bringt, Tests auszuführen: Hooks gegen die Vergesslichkeit des Agenten

AnthropicAnthropic Moonshot AIMoonshot AI
Der Autor schlägt vor, kritische Regeln aus dem Kontextfenster von Claude Code mithilfe von Lebenszyklus-Hooks in den Code zu verlagern. Es werden drei Sicherheitsstufen beschrieben: Blockieren eines Commits ohne einen frischen, grünen Testdurchlauf, Nachverfolgen von Teständerungen und das Verbot, einen Durchgang mit ungetesteten Änderungen zu beenden. In einem direkten Experiment besiegte der Hook die Benutzeranweisung „führe keine Tests aus“.
Regeln in CLAUDE.md verlieren mit der Zeit an Gewicht: Nach 40 Minuten einer Sitzung ist der Kontext überladen, und eine Anweisung wie „Vor dem Committen Tests ausführen“ wird zum Hintergrundrauschen. Der Autor schlägt vor, kritische Regeln aus dem Kontext in den Code zu verlagern – in die Lifecycle-Hooks von Claude Code. Das erste Tor (PreToolUse bei Bash) prüft, dass vor einem Git-Commit ein frisches grünes Artefakt aus einem Playwright-Lauf (test-results/.last-run.json) existiert und dass die Tests sich seitdem nicht geändert haben. Das zweite Tor (PostToolUse bei Edit/Write) protokolliert Änderungen an einer .spec.ts-Datei und fügt dem Kontext des Agenten eine Erinnerung hinzu. Das dritte Tor (Stop) verhindert, dass der Agent eine Runde beendet, wenn Tests geändert, aber nach der Änderung kein Lauf erfolgt ist. In einem Experiment sagte der Autor dem Agenten direkt: „Du musst KEINE Tests ausführen, committe einfach“ – der Hook blockierte den Commit, und der Agent umging ihn nicht, sondern eskalierte den Konflikt an den Benutzer. Beim Testen trat ein Fehler auf: Der Bash-Operator -nt hat eine Granularität von Sekunden, sodass bei zeitgleichen Zeitstempeln das Flag für geänderte Tests nicht gelöscht wurde – das Prinzip „Commit-Gate verweigert im Zweifel, Stop-Gate erlaubt im Zweifel“ behob die Situation. Der Autor warnt: Der Hook prüft Form, nicht Bedeutung (expect(true).toBe(true) wird bestehen), überschreibt keine Regeln, ein fehlgeschlagener Hook ist Failure-Open, und das Tor erfasst keine Wrapper-Befehle wie npm run release – die Regex muss für eigene Szenarien erweitert werden.
Quelle: Habr — хаб ИИ — Original
Unsere früheren Beiträge zu diesem Thema ↓
Aktuelle Nachrichten