So verhindern Sie, dass Claude Code Dinge erfindet, wenn es die Antwort nicht kennt (inkl. exakter Einrichtung)

@0x_rody
ENGLISCHvor 1 Monat · 06. Juni 2026
346K
256
29
8
1.2K

TL;DR

Dieser Leitfaden bietet ein umfassendes 4-Schichten-Framework, um zu verhindern, dass Claude Code Funktionen oder Tests halluziniert, indem strenge Ehrlichkeitsprotokolle, Verifizierungsverfahren und automatisierte Linter-Hooks implementiert werden.

Claude Code lügt dir jeden Tag ins Gesicht. Erfundene Funktionen, gefälschte Imports, „Tests bestanden“ obwohl nichts gelaufen ist. Die Lösung ist ein 4-stufiger Aufbau, der Lügen teuer macht.

Claude sagt dir, der Bug ist behoben. Zwei Stunden später stellst du fest, dass die aufgerufene Funktion nie existiert hat.

Die meisten Entwickler lernen, alles doppelt zu überprüfen und dem Modell die Schuld zu geben. Der eigentliche Fix fängt jede Lüge ab, bevor sie deine Maschine verlässt.

Hier ist das vollständige Ehrlichkeits-Setup 👇

rody - inline image

Warum Claude sich überhaupt etwas ausdenkt

Claude ist ein Textvorhersager. Wenn es etwas nicht weiß, sagt es Text vorher, der richtig aussieht. Erfundene Funktionsnamen sehen aus wie echte. Selbstbewusst gelieferter Unsinn liest sich genauso wie selbstbewusst gelieferte Wahrheit.

Du kannst den Unterschied nicht erkennen, bis dein Code zwei Stunden später auf eine Weise kaputtgeht, die eine weitere Stunde Debugging erfordert.

Der Fix ist kein schlaueres Modell. Es geht darum, Claudes Ausgaben in Echtzeit überprüfbar zu machen und „Ich weiß es nicht“ billiger als Raten zu machen.

4 Ebenen weiter unten. Zusammen reduzieren sie Erfindungen auf nahezu null.

rody - inline image

Ebene 1: Die Ehrlichkeitsregeln in CLAUDE.md

Die erste Ebene ist eine Reihe von Regeln in CLAUDE.md, die Claude genau sagen, wann und wie es Unsicherheit eingestehen soll. Füge dies in dein Projekt-Root ein:

markdown
1## Ehrlichkeitsregeln (jede Runde lesen)
2
3Bevor du behauptest, dass eine Funktion, Klasse oder ein Import existiert,
4überprüfe es, indem du die Datei liest oder ein grep ausführst. Erfinde niemals Symbole.
5
6Wenn du etwas nicht überprüfen kannst, sage explizit „Ich habe das nicht überprüft“.
7Schreibe keinen Code, der von der unbestätigten Behauptung abhängt.
8
9Wenn eine Aufgabe dich bittet, eine Bibliothek zu verwenden, die du noch nie
10in diesem Projekt gesehen hast, frage nach, bevor du sie hinzufügst.
11
12Wenn eine Aufgabe Tests oder Builds beinhaltet, behaupte keinen Erfolg, es sei denn,
13du hast den Test- oder Build-Befehl in dieser Sitzung tatsächlich ausgeführt.
14
15Erfinde niemals Fehlermeldungen, API-Antworten oder Stack-Traces. Wenn du sie
16nicht gesehen hast, sage das.
17
18Wenn du es wirklich nicht weißt, ist die richtige Antwort „Ich weiß es nicht“ oder
19„Ich muss zuerst überprüfen“. Beides ist besser als eine selbstbewusste Vermutung.

Diese Regeln sehen offensichtlich aus.

Sind sie nicht, denn standardmäßig ist Claude darauf optimiert, hilfreich zu wirken, und „Ich weiß es nicht“ fühlt sich nicht hilfreich an, es sei denn, du gibst ihm ausdrücklich die Erlaubnis.

Die letzte Zeile ist die wichtigste. Sie ist die „Ich weiß es nicht“-Lizenz, und die meisten Leute erteilen sie nie.

Ebene 2: Das Überprüfen-vor-Schreiben-Muster

Die zweite Ebene zwingt Claude, vor dem Schreiben zu überprüfen. Füge dies in CLAUDE.md unter den Ehrlichkeitsregeln hinzu:

