모델을 기다리게 하지 마라: 비동기 도구 호출로 비용 40% 줄인 Unreal Agent

한눈에 보는 요약
Unreal Labs가 공개한 Unreal Agent는 도구 호출을 완전히 비동기로 관리하는 에이전트 하네스입니다. 핵심 아이디어는 간단합니다. 모델이 도구 실행이 끝나기를 기다리며 폴링하고 하트비트를 주고받는 데 토큰을 쓰지 않게 하자는 것이죠.
결과는 꽤 인상적입니다. 실제 워크로드와 에이전트 벤치마크에서 Codex 대비 최대 40%, Pi 대비 최대 20%의 비용 절감을 기록했습니다. 통과율은 거의 같거나 조금 더 높았고요.
왜 새로운 하네스가 필요했을까
에이전트 제품을 만들어 본 분이라면 공감하실 겁니다. 아직 "이렇게 하면 된다"는 정답 경로가 없고, 대형 공급업체 SDK마다 처음엔 보이지 않던 절충점이 뒤늦게 튀어나옵니다.
Unreal Labs가 지목한 기존 SDK의 제약들은 이렇습니다.
- CLI 중심 SDK의 전제: Claude의 Agent SDK처럼 로컬 세션, 하위 프로세스, 리소스 제한을 전제로 설계된 SDK는 프로덕션 환경에 그대로 옮기기 어렵습니다.
- 수명 주기 관리의 부재: 작업 완료, 취소, 백그라운드 작업을 안정적으로 다루려면 결국 별도의 수명 주기 관리 코드를 직접 짜야 합니다.
- 멀티 프로바이더의 세금: 여러 모델 공급업체를 지원하는 순간 호환성과 유지보수 부담이 따라옵니다.
- 깨지기 쉬운 통합: API 모드를 전환하면 도구나 컨텍스트 압축이 깨질 수 있고, SDK를 업그레이드했더니 메시지 형식이 바뀌어 통합 코드를 다시 써야 하는 일도 생깁니다.
- 의존성 트리: 큰 의존성 트리는 직접 이해하고 패치해야 하는 런타임에 유지보수 부담과 공급망 리스크를 더합니다.
보안은 하네스 밖에서
흥미로운 관점 하나. Unreal Labs는 하네스 훅과 특수 도구에 의존하는 보안·승인 처리가 오히려 유지보수 비용이 크고 견고성이 낮았다고 말합니다. 대신 하네스 외부의 결정적인 환경 제약을 택했습니다.
- 호스트 단위 허용/차단 목록
- 세분화된 액세스 토큰
- 승인 관문(approval gate)을 둔 프록시
보안 경계를 에이전트 로직 안이 아니라 인프라 레이어로 내리는 설계라고 볼 수 있습니다.
핵심 설계: 비동기 도구 호출
설계 목표는 명확합니다. 사용자 지시를 지연 없이 받으면서, 서로 다른 도구 호출을 모델의 추가 관리 부담 없이 병행하는 것.
대표적인 시나리오가 이겁니다. 수 분이 걸리는 개발 환경 설정을 백그라운드로 던져 놓고, 그동안 코드베이스 탐색과 웹 검색을 병렬로 진행하는 것이죠. 기존 방식이라면 환경 설정이 끝날 때까지 모델이 붙잡혀 있어야 했습니다.
동작 흐름은 이렇습니다.
- 도구를 호출하면 즉시 이벤트 로그에
in-progress상태의 기록을 추가합니다. - 실제 실행은 백그라운드에서 계속됩니다.
- 도구가 완료되면 최종 결과를 세션 로그에 추가하고 LLM을 호출합니다.
말은 간단하지만, 이 과정에서 캐시를 깨뜨리지 않게 구현하는 것이 별도의 엔지니어링 과제였다고 합니다. 프롬프트 캐시가 깨지면 비용 절감 효과가 통째로 사라지니까요.
API 호환성이라는 복병
여기서 현실적인 문제가 하나 드러납니다.
- Responses API 문서는 하나의 컨텍스트에 동일 도구 호출의 진행 중 결과와 최종 결과를 함께 넣는 방식을 명확히 규정하지 않습니다.
- 테스트 중 OpenAI가 아닌 일부 추론 공급업체의 일부 모델에서 요청이 거부됐습니다. 이 경우
function_call_output의status필드는 영향을 주지 않는 것으로 보였다고 합니다. - 다만 대화 형식이 일단 수락되기만 하면, 모델은 "실행 중 → 최종 결과"로 이어지는 흐름을 잘 이해했습니다.
Unreal Labs는 이 패턴을 Responses API가 명시적으로 지원하고, 추론 공급업체들도 일관되게 지원해야 한다고 주장합니다. 비동기 에이전트가 보편화되려면 필요한 표준화라는 거죠.
비용이 줄어드는 두 가지 이유
1. 최소한의 하네스 구성과 도구 출력 최적화
- 간결한 프롬프트를 사용합니다.
- 도구 결과 자체를 토큰 사용량 관점에서 최적화합니다.
- 하위 에이전트나 워크플로를 쓰지 않습니다. (요즘 유행하는 멀티 에이전트 구성과는 정반대 방향이라 눈에 띕니다.)
관련 배경은 〈(KV) Cache Rules Everything Around Me〉 글에서 확인할 수 있습니다.
2. 모델 턴당 더 많은 도구 작업 수행
LLM에게 명확히 설명된 단순한 비동기 도구 호출 모델을 제공하면, 폴링이나 대기에 토큰을 쓰지 않고도 무거운 도구 호출을 더 많이 실행할 수 있습니다.
결과적으로 같은 성과를 더 적은 모델 턴과 더 적은 입력 토큰으로 달성합니다. 아래 벤치마크에서 턴 수 차이를 직접 확인해 보세요.
벤치마크 결과
모두 GPT-6 Astra xhigh를 사용해 Codex, Pi와 비교한 결과입니다. 통과율의 작은 차이는 벤치마크 변동성에 따른 것으로 해석해야 한다고 저자들도 명시하고 있습니다. 주목할 지점은 비용과 턴 수입니다.
Terminal-Bench 4.0
| 에이전트 | 통과율 | 총비용 | 시행당 입력 | 모델 호출 | |---|---|---|---|---| | Unreal Agent | 57.9% | $1,428 | 173만 토큰 | 28턴 | | Codex (리더보드 기준선) | 57.9% | $2,350 | - | - | | Pi | 55.0% | $1,827 | 283만 토큰 | 44턴 |
통과율은 Codex와 동일한데 비용은 약 900달러 적습니다.
SWE-Atlas Codebase QnA
| 에이전트 | 통과율 | 총비용 | 시행당 입력 | 모델 호출 | |---|---|---|---|---| | Unreal Agent | 65.8% | $936 | 89만 8천 토큰 | 16턴 | | Codex | 63.3% | $1,303 | 169만 토큰 | 22턴 | | Pi | 64.0% | $1,033 | 129만 토큰 | 24턴 |
입력 토큰이 Codex의 절반 수준입니다.
DeepSWE 1.1
| 에이전트 | 통과율 | 총비용 | 시행당 입력 | 모델 호출 | |---|---|---|---|---| | Unreal Agent | 72.4% | $1,367 | 160만 토큰 | 26턴 | | Codex | 69.0% | $1,633 | 219만 토큰 | 30턴 | | Pi | 69.6% | $1,584 | 221만 토큰 | 40턴 |
Agents' Last Exam / ALE-CLI
이 결과는 Harbor에 올라가 있지 않다는 점을 참고하세요.
| 에이전트 | 완전 통과율 | 평균 점수 | 총비용 | 과제당 입력 | |---|---|---|---|---| | Unreal Agent | 30.0% | 59.7 | $217 | 76만 토큰 | | Codex | 29.0% | 58.1 | $292 | 159만 토큰 | | Pi | 29.0% | 59.2 | $262 | 119만 토큰 |
왜 코딩 벤치마크만 있을까
코딩 벤치마크를 주로 쓴 이유는 Harbor에서 재현과 검증이 쉽기 때문입니다. 하네스 자체는 특정 도메인에 종속되지 않는다고 밝히고 있습니다.
SDK는 어떤 형태로 제공되나
Unreal Agent GitHub 저장소에서 확인할 수 있으며, 현재 세 가지 형태를 제공합니다.
- Go 라이브러리 — 코드베이스에 직접 통합
- 실행 파일 —
claude -p나codex exec와 유사한 사용성 - 벤치마크 실행기 — Harbor 호환
정리하며
Unreal Agent가 던지는 메시지는 "더 똑똑한 에이전트"가 아니라 **"덜 기다리는 에이전트"**입니다. 모델의 추론 능력을 끌어올리는 대신, 모델이 아무것도 하지 않으면서 토큰만 태우는 구간을 제거해 비용을 줄였습니다.
하위 에이전트와 복잡한 워크플로를 쌓아 올리는 대신 하네스를 최소화하는 방향을 택했다는 점도 곱씹어 볼 만합니다. Unreal Labs는 하네스 설계 자체를 독립적인 연구 영역으로 보고 있고, 아직 구현해 볼 유망한 아이디어가 많다고 말합니다. 관련 연구로 〈HarnessTax: How Much Does Harness Matter for Coding Agents?〉를 함께 살펴보면 좋겠습니다.
에이전트 제품의 비용 구조를 고민 중이라면, 프롬프트 튜닝보다 하네스 레이어를 먼저 들여다볼 이유가 하나 생긴 셈입니다.