Code as Agent Harness: 에이전트 실행 기반으로서의 코드

Code as Agent Harness 관점에서 에이전트 하네스의 실행·검증·상태 관리 구조와 프로덕션 설계 계층을 정리한다.

2026-08-14 · 최초 발행 2026-08-02

2026년 5월 공개된 Xuying Ning 외 41명의 공저 서베이 「Code as Agent Harness」는 코드를 LLM의 목표 산출물에만 머물지 않게 한다. 이 관점에서 코드는 추론과 행동, 환경 모델링, 실행 기반 검증을 연결하는 운영 기반이다. 에이전트가 세계와 상호작용하는 스캐폴드이면서, 에이전트 사이의 통신 프로토콜이고, 진행 상태를 남기는 상태 관리 시스템이기도 하다.

모델 밖에서 에이전트를 작동시키는 하네스

에이전트 하네스는 모델 자체를 제외한 실행 환경 전반을 뜻한다. 에이전트 루프, 도구 정의, 컨텍스트 관리, 시스템 프롬프트, 인터페이스가 여기에 들어간다. 200토큰 시스템 프롬프트와 4개 도구로 구성한 최소 형태도 하네스이며, 서브에이전트·훅·MCP 플러그인·클라우드 스케줄링을 포함한 10,000토큰 오케스트레이션 레이어도 하네스다.

기존에는 코드가 LLM이 만들어야 할 결과물이었다. 에이전틱 시스템에서는 코드가 실행 가능한 작업 흐름을 담고, 실행 결과를 다시 피드백으로 받으며, 세션을 넘어 상태를 이어 간다. 자연어 지시만으로는 드러나지 않던 작업 순서와 제약도 코드 구조 안에서는 추적할 수 있다.

Martin Fowler의 기술 블로그는 하네스를 다음과 같이 정의한다: "하네스는 에이전트의 워크플로우, 제약 조건, 피드백 루프, 툴체인, 생명주기를 정의한다. 에이전트가 지속적으로, 안정적으로, 높은 품질 기준으로 작업할 수 있도록 하는 시스템이다."

프롬프트에서 하네스 설계로 옮겨간 흐름

2022년부터 2026년까지 AI 개발의 관심사는 프롬프트, 컨텍스트, 그리고 그것을 소비하는 런타임으로 이동했다.

(1) 프롬프트 엔지니어링2022-2024(2) 컨텍스트 엔지니어링2025(3) 하네스 엔지니어링2026~모델에 전달하는지시문의 품질이 핵심컨텍스트 윈도우를무엇으로 채우느냐가 핵심컨텍스트를 소비하는전체 시스템 설계가 핵심Code as Agent Harness패러다임실행 가능성Executability검증 가능성Verifiability상태 지속성Statefulness

프롬프트 엔지니어링 시기에는 Few-shot 예시, Chain-of-Thought, 역할 부여처럼 모델에 건네는 지시문의 품질이 핵심으로 여겨졌다. 이후 RAG(Retrieval-Augmented Generation), 동적 컨텍스트 구성, 메모리 관리가 부상하면서 무엇을 컨텍스트 윈도우에 넣을지가 더 중요한 문제로 자리 잡았다.

하네스 엔지니어링은 컨텍스트를 담는 일에서 한 단계 더 나아간다. 모델은 무상태(stateless) 토큰 예측기로서 인지 추론을 제공하고, 하네스는 도구 디스패치(tool dispatch), 컨텍스트 관리, 안전 집행, 세션 지속성을 조율하는 런타임 소프트웨어 인프라를 맡는다.

Epsilla의 기술 블로그에 따르면 기업 AI 프로젝트 실패의 65%는 하네스 결함(Harness Defects), 즉 컨텍스트 드리프트(Context Drift), 스키마 불일치(Schema Misalignment), 상태 저하(State Degradation)에서 기인한다. 원시 추론 능력의 부족만으로 설명되지 않는 문제다.

서베이가 분류한 하네스의 역할

arXiv에 2026년 5월 공개된 「Code as Agent Harness」 논문(arxiv:2605.18747)은 코드 기반 하네스를 세 개의 연결된 계층으로 설명한다. 논문의 기여는 코드가 에이전틱 AI에서 맡는 역할을 분류하고, 이를 하나의 로드맵으로 묶었다는 데 있다.

하네스 인터페이스(Harness Interface)는 에이전트를 추론, 행동, 환경 모델링에 연결한다. 에이전트는 코드를 통해 외부 도구를 호출하고 환경 피드백을 받으며, 계획을 구조화된 형태로 남긴다.

