13장 재시도 폭풍과 agent loop를 멈춘다
비용 사고는 정상 요청 증가보다 실패 loop에서 더 빠르게 커진다. timeout 뒤 provider가 실제로 처리했는데 client가 다시 보내거나, tool 결과를 agent가 이해하지 못해 같은 검색을 반복하거나, 두 agent가 서로 일을 되돌려 보내는 경우다.
필수 guardrail:
- 요청별 최대 model call 수
- tool별 최대 호출 수와 동일 인자 반복 차단
- wall-clock deadline
- 누적 token·금액 한도
- 동일 error의 exponential backoff
- idempotency key
- circuit breaker와 kill switch
if (trace.modelCalls >= 4) return escalate('MODEL_CALL_LIMIT');
if (trace.estimatedCost >= 0.25) return escalate('TRACE_COST_LIMIT');
if (sameToolArguments >= 2) return stop('REPEATED_TOOL_CALL');
kill switch는 dashboard의 숨은 버튼이 아니라 운영 runbook에 owner와 권한, 사용자 fallback, 복구 조건까지 적는다. 차단 후 queue가 쌓이는지도 관측해야 한다.