단일 에이전트의 한계 및 초기 협업 시도
단일 에이전트는 집중된 작업에 효과적이나, 복잡한 프로젝트에서는 속도가 느립니다. 이에 따라 다중 에이전트의 병렬 실행이 필요했으나, 이들의 조율 방식이 주요 과제로 부상했습니다. 초기에는 동적 조정을 시도하여 에이전트들이 공유 파일을 통해 스스로 작업을 결정하고 잠금 메커니즘으로 충돌을 방지하려 했습니다. 그러나 이는 다음과 같은 문제에 직면했습니다:
-
병목 현상: 에이전트들이 잠금을 너무 오래 유지하거나 해제하지 않아 처리량이 급격히 감소했습니다.
-
취약성: 잠금을 보유한 채 에이전트가 실패하거나, 이미 보유한 잠금을 다시 획득하려 시도하는 등 시스템이 불안정했습니다.
-
위험 회피: 계층 구조가 없는 상태에서 에이전트들은 어려운 작업을 회피하고 작은 변경사항에만 집중하여 실질적인 진전 없이 작업이 정체되었습니다.
플래너 및 워커 모델을 통한 해결
이러한 문제를 해결하기 위해 역할 분담을 통한 계층 구조를 도입했습니다. 이 새로운 파이프라인은 다음과 같은 명확한 책임을 가집니다:
-
플래너 (Planners): 코드베이스를 지속적으로 탐색하고 작업을 생성합니다. 특정 영역에 대한 하위 플래너를 생성하여 계획 자체를 병렬화하고 재귀적으로 수행할 수 있습니다.
-
워커 (Workers): 할당된 작업에만 집중하여 완료하고 변경사항을 푸시합니다. 다른 워커와 조율하거나 전체 그림을 신경 쓰지 않습니다.
-
심판 에이전트 (Judge Agent): 각 주기(cycle)의 끝에 작업을 계속할지 여부를 결정합니다.
이 모델은 대부분의 조율 문제를 해결하고, 에이전트가 터널 비전에 갇히지 않고 매우 큰 프로젝트로 확장할 수 있게 했습니다.
성공적인 실험 사례
이 시스템은 다음과 같은 야심 찬 프로젝트에서 성공적인 결과를 보여주었습니다:
-
웹 브라우저 구축: 약 일주일 동안 1,000개 파일에 걸쳐 100만 줄 이상의 코드를 작성했습니다. 수백 명의 워커가 동시에 작동하며 최소한의 충돌로 동일한 브랜치에 푸시했습니다.
-
Solid to React 마이그레이션: Cursor 코드베이스에서 3주 이상 동안 +266K/-193K 편집을 통해 Solid를 React로 마이그레이션했습니다.
-
제품 개선: 장기 실행 에이전트가 Rust 버전을 통해 비디오 렌더링 속도를 25배 향상시키고, 커서 추적 및 자연스러운 스프링 전환을 통한 부드러운 확대/축소 및 패닝 기능을 추가했습니다.
핵심 학습 내용
-
모델 선택의 중요성: GPT-5.2 모델은 지시 사항 준수, 집중 유지, 드리프트 방지, 정확하고 완전한 구현 측면에서 장기 실행 자율 작업에 훨씬 더 적합했습니다. Opus 4.5는 조기에 작업을 중단하고 지름길을 택하는 경향이 있었습니다.
-
역할에 따른 모델 할당: 특정 코딩 훈련 모델(GPT-5.1-codex)보다 일반 모델(GPT-5.2)이 플래너 역할에 더 적합한 경우가 있었습니다. 이제는 보편적인 단일 모델 대신 각 역할에 가장 적합한 모델을 사용합니다.
-
복잡성 제거: 품질 관리 및 충돌 해결을 위한 통합자(integrator) 역할을 도입했으나, 오히려 병목 현상을 유발하여 제거했습니다. 워커들이 스스로 충돌을 처리할 수 있었기 때문입니다.
-
프롬프트 엔지니어링의 영향: 시스템 동작의 상당 부분은 에이전트에게 지시하는 프롬프트에 달려있습니다. 효과적인 조율, 비정상적인 행동 방지, 장기간 집중 유지를 위해 광범위한 실험이 필요했습니다.