Claude Code로 병렬 에이전트 워크플로우 구축하기
Anthropic이 16개의 Claude 인스턴스를 병렬로 실행해 C 컴파일러를 개발한 사례가 공개됐다. 이 글에서는 그들의 접근 방식과 실무에 적용할 수 있는 핵심 패턴을 정리했다.
이번 실험의 핵심은 인간 개입 없이 에이전트가 스스로 작업을 분배하고 실행하도록 만드는 것이었다. 연구원은 Ralph-loop라는 단순한 무한 루프 패턴을 사용했다. Claude Code 세션이 종료되면 즉시 새 세션을 시작하는 구조다. -p 플래그로 사전에 작성한 프롬프트 파일을 전달하고 --dangerously-skip-permissions로 권한 확인을 생략했다.
병렬 처리를 위해서는 충돌 방지 메커니즘이 필수적이었다. 연구팀은 current_tasks/ 디렉토리에 텍스트 파일을 생성하는 방식으로 작업을 선점했다. 예를 들어 한 에이전트가 current_tasks/parse_if_statement.txt를 생성하면 다른 에이전트는 다른 작업을 선택했다. Git의 동기화 기능이 자연스럽게 충돌을 방지하는 원리다. 작업이 끝나면 git pull로 최신 코드를 받아오고 변경사항을 push한 뒤 lock 파일을 삭제하는 흐름으로 진행됐다.
테스트 하네스 설계에도 특별한 전략이 있었다. Claude가 자신의 진행 상황을 정확히 파악할 수 있도록 출력을 극도로 간결하게 유지했다. 에러는 ERROR: 사유 형태로 한 줄만 출력해 grep으로 필터링이 가능하게 했다. 상세 로그는 파일로 분리하고 stdout에는 요약 정본만 표시했다. 시간 제약도 고려해 --fast 옵션으로 전체 테스트 중 1~10%만 샘플링하는 기능을 추가했다.
병렬화 전략은 작업의 특성에 따라 달랐다. 독립적인 테스트가 많은 경우 각 에이전트가 서로 다른 실패 테스트를 담당했다. 반면 Linux 커널 컴파일처럼 하나의 거대한 작업은 다른 접근이 필요했다. 연구팀은 GCC를 정답 오라클로 활용했다. 랜덤하게 일부 파일은 GCC로 컴파일하고 나머지는 Claude 컴파일러로 처리한 뒤 결과를 비교하는 방식이다. 이렇게 하면 각 에이전트가 서로 다른 파일의 버그를 병렬로 수정할 수 있었다.
16개 에이전트는 역할별로 특화됐다. 다수의 에이전트가 핵심 기능 개발을 담당하고, 나머지는 중복 코드 제거, 성능 최적화, 코드 품질 개선, 문서화 등의 전문 역할을 수행했다. 이런 분업이 효율적인 이유는 LLM이 작성한 코드가 종종 중복되거나 일관성이 떨어지는 경향이 있기 때문이다.
그러나 결과물은 완벽하지 않았다. 16비트 x86 코드 생성에는 실패해 리얼모드 부팅은 GCC에 의존해야 했다. 생성된 코드의 효율성도 GCC 최적화 없음 옵션보다 떨어졌다. 새 기능을 추가할 때마다 기존 기능이 깨지는 일도 빈번했다. 이는 현재 LLM의 한계를 보여주는 대목이다.
실무에 적용할 때는 다음 순서로 시작하는 것을 권장한다. 먼저 단일 에이전트로 Ralph-loop를 구현해 무한 루프가 정상 동작하는지 확인한다. 그 다음 단순한 작업 분리로 병렬화를 시도한다. 파일 기반 lock 패턴이 익숙해지면 역할별 에이전트 특화를 고려한다. 테스트 하네스는 처음부터 간결한 출력 규칙을 적용하는 것이 좋다.
Claude Code의 Agent Teams 기능이 공식적으로 추가되면서 이런 워크플로우가 더 쉬워질 전망이다. 팀 리드가 팀원을 생성하고 작업 목록과 메일박스로 동기화하는 방식이다. 하지만 파일 기반의 단순한 접근법은 여전히 유효하며 오히려 디버깅이 쉬운 장점이 있다.
핵심은 테스트가 진행 방향을 제어하는 구조를 만드는 것이다. 에이전트가 스스로 판단할 수 있도록 테스트 결과를 명확하고 간결하게 제공해야 한다. 인간이 매번 개입하지 않아도 되는 자율성의 정도가 병렬 에이전트 워크플로우의 성패를 가른다.
Claude Code로 병렬 에이전트 워크플로우 구축하기
https://futurecreator.github.io/2026/02/28/claude-code-parallel-agent-workflow/