장기 실행 Agent
Initializer + Coding Agent
핵심 아이디어: 하나의 Agent를 두 가지 역할로 분리합니다 — 하나는 기획 담당, 하나는 실행 담당. 모든 인계 시 깨끗한 상태를 남깁니다.
이중 역할 해결책
두 Agent, 명확한 역할 분담
첫 번째 라운드만 실행
Initializer Agent
부트스트래핑 담당: 환경 설정, 계획 수립, 첫 번째 커밋
init.sh스크립트를 생성하여 개발 환경 구축claude-progress.txt진행 파일 작성- 사용자의 고수준 Prompt를 상세 기능 체크리스트(JSON 형식)로 확장
- 첫 번째 git commit 수행, 저장소 상태가 깨끗한지 확인
매 라운드 실행
Coding Agent
지속적 진행 담당: 기능을 하나씩 구현하고 계속 전진
- 진행 파일을 읽어 현재 상태 파악
- 한 번에 하나의 기능만 구현
- 완료 후 진행 파일 업데이트
- 무엇을 했는지 명확히 기록하여 git commit
기능 체크리스트 설계
검증된 접근 방식은 기능 체크리스트에 JSON 형식을 사용하는 것입니다 — Markdown은 이 목적에 적합하지 않습니다. 이유: 모델이 구조화된 JSON을 잘못 수정할 가능성이 낮은 반면, Markdown은 모델이 쉽게 다시 작성하는 경향이 있습니다.
// claude-progress.txt의 기능 체크리스트
{
"features": [
{
"category": "authentication",
"description": "Email/password login with session management",
"steps": [
"Create login form component",
"Implement auth API endpoint",
"Add session cookie handling",
"Write end-to-end test"
],
"passes": false
},
{
"category": "chat",
"description": "Real-time streaming chat with Claude API",
"steps": ["..."],
"passes": false
}
]
}
Prompt에서 강한 표현을 사용합니다: Agent에게 '기존 테스트 내용을 삭제하거나 수정하지 말라'고 명확히 지시하세요. 그렇지 않으면 Agent가 테스트를 통과시키기 위해 테스트 기준을 낮춥니다.
증분 진행: 한 번에 기능 하나씩
"한 번에 하나"가 핵심인 이유
- 1 각 기능 완료 후 코드는 병합 가능한 상태입니다: 미완성 작업 없음, 문법 오류 없음
- 2 Git commit이 롤백 포인트를 제공합니다: 다음 라운드에서 무언가를 망가뜨리면 마지막 깨끗한 상태로 돌아갈 수 있습니다
- 3 진행 파일이 컨텍스트를 제공합니다: 새 Agent가 어디까지 진행됐는지 추측할 필요 없이 파일만 읽으면 됩니다
- 4 컨텍스트 윈도우가 오버플로우되지 않습니다: 매 라운드 하나의 기능 컨텍스트만 다루므로 한도까지 쌓이지 않습니다
테스트 검증
Agent는 완료됐다고 생각하지만 엔드-투-엔드 검증이 없는 경우가 많습니다. '로그인 기능을 구현했다'고 말하지만 실제로 버튼을 클릭할 수 없습니다. 해결 방법:
Agent에게 브라우저 자동화로 엔드-투-엔드 테스트를 명시적으로 요구하세요.
실제로 브라우저를 열고, 버튼을 클릭하고, 결과를 검증해야 합니다 — 단위 테스트만으로는 충분하지 않습니다. Agent에게 Puppeteer / Playwright로 E2E 테스트를 작성하게 하고, 기능이 진정으로 "passes"인지의 판정 기준으로 삼으세요.
실제로 브라우저를 열고, 버튼을 클릭하고, 결과를 검증해야 합니다 — 단위 테스트만으로는 충분하지 않습니다. Agent에게 Puppeteer / Playwright로 E2E 테스트를 작성하게 하고, 기능이 진정으로 "passes"인지의 판정 기준으로 삼으세요.
최종 결과
200개 이상 기능의 claude.ai 클론 성공적으로 구축
Initializer + Coding Agent 이중 역할 방식을 통해 Agent가 200개 이상의 기능을 포함한 완전한 웹 애플리케이션을 자율적으로 구축하는 데 성공했습니다. 모든 기능에 해당하는 E2E 테스트가 있으며, 코드는 항상 병합 가능한 상태를 유지합니다.
좋은 인계 메커니즘 = 좋은 장기 실행 Agent. 진행 파일, 기능 체크리스트, 증분 커밋 — 이것들이 Agent가 지속적으로 전진할 수 있는 가장 기본적인 보장입니다. 전혀 화려하지 않습니다.