🔥 고급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 타임아웃
- [ ] 세션 로그 영구 저장
- [ ] 자연 종료율 대시보드