본문 바로가기

인공지능

장기 실행 AI 에이전트를 안정적으로 운영하는 방법: Anthropic의 Long-running Agent Harness 분석

반응형

AI 에이전트가 점점 더 강력해지면서, 개발자들은 이제 단순한 질의응답을 넘어 웹 애플리케이션 개발, 복잡한 자동화 파이프라인 구축, 며칠에 걸친 분석 작업까지 AI에게 맡기고 싶어지고 있다. 그러나 한 가지 실전적 문제가 발목을 잡는다. 장기 작업에서 에이전트가 안정적으로 맥락을 이어가지 못한다는 점이다.
여러 세션을 거치며 에이전트는 진행 상황을 놓치고, 기능을 절반만 구현하거나, 심지어 프로젝트를 완성했다고 오판하기도 한다. 많은 개발자들이 겪는 이런 문제를 Anthropic은 "long-running agent problem"이라 정의한다.

이 글에서는 Anthropic이 Claude Agent SDK를 통해 제안한 장기 실행 에이전트용 하네스(harness) 구조를 분석하고, initializer agent와 coding agent의 역할, 환경 구성 요소, 실패 모드와 해결 방식을 정리한다. 이를 통해 장기 실행 에이전트를 실제 프로젝트에서 어떻게 안정적으로 운영할 수 있는지 명확히 이해할 수 있을 것이다.

반응형

1. 장기 실행 에이전트는 왜 어려운가

LLM 기반 에이전트는 컨텍스트 윈도우 범위 내에서만 기억을 유지한다. 작업이 길어지고 여러 세션으로 나뉘는 순간 문제가 발생한다.
각 세션은 기본적으로 "기억이 없는 상태"로 시작하기 때문에 이전 에이전트가 무엇을 했는지 정확히 이해하지 못한다. 이로 인해 다음과 같은 현상이 나타난다.

  • 구현 중이던 기능이 중간에서 끊기고 다음 세션에서 복구 불가 상태로 남는 문제
  • 이미 구현된 기능을 반복 구현하거나 삭제하는 문제
  • 아직 끝나지 않은 프로젝트임에도 스스로 "모두 완성됨"이라고 판단하는 문제

이것은 결국 개별 세션이 서로 이어지지 못한다는 구조적 한계에서 비롯된다. Anthropic은 이를 해결하기 위해 인간 엔지니어의 협업 방식에서 영감을 얻었다. 즉, 다음 교대 근무자가 쉽게 업무를 이어받을 수 있도록 명확한 기록과 환경을 남기는 방식이다.


2. Anthropic의 핵심 해결책: Initializer Agent와 Coding Agent

Anthropic은 장기 실행 에이전트를 안정화하기 위해 두 가지 역할을 분리하는 방식으로 접근했다.

2.1 Initializer Agent

첫 세션에서만 실행되는 초기화 전용 에이전트로, 전체 프로젝트 구조와 향후 에이전트들이 참조할 환경을 설정한다. 초기화 단계에서 다음 항목들이 준비된다.

  • 프로젝트 전체 기능 요구사항을 상세히 나열한 feature list
  • 작업 이력 로그를 담는 claude-progress.txt
  • 초기 git commit
  • 개발 환경을 자동으로 실행할 수 있는 init.sh 스크립트

이 초기 구성 요소들은 이후 세션에서 coding agent가 안정적으로 작업을 이어갈 수 있도록 기반을 다져준다.

2.2 Coding Agent

다음 모든 세션에서 동작하며, 기능을 하나씩 점진적으로 구현하는 역할을 가진다. 핵심 원칙은 다음 두 가지다.

  • 단 하나의 기능만 선택해 단계별로 구현
  • 세션을 마칠 때 반드시 프로젝트를 깨끗한 상태로 정리

즉, 구현 중인 기능이 절반만 끝나 남지 않도록 마무리되고, 남긴 작업은 git commit과 progress 파일에 명확히 기록된다.


3. 안정적 장기 작업을 위한 핵심 환경 구성 요소

3.1 Feature List: 전체 작업 범위를 구조화

에이전트가 무리하게 앱 전체를 한 번에 만들려는 경향을 막기 위해 Anthropic은 초기화 단계에서 매우 상세한 기능 요구사항을 JSON 형태로 만든다.
모든 기능은 passes: false 상태로 시작하며, coding agent는 오직 passes 값만 변경하도록 제한된다.

이 방식의 장점은 다음과 같다.

  • 작업 범위가 명확해져 에이전트가 전체 프로젝트를 오해하지 않는다.
  • 어떤 기능을 선택해 구현해야 하는지 우선순위를 바로 알 수 있다.
  • 기능 완료 체크를 임의로 변경하거나 삭제하는 것을 방지한다.

3.2 Progress 파일과 Git 로그

각 세션마다 coding agent는 다음을 수행한다.

  • 최근 기록 확인
  • 변경 사항을 git commit
  • claude-progress.txt에 한 세션 동안 수행한 작업을 요약