markdown
1## Überprüfungsprotokoll
2
3Bevor du Code schreibst oder bearbeitest, der ein Symbol (Funktion, Klasse, Typ,
4Konstante) verwendet, tue eines der Folgenden:
5
61. Lies die Datei, in der es definiert ist, und bestätige die Signatur
72. Führe `grep -r "SymbolName" .` aus oder verwende das Glob-Tool, um es zu finden
83. Überprüfe package.json, requirements.txt, Cargo.toml oder Äquivalent auf
9 die Abhängigkeit
10
11Wenn du die Überprüfung auslässt, stelle dem Code einen Kommentar voran:
12`// UNVERIFIED: Ich habe nicht bestätigt, dass dieses Symbol existiert`
13
14Der Plan-dann-Ausführen-Modus wird für jede Aufgabe bevorzugt, die mehr als eine
15Datei betrifft. Verwende Shift+Tab, um vor dem Start in den Plan-Modus zu wechseln.

Das kostet Claude ein paar zusätzliche Tool-Aufrufe pro Sitzung. Es spart dir die Stunden, die du mit dem Debuggen von erfundenen Funktionsaufrufen verbracht hättest.

Ebene 3: Die Hooks, die Lügen in Echtzeit abfangen

Die dritte Ebene sind Hooks in settings.json, die jedes Mal einen Typprüfer oder Linter ausführen, wenn Claude eine Datei schreibt. Wenn Claude einen Import erfunden hat, schlägt der Prüfer sofort fehl, und Claude muss es beheben, bevor es die Aufgabe als erledigt meldet.

json
1{
2 "hooks": {
3 "PostToolUse": [
4 {
5 "matcher": "Write(*.ts|*.tsx)|Edit(*.ts|*.tsx)",
6 "hooks": [
7 { "type": "command", "command": "npx tsc --noEmit --pretty false 2>&1 | head -20" }
8 ]
9 },
10 {
11 "matcher": "Write(*.py)|Edit(*.py)",
12 "hooks": [
13 { "type": "command", "command": "ruff check --quiet $file && pyright $file 2>&1 | head -20" }
14 ]
15 },
16 {
17 "matcher": "Write(*.rs)|Edit(*.rs)",
18 "hooks": [
19 { "type": "command", "command": "cargo check --message-format=short 2>&1 | head -20" }
20 ]
21 }
22 ]
23 }
24}

Die Hook-Ausgabe wird als Kontext an Claude zurückgegeben. Wenn tsc sagt „Cannot find module 'foo'“, sieht Claude es sofort und behebt den erfundenen Import. Kein erfundener Code überlebt eine PostToolUse-Überprüfung.

Für Aufgaben, die Tests beinhalten, füge einen Stop-Hook hinzu, der die Testsuite ausführt, bevor Claude die Sitzung als abgeschlossen erklären kann:

json
1"Stop": [
2 {
3 "hooks": [
4 { "type": "command", "command": "npm test 2>&1 | tail -30" }
5 ]
6 }
7]

Jetzt kann Claude nicht mehr sagen „erledigt, Tests bestanden“, ohne sie tatsächlich auszuführen. Der Hook führt sie aus.

Das Ergebnis geht zurück an Claude. Wenn sie fehlschlagen, muss Claude sie reparieren oder zugeben, dass sie nicht bestanden sind.

Ebene 4: Der Faktenprüfer-Subagent

Die vierte Ebene ist ein Subagent, dessen einzige Aufgabe es ist, Claudes Behauptungen zu überprüfen, bevor sie ausgeliefert werden.

Füge dies in .claude/agents/fact-checker.md ein:

yaml
1---
2name: fact-checker
3description: Verwende diesen Agenten, nachdem Claude Behauptungen darüber aufgestellt hat, was Code tut, welche Tests bestanden wurden oder was eine Bibliothek unterstützt. Rufe ihn vor jedem Commit, vor jeder benutzerorientierten Zusammenfassung und nach jeder Aufgabe auf, die neue Abhängigkeiten beinhaltet.
4tools: Read, Grep, Glob, Bash
5model: sonnet
6---
7
8Du überprüfst Behauptungen, du schreibst keinen Code.
9
10Wenn aufgerufen, tue Folgendes:
11
121. Identifiziere jede Tatsachenbehauptung im aktuellen Gespräch. Beispiele:
13 „die Funktion X tut Y“, „die Tests bestanden“, „Bibliothek Z unterstützt W“,
14 „dieser Import ist korrekt“.
15
162. Überprüfe jede Behauptung unabhängig:
17 - Code-Behauptungen: lies die tatsächliche Datei und bestätige
18 - Test-Behauptungen: führe die Tests selbst aus
19 - Bibliotheks-Behauptungen: überprüfe das tatsächliche Paket oder seine Dokumentation
20 - Import-Behauptungen: bestätige, dass das Paket im Abhängigkeitsmanifest ist
21
223. Erstelle einen Bericht:
23 - VERIFIED: Behauptung, Beweis (Datei:Zeile oder Befehlausgabe)
24 - WRONG: Behauptung, was tatsächlich wahr ist
25 - UNVERIFIABLE: Behauptung, warum du es nicht überprüfen konntest
26
27Akzeptiere niemals „vertraue mir“-Behauptungen. Stelle niemals eigene Behauptungen auf. Wenn du
28nicht überprüfen kannst, ist die korrekte Ausgabe UNVERIFIABLE.

