컴백부터 K-뷰티까지 — K-컬쳐의 모든 것을 메일로 받아보세요메일로 받아보기

METAL MEDIA

AI가 요구사항 문장만 보고 소프트웨어 저장소 전체를 처음부터 짓게 하려면, 설계도를 한 번 그리고 끝내는 게 아니라 코딩하면서 계속 고쳐야 한다는 연구

arXiv:2608.198542026-08-19

Repo0: Design-Driven Zero-to-All Code Generation

AI가 요구사항 문장만 보고 소프트웨어 저장소 전체를 처음부터 짓게 하려면, 설계도를 한 번 그리고 끝내는 게 아니라 코딩하면서 계속 고쳐야 한다는 연구

기존 코드 생성 AI들은 파일 구조나 모듈 경계가 미리 정해진 상태에서 코드를 채워 넣는 데는 강했지만, 자연어 요구사항만 주어졌을 때 저장소 구조 자체를 설계하는 일에는 취약했다. Repo0은 요구사항과 구현 컴포넌트를 각각 그래프로 표현하고, 두 그래프를 연결한 채로 코딩이 진행되는 동안에도 구조를 쪼개고 합치고 고치도록 만든 프레임워크다. 여섯 개의 실제 오픈소스 저장소를 재현하는 실험에서 기존 최강 baseline보다 기능 커버리지 최대 20.08%p, 테스트 통과율 최대 29.74%p를 더 높였다.

METAL MEDIA 해설 도표

AI가 요구사항 문장만 보고 소프트웨어 저장소 전체를 처음부터 짓게 하려면, 설계도를 한 번 그리고 끝내는 게 아니라 코딩하면서 계속 고쳐야 한다는 연구

  1. 01기존 방식(RPG 등)은 요구사항을 한 번 분석해 저장소 설계도를 만들고 그 설계도대로 코드를 찍어내는 방식이었는데, 이는 실제 개발과 다르다. 코드를 짜다 보면 처음 설계한 모듈 경계가 틀렸다는 게 뒤늦게 드러나기 때문이다.
  2. 02Repo0은 요구사항 단위들의 관계를 나타내는 그래프(requirement-level DAG)와 실제 구현 모듈들의 의존관계를 나타내는 그래프(component-level DAG)를 따로 만들고 두 그래프를 연결(alignment)해서, 요구사항 쪽은 비교적 고정한 채 구현 쪽 구조만 계속 진화시킨다.
  3. 03응집도(한 모듈이 서로 관련 있는 역할만 묶고 있는지)와 결합도(두 모듈이 겹치는 책임을 갖고 있는지)라는 지표를 기준으로, 모듈을 쪼개기(split), 합치기(merge), 설명만 고치기(revise), 그대로 두기(save)라는 네 가지 행동을 반복하다가 더 이상 바꿀 게 없으면 구조를 확정한다.
  4. 04구조가 확정된 뒤에는 테스트부터 만들고 코드를 채우는 방식(TDD)으로 실제 코드를 생성하며, 테스트가 실패하면 해당 부분만 국소적으로 수정한다.
  5. 05scikit-learn, pandas, sympy, statsmodels, requests, django를 각색한 여섯 개 벤치마크 저장소에서 GPT-5 mini와 DeepSeek V3.2 두 모델로 실험한 결과, 모든 설정에서 기능 커버리지와 테스트 통과율이 가장 높았다.
METAL MEDIA이 원문을 바탕으로 재구성한 해설 도표이며, 논문 저자의 원문 figure가 아닙니다.

