Immersion in the GitHub Universe: Scaling Coding Agents to Mastery
이 논문은 600 만 개의 풀 리퀘스트를 처리하여 10 만 개의 검증된 소프트웨어 엔지니어링 데이터셋 'ScaleSWE'를 구축하고, 이를 기반으로 학습된 에이전트가 SWE Bench Verified 에서 64% 의 해결률을 기록하며 기존 모델 대비 약 3 배의 성능 향상을 보였음을 제시합니다.
원저자:Jiale Zhao, Guoxin Chen, Fanzhe Meng, Minghao Li, Jie Chen, Hui Xu, Yongshuai Sun, Wayne Xin Zhao, Ruihua Song, Yuan Zhang, Peng Wang, Cheng Chen, Jirong Wen, Kai Jia
지금까지 AI 코딩 도우미들은 훌륭한 코딩 실력을 보여주지만, 실제 복잡한 문제를 해결하는 능력은 아직 부족했습니다. 그 이유는 무엇일까요?
비유: imagine 하세요. 우리가 요리사를 가르치려고 할 때, '요리 이론서'만 100 권 주고 끝내면 어떨까요? 학생은 이론은 알지만, 실제 불을 켜고 재료를 다듬는 '현장 감각'은 전혀 없습니다.
현실: AI 코딩을 가르치기 위한 '실제 현장 데이터 (실제 GitHub 의 문제 해결 기록)'는 매우 드뭅니다. 기존 데이터들은 너무 단순하거나, 실제 실행 환경이 없어서 AI 가 "이게 맞나?"를 검증할 수 없었기 때문입니다.
🤖 2. 해결책: "스스로 교재를 만드는 3 인조 로봇 팀 (Scale-SWE)"
연구팀은 AI 가 스스로 600 만 개의 실제 코드 수정 기록 (Pull Request) 을 분석해서, AI 가 배울 수 있는 고품질 교재 10 만 개를 만들어냈습니다. 이를 위해 **3 명의 전문 로봇 (에이전트)**이 팀을 이루었습니다.
이 3 인조 팀의 역할은 다음과 같습니다:
환경 설정 로봇 (EBA): "실험실 세팅"
역할: 각 프로젝트마다 필요한 소프트웨어와 도구들을 설치하고, 실행 가능한 '가상 실험실 (Docker)'을 만듭니다.
비유: 요리사가 요리를 시작하기 전에, 필요한 냄비, 가스레인지, 식재료를 모두 준비하고 부엌을 깨끗하게 정리하는 일입니다. 프로젝트마다 부엌 환경이 다 다르기 때문에 이 로봇이 하나하나 맞춰줍니다.
시험 문제 제작 로봇 (UCA): "정답과 오답을 만드는 시험지"
역할: "이 코드가 고쳐지기 전에는 실패하고, 고쳐지면 통과해야 하는 테스트"를 자동으로 만듭니다.
비유: 요리사가 만든 요리가 '맛있으면 통과 (Pass)', '맛없으면 실패 (Fail)'하는 기준을 정하는 것입니다. AI 가 코드를 고쳤을 때 정말로 문제를 해결했는지, 아니면 다른 것을 망가뜨린 건지 확인하는 '시험지'를 만드는 거죠.
문제 설명 작성 로봇 (PSWA): "명확한 지시서 쓰기"
역할: 복잡한 코드 수정 기록을 보고, "여기서 어떤 문제가 있었는지"를 사람이 읽기 쉽게, 하지만 정답을 누설하지 않는 방식으로 설명합니다.
비유: 요리사가 "소금 좀 더 넣으세요"라고만 말하지 않고, "이 요리는 너무 싱겁고, 소금 1 스푼을 넣으면 완벽해집니다"라고 문제 상황만 정확히 묘사하는 것입니다. (정답인 '소금 1 스푼'을 미리 알려주면 안 되니까요.)
🚀 3. 결과: "AI 의 코딩 실력이 3 배로 뻥튀기!"
이렇게 만든 거대한 데이터 (Scale-SWE-Data) 로 AI 를 훈련시켰습니다.
기존 AI: 100 개의 문제 중 22 개만 해결 (22% 성공률).
훈련된 AI (Scale-SWE-Agent): 100 개의 문제 중 64 개를 해결 (64% 성공률).
비유: 코딩 실력이 '초급자' 수준에서 '숙련된 주니어 개발자' 수준으로 급성장한 것입니다. 기존에 없던 3 배나 더 똑똑해진 셈입니다.
💡 4. 왜 이것이 중요한가요?
기존에는 사람이 일일이 데이터를 정리하거나, AI 가 가상의 문제를 만들어냈는데, 이 연구는 **"실제 GitHub 에 있는 600 만 개의 실제 수정 기록"**을 활용했습니다.
핵심 메시지: AI 를 진짜 코딩 전문가로 만들려면, 실제 현장 (Real-world) 에서 일어난 복잡한 일들을 많이 경험하게 해야 한다는 것입니다.
이 연구는 AI 가 단순히 코드를 짜는 것을 넘어, 실제 소프트웨어 개발 과정 (환경 설정, 테스트, 버그 수정) 을 스스로 해결할 수 있는 능력을 키우는 새로운 길을 열었습니다.
🌟 한 줄 요약
"AI 코딩 도우미를 가르치기 위해, 3 명의 로봇 팀이 600 만 개의 실제 현장 기록을 분석해 10 만 개의 '실전 교재'를 만들었고, 그 결과 AI 의 코딩 실력이 3 배나 뛰어나게 성장했습니다!"
이제 AI 는 더 이상 책만 보고 공부하는 학생이 아니라, 실제 현장에서 부딪혀보며 성장하는 '현역 개발자'가 되어가고 있습니다.
1. 연구 배경 및 문제 정의 (Problem)
소프트웨어 공학 (SWE) 태스크를 수행하는 LLM 기반 코딩 에이전트의 성능 향상은 고품질 대규모 학습 데이터의 부족에 의해 근본적으로 제한받고 있습니다. 기존 방법론들은 다음과 같은 한계를 가집니다:
데이터 구축의 어려움: 실제 소프트웨어 환경 설정 (Environment Setup), 유닛 테스트 생성, 문제 정의 (Problem Statement) 작성은 복잡하며, 수동 큐레이션은 비용이 너무 많이 듭니다.
기존 데이터셋의 한계: 현재 존재하는 데이터셋들은 규모가 작거나, 단순한 규칙 기반/합성 데이터에 의존하여 실제 세계의 복잡성 (다양한 저장소, 복잡한 의존성, 실행 가능한 테스트 환경) 을 반영하지 못합니다.
환경 및 테스트 부재: 많은 실제 GitHub PR(풀 리퀘스트) 은 실행 가능한 환경이나 포괄적인 테스트 스위트가 없어 SWE 태스크로 변환하기 어렵습니다.
2. 제안 방법론: Scale-SWE (Methodology)
저자들은 Scale-SWE라는 자동화되고 샌드박스화된 멀티 에이전트 워크플로우를 제안하여 대규모 고품질 SWE 데이터셋을 구축했습니다. 이 시스템은 3 가지 전문 에이전트를 조율하여 600 만 개의 PR 을 처리합니다.
핵심 구성 요소 (3 대 에이전트)
환경 빌더 에이전트 (EBA, Environment Builder Agent):
목표: 타겟 리포지토리를 기반으로 재현 가능한 Docker 실행 환경을 자동 생성.
방식: setup.py, pyproject.toml 등을 분석하고 터미널 피드백을 기반으로 종속성 충돌을 해결하여 컨테이너를 구축합니다.
확장성 전략: 모든 PR 에 대해 환경을 새로 구축하는 것은 비효율적이므로, 리포지토리당 최대 10 개의 PR 에 대해 환경을 구축하고 나머지 PR 은 가장 가까운 (이력상 유사한) 기존 환경에서 테스트를 실행하여 재사용합니다.
유닛 테스트 생성 에이전트 (UCA, Unit-test Creator Agent):
목표: PR 메타데이터와 코드 컨텍스트를 기반으로 실행 가능한 테스트 스위트 생성.
방식: F2P (Fail-to-Pass): 버그가 있는 코드에서는 실패하고 수정 후 통과하는 테스트와, P2P (Pass-to-Pass): 기존에도 통과하던 테스트가 수정 후에도 계속 통과하는 테스트를 생성합니다.
특징: 정적 분석이 아닌, 샌드박스 환경 내에서 코드를 실행하고 결과를 관찰하며 테스트 로직을 반복적으로 수정 (Execute-Analyze-Refine) 하는 동적 방식을 사용합니다.
문제 진술 작성 에이전트 (PSWA, Problem Statement Writer Agent):
목표: PR 내용과 생성된 테스트를 기반으로 솔루션 유출 (Solution Leakage) 이 없는 자연스러운 문제 설명 생성.
방식: PR 설명만으로는 부족하거나 해답이 유출될 수 있으므로, UCA 가 생성한 실행 가능한 테스트 (F2P) 를 기반으로 에이전트가 버그의 증상과 기대 동작을 추론하여 문제 진술을 작성합니다. (Gemini3-Pro 모델 사용)
데이터 파이프라인 및 품질 보증
데이터 소스: PyPI 상위 15,000 개 패키지 및 SEART 검색 엔진을 통해 5,200 개의 고품질 Python 리포지토리 (약 23,000 개 후보) 를 선정.
필터링: LLM-as-a-Judge 를 사용하여 저품질 PR, 문서 변경만 포함된 PR, GPU 의존성 프로젝트 등을 제거.
보안 (Cheating Prevention): 에이전트가 git log 등을 통해 정답 (Ground Truth) 을 유출하는 것을 방지하기 위해, 환경 초기화 시 Git 히스토리 (태그, 리모트, 로그 등) 를 정제 (Sanitization) 하는 스크립트를 실행합니다.
검증: 생성된 100,000 개의 인스턴스는 F2P/P2P 테스트 통과 여부로 엄격하게 검증되었으며, 전문가 (Ph.D. 학생 4 명) 에 의한 수동 샘플링 검증 (94/100 유효) 을 거쳤습니다.
3. 주요 기여 (Key Contributions)
Scale-SWE-Data 구축: 현재까지 가장 큰 규모인 100,000 개의 검증된 SWE 인스턴스를 포함하는 데이터셋을 공개했습니다. 이는 기존 실세계 데이터셋 (SWE-rebench 등) 대비 저장소 다양성 (5,200 개 리포지토리) 과 작업 복잡성에서 압도적으로 우수합니다.
자동화 및 재현 가능한 워크플로우: 환경 설정, 테스트 생성, 문제 정의라는 세 가지 난제를 해결하는 멀티 에이전트 프레임워크를 제안하여 데이터 구축의 확장성을 입증했습니다.
Scale-SWE-Agent 개발: 25,000 개의 인스턴스에서 추출한 71,498 개의 고품질 에이전트 궤적 (Trajectories) 을 증류 (Distillation) 하여 Qwen3-30B-A3B-Instruct 모델을 미세 조정 (Fine-tuning) 했습니다.
4. 실험 결과 (Results)
성능 향상: SWE-Bench-Verified 벤치마크에서 Base 모델 (Qwen3-30B-A3B-Instruct) 의 해결률 22% 에서 64% 로 약 3 배 (42%p) 향상되었습니다.
경쟁 모델 대비 우위:
동급 모델 (Qwen3-Coder, GLM-4.7-Flash) 보다 월등히 높은 성능을 보였습니다.
파라미터 수가 훨씬 큰 모델 (SWE-Fixer-72B, SWE-RL 등) 보다도 우수한 성능을 기록했습니다.
이전 최첨단 오픈소스 방법 (KAT-Dev-32B, 62.4%) 을 상회했습니다.
데이터 품질 검증: SWE-Gym(실제 데이터) 과 SWE-Smith(합성 데이터) 와 동일한 파이프라인으로 학습했을 때, Scale-SWE(실제 데이터 기반) 가 가장 높은 성능 (64.0%) 을 보여주어 대규모 고품질 실세계 데이터의 중요성을 입증했습니다.
다양성: 생성된 데이터는 API 불일치, 논리 오류, 상태 동기화 등 10 가지 버그 유형에 걸쳐 균일하게 분포되어 있어, 합성 데이터가 가진 편향을 해소했습니다.
5. 의의 및 결론 (Significance)
데이터 구축의 패러다임 전환: 수동 큐레이션이나 단순 합성에 의존하던 기존 방식에서 벗어나, 자율 에이전트를 활용한 대규모 고품질 데이터 자동 구축의 가능성을 열었습니다.
실제 복잡성 반영: 5,200 개의 다양한 리포지토리에서 추출된 데이터는 실제 소프트웨어 공학의 복잡성 (의존성 관리, 환경 설정, 다양한 버그 유형) 을 가장 잘 반영하는 벤치마크를 제공합니다.
미래 방향: 본 연구는 Python 기반 데이터 구축을 성공적으로 증명했으며, 향후 Java, C++, Rust 등 다른 주요 프로그래밍 언어로 확장하여 언어에 구애받지 않는 범용 소프트웨어 엔지니어링 에이전트 개발의 기반을 마련했습니다.
이 논문은 **"데이터의 양과 질이 에이전트의 마스터리 (Mastery) 를 결정한다"**는 점을 강조하며, 고품질 실세계 데이터의 체계적인 확보가 LLM 기반 소프트웨어 공학 발전의 핵심 열쇠임을 입증했습니다.