이를 통해 새로운 세션에서 에이전트는 기억을 가지지 않더라도 프로젝트 상태를 빠르게 파악할 수 있다. 이는 인간 개발자가 로그와 git 히스토리를 보고 작업을 이어가는 방식과 유사하다.

3.3 init.sh를 통한 재현 가능한 개발 환경

세션이 바뀌어도 개발 서버를 동일하게 재현할 수 있도록 초기화 스크립트가 필요하다.
coding agent는 작업 전 항상 init.sh를 통해 앱을 실행해 현재 동작 상태를 확인한다.
이 과정을 통해 이전 세션에서 앱이 망가졌을 경우 즉시 오류를 감지하여 우선적으로 수정하게 된다.


4. 기능을 하나씩 구현하는 Incremental Progress 전략

Anthropic 실험에서 가장 큰 성능 향상을 가져온 전략은 "한 번에 하나의 기능만" 구현하도록 제한한 것이다.

이 점진적 방식은 다음 문제를 해결한다.

  • 너무 많은 기능을 동시에 구현하려다 컨텍스트 초과로 작업이 중단되는 문제
  • 한 세션의 작업이 다른 기능에 영향을 미치며 프로젝트 전체가 망가지는 문제
  • 작업 도중 예기치 않은 버그가 발생해 다음 세션이 진행 불가 상태가 되는 문제

incremental progress는 단순한 제약 같지만, 장기 실행 환경에서 예측 가능성과 안정성을 확보하는 데 가장 중요한 요소였다.


5. 테스트 자동화의 필요성과 효과

에이전트는 기능을 완성했다고 판단하는 경향이 있었지만 실제로는 완성되지 않은 경우가 많았다.
이 문제를 해결하기 위해 Anthropic은 테스트 자동화 도구(Puppeteer 등)를 에이전트 도구로 제공하고, 사람이 사용하는 것처럼 브라우저에서 기능을 직접 검증하도록 했다.

그 결과 다음과 같은 개선이 나타났다.

  • 기능이 실제 UI 흐름에서 동작하는지 확인
  • 예상치 못한 자잘한 오류를 에이전트가 자체적으로 발견하고 수정
  • passes 값을 정확한 기준에 따라 업데이트

물론 모든 UI 요소를 에이전트가 인식하지는 못하는 한계도 존재하지만 전반적으로 기능 완성도는 크게 향상되었다.


6. 에이전트의 실제 세션 흐름

  1. pwd로 현재 디렉토리 확인
  2. progress 파일과 git 로그로 최근 작업 파악
  3. feature list를 열어 미완료 기능 중 최우선 기능을 선택
  4. init.sh를 실행해 개발 환경 재현
  5. 현재 앱의 핵심 기능이 정상 동작하는지 검증
  6. 새로운 기능을 하나 선택해 구현
  7. 구현 후 테스트 자동화로 기능을 검증
  8. git commit 및 progress 파일 업데이트

이 일련의 과정은 매 세션 반복되며, 장기 작업에서도 안정적으로 진행된다.


7. 주요 실패 모드와 해결 방식 요약

문제 해결 방식
에이전트가 프로젝트를 조기 완료 선언 feature list로 전체 작업을 구조화
버그가 남거나 문서화되지 않은 상태로 종료 git commit + progress 파일로 상태를 기록
기능을 제대로 검증하지 않고 완료 처리 브라우저 기반의 end-to-end 테스트 도입
개발 환경을 재구성하지 못해 작업 시작 불가 init.sh를 통해 개발 서버 자동 실행

이 구조는 장기 실행 에이전트의 근본적인 문제를 해결하는 데 매우 효과적이었다.


728x90

장기 실행 에이전트를 안정적으로 만들고 싶은 개발자에게

장기 실행 에이전트의 핵심 어려움은 에이전트가 세션 간 기억을 유지하지 못한다는 점이며, 이를 해결하려면 에이전트가 "환경에서 기억을 읽어야" 한다.
Anthropic의 initializer agent와 coding agent 구조는 이를 해결하기 위한 체계적인 방법을 제시한다.

핵심 요소는 다음 네 가지다.

  1. 모든 기능을 명확히 나열한 feature list
  2. 세션 간 작업 상태를 연결하는 progress 파일과 git 로그
  3. 깨끗한 환경을 보장하는 incremental progress
  4. 기능 검증을 위한 end-to-end 테스트 자동화

이 방식은 단순한 구조처럼 보이지만 장기 실행 에이전트의 안정성과 생산성을 크게 높이는 중요한 설계 원칙이다.
앞으로 더 많은 도메인에서 이러한 구조적 접근이 사용될 가능성이 높으며, 에이전트 기반 개발 자동화의 실전 적용 범위는 계속 확대될 것이다.

300x250

https://www.anthropic.com/engineering

 

Engineering

Anthropic is an AI safety and research company that's working to build reliable, interpretable, and steerable AI systems.

www.anthropic.com

728x90
반응형
그리드형