Code as Agent Harness: 코드를 에이전트 실행 기반으로 보는 새로운 관점 (서베이)
목차
개요
이 글은 2026년 5월 공개된 서베이 논문 “Code as Agent Harness: Toward Executable, Verifiable, and Stateful Agent Systems”를 정리한 것이다. 저자는 University of Illinois Urbana-Champaign, Meta, Stanford University 등의 연구진(Xuying Ning, Katherine Tieu, Dongqi Fu 등, 교신저자 Hanghang Tong, Jingrui He)으로 구성되어 있다.
이 논문의 핵심 주장은 코드를 단순히 “생성되는 산출물”이 아니라 “에이전트가 추론하고 행동하며 적응하는 실행 기반(operational substrate)”으로 재정의해야 한다는 것이다. 즉 코드는 LLM과 작업 환경을 잇는 매개체이며, 실행 가능하고(executable) 검사 가능하며(inspectable) 상태를 유지하는(stateful) 시스템의 토대다. 이 관점은 “코드 생성”에서 “운영 인프라로서의 코드”로 패러다임을 옮긴다.
핵심 개념: 코드를 하네스로 본다는 것
논문은 장기 실행 에이전트 시스템을 세 가지 결합된 요소로 분해한다. 이 구분이 전체 분류 체계의 출발점이다.
세 가지 요소의 구분
| 요소 | 정의 |
|---|---|
| 모델 내부 능력 | 기반 언어 모델 자체가 가진 추론, 인지, 계획, 시뮬레이션, 평가 능력 |
| 시스템 제공 하네스 인프라 | 사전 정의된 도구, API, 샌드박스, 메모리, 검증기, 권한 경계, 텔레메트리, 워크플로우 |
| 에이전트가 생성한 코드 아티팩트 | 에이전트가 작업 중 만들고 실행하고 관찰하고 수정하고 보존하며 공유하는 상호작용형 코드 객체 |
서베이는 이 중 세 번째, 즉 에이전트가 스스로 만들어내는 코드 아티팩트에 초점을 맞춘다. 여기에는 회귀 테스트, 임시 도구, DSL, 실행 가능한 워크플로우, 재사용 스킬, 중간 프로그램 상태 등이 포함된다. 중요한 점은 코드를 “넓게, 그러나 은유적이지 않게” 사용한다는 것이다. 프로그램, 스크립트, 형식 명세, 증명 스크립트, API 스키마, 테스트, 저장소, 시뮬레이터, 설정 파일, 실행 트레이스는 코드에 포함되지만, 원시 지각이나 물리적 상태, 인간의 의도, 모델 내부의 잠재 추론은 제외된다.
코드가 갖춰야 할 세 성질
논문이 강조하는 코드의 세 가지 성질은 다음과 같다.
| 성질 | 의미 |
|---|---|
| 실행 가능성(Executable) | 외부 런타임을 통해 형식적으로 검증 가능한 결과를 만든다 |
| 검사 가능성(Inspectable) | 중간 연산을 하네스가 읽고 저장하고 활용할 수 있는 구조화된 트레이스로 노출한다 |
| 상태 유지(Stateful) | 작업 진행 상태를 단계 간에 지속되고 수정 가능한 형태로 표현한다 |
세 계층 분류 체계
서베이는 코드 기반 하네스를 세 개의 상호 연결된 계층으로 조직한다. 인터페이스, 메커니즘, 확장의 순서다.
Layer 1: 하네스 인터페이스
코드가 추론, 행동, 환경 모델링이라는 세 가지 인터페이스로 기능하는 방식을 다룬다.
추론을 위한 코드(Code for Reasoning)는 다시 세 갈래로 나뉜다. 첫째, 프로그램 위임 추론은 연산을 실행 가능한 프로그램으로 외부화한다(PAL, PoT, Chain of Code, CodeAdapt, CodeI/O). 둘째, 형식 검증과 기호 추론은 Lean, Isabelle, Coq 같은 증명 보조기를 기계 검증 가능한 추론 인터페이스로 사용한다(ReProver, DeepSeek-Prover-V2, CodeSteer, SATLM). 셋째, 반복적 코드 기반 추론은 생성과 실행, 피드백 사이의 폐루프를 통해 실행 결과를 최적화 신호로 삼는다(NExT, CodePRM, RLEF, EG-CFG, R1-Code-Interpreter).
행동을 위한 코드(Code for Acting)도 세 갈래다. 근거 기반 스킬 선택은 언어 의도를 재사용 가능한 스킬 인터페이스로 매핑한다(SayCan, KnowNo, BOSS). 프로그래밍형 정책 생성은 코드 자체를 모델과 환경 사이의 제어 인터페이스로 삼는다(CaP, RoboCodeX, Code-BT, GenSwarm). 평생 학습형 코드 에이전트는 능력을 장기적으로 축적·진화시킨다(Voyager, LYRA, ViReSkill, UI-Voyager).
환경 모델링을 위한 코드(Code for Environment Modeling)는 구조화된 세계 표현(DOM 트리, API 스키마, 작업 그래프), 실행 트레이스 기반 상태 모델링, 코드 기반 평가 환경(SWE-bench, AgentBench, WebArena), 검증 가능한 환경 구성을 포함한다.
Layer 2: 하네스 메커니즘
계획, 메모리, 도구 사용, 제어, 적응적 최적화를 다룬다.
계획은 선형 분해, 구조 기반(코드 AST나 워크플로우 DAG에 제약), 탐색 기반(트리·그래프 탐색), 오케스트레이션 기반의 네 유형으로 구분된다(CodePlan, CodeTree, MapCoder).
메모리는 여섯 종류로 정리된다.
| 메모리 유형 | 역할 |
|---|---|
| 작업 메모리 | 현재 작업 상태, 최근 실행 이력, 활성 변수 |
| 의미 메모리 | 코드 구조, API 시그니처, 문서에 대한 지식 검색 |
| 경험 메모리 | 과거 상호작용, 실패, 성공 패턴의 트레이스 |
| 장기 메모리 | 스킬, 유틸리티, 학습된 수정 사항의 영속 저장 |
| 멀티 에이전트 메모리 | 공유 실행 상태, 협업 트레이스, 조정 이력 |
| 컨텍스트 압축 | 장기 실행을 위한 요약과 상태 오프로딩 |
도구 사용은 함수 지향, 환경 상호작용, 검증 주도, 워크플로우 오케스트레이션으로 나뉜다. 적응적 최적화에서는 텔레메트리를 최적화 기반으로 삼아, 진화 에이전트(evolution agent)가 하네스 자체를 개선하되 회귀를 감지하는 통제된 변형(governed mutation)을 수행한다.
Layer 3: 하네스 확장(멀티 에이전트)
공유 코드를 통해 에이전트를 다중으로 확장하는 방식을 다룬다.
기능적 역할 분담으로는 프로그램 합성 에이전트, 프로그램 이해 에이전트, 검증 에이전트, 실행 에이전트, 계획 에이전트가 제시된다. 상호작용 모드는 공유 프로그램 상태에 근거한 협업 합성, 비평·수정, 적대적 검증, 추론 토론 등으로 나뉜다. 워크플로우 토폴로지는 매니저-코디네이터, 어셈블리 라인, 계층형 같은 사전 정의된 휴리스틱과, 작업 진행에 따라 동적으로 재구성되는 목표 주도형으로 구분된다.
대표적인 멀티 에이전트 시스템으로 AutoGen, MetaGPT, SelfCollaboration이 인용되며, Claude Code는 실제 구현 예시 시스템으로 언급된다.
Plan-Execute-Verify 루프
논문이 코드 기반 하네스의 핵심 운영 메커니즘으로 제시하는 것이 Plan-Execute-Verify(PEV) 루프다. 세 단계가 순환하며 작업을 수렴시킨다.
계획(Planning)은 일종의 계약 형성이다. 에이전트가 실행 전에 의도한 동작을 명시적으로 규정하며, 사전 조건(precondition), 사후 조건(postcondition), 불변식(invariant), 자원 한계를 계약으로 정한다.
실행(Execution)은 권한 경계가 있는 샌드박스에서 이뤄진다. 모든 상태 전이는 타임스탬프와 함께 로깅되며, 위반이 감지되면 롤백할 수 있다. 실행 트레이스는 디버깅과 최적화를 위해 수집된다.
검증(Verification)은 결정적(deterministic) 신호를 통해 이뤄진다. 컴파일러·정적 분석 피드백, 테스트 통과·실패, 실행 트레이스, 형식 검증(SMT 솔버, 증명 검사기), 안전 제약, 성능 지표, 환경 피드백이 결합된다. 실패가 감지되면 진단 분석 후 직접 코드 수정, 상태 롤백, 재계획, 제약 완화 같은 표적 수정 전략을 적용하고, 실패 트레이스와 성공한 수정을 하네스 경험으로 저장한다. 이 루프는 검증이 성공하거나 자원 한계에 도달할 때까지 반복된다.
응용 도메인
서베이는 코드 기반 하네스가 적용되는 다섯 가지 도메인을 구체적 예시와 함께 제시한다.
| 도메인 | 핵심 내용 |
|---|---|
| 코드 어시스턴트 | 저장소 전체를 작업 공간으로 삼고 테스트·실행 피드백으로 개발을 유도(Claude Code, OpenHands, SWE-bench 에이전트) |
| GUI/OS 자동화 | DOM 트리와 접근성 API를 구조화된 상태로 보고 부분 관측 프로그램 세계로 다룸(WebArena 등) |
| 임바디드 에이전트 | 생성된 프로그램이 로봇 동작을 직접 지정, 재사용 스킬을 임바디드 메모리로 축적(CaP, RoboCodeX, Voyager) |
| 과학적 발견 | 가설 코드, 실험 프로토콜, 분석 파이프라인, 논문 작성을 통합한 실행 피드백 루프(ChemCrow, AI Scientist) |
| 에이전트 개인화 | 사용자 선호를 편집 가능한 코드(규칙·가중치·제약)로 표현하고 피드백을 정책 패치로 반영 |
예를 들어 GUI 자동화에서 에이전트는 접근성 API로 DOM 구조를 관찰하고, 탐색·추출·처리 코드를 생성한 뒤, 스크린샷 차이나 상태 변화 같은 실행 피드백을 보고 선택자를 조정하거나 네트워크 오류 시 재시도한다.
한계와 열린 과제
서베이는 일곱 가지 주요 과제 범주를 제시한다.
| 과제 | 핵심 문제 |
|---|---|
| 하네스 수준 평가와 오라클 적정성 | 최종 성공률만 보고 중간 추론 충실도, 가독성, 효율, 실패·복구 행동을 놓침 |
| 실행 피드백을 넘어선 의미 검증 | 테스트는 통과해도 의도를 위반하는 거짓 양성, 미실행 경로의 미검증 문제 |
| 회귀 없는 자기 진화 하네스 | 적응 과정에서 기존 기능 손상, 보상 신호의 의도치 않은 부작용·게이밍 |
| 공유 상태의 트랜잭션 처리와 의미 충돌 해결 | 동시 편집의 의미적 머지 충돌, 상충하는 최적화 목표 조정 |
| 인간 개입 안전성과 책임 소재 | 비가역적 행동에 대한 개입 지점 설계, 다중 에이전트 실패의 책임 귀속 |
| 멀티모달 코드-하네스 시스템 | 비전·오디오 등 텍스트를 넘어선 지각을 코드 중심 하네스에 표현 |
| 하네스 공학의 과학화 | 코드 기반 인터페이스가 언제 우월한지에 대한 통합 이론 부재 |
이 밖에도 암묵적 하네스 상태가 멀티 에이전트 조정 효율을 제약한다는 점, 에이전트가 전문화될수록 컨텍스트 관리가 주요 비용이 된다는 점, 수렴 메커니즘(정확성·보안·성능·점수·합의·암묵)을 언제 어떻게 선택할지가 열린 질문으로 남는다.
결론
이 서베이는 코드를 생성 산출물이 아니라 AI 에이전트 시스템의 운영 기반으로 재정의한다. 하네스 인터페이스(추론·행동·환경 모델링), 하네스 메커니즘(계획·메모리·도구·제어·최적화), 하네스 확장(멀티 에이전트 조정)이라는 세 계층을 통해, 코드가 어떻게 실행 가능하고 검증 가능하며 상태를 유지하는 자율성을 가능하게 하는지에 대한 통합된 어휘를 제공한다. 이 프레임워크는 코딩, 로보틱스, GUI 자동화, 과학, 개인화 등 다양한 도메인에 걸쳐 적용되며, 평가·검증·안전·멀티 에이전트 조정에서 시급한 연구 과제를 함께 제시한다.