Anthropic 효과적인 장기 실행 에이전트 하네스

AI 에이전트가 수 시간 또는 수 일에 걸친 복잡한 프로젝트를 수행하도록 지정됨에 따라, Anthropic은 이중 솔루션(초기화 에이전트와 코딩 에이전트)을 도입하여 에이전트가 여러 개별 컨텍스트 창에서 일관된 진행을 유지하도록 했습니다.

이 하네스는 에이전트가 이전 작업에 대한 기억이 없는 세션에서 작업해야 한다는 핵심 과제를 해결합니다. 이는 대규모 소프트웨어 개발에서 단순한 컨텍스트 압축으로는 극복할 수 없는 한계입니다.

장기 실행 에이전트의 과제

단순한 컨텍스트 압축만으로는 AI 에이전트가 여러 컨텍스트 창에 걸쳐 프로덕션 품질의 프로젝트를 완료할 수 없습니다. Claude Agent SDK는 Opus 4.5와 같은 고급 모델을 사용하더라도 높은 수준의 프롬프트만 제공될 때 두 가지 주요 실패 모드를 보입니다.

에이전트 실패 모드 1: 과도한 범위 지정

에이전트는 한 번에 너무 많은 작업을 완료하려는 경향이 있으며, 원샷 구현을 목표로 합니다. 이로 인해 모델이 구현 중간에 컨텍스트를 소진하여 다음 세션이 절반만 구현되고 문서화되지 않은 기능으로 시작되는 경우가 많습니다. 이후 에이전트는 이전 상태를 추측하고 기본 기능을 복원하는 데 상당한 시간을 소비해야 합니다.

에이전트 실패 모드 2: 조기 완료

프로젝트 후반에 에이전트 인스턴스가 기존 진행 상황을 검토하고 중요한 기능이 아직 완료되지 않았음에도 전체 작업이 완료되었다고 조기에 선언할 수 있습니다.

이러한 실패는 구조화된 접근 방식을 필요로 합니다. 첫째, 모든 필수 기능을 위한 기반 환경을 구축하고, 둘째, 각 에이전트가 각 세션 종료 시 깨끗하고 병합 가능한 상태를 유지하면서 작고 점진적인 진행을 하도록 프롬프트하는 것입니다.

이중 에이전트 솔루션

Anthropic은 특수한 두 부분으로 구성된 하네스 구조를 구현하여 이러한 문제를 해결했습니다.

초기화 에이전트

첫 번째 에이전트 세션은 특수 프롬프트를 사용하여 초기 환경을 설정합니다. 이 설정에는 init.sh 스크립트 생성, 에이전트 작업을 기록하는 claude-progress.txt 파일 생성, 추가된 파일을 문서화하는 초기 git 커밋 수행이 포함됩니다. 이 기반은 에이전트가 단계별로, 기능별로 작업할 수 있도록 보장합니다.

코딩 에이전트

이후의 모든 세션은 코딩 에이전트가 처리하며, 목표를 향해 점진적인 진행을 하도록 tasked됩니다. 중요하게도, 이 에이전트는 각 세션 후 환경을 깨끗한 상태로 유지해야 합니다. '깨끗한 상태'란 코드가 체계적이고, 잘 문서화되어 있으며, 주요 버그가 없어 메인 브랜치에 병합하기에 적절함을 의미합니다.

환경 관리 및 워크플로 세부 사항

구조를 강화하고 에이전트가 크고 관리되지 않는 변경을 방지하기 위해 특정 프롬프트 및 아티팩트 관리 기법이 사용되었습니다.

기능 요구 사항 정의

앱을 원샷으로 구현하려는 경향에 대응하기 위해 초기화 에이전트는 사용자의 초기 프롬프트를 확장하는 포괄적인 기능 요구 사항 파일을 작성하도록 프롬프트됩니다. claude.ai 클론 예제의 경우 200개 이상의 기능이 생성되었으며, 모두 처음에는 "실패"로 표시되었습니다. 코딩 에이전트는 부적절한 덮어쓰기 위험을 최소화하기 위해 JSON 형식을 사용하여 passes 필드의 상태만 변경함으로써 이 기능 파일을 편집하도록 지시받습니다.

점진적 진행 보장

초기 환경이 스캐폴딩되면 코딩 에이전트는 한 번에 하나의 기능만 작업하도록 지시받습니다. 깨끗한 상태를 유지하기 위해 모델은 설명적인 커밋 메시지로 git에 진행 상황을 커밋하고 진행 파일에 진행 상황 요약을 작성하도록 프롬프트됩니다. 이 git 사용은 모델이 잘못된 코드 변경을 되돌리고 작업 상태를 복구할 수 있게 합니다.

견고한 테스트 구현

관찰된 주요 실패 모드는 에이전트가 적절한 종단 간 테스트 없이 기능을 완료로 표시하는 것이었습니다. 모델은 단위 테스트를 수행할 수 있지만 코드만으로는 명확하지 않은 버그를 인식하지 못하는 경우가 많습니다. Claude에게 Puppeteer MCP 서버와 같은 테스트 도구를 제공했을 때 성능이 극적으로 향상되었으며, 이를 통해 에이전트는 인간 사용자처럼 기능을 종단 간 테스트할 수 있었습니다. 이를 통해 에이전트는 그렇지 않으면 보이지 않는 버그를 식별하고 수정할 수 있었습니다.

에이전트 세션 운영

모든 코딩 에이전트가 안정적이고 정보를 갖춘 상태에서 시작하도록 보장하기 위해 각 세션 시작 시 표준화된 일련의 단계가 실행됩니다.

  1. 디렉토리 확인: pwd를 실행하여 작업 디렉토리를 확인합니다.
  2. 상태 검토: git 로그와 진행 파일을 읽어 최근 작업을 빠르게 파악합니다.
  3. 작업 선택: 기능 목록 파일을 읽고 아직 완료되지 않은 우선순위가 가장 높은 기능을 선택합니다.

이 시작 루틴은 토큰을 절약하고 에이전트가 새 기능을 구현하려고 시도하기 전에 로컬 개발 서버를 실행하고 기본적인 종단 간 테스트를 수행하여 애플리케이션의 상태를 먼저 확인하도록 보장하여 기존 버그를 악화시키는 것을 방지합니다.

향후 연구 방향

이 연구는 장기 실행 에이전트 하네스에 대한 강력한 솔루션 세트를 제공하지만, 여전히 몇 가지 공개 질문이 남아 있습니다. 단일 범용 코딩 에이전트가 모든 컨텍스트에서 최적으로 작동하는지, 아니면 다중 에이전트 아키텍처가 더 나은 성능을 제공할 수 있는지는 현재 불분명합니다. 전용 테스트 에이전트나 코드 정리 에이전트와 같은 특수 에이전트는 소프트웨어 개발 수명 주기 전반에 걸쳐 하위 작업 성능을 향상시킬 것으로 가정됩니다. 또한 현재 데모는 풀스택 웹 앱 개발에 최적화되어 있으며, 향후 작업은 과학 연구나 금융 모델링과 같은 다른 장기 실행 에이전트 작업으로 이러한 교훈을 일반화하는 데 초점을 맞출 것입니다.

SUMMARY: Anthropic은 초기화 에이전트와 코딩 에이전트를 활용하는 두 부분으로 구성된 에이전트 하네스를 개발하여 AI 에이전트가 장기 실행 작업을 위해 여러 개별 컨텍스트 창에서 일관되고 점진적인 진행을 유지할 수 있도록 했습니다.

TITLE: Anthropic 효과적인 장기 실행 에이전트 하네스

Sources