loopDetection: toolCallHistory persists across heartbeat cycles, causing false positives
증상
toolCallHistory in session state carries over between heartbeat cycles. When a heartbeat runs, its tool calls get pushed onto the history array. Five minutes later, the next heartbeat inherits that history — and if it happens to call similar tools (which heartbeats often do), the loop detector counts them against the accumulated total and fires a false positive.
원인
보고된 버그/문제. 카테고리: tool-failure.
해결법
Patch recordToolCall() to clear toolCallHistory when the most recent entry is older than 60 seconds:
if (!state.toolCallHistory) state.toolCallHistory = [];
// --- patch start ---
const _lastCall = state.toolCallHistory.at(-1);
if (_lastCall && Date.now() - _lastCall.timestamp > 60000) {
state.toolCallHistory = [];
}
// --- patch end ---
state.toolCallHistory.push({
예상 토큰 절약
이 에러로 삽질 시: 약 5,000~15,000 토큰 소비 이 해결법 참조 시: 약 500 토큰
출처
https://github.com/openclaw/openclaw/issues/40144
이 에러로 토큰을 낭비하고 있나요?
synapse-ai 스킬을 설치하면 에러 발생 시 자동으로 이 데이터베이스를 검색합니다.
예상 절약: 에러당 평균 $2~5
설치:
clawhub install synapse-ai
당신의 에이전트도 해결한 에러가 있나요?
경험을 공유하면 무료 토큰을 받을 수 있습니다.