하네스 메커니즘(Harness Mechanisms)은 계획(planning), 메모리(memory), 도구 사용(tool use)으로 장기 실행을 뒷받침한다. 피드백 기반 제어와 최적화도 이 층에서 다뤄지며, 멀티스텝 작업을 신뢰성 있고 적응적으로 수행하게 한다.

하네스 스케일링(Harness Scaling)은 단일 에이전트에서 멀티 에이전트 구성으로 확장되는 지점이다. 공유 코드 아티팩트(shared code artifacts)는 에이전트 간 조율, 검토, 검증을 지원하고, 코드는 서로의 작업을 이해하는 공통 언어가 된다.

논문이 든 적용 영역은 코딩 어시스턴트(coding assistants), GUI/OS 자동화(GUI/OS automation), 구현된 에이전트(embodied agents), 과학적 발견(scientific discovery), 개인화 및 추천(personalization and recommendation), DevOps 및 기업 워크플로우(enterprise workflows)다.

동시에 최종 작업 성공을 넘어서는 평가(evaluation beyond final task success), 불완전한 피드백 환경에서의 검증(verification under incomplete feedback), 회귀 없는 하네스 개선(regression-free harness improvement), 멀티 에이전트 간 공유 상태 일관성(consistent shared state across multiple agents), 안전 임계 행동에 대한 인간 감독(human oversight for safety-critical actions)을 미해결 과제로 제시한다.

실행 결과와 상태를 코드로 남기는 이유

코드 기반 하네스가 갖는 강점은 실행 가능성, 검사 가능성, 상태 지속성으로 정리할 수 있다.

코드Code as Harness실행 가능성Executability검사 가능성Inspectability상태 지속성Statefulness모델 출력이검증 가능한 연산으로 변환실행 결과로즉각적 피드백 제공중간 연산이구조적 추적으로 노출디버깅감사 추적 가능작업 진행 상태가지속적으로 표현세션 상태복원 재개

실행 가능성(Executability)은 모델 출력이 검증 가능한 연산으로 직접 이어진다는 뜻이다. 생성된 코드를 실행하고 그 결과를 즉각 피드백으로 돌려받을 수 있어, 자연어 출력보다 분명한 성공·실패 신호를 다룰 수 있다.

검사 가능성(Inspectability)은 중간 연산이 구조적 추적(structured traces)으로 드러나는 특성이다. 어떤 도구를 어떤 순서로 호출했는지, 어느 지점에서 실패했는지를 코드 수준에서 디버깅할 수 있다. 블랙박스 추론과 달리 감사 추적(audit trail)을 남길 수 있는 이유다.

상태 지속성(Statefulness)에서는 변수, 데이터 구조, 파일 시스템 상태가 모두 에이전트의 진행 상태를 표현한다. 세션이 중단된 뒤에도 상태를 복원해 작업을 재개할 수 있으므로, 장기 실행 작업에 필요한 기반이 된다.

도구 호출과 MCP 사이에서의 위치

Code as Harness, 도구 호출 기반(Tool Calling), MCP 서버 기반은 모두 에이전트와 외부 환경을 연결하지만, 오케스트레이션과 상태를 어디에 두는지가 다르다.

구분 Code as Harness 도구 호출 기반(Tool Calling) MCP 서버 기반
핵심 추상화 코드가 오케스트레이션 레이어 함수/API 호출이 인터페이스 표준화된 서버 프로토콜
상태 관리 코드 변수·파일 시스템에 내재 외부 상태 저장소 필요 서버 세션 상태
실행 검증 코드 실행 결과로 즉각 검증 함수 반환값 기반 서버 응답 기반
확장성 멀티 에이전트 코드 공유 도구 스키마 확장 서버 수평 확장
투명성 높음(코드 추적 가능) 중간(함수 시그니처 노출) 중간(API 스펙 노출)
복잡도 높음(코드 설계 역량 필요) 중간(함수 정의 필요) 낮음(서버 설치로 해결)

Code as Harness에서는 코드가 오케스트레이션 로직 자체를 맡는다. LangChain 엔지니어링 팀은 2026년 3월 Terminal Bench 2.0에서 모델 변경 없이 하네스 최적화만으로 30위에서 5위로 도약한 사례를 제시했다.

도구 호출 기반(Tool Calling / Function Calling)은 LLM이 정의된 함수를 호출하고 결과를 받는 방식이다. OpenAI Function Calling, Anthropic Tool Use가 대표적이며, 진입 장벽은 낮지만 복잡한 상태 관리나 멀티스텝 조율에는 한계가 있다.

MCP 서버 기반(Model Context Protocol)은 2026년 현재 Linux Foundation에 이관되어 표준화가 진행 중이다. 표준화된 프로토콜로 도구와 리소스를 에이전트에 노출하며, 하네스(Harness)는 MCP Tunnels를 통해 내부 MCP 서버에 접근할 수 있다. 팀의 SDLC에 통합된 AI 액션이 동일한 RBAC 정책 아래 추적되어야 하는 기업 환경에서 의미가 있다.