무엇을 했나

  1. 기존 방식(RPG 등)은 요구사항을 한 번 분석해 저장소 설계도를 만들고 그 설계도대로 코드를 찍어내는 방식이었는데, 이는 실제 개발과 다르다. 코드를 짜다 보면 처음 설계한 모듈 경계가 틀렸다는 게 뒤늦게 드러나기 때문이다.
  2. Repo0은 요구사항 단위들의 관계를 나타내는 그래프(requirement-level DAG)와 실제 구현 모듈들의 의존관계를 나타내는 그래프(component-level DAG)를 따로 만들고 두 그래프를 연결(alignment)해서, 요구사항 쪽은 비교적 고정한 채 구현 쪽 구조만 계속 진화시킨다.
  3. 응집도(한 모듈이 서로 관련 있는 역할만 묶고 있는지)와 결합도(두 모듈이 겹치는 책임을 갖고 있는지)라는 지표를 기준으로, 모듈을 쪼개기(split), 합치기(merge), 설명만 고치기(revise), 그대로 두기(save)라는 네 가지 행동을 반복하다가 더 이상 바꿀 게 없으면 구조를 확정한다.
  4. 구조가 확정된 뒤에는 테스트부터 만들고 코드를 채우는 방식(TDD)으로 실제 코드를 생성하며, 테스트가 실패하면 해당 부분만 국소적으로 수정한다.
  5. scikit-learn, pandas, sympy, statsmodels, requests, django를 각색한 여섯 개 벤치마크 저장소에서 GPT-5 mini와 DeepSeek V3.2 두 모델로 실험한 결과, 모든 설정에서 기능 커버리지와 테스트 통과율이 가장 높았다.
Fig. 1: Previous methods treat the graph as a fixed planning artifact, whereas Repo0 continuously evolves repository architecture during generation.
Fig. 1: Previous methods treat the graph as a fixed planning artifact, whereas Repo0 continuously evolves repository architecture during generation.
TABLE I: Overview of the six repositories and their paraphrased counterparts (Para. Name) in RepoCraft. #Files denotes the total source files, LOC the effective lines of code, and Task Counts the evaluation tasks.
Real RepoPara. Name#FilesLOCTask Counts
scikit-learnMLKit-Py18565,972236
pandasTableKit217106,447175
sympySymbolicMath699218,924192
statsmodelsStatModeler27183,325234
requestsHttpEasy172,79350
djangoPyWebEngine681109,457165
Fig. 2: Overview of the continuous decision-driven structural evolution framework.
Fig. 2: Overview of the continuous decision-driven structural evolution framework.
TABLE II: RQ1 main results on three RepoCraft repositories. For each repository, we report Functionality Coverage (Cov.), Functionality Novelty (Nov.), and Pass./Vot., which combines Pass Rate and Voting Rate. GPT-5 mini marks the highest value among methods under GPT-5 mini, and DeepSeek V3.2 marks the highest value among methods under DeepSeek V3.2.
ModelMethodrequestsstatsmodelsdjango
Cov. (%)Nov. (%)Pass./Vot. (%)Cov. (%)Nov. (%)Pass./Vot. (%)Cov. (%)Nov. (%)Pass./Vot. (%)
GPT-5 minimini-SWE-agent68.182.634.11 / 27.4018.189.090.00 / 31.8647.926.9637.04 / 44.44
Paper2Code95.507.2024.66 / 24.6644.3224.134.42 / 30.0966.6715.3030.04 / 78.60
RPG90.9113.7031.51 / 95.8970.4013.8077.90 / 92.0060.4211.5847.33 / 74.07
Repo0100.0018.2050.98 / 100.0080.6811.4885.51 / 98.6580.5013.5974.36 / 97.12
DeepSeek V3.2mini-SWE-agent86.3615.3421.92 / 47.9559.0923.392.65 / 53.9833.339.3810.70 / 47.33
Paper2Code90.9111.804.11 / 56.1614.775.0049.56 / 61.9562.5043.467.82 / 53.50
RPG95.459.2361.64 / 90.4164.7013.7039.29 / 73.5768.7526.5046.50 / 69.55
Repo0100.0024.7778.08 / 100.0078.4114.1069.03 / 86.4679.1714.2974.07 / 93.83
Human DeveloperGold Project100.0094.12 / 100.0010094.15 / 100.00100.0096.34 / 100.00
Fig. 3: Illustrative construction of the initial architectural state.
Fig. 3: Illustrative construction of the initial architectural state.
TABLE III: RQ2 ablation results on requests, statsmodels, and django.
RepositorySettingCov. (%)Nov. (%)Pass./Vot. (%)
requestsRepo0100.0018.2050.98 / 100.00
w/o Requirement Context95.45 (-4.55)9.05 (-9.15)45.39 (-5.59) / 87.86 (-12.14)
w/o Component-Graph Ordering100.00 (0.00)12.85 (-5.35)50.98 (0.00) / 100.00 (0.00)
w/o Dual-DAG95.45 (-4.55)9.14 (-9.06)48.72 (-2.26) / 87.86 (-12.14)
w/o Structural Evolution94.32 (-5.68)8.94 (-9.26)42.51 (-8.47) / 82.14 (-17.86)
statsmodelsRepo080.6811.4885.51 / 98.65
w/o Requirement Context67.92 (-12.76)11.69 (+0.21)85.51 (0.00) / 98.65 (0.00)
w/o Component-Graph Ordering80.68 (0.00)15.57 (+4.09)55.51 (-30.00) / 88.65 (-10.00)
w/o Dual-DAG78.55 (-2.13)14.66 (+3.18)85.51 (0.00) / 95.32 (-3.33)
w/o Structural Evolution75.35 (-5.33)13.50 (+2.02)73.51 (-12.00) / 93.65 (-5.00)
djangoRepo087.5013.5974.36 / 100.00
w/o Requirement Context78.29 (-9.21)12.10 (-1.49)64.36 (-10.00) / 100.00 (0.00)
w/o Component-Graph Ordering83.56 (-3.94)11.58 (-2.01)67.70 (-6.66) / 100.00 (0.00)
w/o Dual-DAG82.24 (-5.26)12.40 (-1.19)64.36 (-10.00) / 93.33 (-6.67)
w/o Structural Evolution81.58 (-5.92)10.94 (-2.65)61.03 (-13.33) / 91.66 (-8.34)
Fig. 4: RQ3 structural-convergence analysis on statsmodels with GPT-5 mini.
Fig. 4: RQ3 structural-convergence analysis on statsmodels with GPT-5 mini.

