코드를 에이전트 하네스로 활용하기 : 실행, 검증, 상태 유지가 가능한 에이전트 시스템으로의 발전
이번에 나온 Harness 관련 이 paper가 Harness Engineering의 바이블이 될 것 같다는 다른 사람의 게시글을 읽고, 내일 하네스 엔지니어 관련 세미나 가기 전에 하네스 엔지니어링에 대해서 알아 보고 가기 위해서 해당 papper를 읽으면서 정리한다. Harness engineering에 대해서 확실하게 개념이 잡힌 상태가 아니라서, 꼼꼼하게 각 섹션을 읽으면서 이해가 안되는 부분이나 학습한 내용을 추가로 작성할 것이다.
최근 거대 언어모델(LLM)은 코드 이해 및 생성에서 경쟁 프로그래밍부터 저장소(repository) 수준의 소프트웨어 엔지니어링에 이르기까지 코드를 이해하고 생성하는 데 강력한 능력을 보여주었다. 새롭게 부상하는 에이전트 시스템에서 코드는 더 이상 단순한 '최종 출력물'에 그치지 않는다. 코드는 에이전트의 추론(reasoning), 행동(acting), 환경 모델링(environment modeling), 그리고 실행 기반 검증(execution-based verification을 위한 운영 기반(Operational Substrate) 역할을 점점 더 많이 수행한다.
이러한 패러다임의 전환을 '에이전트 하네스(Agent Harnesses)'의 관점에서 바라보며, 코드가 에이전트 인프라의 기반이 된다는 통합적 시각인 '에이전트 하네스로서의 코드(Code as Agent Harness)' 제안한다.
이러한 관점을 체계적으로 연구하기 위해 본 논문은 세 가지 상호 연결된 레이어로 조직화한다.
이 패러다임이 코드 생성이라는 전통적인 영역을 넘어 GUI/OS 자동화, 로봇 공학(Embodied Agents), 과학적 발견(Scientific Discovery), 개인화 및 추천(Personalization and recommendation), DevOps, 엔터프라이즈 워크플로우 등 다양한 응용 분야에서 code as agent harness의 대표적 방법론과 실제 적용 사례를 정리한다. 또한 최종 작업 성공만을 넘어선 평가(evaluation), 불완전한 피드백 하에서의 검증, 하네스 진화에서의 회귀(Regression) 방지, 안전이 중요한 행동에 대한 인간 감독(Human-centri Alignment), 멀티모달 환경으로서의 확장 등 하네스 엔지니어링의 주요 과제도 제시한다. 에이전트형 AI의 하네스로서 코드를 중심에 놓으면서 이 논문은 실행가능하고(executable), 검증가능하며(verifiable), 상태를 유지하는(stateful) AI 에이전트 시스템으로 나아가기 위한 통합적 로드맵을 제공한다.

그림 1. code as agent harness의 분류 체계(taxonomy)
LLM 에이전트는 추론하고, 행동하며, 환경을 모델링한다. 프로그램 보조 추론(program-aided reasoning) 방식은 중간 계산(intermediate computation)을 실행 가능한 코드로 외부화하며, 로봇 및 embodied agent는 생성된 프로그램을 물리적 혹은 시뮬레이션 환경과 상호작용하기 위한 실행 가능한 정책(executable policy)로 사용한다. 또한 소프트웨어 엔지니어링 및 인터랙티브 환경에서는 코드베이스(codebase), 실행 추적(execution trace), 테스트(test), 런타임 피드백(runtime feedback)이 환경 상태와 동역학을 표현하는 구조화된 표현(structured representation)으로 사용되며, 에이전트는 이 안에서 계획하고 행동하며 자신의 행동을 수정한다. 이러한 발전을 종합하면 보다 넓은 관점이 나타난다. 코드는 단지 LLM을 생성하는 결과물이 아니라 에이전트가 추론하고, 행동하고, 피드백을 관찰하고 진행 상황을 검증하는 실행 가능(executable), 검사가 가능(inspectable), 상태 유지(stateful)가 가능한 매개체이다. 우리는 이 관점을 code as agent harness라고 부른다.
최근의 agent harneess 관련 논이는 이러한 변화를 이해하기 위한 유용한 시스템 수준의 관점을 제공한다. agent harness란 API, 샌드박스(sandbox), 메모리(memory), validator, 권한 경계(permission boundary), 실행 루프(execution loop), 피드백 채널(feedback chnnel) 등으로 LLM을 둘러싼 소프트웨어 계층을 의미하며, 이를 통해 stateless 모델을 장기 작업 실행이 가능한 기능적 에이전트(functional agent)로 전환한다. 이 관점엑서 자율성(autonomy) 병목은 단순히 기반 모델(base model)의 추론 능력만이 아니라, 모델 출력을 장기적 행동(long-horizon actions)과 지속 상태(persistent states)에 연결하는 시스템의 신뢰성에도 있다.
이러한 넓은 하네스 관점에서 코드의 역할을 명확히 하기 위해, 장기 실행 에이전트 시스템의 세 가지 결합된 요소를 구분한다.
(1) 모델 내부 능력(model-internal capabilities)
(2) 시스템이 제공하는 하니스 인프라(system-provided harness infrastructure)
(3) 에이전트가 생성하는 코드 아티팩트(agent-initiated code artifacts)
모델 내부 능력은 모델의 추론, 지각(perception), 계획(planning), 시뮬레이션(simulation), 평가(evaluation) 능력을 의미한다. 시스템 제공 하니스 인프라는 미리 정의된 도구, API, 샌드박스, 메모리 시스템, validator, 권한 경계, telemetry, 워크플로우 등을 포함하며, 모델 출력과 외부 행동 및 피드백을 연결한다. 이는 하네스 엔지니어링의 핵심 연구 대상이다.
상대적으로 덜 탐구된 영역인 에이전트 생성 코드 아티팩트(agent-initiated code artifacts)는 에이전트가 작업 실행 루프(task execution loop) 안에서 생성(create), 실행(execute), 관찰(observe), 수정(revise), 저장(persist), 공유(share)하는 상호작용적 코드 객체(interactive code object)를 의미한다. 실행 피드백을 통해 이러한 아티팩트는 에이전트가 추론하고, 행동하고, 진행 상황을 검증하고, 상태를 저장하며, 다른 에이전트와 협력하는 데 도움을 준다. 예시로는 regression test, 임시 도구(temporary tools), DSL 프로그램, 실행 가능한 워크플로우(executable workflows), 재사용 가능한 스킬(reusable skills), 중간 프로그램 상태(intermediate program states) 등이 있다. Anthropic의 Claude Code, OpenAI의 Codex, LangChain의 LangChain, 그리고 다양한 엔터프라이즈 에이전트 플랫폼은 이러한 요소들이 함께 장기 실행 에이전트 시스템의 적응성을 가능하게 함을 보여준다.
이러한 구분을 바탕으로 우리는 에이전트 시스템에서 코드의 역할을 재조명한다. 기존 서베이들은 일반적으로 코드를 LLM이 생성하는 최종 산출물(end product)로만 다루는 경향이 있다. 반면 본 논문은 에이전트 생성 코드 아티팩트(agent-initiated code artifacts)에 초점을 맞추며, 모델 능력이 하네스 인프라와의 상호작용을 통해 이를 어떻게 구성하고 진화시키는지를 탐구한다. 여기서 코드는 인터페이스, 에이전트 능력, 다중 에이전트 협업을 조직하는 중심 역할을 한다. 다양한 에이전트 시스템에서 코드는 단지 해결책을 생성하는 데 그치지 않고, 추론을 실행하고(reasoning execution), 행동을 grounding하며, 상태를 유지하고, 피드백을 드러내는 데 사용된다. 우리는 이러한 관점을 code as agent harness라고 부른다. 즉, 코드는 에이전트가 추론하고 행동하며 적응하는 실행 가능하고 검사가 가능한 매개체이다. 이는 “정확한 프로그램 생성”에서 “코드가 어떻게 신뢰 가능한 closed-loop 에이전트 행동을 지원하는가”로 연구 범위를 확장한다.
code as agent harness를 체계적으로 설명하기 위해, 본 서베이는 그림 1과 같이 세 가지 연결된 계층으로 구성된다. 이 구조는 코드가 에이전트 루프 내부에서 운영 매개체(operational medium)가 되는 과정을 따른다:
첫째, Harness Interface: Code for Reasoning, Acting, and Environment Modeling(§2)은 코드가 모델과 작업 환경 사이의 기본 인터페이스를 어떻게 형성하는지 연구한다. 이 계층에서 코드는 모델 출력을 실행 가능하고 검사 가능한 구조로 변환하는 매개체이다. 우리는 코드 기반 추론(code for reasoning)을 검토하며, 여기서 프로그램은 중간 계산을 외부화하고 인터프리터(interpreter), symbolic solver, 실행 추적, process reward 등을 통해 추론을 검증하고 개선할 수 있게 한다. 이어서 코드 기반 행동(code for acting)을 살펴보는데, 생성된 프로그램은 embodied, GUI, 소프트웨어 환경에서 정책(policy), tool call, behavior tree, 재사용 가능한 스킬로 사용된다. 마지막으로 코드 기반 환경 모델링(code for environment modeling)을 다루며, 여기서 프로그램 상태, 저장소, 실행 추적, 시뮬레이터, 테스트가 상태(state), 동역학(dynamics), 피드백 신호(feedback signal)를 표현한다. 이 계층은 하네스 인터페이스의 핵심을 형성한다. 즉, 코드는 에이전트가 추론을 실행 가능하게 만들고, 행동을 프로그래밍 가능하게 만들며, 환경 상태를 검사 가능하게 만드는 방식이다.
이 인터페이스를 기반으로, Harness Mechanisms: Planning, Memory, Tool Use, Control, and Optimization (§3)은 코드 기반 에이전트가 단일 생성(single generation step)을 넘어 어떻게 신뢰성을 유지하는지를 연구한다. 코드가 에이전트 루프 내부에 들어오면, 하네스는 다음에 무엇을 실행할지 결정하고, 유용한 상태를 유지하며, 적절한 도구를 노출하고, 실패를 수정 행동(corrective action)으로 변환해야 한다. 따라서 우리는 다음을 검토한다.
이 계층은 §2의 인터페이스를 실제 운영 하네스로 전환한다. 계획은 실행 경로(execution trajectory)를 제어하고, 메모리는 상태를 유지하며, 도구는 행동 공간(action space)을 확장하고, 피드백 기반 적응(feedback-driven adaptation)은 실패와 수정 사이의 루프를 닫는다.
본 연구는 code as agent harness를 연구한다. 이는 추론, 행동, 상태, 피드백, 검증이 실행 가능하고 검사 가능하며 상태를 유지하는 프로그램을 중심으로 조직된 코드 중심(code-centered) 에이전트 시스템을 의미한다. 여기서는 2026년까지의 문헌을 다음 세 계층으로 정리한다.
마지막으로, Scaling the Harness: Multi-Agent Orchestration over Code (§4)는 하니스를 단일 에이전트에서 협업 생태계(collaborative ecosystem)로 확장한다. 여러 에이전트가 코드 위에서 동작할 때, 하네스는 단순히 개별 추론과 실행만 지원하는 것이 아니라 역할 조정(coordination), 중간 아티팩트 공유, 공통 상태 유지, 집단적 진행 검증도 수행해야 한다. 우리는 manager, planner, coder, reviewer, tester와 같은 역할(agent role), 프로그래밍(programming), 수정(repair), 토론(debate), red-teaming, 적대적 상호작용(adversarial interaction) 등의 협업 방식(collaboration mode), 중앙집중형(coordination), 분산형(distributed), 스트리밍(streaming) 협업 등 다양한 워크플로우 토폴로지(workflow topology)를 중심으로 다중 에이전트 코드 중심 시스템을 검토한다. 이 계층은 코드가 orchestration된 자율성(orchestrated autonomy)을 위한 공유 하네스(shared harness)가 되는 방식을 보여준다. 저장소(repository), 테스트(test), 실행 추적(trace), 구조화된 아티팩트는 에이전트들이 서로 협업하고, 검토하고, 개선하는 공통 작업 공간(common workspace)을 제공한다.
분류 체계(taxonomy)를 넘어, 우리는 에이전트 생성 코드 상호작용(agent-initiated code interaction)이 다섯 가지 응용 분야에서 어떻게 나타나는지도 분석한다.
또한 우리는 하네스 엔지니어링의 주요 과제도 제시한다. 여기에는 최종 작업 성공을 넘어선 평가(evaluation), 불완전한 피드백 환경에서의 검증, 회귀 없는 하네스 개선(regression-free harness improvement), 여러 에이전트 간 일관된 공유 상태 유지, 인간 감독(human oversight), 멀티모달 환경 확장 등이 포함된다. 본 서베이는 코드를 단순히 에이전트가 생성하는 결과물이 아니라, 에이전트가 실행하고(adapt), 적응하며, 신뢰 가능한 행동을 협업(coordination)하는 런타임 매개체(runtime medium)로 연구하기 위한 로드맵을 제공한다.
개념적 프레이밍(conceptual framing): 우리는 code as agent harness를 공식화하며, 코드를 단순한 생성 결과물이 아니라 실행 가능하고, 검증 가능하며, 상태를 유지하는 AI 에이전트 시스템의 운영 substrate로 재정의한다.
분류 체계 및 종합(taxonomy and synthesis): 우리는 code as agent harness를 세 가지 연결 계층(harness interface, harness mechanisms, scaling harness)으로 구성하고 대표적 방법론을 종합한다.
응용 및 향후 연구 방향(applications and future agenda): 우리는 taxonomy를 실제 응용 분야와 연결하고, 평가(evaluation), 검증(verification), 안전성(safety), 협업(coordination) 분야의 핵심 과제를 제시한다.