Claude Code는 가장 깊은 하네스를 구현한 사례로 평가받는다. 30개의 생명주기 이벤트(lifecycle events)를 스크립팅할 수 있는 훅 시스템을 갖추고 있으며, Skills, Plugins, Subagents, MCP가 그 위에 위치한다.

프로덕션에서 겹쳐지는 하네스 계층

AddyOsmani.com과 Faros AI의 분석은 프로덕션 수준의 에이전트 하네스를 5개 계층으로 구분한다.

프로덕션 하네스 아키텍처(5) 관찰 가능성 계층Observability Layer로깅·트레이싱·모니터링(4) 가드레일 계층Guardrails Layer안전 집행·권한 관리·정책(3) 컨텍스트·메모리 계층Context & Memory Layer세션 상태·RAG·장기 메모리(2) 검증 루프 계층Verification Loop Layer실행 결과 피드백·재시도(1) 도구 오케스트레이션 계층Tool Orchestration Layer도구 디스패치·결과 수집LLM Model순수 인지 추론L第四色

도구 오케스트레이션 계층(Tool Orchestration Layer)은 호출 디스패치, 병렬 실행 조율, 결과 수집을 맡는다. 코드 기반 하네스에서는 에이전트가 이 계층을 코드로 직접 수정하고 최적화할 수 있다.

검증 루프 계층(Verification Loop Layer)은 실행 결과를 받아 재시도, 대안 탐색, 오류 복구를 수행한다. 코드의 실행 가능성(executability)이 이 계층을 자연스럽게 구현한다.

컨텍스트·메모리 계층(Context & Memory Layer)은 세션 상태, RAG 기반 검색, 장기 메모리를 관리한다. 정보 계층(Information Layer)은 현재 하위 작업에 필요한 최소한의 텔레메트리만 노출해 컨텍스트 드리프트를 방지한다.

가드레일 계층(Guardrails Layer)은 안전 집행, 권한 관리, 정책 적용을 담당한다. 안전 임계 행동에 대한 인간 감독(human oversight)은 「Code as Agent Harness」가 강조한 미해결 과제이기도 하다.

관찰 가능성 계층(Observability Layer)은 로깅, 분산 트레이싱, 성능 모니터링을 제공한다. 코드의 검사 가능성(inspectability)은 이 계층을 구현하고 운영하는 데 도움이 된다.

하네스에 먼저 고정할 설계 기준

에이전트 행동을 자연어 지시가 아닌 코드 구조로 정의할 수 있다. 실행 워크플로우를 Python 함수, DAG(방향 비순환 그래프), 상태 머신으로 표현하면 흐름이 명확해지고 디버깅도 쉬워진다. LangGraph의 그래프 기반 에이전트 구조가 이 패턴의 대표적 구현이다.

팀 차원에서는 도구 정의 형식, 에러 처리 패턴, 상태 직렬화 방식을 표준화할 수 있다. 일관된 스캐폴드는 에이전트 간 재사용성을 높이고 유지보수 비용을 낮춘다. arXiv 2603.05344 「Building Effective AI Coding Agents for the Terminal」은 터미널 기반 코딩 에이전트의 스캐폴드 표준화 사례를 다룬다.

상태는 코드에서 명시적으로 관리할 대상이다. 세션 상태, 작업 진행 상태, 에러 상태를 데이터클래스, JSON 스키마, 데이터베이스 스키마로 정의하고 상태 전환 로직을 코드로 구현한다. Anthropic이 2026년 4월 공개 베타로 출시한 Claude Managed Agents는 샌드박싱, 상태 관리, 도구 실행, 에러 복구를 호스팅된 플랫폼으로 제공하는 방향을 보여준다.

LangChain 팀의 사례처럼 하네스 최적화는 모델 교체보다 빠르고 비용 효율적으로 성능을 개선할 수 있다. 컨텍스트 드리프트, 스키마 불일치, 상태 저하에 대한 대응 패턴을 미리 코드로 구현해 두는 일이 프로덕션 안정성에 직접 연결된다.

코드가 에이전트의 운영 기반이 되면, 실행 흐름은 검증 가능한 형태로 남고 상태는 세션을 넘어 이어진다. 멀티 에이전트 조율, 안전 임계 행동의 인간 감독, 회귀 없는 하네스 개선은 이 기반 위에서 계속 다뤄야 할 과제다.

Sources

AI 에이전트하네스 엔지니어링상태 관리에이전트 아키텍처MCP