메뉴
HN
Hacker News • 3일 전

언리얼 에이전트, 도구 호출 비동기화로 최대 40% 비용 절감

IMP
6/10
핵심 요약

Unreal Labs가 도구 호출을 완전 비동기 방식으로 처리하는 '언리얼 에이전트(Unreal Agent)' 하네스를 공개했습니다. 모델이 도구 대기·폴링·하트비트를 관리하지 않아도 되어 사용자 개입이 즉시 가능하고, 모델 호출 사이에 더 많은 유용한 도구 작업을 배치할 수 있습니다. 그 결과 실제 워크로드와 에이전트 벤치마크에서 Codex 대비 최대 40%, Pi 대비 최대 20%의 비용 절감을 달성했습니다.

번역된 본문

AI 에이전트의 최고 수준 비용 효율성에 관심이 있다면 함께 일하고 싶습니다. 연락처: contact@unreallabs.ai

에이전트를 실제 환경에 배포하면서, 우리는 에이전트가 사용자에게 빠르게 응답하고 실행 비용이 효율적이기를 원했습니다. 에이전트가 도구 호출을 관리하는 데 많은 시간과 토큰을 소비한다는 점을 알게 되었고, 이것이 모델의 도구 관리 오버헤드를 줄이는 하네스(harness)를 갖춘 '언리얼 에이전트(Unreal Agent)'를 만들게 된 동기입니다.

언리얼 에이전트 하네스는 도구 호출을 완전히 비동기적인 방식으로 관리하여, 기반 모델이 도구에 대한 대기, 폴링, 하트비트를 관리해야 하는 부담을 덜어줍니다. 이 접근 방식은 두 가지 큰 이점을 가져옵니다. 첫째, 도구 호출이 완료되기를 기다릴 필요 없이 사용자가 항상 에이전트를 조종할 수 있습니다. 둘째, 모델 호출 사이에 더 유용한 도구 호출 작업을 예약할 수 있어 최고 수준의 비용 효율성을 실현합니다. 현재 버전은 실제 워크로드와 에이전트 벤치마크에서 Codex 대비 최대 40%, Pi 대비 최대 20%의 비용 절감을 달성했습니다. 우리는 하네스 설계 자체가 하나의 연구 분야이며, 아직 연구하고 구현해야 할 유망한 아이디어가 많다고 믿습니다.

1. 동기와 아키텍처

에이전트 중심 제품을 만들려고 하면, 구현의 확실한 지름길이 없다는 것을 금방 깨닫게 됩니다. 유명 벤더들은 각각 다른 트레이드오프를 가진 서로 다른 SDK를 제공하는데, 이러한 트레이드오프는 즉시 드러나지 않을 수 있습니다. Unreal Labs에서는 여러 에이전트 제품을 만들면서 인기 있는 SDK들에 대해 몇 가지를 배웠습니다.

예를 들어, Claude의 Agent SDK 같은 CLI 지향 SDK는 로컬 세션, 서브프로세스, 리소스 제한에 대한 가정을 담고 있어 프로덕션 환경에 그대로 적용하기 어렵습니다. 완료, 취소, 백그라운드 작업을 안정적으로 처리하려면 자체 수명주기 관리를 구축해야 하는 경우가 많습니다. 다른 공급자를 지원하면 호환성 작업이 추가됩니다. API 모드를 전환하면 도구나 컴팩션이 깨질 수 있고, SDK 업그레이드가 메시지 형식을 변경해 통합을 다시 작성해야 할 수 있습니다. 무거운 의존성 트리는 이미 직접 이해하고 패치해야 하는 런타임에 유지보수 및 공급망 위험을 더합니다.

하네스 훅과 전문 도구에 의존하는 보안 및 승인은 우리 경험상 유지보수가 더 많이 필요하고, 하네스 외부의 결정론적 환경 또는 샌드박스 제약(허용/비허용 호스트, 세분화된 액세스 토큰, 승인 게이트가 있는 프록시)보다 견고성이 떨어지는 경향이 있습니다.

