26장. 에이전트는 모델이 아니라 반복 판단과 도구의 결합이다
에이전트는 목표를 받고 상태를 관찰하며 다음 행동을 선택하고 도구를 호출하는 반복 시스템이다. 단일 응답보다 복잡한 일을 처리할 수 있지만, 잘못된 판단이 실제 행동으로 이어질 수 있다.
에이전트 루프를 명시한다.
observe → plan → select tool → validate arguments → execute
→ inspect result → update state → stop or continue
각 화살표에 제한이 필요하다. 최대 반복 수, 시간, 비용, 허용 도구, 인자 스키마, 외부 변경 승인, 성공 증거, 중단 조건을 둔다.
goal: 베타 출시 결정 자료 준비
tools: [read_fixture, calculate_cost, draft_brief]
max_steps: 8
stop_when:
- 필수 출처 누락
- 인젝션 탐지
- 외부 행동 필요
- 예산 또는 시간 상한 도달
도구 결과도 신뢰하지 않는다. 웹 검색 결과, 이메일, 티켓, MCP 응답에 악성 지시가 있을 수 있다. 모델이 도구를 선택했다고 권한이 생기는 것이 아니다. 서버가 사용자와 정책에 따라 다시 인가한다.
에이전트를 만들기 전에 고정 workflow로 가능한지 본다. 단계와 분기가 알려져 있다면 일반 코드가 더 예측 가능하고 저렴하다. 입력마다 다음 행동을 의미적으로 판단해야 할 때 제한된 에이전트가 가치가 있다.
상태 기계로 에이전트를 감싼다
모델이 자유롭게 상태를 만들게 하지 않는다. 애플리케이션이 허용 전이를 관리한다.
RECEIVED → VALIDATED → EVIDENCE_READY → DRAFTED → REVIEWED
↘ BLOCKED
REVIEWED → AWAITING_APPROVAL → EXECUTED → RECONCILED
↘ REJECTED
AWAITING_APPROVAL에서 모델이 도구를 다시 호출해도 서버가 거절한다. 승인은 대상·행동·내용 해시를 포함한다. EXECUTED 뒤 같은 idempotency key 요청은 새 행동 대신 기존 receipt를 반환한다. 중단도 정상 결과다. BLOCKED에는 누락 근거, 마지막 안전 상태, 재개 조건을 남긴다.