AI 코딩 에이전트에게 여러 파일을 동시에 손보는 '리팩토링' 숙제를 냈더니, 최고 모델도 41.2%만 풀었다
AI 코딩 에이전트에게 여러 파일을 동시에 손보는 '리팩토링' 숙제를 냈더니, 최고 모델도 41.2%만 풀었다
기존 코딩 벤치마크는 점수가 포화 상태에 이르렀고, SWE-bench Verified는 풀리지 않은 문제 중 60%가 테스트 자체에 결함이 있다는 지적까지 받았다. 이 논문은 7개 프로그래밍 언어의 실제 커밋 170개를 전문가가 직접 검수해 만든 대규모 리팩토링 벤치마크 SWE-Bench ProMax를 공개한다. 최고 성능 모델도 해결률 41.2%에 그쳐, 여러 파일에 걸친 일관된 변경이 현재 AI 에이전트에게 여전히 큰 난제임을 보여준다.
METAL LAB 해설 도표
SWE-Bench ProMax 구축 및 평가 흐름
증거 상태측정 결과가 보고됨
- 1단계: 데이터 수집별 500개 이상, 오픈소스 라이선스, 7개 언어 중 하나가 80% 이상인 저장소에서 'refactor' 키워드가 담긴 2025년 1월 이후 커밋 29,782개를 수집
- 2단계: 환경 검증각 후보 커밋에 대해 Docker 환경을 구성하고 골드 패치를 적용해 테스트가 통과하는지 확인, 실패한 인스턴스는 제외
- 3단계: 전문가 큐레이션복잡도가 낮은 문항 필터링, 이슈 설명 처음부터 재작성, 지나치게 좁거나 넓은 테스트 제거해 최종 170개 확정
- 모델 평가GPT-5.2, Claude Sonnet 4.6, Gemini-3-Pro, GLM-5, Kimi-K2.5, Qwen3.5를 mini-swe-agent와 OpenHands로 평가, 최고 해결률 41.2%
- 실패 패턴 분석에이전트가 필요한 파일 수보다 적게 수정하고, 실패한 시도가 더 많은 상호작용 라운드를 소모하는 경향 확인
무엇을 했나
- 기존 벤치마크(SWE-bench Verified 등)는 문제 난이도가 낮고 테스트 품질에도 결함이 많아 실제 실력을 제대로 재지 못한다는 문제의식에서 출발했다.
- GitHub에서 별 500개 이상, 오픈소스 라이선스, 특정 언어 비중 80% 이상인 저장소의 'refactor' 커밋 2만9782개를 모은 뒤, 환경 검증과 전문가 재작성을 거쳐 170개만 최종 채택했다.
- 각 문제의 이슈 설명은 처음부터 새로 작성해 모호함을 없앴고, 테스트도 사람이 직접 검토해 지나치게 좁거나(정답을 오답 처리) 지나치게 넓은(요구되지 않은 조건까지 검사) 테스트를 제거했다.
- Python, Java, TypeScript, Go, C, C++, Rust 7개 언어로 구성했고, 문항당 평균 11.4개 파일, 261.6줄 코드를 수정해야 해 기존 벤치마크보다 훨씬 크다.
- Claude Sonnet 4.6, GPT-5.2, Gemini-3-Pro, GLM-5, Kimi-K2.5, Qwen3.5 등 6개 최신 모델을 mini-swe-agent와 OpenHands 두 에이전트 프레임워크로 평가한 결과, GPT-5.2가 41.2%로 가장 높았다.
| Benchmark | Execution Based | Repo Level | Multi Lingual | Refac- toring | Avg. >5 Files | Expert Curated |
|---|---|---|---|---|---|---|
| HumanEval [5] | ✓ | ✓ | ||||
| MBPP [2] | ✓ | ✓ | ||||
| LiveCodeBench [19] | ✓ | |||||
| SWE-bench [21] | ✓ | ✓ | ||||
| Multi-SWE-bench [49] | ✓ | ✓ | ✓ | ✓ | ||
| SWE-PolyBench [33] | ✓ | ✓ | ✓ | |||
| SWE-bench Pro [8] | ✓ | ✓ | ✓ | |||
| SWE-EVO [23] | ✓ | ✓ | ✓ | |||
| Terminal-Bench [26] | ✓ | ✓ | ✓ | |||
| RefactorBench [13] | ✓ | ✓ | ✓ | ✓ | ||
| SWE-Refactor [47] | ✓ | ✓ | ✓ | |||
| SWE-Bench ProMax (Ours) | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |

