Real-SWE 1.1: 사내 비공개 코드베이스로 AI 코딩 에이전트 17종을 비교한 벤치마크
Real-SWE: Benchmarking AI models on private, real-world, enterprise codebases
TL;DR Highlight
비공개 실무 코드 25개 과제로 17개 모델을 돌렸더니 1위도 56.8%
Who Should Read
코딩 에이전트를 사내 코드베이스에 도입하려고 모델과 하네스를 고르는 백엔드 개발자
Core Mechanics
- 비공개 실무 코드로 17개 모델을 비교했다
- 라이선스로 받은 실제 회사 프로덕션 코드에서 과제 25개를 뽑았다.
- TypeScript, Go, Python, Ruby, Java 코드베이스가 섞여 있다.
- 1위 Opus 5.5도 해결률 56.80%
- 2위는 Sonnet 5.5로 51.20%, 3위는 GPT 6.1 Sol로 47.20%다.
- 해결률은 과제당 5회 실행한 pass@1 평균이고, 모델마다 가능한 최고 effort로 돌렸다.
- 가장 흔한 실패는 확인 없이 짐작한 것
- 전체 실패 중 unverified assumption(워크스페이스에서 확인하지 않고 추측으로 구현)이 33.1%, missed requirement(요구사항 누락)가 29.4%다.
- GPT 6 Astra는 실패의 55.1%, GPT 6.1 Sol은 53.0%가 unverified assumption이다.
- 비용 차이가 크다
- 롤아웃 1회 추정 비용은 $0.08(GPT 6 Luna)부터 $14.24(Fable 5.1)까지다.
- GPT 6.1 Sol은 $0.79로 47.20%를 냈고, Opus 5.5는 $13.95로 56.80%를 냈다.
- 과제는 짧은 지시에 여러 파일 수정이다
- 지시문 중앙값은 1,208자로 DeepSWE(1,975자)보다 짧다.
- 정답 수정본은 평균 10.2개 파일을 고치며, FrontierCode와 DeepSWE는 6개다.
Community Reactions
- 내 코드로 같은 방식 벤치를 만들었다는 경험
- 커밋 직전으로 git 기록을 자르고, 티켓 프롬프트를 주고, 승인된 PR과 비교해 채점했다는 댓글이다.
- 예제를 찾는 일이 가장 오래 걸렸다고 한다.
- Fable과 Sol을 짝지어 써 봤다는 경험
- Fable이 확인 안 한 가정을 던지면 Sol이 검증해서 알려준다는 댓글이다.
- 역할을 바꾸면 Fable이 "좋아 보인다"만 한다고 한다.
- 비공개 코드가 정말 비공개인지 의심하는 의견
- 큰 비공개 코드베이스는 이미 Claude Code와 Codex를 통해 노출됐을 수 있다는 의견이다.
- 다른 영역의 벤치를 운영하며 매번 오염을 측정하게 됐다는 경험도 함께 나왔다.
- 과제 명세가 부실한 게 아니냐는 반론
- 사람 기준선이 없어서 모델 실력과 과제 품질을 구분하기 어렵다는 의견이다.
- 실패의 약 60%가 잘못된 가정과 요구사항 누락인 것은 명세가 부족해서일 수 있다고 본다.
How to Apply
- 최근 머지된 PR 1건으로 미니 벤치 돌리기
- 오늘 PR 하나의 부모 커밋을 체크아웃하고 원래 티켓을 프롬프트로 에이전트에 준다.
- 결과를 실제 PR과 비교하고, 어디서 짐작으로 넘어갔는지 표시한다.
- 프롬프트에 가정 검증 단계 넣기
- 구현 전에 코드로 확인할 가정 목록을 쓰고 파일 위치를 근거로 달게 한다.
- 실패의 최다 유형이 미확인 가정이므로 이 단계를 시스템 프롬프트에 고정한다.
- 모델 선택 시 해결률과 비용을 같이 보기
- 같은 과제를 저가 모델과 상위 모델로 돌려 해결률과 비용을 표로 비교한다.
- 저가 모델은 리뷰 용도로 먼저 투입한다.
- 내부 과제 세트에 실패 유형 라벨 붙이기
- 실패 런을 미확인 가정, 요구사항 누락, 잘못된 파일 등으로 분류한다.
- 가장 많은 유형에 맞춰 프롬프트와 체크리스트를 고친다.
Try It
# Claude Code 또는 ChatGPT에 붙여넣기 (논문 방법의 간이 버전: 가정 검증 우선 프롬프트)
너는 기존 코드베이스를 수정하는 엔지니어다. 아래 요구사항을 구현하기 전에 다음을 먼저 해라.
1. 요구사항을 항목별로 나눠 번호를 매긴다.
2. 각 항목이 의존하는 가정(함수 동작, 설정값, 외부 서비스 규약)을 나열하고, 코드에서 직접 확인한 파일과 줄을 근거로 쓴다. 확인 못 한 가정은 '미확인'으로 표시한다.
3. 미확인 가정은 코드를 읽거나 실행해서 검증한 뒤에 구현한다.
4. 이미 같은 일을 하는 기존 코드(중복 경로)가 있는지 찾고, 회사의 기존 코딩 패턴을 따른다.
5. 구현 후 항목 번호마다 충족 여부를 체크하고, 기존 동작이 깨지지 않았는지 테스트로 확인한다.
요구사항: {{티켓 내용}}
이어서 해 볼 것: 같은 티켓을 이 프롬프트 없이 한 번 더 돌려 놓고, 누락된 요구사항 수와 틀린 가정 수를 비교해 본다.Terminology
관련 논문
The Judge Can Debias Itself: LLM-as-a-Judge가 스스로 편향을 고치게 하는 법
심사 프롬프트에 편향 경고를 넣거나 스스로 비판시켰더니 21개 중 20개 조합에서 정확도가 올랐다
미국 노동시간의 90%는 AI 벤치마크가 제대로 다루지 못하는 일이다
벤치마크 29개를 직업 과제에 매핑했더니 노동시간 90%가 커버 밖
Postgres 19, AI 코드 리뷰가 버그를 너무 많이 찾아 출시 연기
LLM 코드 리뷰가 버그를 쏟아내 Postgres 19가 11월로 밀리고 기능 8~10개가 빠졌다
StarSkirmish Bench v0.2: LLM이 1시간 만에 짜는 StarCraft 봇 대결
LLM에게 1시간 동안 StarCraft 봇을 짜게 했더니 GPT-6 Astra가 1위
그럴듯한 설명 하나면 멀티모달 LLM 심사위원도 속는다 (JUPE 벤치마크)
정답은 그대로 두고 설명만 붙였더니 MLLM 심사위원의 오답 거절률이 12.7~13.8%p 떨어졌다
신경망은 이미 깔끔하다: polysemanticity의 원인 재해석
뉴런을 직접 들여다봤더니 대부분 한 가지 역할이 있었다는 주장
Linus Torvalds의 첫 LLM 보조 패치 시리즈
Linus가 LLM으로 folio 조회 패치 10개를 만들어 read() 벤치가 10배 빨라졌다