RPG: A Repository Planning Graph for Unified and Scalable Codebase Generation
이 논문은 대규모 언어 모델이 고수준 명세에서 완전한 코드 저장소를 생성할 수 있도록 자연어 기반 계획의 한계를 극복하기 위해 구조화된 '저장소 계획 그래프 (RPG)'를 도입하고, 이를 기반으로 테스트 검증을 포함한 3 단계 프레임워크인 ZeroRepo 를 제안하여 기존 최강 베이스라인 대비 훨씬 더 크고 정확한 코드를 생성하는 성과를 입증합니다.
원저자:Jane Luo, Xin Zhang, Steven Liu, Jie Wu, Jianfeng Liu, Yiming Huang, Yangyu Huang, Chengyu Yin, Ying Xin, Yuefeng Zhan, Hao Sun, Qi Chen, Scarlett Li, Mao Yang
지금까지의 AI(대형 언어 모델) 들은 벽돌 하나나 방 하나를 만드는 데는 매우 능숙했습니다. 하지만 "이제 전체 아파트 단지를 지어줘"라고 요청하면, AI 는 종종 혼란에 빠집니다.
기존 방식의 문제점: AI 는 자연어 (말) 로 계획을 세웁니다. "1 층은 식당, 2 층은 사무실"이라고 말로만 지시하면, AI 는 시간이 지나면 "아, 1 층에 식당이 있었지?"라고 잊어버리거나, "식당과 사무실의 배관 연결이 안 되네?" 같은 실수를 합니다. 말은 유연하지만, 구체적이고 장기적인 계획을 유지하기엔 너무 모호하고 흐릿합니다.
🗺️ 해결책: RPG(저장소 계획 그래프)
이 논문은 AI 가 자연어 대신 **정교한 건축 도면 **(그래프)을 보며 일하게 합니다. 이것이 바로 RPG입니다.
RPG 란 무엇인가?
단순히 "이게 필요해"라고 말하는 게 아니라, 어떤 파일이 어디에 있고, 어떤 데이터가 어떻게 흐르는지, 어떤 기능이 어떤 기능과 연결되는지를 하나의 거대한 **지도 **(그래프)로 그려냅니다.
비유: 기존 방식이 "내게 맛있는 피자를 만들어줘"라고 말로만 요청하는 거라면, RPG 는 피자 공장의 설계도, 재료 이동 경로, 오븐 배치도, 그리고 조리 순서를 모두 포함한 3D 시뮬레이션을 보여주는 것과 같습니다.
🚀 ZeroRepo: 이 지도를 따라가는 AI 건축팀
이론만 있는 게 아니라, 이 RPG 지도를 실제로 활용하는 ZeroRepo라는 시스템을 만들었습니다. 이 시스템은 3 단계로 작동합니다.
**기획 단계 **(Proposal)
사용자의 "머신러닝 라이브러리를 만들어줘"라는 요청을 듣고, 거대한 지식 베이스에서 필요한 기능들을 골라 **기능별 나무 **(Feature Tree)를 만듭니다.
비유: 건축주가 "아파트를 지어줘"라고 하면, 건축가는 "주거용, 상업용, 주차장" 등 필요한 구역을 먼저 대략적으로 나누는 단계입니다.
**구체화 단계 **(Implementation)
이제 이 기능을 실제 파일 구조로 바꿉니다. "데이터를 불러오는 기능"은 load_data.py 파일에, "학습 기능"은 train.py 파일에 넣는 식입니다.
데이터 흐름을 명시합니다. "데이터가 불러와진 뒤에는 전처리 과정을 거쳐야 하고, 그다음 학습 모델로 가야 한다"는 연결 고리를 그래프에 그립니다.
비유: 이제 대략적인 구역 나누기를 바탕으로, 각 방의 위치, 배관, 전선, 문이 어디에 있는지가 적힌 상세 도면을 그리는 단계입니다.
**시공 단계 **(Code Generation)
AI 는 이 **도면 **(RPG)을 따라가며 코드를 작성합니다. 중요한 점은 순서입니다. 배관이 먼저 깔려야 그 위에 벽을 쌓을 수 있듯이, AI 는 의존 관계가 있는 코드를 먼저 작성하고, 그다음에 그걸 사용하는 코드를 씁니다.
**테스트 **(Test)를 통해 검증합니다. 코드를 짤 때마다 "이게 제대로 작동하나요?"라는 테스트를 돌려서, 실패하면 고치고 통과해야만 다음 단계로 넘어갑니다.
비유: 건축가가 도면을 보며 벽돌을 쌓고, 배관을 연결한 뒤, 물이 잘 나오는지 테스트해보는 과정입니다.
🏆 결과: 왜 이 방법이 더 좋을까요?
이론과 실험을 통해 ZeroRepo는 기존 최고의 AI 들 (Claude Code 등) 보다 압도적으로 좋은 결과를 냈습니다.
규모의 차이: 기존 AI 들이 만든 코드는 100 줄 정도였다면, ZeroRepo 는 **수만 줄 **(36,000 줄 이상)의 방대한 코드를 만들었습니다. 이는 약 68 배 더 큰 프로젝트입니다.
정확도: 코드가 제대로 작동하는 비율이 **약 70%**로, 기존 모델보다 훨씬 높았습니다.
유연성: 단순히 복사하는 게 아니라, 새로운 기능도 창의적으로 추가했습니다.
💡 핵심 요약 (한 줄 정리)
**"AI 가 코드를 짤 때, 막연한 말 **(자연어)
이 연구는 AI 가 이제 단순한 '코드 작성기'를 넘어, **복잡한 소프트웨어 시스템을 설계하고 구축할 수 있는 진정한 '엔지니어'**로 성장할 수 있는 길을 열었습니다. 마치 AI 가 더 이상 막연한 말로만 집을 짓다가, 이제는 정밀한 설계도를 보며 거대한 도시를 건설할 수 있게 된 것과 같습니다.
1. 문제 정의 (Problem)
기존의 LLM 기반 코드 생성 모델들은 개별 함수나 단일 파일 수준에서는 뛰어난 성능을 보이지만, 전체 소프트웨어 저장소 (Repository) 를 처음부터 생성하는 데에는 근본적인 한계가 있습니다.
계획의 복잡성: 저장소 생성은 '무엇을 만들 것인가 (Proposal Stage)'와 '어떻게 구현할 것인가 (Implementation Stage)'라는 두 단계의 계획을 필요로 합니다.
자연어의 한계: 기존 접근법 (Multi-agent, Workflow, Terminal agents 등) 은 자연어를 중간 계획 수단으로 사용합니다. 그러나 자연어는 모호성이 있어 의존성 추적이 어렵고, 장기적인 계획 (Long-horizon planning) 과정에서 일관성이 떨어지며, 구성 요소 간의 정합성이 깨지기 쉽습니다.
결과: 이로 인해 기능이 불완전하거나 중복되고, 의존성 및 데이터 흐름이 일관되지 않은 파편화된 코드가 생성됩니다.
2. 방법론 (Methodology)
저자들은 자연어 대신 구조화된 그래프를 계획의 핵심 수단으로 도입했습니다.
2.1 Repository Planning Graph (RPG)
RPG 는 제안 (Proposal) 과 구현 (Implementation) 단계를 통합한 지속 가능하고 진화 가능한 그래프 표현입니다.
노드 (Nodes): 계층적 기능 (모듈, 컴포넌트, 함수/클래스) 을 인코딩합니다. 루트 노드는 디렉토리, 중간 노드는 파일, 리프 노드는 구체적인 함수/클래스에 대응됩니다.
엣지 (Edges): 명시적인 의존성과 데이터 흐름을 정의합니다.
모듈 간 엣지: 데이터 흐름 (예: 데이터 로딩 → 알고리즘 → 평가) 을 표현.
모듈 내 엣지: 파일 간의 실행 순서와 인터페이스 의존성을 표현.
특징: 자연어의 모호성을 제거하고, 토폴로지적 순서 (Topological Order) 를 통해 전역 의미와 로컬 구현 간의 일관성을 보장합니다.
2.2 ZeroRepo 프레임워크
RPG 를 기반으로 한 3 단계 그래프 주도 (Graph-driven) 프레임워크입니다.
제안 수준 구축 (Proposal-Level Construction):
사용자의 고수준 요구사항을 **기능 그래프 (Functionality Graph)**로 변환합니다.
EpiCoder Feature Tree(150 만 개의 소프트웨어 기능 지식베이스) 를 활용하여 '탐색 - 활용 (Explore-Exploit)' 전략으로 저장소에 적합한 기능 서브트리를 선택하고, 이를 모듈화된 기능 그래프로 재구성합니다.
구현 수준 구축 (Implementation-Level Construction):
기능 그래프를 RPG로 확장합니다.
폴더 구조 인코딩 (디렉토리 매핑), 파일 구조 인코딩 (파일 할당), 데이터 흐름 및 함수 인코딩 (인터페이스, 기본 클래스, 구체적인 함수 정의) 을 수행하여 실행 가능한 코드 스켈레톤을 생성합니다.
그래프 유도 코드 생성 (Graph-Guided Code Generation):
RPG 를 토폴로지 순서로 순회하며 코드를 생성합니다.
테스트 주도 개발 (TDD): 각 함수/클래스에 대해 테스트를 먼저 생성하고, 실패 시 로컬라이제이션 (Graph-guided Localization) 및 편집을 통해 수정합니다.
로컬라이제이션: 그래프 구조를 활용하여 버그나 수정이 필요한 코드를 빠르게 찾아냅니다 (자연어 검색보다 효율적).
3. 주요 기여 (Key Contributions)
RPG 도입: 제안 및 구현 계획을 통합한 최초의 구조화된 그래프 표현을 제안하여, 기능, 파일 구조, 데이터 흐름, 함수 설계를 일관되게 인코딩합니다.
ZeroRepo 프레임워크 개발: RPG 를 통해 저장소를 계획하고, 테스트 검증을 거쳐 코드를 생성하는 그래프 기반 시스템을 구현했습니다.
RepoCraft 벤치마크 구축: 6 개의 실제 프로젝트 (scikit-learn, pandas, sympy 등) 와 1,052 개의 태스크로 구성된 새로운 평가 벤치마크를 구축하여 저장소 생성 능력을 평가했습니다.
성능 입증: 기존 최강의 베이스라인 (Claude Code 등) 을 크게 상회하는 성능을 입증하고, RPG 가 복잡한 의존성 모델링과 확장성 (Scalability) 에 미치는 영향을 분석했습니다.
4. 실험 결과 (Results)
RepoCraft 벤치마크에서의 ZeroRepo 성능은 다음과 같습니다.
기능 커버리지 (Coverage):81.5% (Claude Code 대비 27.3%p 향상).
테스트 정확도 (Pass Rate):69.7% (Claude Code 대비 35.8%p 향상).
코드 규모 (Scale):
평균 **36,000 줄의 코드 (LOC)**와 445,000 개의 토큰을 생성.
이는 가장 강력한 베이스라인 (Claude Code) 대비 약 3.9 배, 다른 베이스라인 대비 약 68 배 더 큰 규모입니다.
확장성 (Scalability):
자연어 기반 모델들은 10~20 회 반복 후 성능이 정체되지만, ZeroRepo 는 **거의 선형 (Near-linear)**으로 기능 수와 코드 크기가 증가하여 30 회 반복 후에도 지속적으로 성장합니다.
RPG 는 컨텍스트 제한을 극복하고 장기적인 일관성을 유지합니다.
로컬라이제이션 효율성: 그래프 기반 탐색은 자연어 기반 탐색 대비 30~50% 적은 단계로 코드를 찾아내어 디버깅 및 수정 효율을 크게 높입니다.
5. 의의 및 결론 (Significance)
이 논문은 소프트웨어 공학 분야에서 LLM 의 역할을 '단일 파일 생성'에서 **'전체 시스템 설계 및 구현'**으로 확장하는 중요한 전환점을 제시합니다.
구조적 계획의 중요성: 자연어의 모호성을 극복하기 위해 명시적이고 기계가 해석 가능한 구조 (RPG) 를 도입함으로써, 대규모 저장소 생성의 일관성과 정확성을 획기적으로 개선했습니다.
확장 가능한 에이전트: RPG 는 에이전트가 복잡한 의존성을 이해하고, 장기적인 개발 목표에 부합하는 코드를 점진적으로 확장할 수 있는 기반을 제공합니다.
실용적 가치: 생성된 코드가 실제 오픈소스 프로젝트 (scikit-learn 등) 와 유사한 규모와 복잡성을 가지며, 테스트를 통과하는 높은 정확도를 보여줌으로써 자동화된 소프트웨어 개발의 실용성을 입증했습니다.
결론적으로, ZeroRepo와 RPG는 대규모 코드베이스 생성을 위한 새로운 패러다임을 제시하며, 향후 자동화된 소프트웨어 엔지니어링 (SWE) 분야에서 그래프 기반 표현이 핵심 기술이 될 것임을 시사합니다.