Code as Agent Harness
Paper

Code as Agent Harness

Tianxin Wei
2026.05.26
·Arxiv·by igor
#Agent Harness#Agentic AI#Code Generation#LLM#Software Engineering

핵심 포인트

  • 1이 논문은 코드(code)가 LLM 기반 에이전트 시스템에서 단순한 출력물이 아닌, 추론, 행동, 환경 모델링 및 검증을 위한 핵심 "agent harness" 역할을 한다고 제안합니다.
  • 2에이전트 Harness로서 코드는 실행 가능(executable), 검사 가능(inspectable), 상태 저장 가능(stateful)한 매개체로 기능하여 에이전트가 신뢰할 수 있는 폐쇄 루프 동작을 수행하도록 돕습니다.
  • 3이러한 관점에서 코드는 에이전트의 추론을 외부화하고(Code for Reasoning), 의도를 실행 가능한 행동으로 전환하며(Code for Acting), 환경의 상태를 모델링하는(Code for Environment Modeling) 인터페이스 역할을 합니다.

이 논문은 최근 LLM이 코드 이해 및 생성에서 보여준 강력한 능력을 바탕으로, 에이전트 시스템에서 코드가 단순한 최종 결과물이 아니라 에이전트의 추론(reasoning), 행동(acting), 환경 모델링(environment modeling) 및 실행 기반 검증(execution-based verification)을 위한 핵심적인 작동 매개체("operational substrate")로 변화하고 있음을 조명합니다. 저자들은 이러한 변화를 '에이전트 하네스(agent harness)'라는 관점에서 설명하며, 코드를 에이전트 인프라의 기반으로 삼는 "code as agent harness"라는 통합적인 관점을 제시합니다.

핵심 개념 및 구조:

  • 에이전트 하네스 (Agent Harness): 이는 LLM을 도구(tools), API, 샌드박스(sandboxes), 메모리(memory), 검증기(validators), 실행 루프(execution loops), 피드백 채널(feedback channels) 등으로 둘러싸서, 본래 상태가 없는(stateless) LLM을 장기적인 태스크 실행이 가능한 기능적인 에이전트로 전환시키는 소프트웨어 레이어를 의미합니다. 논문은 특히 에이전트가 직접 생성, 실행, 수정, 저장 및 공유하는 '에이전트 주도 코드 아티팩트(agent-initiated code artifacts)'의 역할을 강조합니다.
  • "Code as Agent Harness"의 핵심 특징:
    • 실행 가능성 (Executable): 모델 출력이 공식적으로 검증 가능한(formally verifiable) 동작이 됨.
    • 검사 가능성 (Inspectable): 중간 계산 과정이 구조화된 트레이스(traces)로 노출되어 하네스가 읽고, 저장하고, 활용할 수 있음.
    • 상태 유지 (Stateful): 진화하는 프로그램이 태스크 진행 상황을 단계별로 영구적이고 수정 가능한 형태로 나타냄.

이러한 관점을 체계적으로 연구하기 위해 논문은 세 가지 연결된 계층으로 구성됩니다.

1. 하네스 인터페이스: 추론, 행동, 환경 모델링을 위한 코드 (§2)

