tools.loopDetection:
- Lusdetectie (
enabled) - standaard uitgeschakeld. Bewaakt de voortschrijdende geschiedenis van toolaanroepen op herhaalde patronen en nieuwe pogingen met onbekende tools. - Beveiliging na Compaction - ingeschakeld wanneer
enabledniet explicietfalseis. Wordt na elke nieuwe poging na Compaction geactiveerd en breekt de uitvoering af als de agent dezelfde(tool, args, result)-combinatie van drie elementen binnen het venster herhaalt.
tools.loopDetection.enabled: false in om beide beveiligingsmechanismen uit te schakelen.
Waarom dit bestaat
- Detecteer repetitieve reeksen die geen voortgang opleveren.
- Detecteer hoogfrequente lussen zonder resultaat (dezelfde tool, dezelfde invoer, herhaalde fouten).
- Detecteer specifieke patronen van herhaalde aanroepen voor bekende pollingtools.
- Doorbreek cycli van contextoverloop -> Compaction -> dezelfde lus in plaats van ze onbeperkt te laten doorgaan.
Configuratieblok
Globale instelling:agents.entries.*.tools.loopDetection):
Gedrag van velden
Voor
exec vergelijkt hashing voor ontbrekende voortgang stabiele opdrachtresultaten (status,
afsluitcode, time-outvlag, uitvoer) en negeert het vluchtige runtime-metagegevens zoals
duur, PID, sessie-ID en werkmap. Resultaten van uitgaande berichtverzendingen
worden gehasht nadat vluchtige ID’s per aanroep (bericht-ID, bestands-ID, tijdstempel)
zijn verwijderd, zodat een resultaat met de status “verzonden” niet identiek lijkt aan een ander resultaat met de status “verzonden”.
Wanneer een uitvoerings-ID beschikbaar is, wordt de geschiedenis alleen binnen die uitvoering geëvalueerd,
zodat geplande Heartbeat-cycli en nieuwe uitvoeringen geen verouderde aantallen lussen
van eerdere uitvoeringen overnemen.
Aanbevolen configuratie
- Stel voor kleinere modellen
enabled: truein. Topmodellen hebben zelden detectie met voortschrijdende geschiedenis nodig en kunnen de hoofdschakelaar opfalselaten staan, terwijl ze nog steeds profiteren van de beveiliging na Compaction. - Stel expliciet
tools.loopDetection.enabled: falsein om alles uit te schakelen, inclusief de beveiliging na Compaction.
Beveiliging na Compaction
Na een nieuwe poging met Compaction als gevolg van een contextoverloop activeert de uitvoerder voor de volgende paar toolaanroepen een beveiliging met een kort venster. Als de agent dezelfde(toolName, argsHash, resultHash)-combinatie van drie elementen binnen dat venster vaak genoeg produceert, concludeert de beveiliging dat Compaction de
lus niet heeft doorbroken en breekt deze de uitvoering af met een compaction_loop_persisted-fout.
De beveiliging wordt aangestuurd door de algemene vlag tools.loopDetection.enabled, met één
bijzonderheid: ze blijft ingeschakeld wanneer de vlag niet is ingesteld of true is, en wordt alleen
uitgeschakeld wanneer de vlag expliciet false is. Dit is opzettelijk: de beveiliging
dient om te ontsnappen aan Compaction-lussen die anders onbeperkt tokens zouden verbruiken,
zodat een gebruiker zonder configuratie nog steeds beschermd is.
- De beveiliging breekt nooit af zolang de resultaten veranderen; alleen byte-identieke resultaten binnen het venster activeren haar.
- Ze wordt alleen direct na een nieuwe poging met Compaction geactiveerd, niet op andere momenten tijdens een uitvoering.
De beveiliging na Compaction wordt uitgevoerd wanneer de algemene vlag niet expliciet
false is, zelfs als je nooit een tools.loopDetection-blok hebt geschreven. Zoek ter controle direct na een Compaction-gebeurtenis naar post-compaction guard armed for N attempts in het Gateway-logboek.Logboeken en verwacht gedrag
Wanneer een lus wordt gedetecteerd, registreert OpenClaw een lusgebeurtenis en waarschuwt of blokkeert het de volgende toolcyclus, afhankelijk van de ernst. Zo beschermt het tegen onbeheerst tokenverbruik en vastlopers, terwijl normale toegang tot tools behouden blijft.- Waarschuwingen komen eerst.
- Blokkering volgt zodra een patroon langer aanhoudt dan de waarschuwingsdrempel.
- Kritieke drempels blokkeren de volgende toolcyclus en tonen een duidelijke reden voor lusdetectie in de uitvoeringsregistratie.
- De beveiliging na Compaction produceert
compaction_loop_persisted-fouten die de betreffende tool en het aantal identieke aanroepen vermelden.
Gerelateerd
Uitvoeringsgoedkeuringen
Beleid voor toestaan/weigeren van shelluitvoering.
Denkniveaus
Niveaus van redeneerinspanning en interactie met providerbeleid.
Subagenten
Geïsoleerde agenten starten om onbeheerst gedrag te begrenzen.
Configuratiereferentie
Volledig
tools.loopDetection-schema en samenvoegingssemantiek.