| Overall | Avg. Steps | Avg. Cost | Per-Language Resolve Rate | |||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Py | Java | TS | Go | C | C++ | Rust | ||||
| Mini-SWE-Agent | ||||||||||
| Proprietary | ||||||||||
| Gemini-3-Pro | 26.5 | 58.0 | $0.60 | 17.2 | 15.4 | 14.3 | 26.1 | 50.0 | 45.5 | 27.3 |
| Claude Sonnet 4.6 | 30.6 | 99.5 | $2.32 | 13.8 | 19.2 | 32.1 | 13.0 | 65.0 | 40.9 | 40.9 |
| GPT-5.2 | 21.8 | 25.2 | $0.19 | 17.2 | 15.4 | 21.4 | 13.0 | 45.0 | 31.8 | 13.6 |
| Open-weight | ||||||||||
| GLM-5 | 22.9 | 108.9 | $0.10 | 13.8 | 7.7 | 25.0 | 21.7 | 50.0 | 22.7 | 27.3 |
| Kimi-K2.5 | 26.5 | 85.3 | $0.37 | 17.2 | 23.1 | 21.4 | 17.4 | 60.0 | 31.8 | 22.7 |
| Qwen3.5 | 20.6 | 155.4 | $0.93 | 17.2 | 7.7 | 10.7 | 13.0 | 45.0 | 27.3 | 31.8 |
| OpenHands | ||||||||||
| Proprietary | ||||||||||
| Gemini-3-Pro | 19.4 | 51.2 | $1.49 | 13.8 | 19.2 | 0.0 | 8.7 | 45.0 | 36.4 | 22.7 |
| Claude Sonnet 4.6 | 38.8 | 117.9 | $4.77 | 17.2 | 30.8 | 53.6 | 26.1 | 50.0 | 36.4 | 63.6 |
| GPT-5.2 | 41.2 | 115.1 | $3.60 | 48.3 | 19.2 | 35.7 | 26.1 | 75.0 | 36.4 | 54.5 |
| Open-weight | ||||||||||
| GLM-5 | 36.5 | 114.2 | $0.24 | 20.7 | 34.6 | 28.6 | 34.8 | 65.0 | 45.5 | 36.4 |
| Kimi-K2.5 | 32.9 | 99.6 | $0.72 | 24.1 | 30.8 | 10.7 | 43.5 | 70.0 | 45.5 | 18.2 |
| Qwen3.5 | 36.5 | 141.2 | $0.78 | 37.9 | 26.9 | 17.9 | 39.1 | 65.0 | 54.5 | 22.7 |
| Language | Repository | License |
|---|---|---|
| C | betaflight/betaflight | GPL-3.0 |
| aviggiano/redis-roaring | MIT | |
| davidesantangelo/krep | BSD-2-Clause | |
| radareorg/radare2 | LGPL-3.0 | |
| CESNET/libyang | BSD-3-Clause | |
| arkq/bluez-alsa | MIT | |
| aws/s2n-tls | Apache-2.0 | |
| bitcoin-core/secp256k1 | MIT | |
| openssl/openssl | Apache-2.0 | |
| C++ | deskflow/deskflow | GPL-2.0 |
| ETLCPP/etl | MIT | |
| nasa/fprime | Apache-2.0 | |
| Icinga/icinga2 | GPL-3.0 | |
| LMMS/lmms | GPL-2.0 | |
| OpenOrienteering/mapper | GPL-3.0 | |
| WasmEdge/WasmEdge | Apache-2.0 | |
| bloomberg/blazingmq | Apache-2.0 | |
| biojppm/rapidyaml | MIT | |
| Go | cli/cli | MIT |
| go-gitea/gitea | MIT | |
| TecharoHQ/anubis | MIT | |
| restic/restic | BSD-2-Clause | |
| OpenListTeam/OpenList | AGPL-3.0 | |
| caddyserver/caddy | Apache-2.0 | |
| derailed/k9s | Apache-2.0 | |
| gitleaks/gitleaks | MIT | |
| gohugoio/hugo | Apache-2.0 | |
| grpc/grpc-go | Apache-2.0 | |
| istio/istio | Apache-2.0 | |
| jesseduffield/lazygit | MIT |
| Language | #Repos | #Inst. | Avg. #Files | Avg. LOC | Avg. #Non-test |
|---|---|---|---|---|---|
| C | 9 | 20 | 17.9 | 424.1 | 15.2 |
| C++ | 9 | 22 | 21.4 | 196.3 | 16.0 |
| Go | 16 | 23 | 16.0 | 227.4 | 9.4 |
| Java | 11 | 26 | 20.8 | 309.8 | 16.8 |
| Python | 18 | 29 | 10.6 | 299.8 | 7.0 |
| Rust | 5 | 22 | 14.5 | 284.8 | 11.0 |
| TypeScript | 2 | 28 | 11.9 | 122.6 | 7.5 |
| Overall | 70 | 170 | 15.9 | 261.6 | 11.4 |
| Lang. | Repository | Files | LOC | Refactoring summary |
|---|---|---|---|---|
| C++ | nasa/fprime | 244 | 559 | Unify header includes across framework |
| Java | plantuml/plantuml | 94 | 1,629 | Add hour-level time resolution to Gantt engine |
| C | betaflight/betaflight | 62 | 846 | Rename motor protocol configuration fields |
| Rust | tracel-ai/burn | 49 | 1,084 | Unify scalar arguments across tensor operations |
| Go | OpenListTeam/OpenList | 47 | 608 | Refactor upload stream buffering across drivers |
| Python | google/langextract | 30 | 1,960 | Centralize provider output-format handling |
| TS | ant-design/ant-design | 27 | 97 | Unify destroyOnHidden across components |
실제로 확인된 결과
- 6개 최신 모델을 두 가지 에이전트 프레임워크로 평가한 결과 최고 성능 모델인 GPT-5.2가 41.2% 해결률을 기록했고, 이는 SWE-bench Verified에서 프론티어 에이전트가 75% 이상을 기록하는 것과 비교해 훨씬 낮은 수치다.
- 오픈소스 모델인 GLM-5와 Qwen3.5는 OpenHands 환경에서 각각 36.5%를 기록해 GPT-5.2(41.2%), Claude Sonnet 4.6(38.8%)에 근접했으며, 비용은 각각 0.24달러로 Claude Sonnet 4.6의 4.77달러 대비 약 20분의 1 수준이었다.
- 에이전트가 수정한 파일 수를 골드 패치와 비교했을 때, 큰 규모의 패치일수록 에이전트가 필요한 파일 수보다 적게 수정하는 경향이 뚜렷했다(골드 패치는 90% 지점까지 약 20개 파일이 필요한 반면 에이전트는 약 10개 파일에서 90%에 도달).
- 실패한 시도는 성공한 시도보다 훨씬 많은 상호작용 라운드를 소모했으며, 이는 반복적인 편집-되돌리기 순환에 빠지는 경향과 관련 있었다.
- 언어별 성능 편차가 커서 Claude Sonnet 4.6은 TypeScript(53.6%)와 Rust(63.6%)에서, GPT-5.2는 Python(48.3%)과 C(75.0%)에서, GLM-5는 Java(34.6%)에서 가장 우수했고 특정 언어를 압도적으로 잘하는 단일 모델은 없었다.