왜 중요한가

저장소 통째로 만들어주는 코딩 에이전트가 실제로 쓸모 있으려면 파일을 나눠 넣는 감각, 즉 소프트웨어 설계 능력이 필요한데, 이 연구는 그 설계 자체를 코딩 과정에서 계속 다시 그려야 한다는 것을 실험으로 보여준다. 개발 도구를 만드는 사람이나 AI 에이전트로 프로젝트 초기 구조를 뽑아내려는 사람에게, 설계를 한 번에 끝내는 접근이 왜 한계가 있는지에 대한 근거를 제공한다.

Fig. 5: Action distributions of different models across the six RepoCraft repositories during structural evolution.
Fig. 5: Action distributions of different models across the six RepoCraft repositories during structural evolution.

이 논문의 용어

  • Dual-DAG · 요구사항끼리의 관계를 나타내는 그래프와 구현 모듈끼리의 의존관계를 나타내는 그래프, 두 개를 짝지어 함께 관리하는 구조
  • DAG(방향 비순환 그래프) · 화살표로 연결되지만 한 바퀴 돌아 제자리로 돌아오지 않는 그래프 구조
  • 응집도(Cohesion) · 한 모듈 안에 묶인 요구사항들이 서로 얼마나 관련 있는지를 나타내는 지표, 낮으면 잡다한 기능이 섞여 있다는 뜻
  • 결합도(Coupling) · 두 모듈이 담당하는 요구사항이 얼마나 겹치는지를 나타내는 지표, 높으면 두 모듈을 합쳐야 할 후보
  • TDD(테스트 주도 개발) · 실제 구현 코드를 짜기 전에 먼저 테스트 코드를 만들어 두고, 그 테스트를 통과하도록 코드를 채워나가는 개발 방식
  • Functionality Coverage / Pass Rate · 생성된 저장소가 원본이 요구한 기능을 얼마나 갖췄는지, 그리고 정답 테스트를 얼마나 통과하는지를 재는 지표
Fig. 6: Case study of Repo0 on StatModeler. The figure shows how requirements are decomposed, aligned with components, updated through structural actions, and materialized into files.
Fig. 6: Case study of Repo0 on StatModeler. The figure shows how requirements are decomposed, aligned with components, updated through structural actions, and materialized into files.

저자 · Silin Chen

arXiv에서 원문 보기

최신 논문

논문 전체 보기 →

METAL MEDIA 최신 기사

그림 출처: Silin Chen et al., arXiv:2608.19854, CC BY 4.0