Digest: Aider 프로젝트가 운영하는 실용적 코드 편집(code editing) 커뮤니티 벤치마크. HumanEval·MBPP 등 기존 벤치마크가 코드를 처음부터 생성(generation from scratch)하는 능력을 측정하는 반면, Aider Polyglot은 기존 코드 파일을 수정하여 실패하는 테스트를 통과시키는 편집 능력을 12개 이상의 프로그래밍 언어에 걸쳐 평가한다. Exercism.io 코딩 연습 문제를 edit format으로 변환하여 약 133~225개 exercise를 구성하며, 실제 개발 워크플로우에서의 AI 코딩 어시스턴트 유용성을 직접 측정하는 것이 핵심이다.
% of exercises passing all tests (first attempt + retry)
서브 벤치마크
Code Editing (primary), Code Refactoring
데이터셋 구성
규모 및 분할
구분
내용
총 exercise 수
~225개 (전체 언어 합산), primary 벤치마크 ~133개
분할 방식
언어별 exercise 세트 (train/test 구분 없음, 전수 평가)
출처
Exercism.io 연습 문제를 edit task 형식으로 변환
편집 형식
”whole file” 또는 “diff” format (모델 역량에 따라 선택)
Feature / Column 구성
Feature
설명
예시
exercise_name
Exercism 문제 이름
bob, resistor-color
language
프로그래밍 언어
python, javascript
existing_code
편집 대상 기존 코드 파일
부분 구현된 bob.py
test_file
통과해야 할 테스트 파일
bob_test.py
instruction
자연어 편집 지시문
”Handle all response cases”
expected_edit
정답 편집 결과 (평가 기준)
수정된 완성 코드
result
테스트 통과 여부
pass / fail
언어별 분포
언어
비고
Python
핵심 언어, 가장 많은 exercise
JavaScript / TypeScript
웹 개발 중심
Java / C#
정적 타입 OOP 언어
C++ / Go / Rust
시스템 프로그래밍 언어
PHP / Ruby
스크립트 언어
Swift / Kotlin
모바일 개발 언어
실제 데이터 예시
예시 1: Python — bob exercise
[Input]
- existing_code: bob.py (부분 구현, 빈 response 함수)
- test_file: bob_test.py (shouting, question, silence 등 케이스)
- instruction: "Bob responds based on the input tone.
Implement all response cases."
[Expected Edit]
- bob.py의 response() 함수를 수정하여
질문/고함/침묵/기본 응답 분기를 올바르게 처리
[Metric] → test 전체 통과 시 pass
예시 2: JavaScript — resistor-color exercise
[Input]
- existing_code: resistor-color.js (빈 stub 함수)
- test_file: resistor-color.spec.js
- instruction: "Implement color code lookup for resistor bands"
[Expected Edit]
- colorCode() 함수에 색상→숫자 매핑 로직 구현
- COLORS 배열 export 추가
[Metric] → 모든 색상 매핑 테스트 통과 시 pass
예시 3: Go — leap exercise
[Input]
- existing_code: leap.go (IsLeapYear 함수 skeleton)
- test_file: leap_test.go
- instruction: "Determine if a given year is a leap year"
[Expected Edit]
- 4/100/400 규칙에 따른 윤년 판별 로직 구현
[Metric] → 경계값 포함 전체 테스트 통과 시 pass
왜 이 벤치마크가 필요한가?
기존 벤치마크의 한계
HumanEval / MBPP: 코드를 처음부터 생성하는 능력만 측정 — 실제 개발에서는 기존 코드를 수정하는 작업이 압도적으로 많음
단일 언어 편향: 대부분 Python 중심 → 다언어 코딩 역량을 반영하지 못함
생성 vs 편집 격차: 코드 생성 벤치마크에서 높은 점수를 받는 모델이 실제 편집 작업에서는 성능이 크게 다를 수 있음
Aider Polyglot의 차별성
편집 중심 평가: 기존 코드 파일 + 실패하는 테스트 → 수정 후 통과라는 실제 개발 워크플로우 반영
다언어 평가: 12개 이상 언어로 polyglot 코딩 능력 직접 측정
“Lazy” rate 추적: 모델이 전체 코드 출력을 거부하고 ... 등으로 생략하는 비율 별도 측정
비용 효율성: exercise당 비용(cost per exercise)도 함께 보고
평가 방법
flowchart TD
A["Exercism.io 연습 문제 수집"] --> B["Edit Task로 변환"]
B --> C["기존 코드 + 테스트 파일 + 지시문 구성"]
C --> D["LLM에 편집 요청"]
D --> E{"Edit Format 선택"}
E -->|"Whole File"| F["전체 파일 출력"]
E -->|"Diff Format"| G["차이점만 출력"]
F --> H["편집된 코드 적용"]
G --> H
H --> I["테스트 실행"]
I --> J{"전체 통과?"}
J -->|"Pass"| K["✓ 성공 (1점)"]
J -->|"Fail (1st attempt)"| L["오류 메시지와 함께 재시도"]
L --> M["2차 편집 시도"]
M --> N["테스트 재실행"]
N --> O{"전체 통과?"}
O -->|"Pass"| P["✓ 성공 (retry)"]
O -->|"Fail"| Q["✗ 실패 (0점)"]
style K fill:#2d6,stroke:#333
style P fill:#2d6,stroke:#333
style Q fill:#d33,stroke:#333
주요 결과 (2024)
Code Editing Leaderboard
모델
Polyglot 정확도
비고
Claude 3.5 Sonnet
~73%
최고 성능, diff format 우수
GPT-4o
~68%
안정적 성능
DeepSeek-V2.5
~65%
오픈소스 중 강세
Llama-3.1-405B
~52%
대형 오픈소스
추가 측정 지표
지표
설명
Pass rate (1st attempt)
첫 시도에서 테스트 통과 비율
Pass rate (with retry)
재시도 포함 최종 통과 비율
Lazy rate
모델이 전체 코드 출력을 거부/생략하는 비율
Cost per exercise
exercise당 API 호출 비용 (USD)
핵심 발견
편집 > 생성: 코드 생성 벤치마크 순위와 편집 벤치마크 순위가 반드시 일치하지 않음
Diff format 효율성: whole file 출력 대비 diff format이 비용 효율적이나, 정확도는 모델에 따라 다름
Lazy 문제: 일부 모델은 긴 파일에서 // ... rest of code ... 식으로 생략 → 실제 사용 시 치명적
언어별 편차: 동일 모델도 Python에서는 높은 정확도, Rust/C++에서는 상대적 저조
이론적 의의
벤치마크 설계 관점
생태학적 타당도(ecological validity): 실제 코딩 어시스턴트 사용 패턴(기존 코드 수정)을 직접 반영한 최초의 대규모 다언어 벤치마크
Process-oriented evaluation: 단순 정답률뿐 아니라 편집 형식, 비용, lazy rate 등 실용적 측면을 종합 평가
지속적 갱신: 정적 벤치마크의 contamination 문제를 부분적으로 완화 — 새 모델 출시 시 즉시 평가 반영
한계
학술 논문 미발표: peer review를 거치지 않은 커뮤니티 벤치마크
Aider 도구 특화: Aider의 프롬프트·파싱 방식에 최적화된 결과일 수 있어 다른 코딩 에이전트와 직접 비교 어려움
테스트셋 공개 여부: exercise 구성이 변동 가능하여 시점 간 비교에 주의 필요
난이도 분포: Exercism의 초급~중급 문제가 다수 — 고급 소프트웨어 엔지니어링 능력 측정에는 한계