k
korAI
고급 전체
🔥 고급2026-04-1810분

에이전트 루프 설계 — 무한 루프·비용 폭주를 막는 가드레일 6종

tool use → 결과 주입 → 다시 호출의 루프를 돌리는 에이전트. 안전하게 운영하려면 처음부터 6가지 가드가 필요하다.

agent운영가드레일

기본 루프

while (true) {
  const msg = await model.call({ messages, tools })
  if (msg.stop_reason === "end_turn") break
  for (const toolCall of msg.content.filter(c => c.type === "tool_use")) {
    const result = await runTool(toolCall.name, toolCall.input)
    messages.push({ role: "user", content: [{ type: "tool_result", tool_use_id: toolCall.id, content: result }] })
  }
  messages.push({ role: "assistant", content: msg.content })
}

이 코드를 그대로 프로덕션에 올리면 망한다. 이유: 루프가 영원히 돌거나, 도구가 실패해도 계속 호출하거나, 토큰이 폭발한다.

가드레일 6종

1. 최대 스텝 수MAX_STEPS = 20. 초과 시 강제 종료 + 로그.

2. 토큰 예산 — 누적 input/output 토큰이 X 초과하면 중단.

3. 도구별 실패 카운트 — 같은 도구가 3회 연속 실패하면 에이전트 중단.

4. 반복 탐지 — 같은 도구 + 같은 input 해시가 3회 반복되면 중단 (루프 탈출 못 하는 신호).

5. 위험 도구 확인 게이트 — 파일 삭제·결제·외부 전송 도구는 사용자 승인 이벤트 큐로 분리.

6. 시계(wall clock) 타임아웃 — 에이전트 세션 전체가 N분 넘으면 중단.

관측

  • 각 스텝마다 { step, tool, inputHash, tokens, latency } 로그
  • 세션 단위로 총 비용·스텝 수 대시보드
  • 에이전트가 끝내지 못한 세션 비율을 SLO 로 잡아라 (e.g. 95% 이상이 end_turn으로 자연 종료)

체크리스트

  • [ ] MAX_STEPS 설정
  • [ ] 토큰 예산 환경변수
  • [ ] 도구 실패 3회면 중단
  • [ ] 반복 입력 해시 탐지
  • [ ] 위험 도구 승인 큐
  • [ ] 30분 wall-clock 타임아웃
  • [ ] 세션 로그 영구 저장
  • [ ] 자연 종료율 대시보드