어디에 쓸 수 있나
- AI 코딩 에이전트가 대규모 다중 파일 변경 작업(리팩토링)을 얼마나 잘 처리하는지 평가하는 표준 벤치마크로 활용할 수 있다.
- 에이전트 스캐폴드(도구 구성)나 프롬프트 전략이 다중 파일 조율 능력에 미치는 영향을 비교하는 연구에 쓸 수 있다.
- 모델 선택 시 해결률 대비 비용 효율(오픈소스 모델 vs 독점 모델)을 검토하는 참고 자료로 활용할 수 있다.
- 7개 언어별 특성(타입 시스템, 메모리 모델 등)이 에이전트 성능에 미치는 영향을 분석하는 데 활용할 수 있다.
한계와 남은 검증
- 벤치마크는 170개 인스턴스, 70개 저장소로 규모가 크지 않아 특정 언어(예: TypeScript는 저장소 2개에서 28개 인스턴스가 나옴)의 결과가 소수 프로젝트에 편중될 수 있다.
- 평가에 사용된 프레임워크는 mini-swe-agent와 OpenHands 두 가지로 한정돼, 다른 에이전트 아키텍처에서의 결과는 검증되지 않았다.
- 태스크 분류와 추론 스킬 라벨링(Appendix B)은 Claude Sonnet 4.6이 수행한 것으로, 분석 목적으로만 쓰였고 벤치마크 정답이나 평가 결과 자체에는 영향을 주지 않는다.
- 2025년 1월 이후 커밋만 대상으로 했기 때문에 최신 모델의 학습 데이터 오염 여부에 대한 완전한 보증은 되지 않는다.
왜 중요한가
리팩토링은 실제 개발 현장에서 가장 흔한 작업 중 하나이면서도 여러 파일을 동시에, 동작을 바꾸지 않으면서 고쳐야 하는 까다로운 작업이라 에이전트의 진짜 실력을 가늠하는 잣대가 될 수 있다. 이 벤치마크는 기존 벤치마크가 포화되고 신뢰도가 흔들리는 상황에서, 아직 풀리지 않은 도전 과제를 제공해 에이전트 개발 방향을 가늠하게 해준다.
이 논문의 용어
- SWE-bench · GitHub 이슈와 실제 코드 저장소를 기반으로 AI 코딩 에이전트를 평가하는 대표적인 벤치마크 시리즈
- 리팩토링 · 겉으로 드러나는 동작은 바꾸지 않으면서 코드 구조를 정리하는 작업
- resolve rate(해결률) · 에이전트가 수정한 코드가 준비된 테스트를 모두 통과한 문항의 비율
- 골드 패치 · 원래 개발자가 실제로 적용한 정답 코드 변경 내역
- 에이전트 스캐폴드 · 모델이 파일 탐색, 편집, 명령 실행 등을 반복하며 작업하도록 도와주는 실행 틀(mini-swe-agent, OpenHands 등)
최신 논문
- AI 코딩 에이전트에게 과학 소프트웨어 수리를 시켜보니, 절반도 제대로 못 고쳤다AI 코딩 에이전트에게 과학 소프트웨어 수리를 시켜보니, 절반도 제대로 못 고쳤다
- 논문 속 시연이 아니라 실제 서비스에 넣을 수 있는 희소 어텐션 만들기논문 속 시연이 아니라 실제 서비스에 넣을 수 있는 희소 어텐션 만들기
- 고객상담 AI 상담원이 규정을 '한 번의 행동'이 아니라 '전체 절차'로 지키게 만드는 방법고객상담 AI 상담원이 규정을 '한 번의 행동'이 아니라 '전체 절차'로 지키게 만드는 방법
- 로봇 팔에게 사람의 시연 없이 새 일 시키기, 말 잘하는 AI가 대신 가르친다로봇 팔에게 사람의 시연 없이 새 일 시키기, 말 잘하는 AI가 대신 가르친다
- 에이전트 학습용 환경을 새로 만드는 대신, 기존 환경에 '패치 부품'을 씌워 그 에이전트의 약점에 맞게 바꾸는 방법에이전트 학습용 환경을 새로 만드는 대신, 기존 환경에 '패치 부품'을 씌워 그 에이전트의 약점에 맞게 바꾸는 방법
- AI 비서가 뭘 기억할지 결정할 때, '물어봐야 할 순간'에 되레 세상에 확인하고 넘어간다AI 비서가 뭘 기억할지 결정할 때, '물어봐야 할 순간'에 되레 세상에 확인하고 넘어간다
- 단어 뜻이 언제 어떻게 변했는지, 문법 구조까지 뜯어서 보여주는 오픈소스 도구단어 뜻이 언제 어떻게 변했는지, 문법 구조까지 뜯어서 보여주는 오픈소스 도구
- AI로 주식 뉴스 요약해보니, 최신 검색보강 기법보다 오히려 단순 요약 방식이 더 정확했다AI로 주식 뉴스 요약해보니, 최신 검색보강 기법보다 오히려 단순 요약 방식이 더 정확했다
METAL LAB 최신 기사
그림 출처: Yuling Shi et al., arXiv:2608.09802, CC BY 4.0