Unreal Labs, 툴 호출 비동기화한 에이전트 하네스 'Unreal Agent' 공개
Unreal Labs가 AI 에이전트용 실행 하네스 'Unreal Agent'를 공개했다. 핵심은 툴 호출을 완전한 비동기 방식으로 관리해, 기반 모델이 툴의 대기·폴링·하트비트를 직접 신경 쓰지 않도록 만든 것이다. 에이전트가 툴을 다루느라 쏟는 시간과 토큰을 줄이는 것이 설계 목표였다.
동작 방식은 이렇다. 에이전트가 툴 호출을 내보내면 곧바로 세션 로그에 해당 툴이 '진행 중(in-progress)' 상태로 돌아왔다는 이벤트 레코드를 덧붙이고, 실제 실행은 백그라운드에서 계속된다. 툴이 실제로 끝나면 그 결과를 세션 로그에 추가한 뒤 LLM을 호출한다. 이 흐름을 프롬프트 캐시를 깨뜨리지 않으면서 구현하는 것 자체가 만만치 않은 엔지니어링 과제였다고 팀은 설명한다.
성과는 수치로 제시됐다. 실무 워크로드와 에이전트 벤치마크에서 Codex와 비교해 최대 40%, Pi와 비교해 최대 20%의 비용 절감을 달성했다는 것이다. GPT-6 Astra xhigh로 테스트했으며, 통과율에서는 큰 차이가 나지 않았는데 이는 벤치마크 분산 때문으로 해석한다. 비교에 쓰인 Codex(lb)는 리더보드 베이스라인이고, Unreal Agent와 Pi 실행 결과는 별도로 공개됐으며 이 실행들은 Harbor 기반이 아니다.
비용 절감의 근거로 두 가지를 든다. 첫째는 하네스 자체의 최소화다. 프롬프트를 단순하게 유지하고 툴 결과를 토큰에 맞게 다듬었으며, 서브에이전트나 별도 워크플로를 두지 않았다. 둘째는 모델 턴당 더 많은 툴 작업을 몰아넣는 것이다. 비동기 툴 호출 모델을 LLM이 이해할 수 있게 명확히 설명해 두었기 때문에, 폴링이나 대기에 토큰을 낭비하지 않고 한 턴에 무거운 툴 호출을 여러 개 던질 수 있다.
이런 설계는 기존 SDK에 대한 문제의식에서 나왔다. Claude의 Agent SDK처럼 CLI 지향으로 만들어진 SDK는 로컬 세션, 서브프로세스, 자원 한계에 대한 전제를 깔고 있어 프로덕션 환경에 그대로 옮기기 어렵다. 완료·취소·백그라운드 작업을 안정적으로 처리하려면 결국 자체 라이프사이클 관리를 덧씌워야 한다. 다른 프로바이더를 지원하는 작업도 부담이다. API 모드를 바꾸면 툴이나 컴팩션이 깨질 수 있고, SDK 업그레이드가 메시지 포맷을 바꾸면서 통합 코드를 다시 짜야 하는 상황이 생긴다. 의존성 트리가 무거우면 이미 직접 이해하고 패치해야 하는 런타임에 유지보수와 공급망 리스크가 더해진다.
보안과 승인 처리에 대해서도 다른 접근을 택했다. 하네스 훅이나 특수 툴에 기대는 방식은 유지보수 부담이 크고 견고하지 않다고 본다. 대신 허용·차단 호스트 목록, 세분화된 액세스 토큰, 승인 게이트를 둔 프록시처럼 하네스 바깥의 결정적 환경·샌드박스 제약으로 통제하는 편이 낫다는 입장이다.
개발자 입장에서 가장 체감이 큰 변화는 사용자 개입 방식이다. 툴 호출이 끝나기를 기다리지 않고도 사용자가 언제든 에이전트에 방향을 제시할 수 있고, 이기종 툴 호출을 모델에 추가 인지 부담 없이 병행시킬 수 있다. 예컨대 몇 분 걸리는 개발 환경 셋업을 띄워 놓은 채로 코드베이스 탐색과 웹 검색을 동시에 돌리는 식이다. 현재 SDK는 코드베이스에 직접 통합하는 Go 라이브러리, claude -p나 codex exec에 대응하는 러너 실행 파일, Harbor와 호환되는 벤치마크 러너를 제공한다.
전제와 한계도 분명히 밝혀 두었다. 벤치마크는 Harbor에서 재현과 검증이 쉬워 대부분 코딩 중심으로 돌렸지만, 하네스 자체는 특정 도메인에 묶여 있지 않다. 또한 하나의 컨텍스트에 툴 호출 결과 항목을 두 개(진행 중, 최종) 넣는 패턴은 Responses API 문서에 명확히 규정되어 있지 않다. 테스트 과정에서 일부 추론 프로바이더(OpenAI는 아님)의 일부 모델이 이를 거부했고, function_call_output의 status 필드가 아무 영향을 주지 않는 경우도 있었다. 대화 포맷이 받아들여지기만 하면 모델이 진행 중 업데이트에서 최종 결과로 이어지는 흐름을 이해한다는 것이 팀의 관찰이며, 이 패턴이 Responses API에서 명시적으로 지원되고 추론 프로바이더 전반에서 일관되게 동작하기를 바란다고 덧붙였다. 하네스 설계 자체가 독립적인 연구 영역이라는 관점도 밝히며, 관련 연구로 HarnessTax(2026)를 인용했다.
관련 글
- AI 코딩 세션을 다른 에이전트로 옮기는 txcript, 대화 중간에 하네스 교체Claude Code에서 시작한 코딩 세션을 Codex나 Cursor로 그대로 이어서 쓸 수 있게 해주는 변환 도구 txcript가 공개됐다. Rust 라이브러리와 CLI, WASM 패키지를 함께 제공하며 메시지·추론·도구 호출 이력을 공통 트랜스크립트 모델로 옮긴다.
- 값싼 모델로 품질 확보 노린 오픈소스 하네스 'CyberNewma' 공개V2EX에 공개된 오픈소스 프로젝트 CyberNewma는 값싼 모델에서 준수한 엔지니어링 품질을 얻는 것을 목표로 하는 코딩 에이전트용 하네스다. 작성자는 ds와 GLM flash 모델로 자체 테스트했지만 벤치마크는 아직 없다고 밝혔다.
- Elastic, AI 에이전트가 Elasticsearch를 스스로 최적화하게 만든 하네스 공개Elastic이 AI 코딩 에이전트가 Elasticsearch 코드베이스의 성능 병목을 스스로 찾아 최적화하도록 돕는 자동화 하네스와 CLI 도구 atune을 공개했다. 마이크로벤치마크와 검증 루프로 측정 신뢰도를 확보한 것이 핵심이다.
- 9개월 침묵 깨고 돌아온 개발자, 로컬 AI 작업대 3종을 오픈소스로 공개중국 개발자 포럼 v2ex에 한 개발자가 로컬 LLM 통합 작업대 OmniStudio, 코딩 에이전트 데스크톱 셸 PeakCode, 오피스 산출물 도구 KylinWork를 MIT 라이선스로 공개했다. 세 프로젝트 모두 로컬 실행을 우선하고 TypeScript·Bun 또는 Electron 기반으로 만들었다.
- AI 코딩 에이전트·칸반·코드 리뷰를 한 창에 묶은 macOS 워크스페이스 'Orchestrator' 베타 공개MIT 라이선스로 공개된 macOS 데스크톱 워크스페이스 Orchestrator가 0.2.0-beta.2 베타를 배포했다. 코딩 에이전트 대화, 저장소 파일 탐색, 칸반 보드, 로컬 코드 리뷰를 한 창에 묶은 것이 특징이다.