이러한 기술적 동기와 함께, 우리는 사용자의 조종 메시지를 지연 없이 항상 수용하고, 모델에게 추가적인 인지 부담 없이 이기종(heterogeneous) 도구 호출을 처리할 수 있는 하네스를 만들고자 했습니다. 예를 들어, 에이전트가 몇 분이 걸릴 수 있는 개발 환경 설정을 시작하면서 동시에 코드베이스를 탐색하고 웹을 검색할 수 있고, 이 모든 것이 추가 토큰 비용 없이 이루어지기를 원했습니다.

언리얼 에이전트가 도구 호출을 발행할 때마다, 우리는 해당 도구가 '진행 중(in-progress)' 상태로 반환되었다는 이벤트 로그 기록을 즉시 추가하고, 실행은 백그라운드에서 계속합니다. 도구가 실제로 완료되면 세션 로그에 결과를 추가하고 LLM을 호출합니다. 캐시를 깨뜨리지 않고 이것을 작동시키는 것 자체가 흥미로운 엔지니어링 과제였습니다.

2. 애니메이션 참조

3. 비용 효율성

표면적으로 언리얼 에이전트는 더 적은 모델 턴과 더 적은 입력 토큰으로 동일한 결과를 달성합니다. 우리는 비용 절감을 두 가지 요인에 기인합니다:

  1. 최소한의 하네스 풋프린트와 도구 출력 사용의 신중한 엔지니어링. 언리얼 에이전트는 간단한 프롬프트, 토큰 최적화된 도구 결과, 그리고 서브 에이전트나 워크플로가 없습니다.

  2. 모델 턴당 더 많은 도구 작업. 언리얼 에이전트는 LLM에게 명확하게 설명되는 간단한 비동기 도구 호출 모델을 갖추고 있습니다. 이를 통해 폴링이나 대기에 토큰을 낭비하지 않으면서 모델 턴당 더 많은 무거운 도구 호출을 발행할 수 있습니다.

벤치마크

우리는 언리얼 에이전트를 실제 프로덕션 워크플로를 제공하기 위해 만들었지만, 벤치마크에서도 좋은 성적을 보입니다.