Rufe diesen Agenten vor Commits oder bevor du Ergebnisse mit deinem Team teilst, auf. Es fängt die Lügen ein, die die anderen 3 Ebenen übersehen haben.

rody - inline image

Die „Ich weiß es nicht“-Lizenz

Claude wurde darauf trainiert, hilfreich zu sein, und Unwissen zuzugeben fühlt sich nicht hilfreich an. Also rät es, und die Vermutung sieht richtig aus.

Der Fix ist, die Erlaubnis zu geben, nichts zu wissen. CLAUDE.md ist die eine Hälfte. Deine Reaktion ist die andere Hälfte. Belohne „Ich habe das nicht überprüft“ mit Geduld, und du bekommst in jeder Sitzung einen ehrlichen Claude. Bestrafe es mit Frustration, und Claude fängt wieder an zu raten.

Kein Config, eine Gewohnheit. Der am meisten unterschätzte Fix im Stack.

Wie man erkennt, dass es tatsächlich funktioniert

Drei Anzeichen in deinen täglichen Sitzungen.

Claude fragt, bevor es Abhängigkeiten hinzufügt. „Soll ich X hinzufügen oder die stdlib verwenden?“ anstatt stilles npm install.

Claude verweist auf Datei:Zeile, wenn es über vorhandenen Code spricht. „validateToken in src/auth/middleware.ts:47 tut Y“ anstatt „die validateToken-Funktion tut Y.“

tsc und dein Linter hören auf zu schreien. Hooks fangen die seltenen Erfindungen sofort ab und Claude korrigiert sich selbst, sodass die Lügen weg sind, wenn du hinschaust.

Siehst du diese Anzeichen nach ein oder zwei Tagen nicht? Eine Ebene ist nicht geladen. Meistens CLAUDE.md, falscher Ort oder falscher Name.

rody - inline image

Häufige Fehler, die Claude weiterlügen lassen

CLAUDE.md ist zu lang.

Claude liest den ersten Teil und überfliegt den Rest. Ehrlichkeitsregeln in den ersten 50 Zeilen.

Hooks protokollieren still.

Wenn die Ausgabe nicht auf stdout landet, weiß Claude nicht, dass es gelogen hat. Stelle sicher, dass die Hook-Ausgabe zur Sitzung zurückgeht.

Du überspringst den Plan-Modus.

Dort deckt Claude falsche Annahmen auf, bevor es schreibt. Wenn du es überspringst, verpasst du den billigsten Moment, um Lügen zu erkennen.

Du rufst den Faktenprüfer nicht auf.

Ein Subagent funktioniert nur, wenn du ihn tatsächlich aufrufst. Mach @fact-checker zu einem Teil deines Commit-Flusses.

Du reagierst schlecht auf „Ich weiß es nicht“.

Bestrafe Ehrlichkeit einmal und Claude fängt wieder an zu raten. Die anderen 3 Ebenen halten nicht ohne diese.

rody - inline image

Das 5-Minuten-Ehrlichkeits-Audit

1 Minute: Kopiere die CLAUDE.md-Ehrlichkeitsregeln und das Überprüfungsprotokoll in dein Projekt-Root.

1 Minute: Kopiere den Hooks-Block in ~/.claude/settings.json oder .claude/settings.json.

2 Minuten: Erstelle .claude/agents/fact-checker.md mit der Vorlage oben.

1 Minute: Führe eine Aufgabe aus, die du normalerweise doppelt überprüfen würdest. Achte auf tsc-Ausgaben, die an Claude zurückgehen. Bestätige, dass Claude explizit „überprüft“ oder „Ich habe das nicht überprüft“ sagt.

Erledigt. Erfindungen sinken von „jede zweite Sitzung“ zu „selten und sofort abgefangen“. Das Modell wurde nicht schlauer. Dein Setup schon.

Danke fürs Lesen!

rody - inline image
Mit einem Klick speichern

Virale Artikel mit YouMind per KI tief lesen

Speichere die Quelle, stelle gezielte Fragen, fasse die Argumentation zusammen und verwandle einen viralen Artikel in wiederverwendbare Notizen in einem einzigen KI-Arbeitsbereich.

YouMind entdecken
Für Creator

Verwandle dein Markdown in einen sauberen 𝕏-Artikel

Wenn du eigene Langtexte veröffentlichst, wird die 𝕏-Formatierung von Bildern, Tabellen und Codeblöcken mühsam. YouMind macht aus einem ganzen Markdown-Entwurf einen sauberen, sofort postbaren 𝕏-Artikel.

Markdown zu 𝕏 testen

Mehr Muster zum Entschlüsseln

Aktuelle virale Artikel

Mehr virale Artikel entdecken