Tool-Loop-Erkennung

OpenClaw kann verhindern, dass Agents in wiederholten Tool-Call-Mustern steckenbleiben. Der Schutz ist standardmäßig deaktiviert.

Aktiviere ihn nur dort, wo er gebraucht wird, da er bei strengen Einstellungen auch legitime wiederholte Aufrufe blockieren kann.

Warum es das gibt

  • Repetitive Sequenzen erkennen, die keinen Fortschritt machen.
  • Hochfrequente No-Result-Loops erkennen (gleiches Tool, gleiche Eingaben, wiederholte Fehler).
  • Bestimmte wiederkehrende Aufrufmuster für bekannte Polling-Tools erkennen.

Konfigurationsblock

Globale Defaults:

{
  tools: {
    loopDetection: {
      enabled: false,
      historySize: 30,
      warningThreshold: 10,
      criticalThreshold: 20,
      globalCircuitBreakerThreshold: 30,
      detectors: {
        genericRepeat: true,
        knownPollNoProgress: true,
        pingPong: true,
      },
    },
  },
}

Pro-Agent-Override (optional):

{
  agents: {
    list: [
      {
        id: "safe-runner",
        tools: {
          loopDetection: {
            enabled: true,
            warningThreshold: 8,
            criticalThreshold: 16,
          },
        },
      },
    ],
  },
}

Feldverhalten

  • enabled: Master-Schalter. false bedeutet, keine Loop-Erkennung wird durchgeführt.
  • historySize: Anzahl der aufbewahrten letzten Tool-Calls für die Analyse.
  • warningThreshold: Schwellenwert, bevor ein Muster nur als Warnung klassifiziert wird.
  • criticalThreshold: Schwellenwert für die Blockierung repetitiver Loop-Muster.
  • globalCircuitBreakerThreshold: globaler No-Progress-Breaker-Schwellenwert.
  • detectors.genericRepeat: erkennt wiederholte Muster mit gleichem Tool + gleichen Parametern.
  • detectors.knownPollNoProgress: erkennt bekannte Polling-artige Muster ohne Zustandsänderung.
  • detectors.pingPong: erkennt alternierende Ping-Pong-Muster.

Empfohlenes Setup

  • Starte mit enabled: true, Standardwerte unverändert.
  • Halte die Schwellenwerte in der Reihenfolge warningThreshold < criticalThreshold < globalCircuitBreakerThreshold.
  • Bei False Positives:
    • erhöhe warningThreshold und/oder criticalThreshold
    • (optional) erhöhe globalCircuitBreakerThreshold
    • deaktiviere nur den verursachenden Detektor
    • reduziere historySize für weniger strikten historischen Kontext

Logs und erwartetes Verhalten

Wenn ein Loop erkannt wird, meldet OpenClaw ein Loop-Ereignis und blockiert oder dämpft den nächsten Tool-Zyklus je nach Schweregrad. Das schützt Benutzer vor unkontrolliertem Token-Verbrauch und Blockaden, während normaler Tool-Zugang erhalten bleibt.

  • Bevorzuge zuerst Warnung und temporäre Unterdrückung.
  • Eskaliere nur, wenn sich wiederholte Hinweise ansammeln.

Hinweise

  • tools.loopDetection wird mit Agent-Level-Overrides zusammengeführt.
  • Pro-Agent-Konfiguration überschreibt oder erweitert globale Werte vollständig.
  • Wenn keine Konfiguration existiert, bleiben die Schutzmaßnahmen aus.