에이전트 루프는 모델이 답을 한 번 생성하는 과정이 아니라, 관찰에서 다음 행동을 제안하고 실행기가 이를 제한된 외부 효과로 바꾼 뒤 결과를 다시 관찰하는 제어 흐름입니다. 따라서 계획의 품질과 별개로 제안·실행·검증의 경계를 기록해야 같은 호출을 반복하지 않고도 미완료 작업을 안전하게 이어갈 수 있습니다.
주문 규칙과 모델의 결정 범위
구매일·배송 상태로 환불 가능 여부가 정해진 서비스에서는 코드가 규칙을 계산하고 모델은 설명문을 작성할 수 있습니다. 반면 장애 원인을 조사하려면 첫 로그에 따라 배포 이력·DB 지표 중 다음 자료를 골라야 합니다. 에이전트의 유용한 선택권은 이런 미확정 경로에 있습니다. LLM이 포함됐다는 사실보다 누가 다음 행동을 정하는지 봅니다.
고정 분류·인가 → 제한된 자율 조사 → 결과 검사 → 승인된 실행처럼 혼합할 수 있습니다. 조사 권한을 늘린다고 결제·삭제 권한도 함께 늘릴 필요는 없습니다. 단일 호출·고정 조회를 기준선으로 두고 실제 해결률·안전한 이관·비용·tail 지연이 개선될 때 복잡도를 추가합니다.
호출 제안과 실행 사실의 구분
모델은 도구명·인자를 제안합니다. 실행기는 완성된 출력인지 확인하고 스키마·현재 인가·대상 조건·예산을 검사한 뒤 실제 호출합니다. 주문 조회 ID call-a와 재고 조회 ID call-b를 병렬 실행했다면 결과가 b부터 와도 ID로 연결해야 합니다. 배열 도착 순서로 붙이면 재고 수량을 주문 상태로 오해할 수 있습니다.
그림을 글로 읽기
- 목표·현재 관찰·미해결 조건
- 모델 · 다음 행동 제안
- 실행기 · 인가·상태·예산 검사
- 도구 호출·결과 ID 연결
- 실제 결과 검증 또는 새 관찰
- 목표·현재 관찰·미해결 조건 → 모델 · 다음 행동 제안: 필요한 문맥
- 모델 · 다음 행동 제안 → 실행기 · 인가·상태·예산 검사: 완성된 인자
- 실행기 · 인가·상태·예산 검사 → 도구 호출·결과 ID 연결: 허용된 호출
- 도구 호출·결과 ID 연결 → 실제 결과 검증 또는 새 관찰: 접수·완료·실패 구분
업로드가 task ID만 반환했다면 접수입니다. 상태 조회에서 완료되고 실제 문서 ID·버전·접근 경로를 확인한 뒤 결과를 보고합니다. HTTP 200이나 “완료했습니다”라는 문자열은 그 자체로 업무 성공 근거가 아닙니다.
예를 들어 order-read와 inventory-read를 병렬로 시작한 뒤 inventory-read가 먼저 돌아오면, 실행기는 도착 순서가 아니라 호출 ID로 각 결과를 원래 단계에 붙입니다. 업로드가 task-17만 반환하면 상태는 접수로 남기고, 상태 조회에서 document-42, version-3, 접근 경로를 확인한 뒤에만 완료로 바꿉니다. 이 두 관찰을 로그에서 찾을 수 없으면 성공 문구가 있어도 완료 판정을 보류합니다.
계획 변경과 목표·승인 경계
각 단계에 전제·입력·의존 단계·완료 증거·차단 원인을 둡니다. 사용하려던 라이브러리가 없다면 구현 수단을 바꿀 수 있지만 테스트를 지워 통과시키거나 권한 거절을 다른 도구로 우회할 수는 없습니다. 파일 버전 변경·새 비용·검증 실패처럼 결정을 바꾸는 관찰에서 필요한 부분만 재계획합니다.
단계 A의 검증된 산출물이 B의 입력이면 A를 기다립니다. 독립 단계만 병렬로 진행하고 완료한 작업 ID와 외부 효과를 보존합니다. 모든 도구 응답마다 전체 계획을 재작성하면 이미 끝난 실행을 반복하거나 실패했던 선택을 되풀이할 수 있습니다.
실행기의 상태·완료 증거·예산 강제
| 상태 | 필요한 근거 | 사용자에게 보고할 것 |
|---|---|---|
| 완료 | 요구한 최종 상태 검증 | 확인한 결과와 위치 |
| 실패 | 허용 경로에서 달성 불가 | 실패 원인·이미 발생한 효과 |
| 입력 대기 | 실제 사용자 결정 필요 | 필요한 한 가지 조건 |
| 예산 중단 | 시간·금액·호출 상한 | 완료·미완료·실행 불확정 |
부모 budget 100에서 자식 셋에 각각 60을 주면 로컬 상한을 지켜도 합계 180입니다. 공통 저장소에서 예약·사용·반환을 원자 관리하고 관측 비용 보고가 늦으면 보수적으로 예약합니다. 시간·모델 사용량·도구 비용·동시 실행·외부 변경 수는 별도 축입니다. 새 탐색 전에 결과 검증에 필요한 여유도 남깁니다.
반복 호출과 새 정보에 따른 진전 판정
같은 인자·같은 오류·같은 파일 버전에서 행동이 반복되면 순환 후보입니다. 그러나 5분짜리 내구 task를 적절한 간격으로 조회하는 것은 정상일 수 있습니다. 호출 종류·예상 변화 시간·새 근거·해결한 차단 조건으로 진전을 판단합니다.
중단은 외부 실행 취소와 같지 않습니다. 새 자식을 막고 실제 작업 종료를 추적하며 이미 시작한 효과의 ID·조회 경로를 남깁니다. 평가 기준을 약화해 “성공”을 만드는 것을 진전으로 세지 않습니다. 이 노트는 실행 설계이며 실제 모델 루프의 성공률을 측정한 결과는 아닙니다.