개요

같은 LLM 모델이라도 Claude Code나 Codex CLI에서 쓰면 훨씬 더 강하게 느껴진다. 이게 그냥 UI 차이일까? 아니다. 핵심은 **에이전트 하네스(Agent Harness)**라는 소프트웨어 계층에 있다.

머신러닝 연구자 Sebastian Raschka 박사가 코딩 에이전트의 내부 구조를 6가지 구성 요소로 분해해서 설명했다. Mini Coding Agent 오픈소스 구현체를 직접 만들면서 얻은 실전 인사이트다.

핵심 요약

  • 에이전트 ≠ 모델: LLM은 엔진, 하네스는 그 엔진을 제대로 쓰게 해주는 시스템
  • 코딩 하네스 6요소: 레포 컨텍스트 → 프롬프트 캐시 → 도구 관리 → 컨텍스트 축소 → 메모리 → 서브에이전트
  • 모델 성능보다 하네스 설계가 체감 성능을 더 많이 결정할 수 있다

LLM, 추론 모델, 에이전트의 관계

먼저 개념 정리. 자주 섞여 쓰이지만 엄연히 다르다.

  • LLM: 다음 토큰을 예측하는 기본 모델
  • 추론 모델(Reasoning Model): 중간 추론 과정을 더 많이 쓰도록 훈련된 LLM
  • 에이전트: 모델을 루프 안에서 반복 호출하는 제어 시스템
  • 에이전트 하네스: 에이전트를 감싸는 소프트웨어 스캐폴드 — 프롬프트 조립, 도구 노출, 파일 상태 추적, 명령 실행, 권한 관리, 메모리 등을 담당
  • 코딩 하네스: 에이전트 하네스의 특수 케이스. 소프트웨어 엔지니어링에 특화

요약하면: LLM이 엔진, 추론 모델이 강화된 엔진, 하네스는 그 엔진을 최대한 활용하는 시스템이다.


6가지 핵심 구성 요소

1. 라이브 레포 컨텍스트 (Live Repo Context)

가장 기초적이지만 가장 중요한 요소. 사용자가 “테스트 고쳐줘"라고 하면, 모델은 현재 Git 브랜치, 프로젝트 구조, README나 AGENTS.md 내용을 알아야 올바른 행동을 할 수 있다.

코딩 에이전트는 작업 시작 전 워크스페이스 요약(stable facts) 을 먼저 수집한다. Git 상태, 브랜치, 커밋 히스토리, 프로젝트 문서 등을 정리해서 매 쿼리마다 처음부터 시작하지 않도록 한다.

2. 프롬프트 형태와 캐시 재사용 (Prompt Shape & Cache Reuse)

코딩 세션은 반복적이다. 에이전트 규칙, 도구 설명, 워크스페이스 요약은 매번 거의 같다. 이걸 매 쿼리마다 재처리하면 낭비다.

핵심은 안정적인 프리픽스를 캐시해두는 것. 변하지 않는 부분(시스템 프롬프트, 도구 정의 등)을 앞에 고정하고, 변하는 부분(최근 대화, 현재 파일 내용)만 뒤에 붙인다. 이렇게 하면 프롬프트 캐시 히트율이 높아져 속도도 빠르고 비용도 줄어든다.

3. 구조화된 도구, 검증, 권한 관리 (Structured Tools, Validation & Permissions)

코딩 에이전트의 실질적인 힘은 도구 사용에 있다. 파일 읽기, 검색, 코드 실행, 테스트 실행 등.

중요한 건 단순히 도구를 제공하는 게 아니라 검증과 권한 관리를 함께 한다는 점이다. 경로 이탈, 위험한 명령 실행, 의도치 않은 파일 수정을 막는 가드레일이 필요하다. Mini Coding Agent 코드에서는 validate_tool, approve, parse, path 등이 이 역할을 한다.

4. 컨텍스트 축소와 출력 관리 (Context Reduction & Output Management)

긴 코딩 세션에서는 컨텍스트 창이 금방 가득 찬다. 하네스는 어떤 정보를 유지하고 어떤 걸 버릴지 결정해야 한다.

오래된 대화나 중복 정보를 클리핑하고, 현재 작업에 필요한 핵심 정보만 유지한다. 단순해 보이지만 장기 세션에서 성능 유지의 핵심이다.

5. 트랜스크립트, 메모리, 재개 (Transcripts, Memory & Resumption)

세션이 끊겨도 이전 작업을 이어갈 수 있어야 한다. 하네스는 세션 히스토리를 저장하고, 중요한 결정이나 컨텍스트를 메모리로 관리한다.

사용자가 “아까 그 버그 다시 봐줘"라고 했을 때 처음부터 설명할 필요 없이 바로 이어갈 수 있는 것도 이 컴포넌트 덕분이다.

6. 위임과 제한된 서브에이전트 (Delegation & Bounded Subagents)

복잡한 작업은 단일 에이전트 루프로 처리하기 어렵다. 하네스는 서브에이전트에게 특정 작업을 위임할 수 있다.

핵심은 “제한(bounded)”. 서브에이전트가 메인 컨텍스트 전체에 접근하거나 무한정 실행되지 않도록 범위를 제한한다. 격리된 환경에서 집중적으로 하위 작업을 처리하고 결과만 반환한다.


실무자가 볼 핵심 포인트

구성 요소실무 의미
레포 컨텍스트AGENTS.md, README 잘 쓰면 에이전트 성능이 바로 올라감
프롬프트 캐시안정적인 시스템 프롬프트 구조가 비용/속도 직결
도구 검증/권한사용자 승인 플로우는 안전의 핵심, 생략하면 위험
컨텍스트 관리장기 세션일수록 클리핑 전략이 품질 결정
메모리/재개세션 영속성이 없으면 복잡한 작업 불가
서브에이전트격리된 위임 구조로 복잡도 분산

핵심 통찰: Claude Code와 Codex CLI가 같은 모델을 쓰면서도 체감 성능이 다른 건, 모델 차이가 아니라 하네스 설계 차이다. 좋은 오픈소스 모델을 좋은 하네스에 넣으면 상위 상용 제품과 경쟁할 수 있다는 게 Raschka 박사의 관점이다.


원문 : Components of A Coding Agent - by Sebastian Raschka, PhD