Sebastian Raschka가 Claude Code, Codex 같은 코딩 도구들이 기존 채팅 인터페이스보다 강력한 이유는 더 나은 모델 때문이 아니라, 모델을 둘러싼 “에이전트 하네스(harness)“의 설계 때문이라고 분석합니다. 같은 모델이라도 다른 하네스에 넣으면 완전히 다른 성능을 보일 수 있습니다.

원문: Components of a Coding Agent


핵심 주장

“many real-world applications, the surrounding system, such as tool use, context management, and memory, plays as much of a role as the model itself”

최신 LLM들(GPT-5.4, Opus 4.6 등)의 기본 성능이 유사해진 지금, 하네스의 품질이 최종 성능의 차별화 요소 가 된다.


LLM, 추론 모델, 에이전트의 구분

  • LLM(언어모델) : 기본적인 다음 토큰 생성 엔진
  • 추론 모델 : 추가 학습을 받은 LLM으로, 중간 추론 과정을 더 상세히 수행
  • 에이전트 : 모델을 감싸는 제어 루프로서, 어떤 도구를 사용할지, 상태를 어떻게 업데이트할지 결정

저자의 비유: “엔진, 강화된 엔진, 그리고 엔진을 효과적으로 사용하도록 도와주는 시스템”


코딩 하네스의 6가지 핵심 구성요소

1. 라이브 저장소 컨텍스트 (Live Repo Context)

“테스트를 수정해줘"는 독립적인 명령이 아니다. 에이전트는 현재 Git 상태, 브랜치, 프로젝트 문서 위치, 작업 진행 상황을 파악해야 한다. 저장소 구조, README나 AGENTS.md 같은 문서들이 에이전트의 행동을 크게 좌우하며, 매 요청마다 처음부터 시작하지 않도록 “안정적인 사실들"로 작업공간 을 구성한다.

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

코딩 세션은 반복적 특성을 가진다 — 에이전트 규칙, 도구 설명, 작업공간 은 계속 같고, 변하는 것은 최신 사용자 요청과 최근 기록뿐이다.

안정적 프롬프트 프리픽스 (변화 없음)
↓
+ 변화하는 세션 상태 (매번 갱신)
↓
= 모델에 전달될 최종 프롬프트

“안정적 프리픽스"를 캐시하여 컴퓨팅 비용을 절감한다.

3. 도구 접근 및 사용 (Tool Access and Use)

코딩 하네스의 모델은 사전 정의된 명확한 도구 목록 만 사용할 수 있다.

흐름: 모델이 구조화된 액션 방출 → 하네스가 검증 → 필요시 사용자 승인 요청 → 실행 → 결과를 루프에 피드백

하네스의 검증: 알려진 도구인가? 인수가 유효한가? 사용자 승인이 필요한가? 요청된 경로가 작업공간 내인가? 자유도를 제한하지만, 신뢰성을 높이고 보안 위험을 줄인다.

4. 컨텍스트 비대화 최소화 (Minimizing Context Bloat)

긴 컨텍스트는 비싸고 노이즈를 증가시킨다. 코딩 에이전트는 반복적인 파일 읽기, 긴 도구 출력, 로그로 인해 특히 취약하다.

두 가지 주요 압축 전략:

  • 클리핑(Clipping) : 긴 문서 스니펫, 도구 출력, 메모리 노트를 축약하여 한 부분이 전체 프롬프트 예산을 차지하는 것을 방지
  • 트랜스크립트 감소 : 전체 세션 기록을 더 작은 본으로 변환. 최근 이벤트는 상세하게, 오래된 이벤트는 공격적으로 압축, 중복된 파일 읽기는 제거

겉보기의 “모델 품질"은 실제로는 컨텍스트 품질 일 수 있다.

5. 구조화된 세션 메모리 (Structured Session Memory)

에이전트는 두 가지 상태 계층을 분리한다:

  • 작업 메모리(Working Memory) : 작고 증류된 상태. 현재 작업, 중요한 파일, 최근 노트를 에이전트가 명시적으로 유지
  • 전체 트랜스크립트(Full Transcript) : 모든 사용자 요청, 도구 출력, LLM 응답 기록

두 데이터는 JSON 파일로 디스크에 저장되어 세션 재개가 가능하다. 컴팩트 트랜스크립트는 프롬프트 재구성용, 작업 메모리는 작업 연속성용으로 구분된다.

6. 하위 에이전트를 통한 위임 (Delegation With Bounded Subagents)

에이전트가 모든 작업을 혼자 처리하는 것이 아니라, 부작업을 병렬로 처리하는 하위 에이전트를 생성할 수 있다.

사용 예시: 심볼 정의 위치 찾기, 설정 파일 내용 확인, 테스트 실패 원인 분석

설계의 핵심: 하위 에이전트에게 유용하기에 충분한 컨텍스트를 물려주되, 더 엄격한 경계 내에서 실행 (읽기 전용 모드, 재귀 깊이 제한, 작업 범위 제한).


OpenClaw와의 비교

공통점 : 작업공간의 프롬프트/명령 파일 사용(AGENTS.md, SOUL.md, TOOLS.md), JSONL 세션 파일 및 트랜스크립트 압축, 헬퍼 세션과 하위 에이전트 지원

차이점 : OpenClaw는 로컬 일반 에이전트 플랫폼(코딩도 가능)이고, 코딩 하네스는 코딩 작업에 특화된 전문가.


결론

현대 AI의 실제 성능 향상은 모델 자체의 혁신뿐만 아니라, 그 모델을 둘러싼 시스템 아키텍처의 정교함 에서 나온다. 모델의 “화려함"과 하네스의 “지루하지만 중요한 세부사항” 모두를 고려해야 한다.