OpenClaw hat zwei zusammenwirkende Schutzmechanismen für repetitive Tool-Aufrufmuster:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- Loop-Erkennung (
tools.loopDetection.enabled) – standardmäßig deaktiviert. Überwacht die rollierende Tool-Aufrufhistorie auf wiederholte Muster und Wiederholungsversuche für unbekannte Tools. - Post-Compaction-Schutz (
tools.loopDetection.postCompactionGuard) – standardmäßig aktiviert, soferntools.loopDetection.enablednicht ausdrücklichfalseist. Wird nach jedem Compaction-Wiederholungsversuch aktiviert und bricht den Lauf ab, wenn der Agent innerhalb des Fensters dasselbe(tool, args, result)-Tripel ausgibt.
tools.loopDetection-Block konfiguriert, aber der Post-Compaction-Schutz läuft immer dann, wenn der Hauptschalter nicht ausdrücklich ausgeschaltet ist. Setzen Sie tools.loopDetection.enabled: false, um beide Oberflächen stummzuschalten.
Warum es das gibt
- Repetitive Sequenzen erkennen, die keinen Fortschritt erzielen.
- Hochfrequente Schleifen ohne Ergebnis erkennen (gleiches Tool, gleiche Eingaben, wiederholte Fehler).
- Bestimmte Wiederholungsaufrufmuster für bekannte Polling-Tools erkennen.
- Verhindern, dass Zyklen aus Kontextüberlauf, anschließender Compaction und derselben Schleife unbegrenzt weiterlaufen.
Konfigurationsblock
Globale Standardwerte, mit allen dokumentierten Feldern:Feldverhalten
| Feld | Standardwert | Auswirkung |
|---|---|---|
enabled | false | Hauptschalter für die Detektoren der rollierenden Historie. Das Setzen auf false deaktiviert auch den Post-Compaction-Schutz. |
historySize | 30 | Anzahl der letzten Tool-Aufrufe, die für die Analyse aufbewahrt werden. |
warningThreshold | 10 | Schwellenwert, ab dem ein Muster nur als Warnung klassifiziert wird. |
criticalThreshold | 20 | Schwellenwert zum Blockieren repetitiver Schleifenmuster ohne Fortschritt. |
unknownToolThreshold | 10 | Blockiert wiederholte Aufrufe desselben nicht verfügbaren Tools nach so vielen Fehlschlägen. |
globalCircuitBreakerThreshold | 30 | Globaler Schwellenwert für den Fortschrittsausfall über alle Detektoren hinweg. |
detectors.genericRepeat | true | Warnt bei wiederholten Mustern aus gleichem Tool und gleichen Parametern und blockiert, wenn dieselben Aufrufe identische Ergebnisse zurückgeben. |
detectors.knownPollNoProgress | true | Erkennt bekannte pollingartige Muster ohne Zustandsänderung. |
detectors.pingPong | true | Erkennt alternierende Ping-Pong-Muster. |
postCompactionGuard.windowSize | 3 | Anzahl der Post-Compaction-Tool-Aufrufe, während derer der Schutz aktiv bleibt, sowie die Anzahl identischer Tripel, die den Lauf abbrechen. |
exec vergleichen Fortschrittslosigkeitsprüfungen stabile Befehlsausgänge und ignorieren flüchtige Laufzeitmetadaten wie Dauer, PID, Sitzungs-ID und Arbeitsverzeichnis. Wenn eine Lauf-ID verfügbar ist, wird die aktuelle Tool-Aufrufhistorie nur innerhalb dieses Laufs ausgewertet, sodass geplante Heartbeat-Zyklen und neue Läufe keine veralteten Loop-Zählungen aus früheren Läufen übernehmen.
Empfohlene Einrichtung
- Setzen Sie für kleinere Modelle
enabled: trueund lassen Sie die Schwellenwerte auf ihren Standardwerten. Flaggschiffmodelle benötigen die Erkennung über rollierende Historien selten und können den Hauptschalter auffalsebelassen, profitieren aber weiterhin vom Post-Compaction-Schutz. - Halten Sie die Schwellenwerte in der Reihenfolge
warningThreshold < criticalThreshold < globalCircuitBreakerThreshold. - Falls falsch positive Treffer auftreten:
- Erhöhen Sie
warningThresholdund/odercriticalThreshold. - Erhöhen Sie optional
globalCircuitBreakerThreshold. - Deaktivieren Sie nur den spezifischen Detektor, der Probleme verursacht (
detectors.<name>: false). - Reduzieren Sie
historySize, um weniger strikten historischen Kontext zu verwenden.
- Erhöhen Sie
- Um alles zu deaktivieren (einschließlich des Post-Compaction-Schutzes), setzen Sie
tools.loopDetection.enabled: falseausdrücklich.
Post-Compaction-Schutz
Wenn der Runner nach einem Kontextüberlauf einen Compaction-Wiederholungsversuch abgeschlossen hat, aktiviert er einen Schutz mit kurzem Fenster, der die nächsten wenigen Tool-Aufrufe überwacht. Wenn der Agent dasselbe(toolName, argsHash, resultHash)-Tripel mehrfach innerhalb des Fensters ausgibt, kommt der Schutz zu dem Schluss, dass die Compaction die Schleife nicht unterbrochen hat, und bricht den Lauf mit einem compaction_loop_persisted-Fehler ab.
Der Schutz wird durch das Haupt-Flag tools.loopDetection.enabled gesteuert, mit einer Besonderheit: Er bleibt aktiviert, wenn das Flag nicht gesetzt oder true ist, und deaktiviert sich nur, wenn das Flag ausdrücklich false ist. Das ist beabsichtigt. Der Schutz dient dazu, Compaction-Schleifen zu verlassen, die andernfalls unbegrenzt Tokens verbrauchen würden, sodass auch Benutzer ohne Konfiguration diesen Schutz erhalten.
- Ein niedrigerer
windowSizeist strenger (weniger Versuche vor dem Abbruch). - Ein höherer
windowSizegibt dem Agent mehr Wiederherstellungsversuche. - Der Schutz bricht niemals ab, wenn sich Ergebnisse ändern, sondern nur, wenn Ergebnisse im gesamten Fenster byteidentisch sind.
- Er ist absichtlich eng gefasst: Er löst nur unmittelbar nach einem Compaction-Wiederholungsversuch aus.
Der Post-Compaction-Schutz läuft immer dann, wenn das Haupt-Flag nicht ausdrücklich
false ist, selbst wenn Sie nie einen tools.loopDetection-Block geschrieben haben. Zur Überprüfung suchen Sie unmittelbar nach einem Compaction-Ereignis im Gateway-Log nach post-compaction guard armed for N attempts.Logs und erwartetes Verhalten
Wenn ein Loop erkannt wird, meldet OpenClaw ein Loop-Ereignis und dämpft oder blockiert je nach Schweregrad den nächsten Tool-Zyklus. Das schützt Benutzer vor unkontrolliertem Token-Verbrauch und Blockierungen, während normaler Tool-Zugriff erhalten bleibt.- Warnungen kommen zuerst.
- Eine Unterdrückung folgt, wenn Muster über den Warnschwellenwert hinaus bestehen bleiben.
- Kritische Schwellenwerte blockieren den nächsten Tool-Zyklus und zeigen einen klaren Grund der Loop-Erkennung im Laufdatensatz an.
- Der Post-Compaction-Schutz gibt
compaction_loop_persisted-Fehler mit dem Namen des betroffenen Tools und der Anzahl identischer Aufrufe aus.
Verwandte Themen
Exec-Genehmigungen
Zulassen-/Ablehnen-Richtlinie für Shell-Ausführung.
Denkstufen
Reasoning-Aufwandsstufen und Interaktion mit Provider-Richtlinien.
Sub-Agents
Starten isolierter Agents, um ausuferndes Verhalten zu begrenzen.
Konfigurationsreferenz
Vollständiges
tools.loopDetection-Schema und Zusammenführungssemantik.