도구 루프 감지
OpenClaw는 에이전트가 반복적인 도구 호출 패턴에 빠지는 것을 방지할 수 있습니다. 이 가드레일은 기본적으로 비활성화되어 있습니다.
엄격한 설정에서는 정당한 반복 호출도 차단할 수 있으므로, 필요한 경우에만 활성화하세요.
존재 이유
- 진행 없이 반복되는 시퀀스를 감지합니다.
- 동일한 도구, 동일한 입력, 반복 오류가 있는 고빈도 무결과 루프를 감지합니다.
- 알려진 폴링 도구의 특정 반복 호출 패턴을 감지합니다.
설정 블록
전역 기본값:
{
tools: {
loopDetection: {
enabled: false,
historySize: 30,
warningThreshold: 10,
criticalThreshold: 20,
globalCircuitBreakerThreshold: 30,
detectors: {
genericRepeat: true,
knownPollNoProgress: true,
pingPong: true,
},
},
},
}
에이전트별 재정의 (선택 사항):
{
agents: {
list: [
{
id: "safe-runner",
tools: {
loopDetection: {
enabled: true,
warningThreshold: 8,
criticalThreshold: 16,
},
},
},
],
},
}
필드 동작
enabled: 마스터 스위치.false이면 루프 감지가 수행되지 않습니다.historySize: 분석을 위해 보관할 최근 도구 호출 수.warningThreshold: 패턴을 경고 수준으로 분류하기 전 임계값.criticalThreshold: 반복 루프 패턴을 차단하는 임계값.globalCircuitBreakerThreshold: 전역 무진행 회로 차단기 임계값.detectors.genericRepeat: 동일한 도구 + 동일한 매개변수의 반복 패턴을 감지합니다.detectors.knownPollNoProgress: 상태 변화 없이 반복되는 폴링 패턴을 감지합니다.detectors.pingPong: 교대 반복되는 핑퐁 패턴을 감지합니다.
권장 설정
enabled: true로 시작하고 기본값을 유지하세요.- 임계값을
warningThreshold < criticalThreshold < globalCircuitBreakerThreshold순서로 유지하세요. - 오탐이 발생하면:
warningThreshold및/또는criticalThreshold를 높이세요- (선택적으로)
globalCircuitBreakerThreshold를 높이세요 - 문제를 일으키는 감지기만 비활성화하세요
- 이력 컨텍스트를 줄이려면
historySize를 줄이세요
로그 및 예상 동작
루프가 감지되면 OpenClaw는 루프 이벤트를 보고하고 심각도에 따라 다음 도구 사이클을 차단하거나 약화시킵니다. 이를 통해 정상적인 도구 접근을 유지하면서 과도한 토큰 소비와 잠금을 방지합니다.
- 경고와 일시적 억제를 먼저 적용합니다.
- 반복적인 증거가 누적될 때만 에스컬레이션합니다.
참고
tools.loopDetection은 에이전트 수준 재정의와 병합됩니다.- 에이전트별 설정이 전역 값을 완전히 재정의하거나 확장합니다.
- 설정이 없으면 가드레일은 비활성 상태로 유지됩니다.