원문 보기
원문 보기 (영어)
If you’re interested in frontier cost-efficiency for your AI agents, we’d love to work together! Get in touch: contact@unreallabs.ai . While deploying agents in the wild, we wanted them to respond to users quickly and be cost-effective to run. We’ve noticed that agents spend a lot of time and tokens managing tool calls, which motivated us to build Unreal Agent with a harness that would reduce the model’s tool-management overhead. The Unreal Agent harness manages tool calls in a completely asynchronous way, relieving the underlying model of the need to manage waits, polls, and heartbeats for tools. This approach drives two major benefits. First, it always allows users to steer the agent without the need to wait for tool calls to finish. Second, it allows the agent to schedule more useful tool call work between model calls, driving frontier cost efficiency. The current version achieves up to 40% cost savings compared to Codex and up to 20% compared to Pi in real workloads and on agentic benchmarks, which we share here. We believe harness design is a research area in its own right, with many promising ideas still to be researched and implemented. 1 # Motivation and Architecture If you try to build an agent-first product, you’ll quickly realize that there’s no golden path for implementing one. Big-brand vendors offer different SDKs to build agents, each with a different set of trade-offs that might not be immediately apparent. At Unreal Labs, we have built a number of agentic products and learned a few things about popular SDKs along the way. For example, CLI-oriented SDKs such as Claude’s Agent SDK carry assumptions about local sessions, subprocesses, and resource limits that don’t translate neatly into production use. Handling completion, cancellation, and background tasks reliably often means building your own lifecycle management around them. Supporting other providers adds compatibility work: switching API modes can break tools or compaction, while SDK upgrades can change message formats and force integration rewrites. Heavy dependency trees add maintenance and supply-chain risk to a runtime we already need to understand and patch ourselves. Security and approvals that rely on harness hooks and specialized tools, in our experience, tend to require more maintenance and be less robust than deterministic environment or sandbox constraints, outside the harness: allowed/disallowed hosts, granular access tokens, proxies with approval gates. Along with these technical motivations, we also wanted to build a harness that could always accept user steering messages without delay and juggle heterogeneous tool calls without extra cognitive load for the model. For example, we wanted the agent to be able to kick off a dev environment setup that might take minutes, while exploring the codebase and searching the web in parallel, all without extra token tax. Every time Unreal Agent issues a tool call, we immediately append an event-log record that the tool has returned in the “in-progress” state, while continuing its execution in the background. Once a tool actually finishes, we append the result into the session log and call an LLM. Making this work without breaking cache was an interesting engineering challenge in itself. 2 Watch the animation. # Cost Efficiency On the surface, Unreal Agent achieves the same outcomes with fewer model turns and fewer input tokens. We attribute cost savings to two factors: Minimal harness footprint and careful engineering of tool output usage. Unreal Agent has simple prompts, token-optimized tool results, and no sub-agents or workflows. 3 More tool work per model turn. Unreal Agent has a straightforward asynchronous tool-calling model that is clearly explained to an LLM. This allows it to issue more heavy tool calls per model turn without wasting tokens on polling or waiting for them. # Benchmarks We’ve built Unreal Agent to deliver real production workflows for us, but it looks good in the benchmarks too. We tested it with GPT-6 Astra xhigh and compared it with Codex and Pi. Here are some of the results. There are marginal differences in pass rate, which we attribute to benchmark variance. # Terminal-Bench 4.0 GPT-6 Astra · xhigh. Codex (lb) is the leaderboard baseline; Unreal Agent and Pi runs are linked below. Agent Rate Total $ In/trial Out/trial Turns Tools Harbor unreal-agent 57.9% 1428 1.73M 32k 28 37 27133053 Codex (leaderboard) 57.9% 2350 — — — — — Pi 55.0% 1827 2.83M 35k 44 57 6ccd097a # SWE-Atlas Codebase QnA Agent Rate Total $ In/trial Out/trial Turns Tools Harbor unreal-agent 65.8% 936 898k 15k 16 27 3d2fa057 Codex 63.3% 1303 1.69M 17k 22 21 11a440fb Pi 64.0% 1033 1.29M 16k 24 60 da4ac972 # DeepSWE 1.1 Agent Rate Total $ In/trial Out/trial Turns Tools Harbor unreal-agent 72.4% 1367 1.60M 28k 26 38 2311ca63 Codex 69.0% 1633 2.19M 30k 30 29 e20ecafd Pi 69.6% 1584 2.21M 30k 40 75 cd7d8de6 # Agents’ Last Exam · ALE-CLI Full pass rates and mean scores are listed below. These runs are not on Harbor. Agent Full pass Mean score Total $ In/task Out/task Turns Tools unreal-agent 30.0% 59.7 217 0.76M 18k 18 23 Codex 29.0% 58.1 292 1.59M 15k — 21 Pi 29.0% 59.2 262 1.19M 19k 27 37 We run mostly coding benchmarks because they are available on Harbor, which makes reproduction and verification easier, but the harness is domain-agnostic. # Getting started with Unreal Agent The Unreal Agent SDK currently offers: Go library that you can integrate directly into your codebase Runner executable similar to claude -p / codex exec Benchmark runner compatible with Harbor Check out our github repo if you want to try it for yourself # References [1] Melissa Z. Pan, Shuo Yang, Negar Arabzadeh, Wei-Lin Chiang, Ion Stoica, and Matei Zaharia. “ HarnessTax: How Much Does Harness Matter for Coding Agents? ” 2026. ↩ [2] The use of two tool-call result items (one in progress, one final) in a single context is underspecified in the Responses API documentation. During testing, we encountered rejections with some models on some inference providers (not OpenAI), and the function_call_output status field seemed to have no impact in those cases. Our tests showed that models can understand the progression from a running update to a final result when the conversation format is accepted. We believe this pattern should be explicitly supported by the Responses API and consistently supported across inference providers. ↩ [3] Diogo. “ (KV) Cache Rules Everything Around Me. ” Complete Skeptic, September 9, 2026. ↩