이 계층에서는 코드가 모델과 태스크 환경 사이의 기본적인 인터페이스를 어떻게 형성하는지 탐구합니다. 코드는 에이전트의 추론을 실행 가능하게 하고, 행동을 프로그래밍 가능하게 하며, 환경 상태를 검사 가능하게 만듭니다.

  • 추론을 위한 코드 (Code for Reasoning) (§2.1):
    • 문제점: 기존의 '생각의 사슬(Chain-of-Thought, CoT)'과 같은 프롬프팅 기법은 LLM이 추론과 계산을 자연어 내에서 모두 수행하게 하여, 모델이 문제 분해뿐만 아니라 중간 연산 실행에서도 불안정하게 만드는 경향이 있습니다. 특히 기호적, 논리적, 산술적 계산에서 신뢰성이 떨어지며, 중간 상태를 검증하거나 진행 상황을 유지하기 어렵습니다.
    • 해결책: 코드를 모델과 하네스 간의 실행 인터페이스로 도입하여 순수 텍스트 기반 추론을 넘어섭니다. 모델은 실행 가능한 프로그램을 생성하고, 외부 런타임, 인터프리터, 기호 솔버 또는 검증 모듈이 이를 실행하고 평가합니다. 이는 고수준 추론과 저수준 계산을 분리합니다. 모델은 절차를 제안하고, 하네스는 이를 실행하며, 런타임 동작을 관찰하고, 중간 상태를 저장하며, 실행 결과를 미래 추론에 다시 공급합니다.
    • 세부 방법론:
      • 프로그램 위임 추론 (Program-Delegated Reasoning):
        • 대표적으로 '생각의 프로그램(Program-of-Thoughts, PoT)' 프롬프팅은 추론 과정을 명시적으로 실행 가능한 프로그램으로 분해합니다. 예를 들어, 수학 문제 해결 시 LLM이 Python 코드를 생성하면, 이 코드가 외부 인터프리터에서 실행되어 정확한 계산 결과를 얻습니다.
        • POET [67] 및 MathCoder [68]와 같은 확장은 실행 충실도(execution fidelity)와 도메인 특수화를 개선합니다.
        • Chain of Code (CoC) [8] 및 CIRS [69]는 실행 가능한 추론이 순수 언어 기반 추론에 비해 실패 모드(failure modes)를 어떻게 변화시키는지 분석합니다.
        • CodeI/O [73]는 문맥에 기반한 프로그램들을 코드 입출력 예측 태스크로 변환하여, 실행 가능한 검증을 통해 논리 흐름 계획, 상태 공간 탐색, 의사결정 트리 탐색, 모듈식 분해와 같은 추론 기본 요소를 노출합니다.
      • 정형 검증 및 기호 추론 인터페이스 (Formal Verification and Symbolic Reasoning Interfaces):
        • 유연한 언어 기반 추론과 구조화된 기호 계산을 결합하는 하이브리드 신경-기호(neural-symbolic) 방법론을 사용합니다.
        • 코드는 단순한 생성된 텍스트가 아니라 지속적인 중간 표현으로 활용됩니다.
        • Graph-of-Thoughts [74]는 CoT 추론을 그래프 구조의 궤적(trajectories)으로 일반화하여 중간 상태의 분기, 병합 및 재사용을 가능하게 합니다.
        • Self-verifying reflection [75], MA-LoT [76], Socratic self-reflection과 같은 연구는 LLM의 자체 검증 능력을 향상시키기 위해 코드 실행 결과를 피드백으로 활용합니다.
  • 행동을 위한 코드 (Code for Acting) (§2.2): 높은 수준의 의도를 물리적 또는 시뮬레이션된 환경에서 실행 가능한 작업(예: 정책, 도구 호출, 행동 트리)으로 변환합니다. (제공된 요약 텍스트에서는 상세 내용이 누락되었으나, 목차와 개요에 언급됨)
  • 환경 모델링을 위한 코드 (Code for Environment Modeling) (§2.3): 프로그램 상태, 저장소(repositories), 실행 추적, 시뮬레이터, 테스트 및 로그를 통해 세계 상태, 전환 역학 및 피드백 신호를 나타냅니다. 에이전트는 이를 실행, 편집 및 쿼리할 수 있습니다. (제공된 요약 텍스트에서는 상세 내용이 누락되었으나, 목차와 개요에 언급됨)

2. 하네스 메커니즘: 계획, 메모리, 도구 사용, 제어 및 최적화 (§3)

코드가 에이전트 루프 내에 배치되면, 하네스는 다음 단계를 계획하고, 유용한 상태를 보존하며, 적절한 도구를 노출하고, 실패를 교정 조치로 전환해야 합니다. 이 계층은 코드 기반 에이전트가 단일 생성 단계를 넘어 신뢰성을 유지하도록 돕는 메커니즘을 다룹니다.

3. 하네스 확장: 코드에 대한 다중 에이전트 오케스트레이션 (§4)

이 계층은 단일 에이전트에서 협업적인 에코시스템으로 하네스를 확장합니다. 여러 에이전트가 코드를 통해 작동할 때, 하네스는 개별 추론 및 실행을 지원할 뿐만 아니라 역할 조정, 중간 아티팩트 공유, 공통 상태 유지 및 집단적 진행 상황을 검증해야 합니다.

결론적으로, 이 논문은 코드를 단순히 에이전트가 생성하는 산출물이 아니라, 에이전트가 실행, 적응, 조율하는 런타임 매개체로서 이해하기 위한 로드맵을 제공하며, 실행 가능하고, 검증 가능하며, 상태를 유지하는 AI 에이전트 시스템을 향한 길을 제시합니다.