ProgramDistill은 코딩 에이전트를 평가하는 새로운 방식의 벤치마크입니다. 기존처럼 "이런 기능을 만들어라"고 구체적인 동작까지 이슈나 지시문에 적어 주는 대신, 기능의 목적과 워크플로우를 설명하는 문제 설명문을 주고 이미 완성되어 작동하는 참조 애플리케이션(reference application)을 에이전트가 직접 만져보게 해, 거기서 알아낸 구체적 동작을 미완성 앱에 구현하도록 시킵니다. 저자들은 사람 손을 거치지 않고 26개 앱에서 1,975개의 검증된 동작을 발굴해 4,063개의 과제를 자동 생성했고, 아홉 개의 최신 코딩 에이전트를 이 위에서 평가했습니다.
지금까지 코딩 에이전트를 시험하는 방식은 대부분 "숙제 문제집" 형태였습니다. "로그인 버튼이 눌리지 않는 버그를 고쳐라", "장바구니에 수량 조절 기능을 추가하라"처럼, 원하는 동작이 이슈나 지시문에 글로 또렷이 적혀 있습니다. 에이전트는 그 글을 읽고 코드를 고치면 됩니다.
그런데 현실의 웹 개발은 이렇게 친절하지 않습니다. 실무에서는 "이 앱, 이렇게 동작하게 만들어 주세요"라는 말 대신, 이미 잘 돌아가는 다른 소프트웨어를 보여주며 "이거랑 똑같이"라고 요청하는 경우가 많습니다. 개발자는 그 앱을 직접 클릭해 보고, 버튼을 눌러 보고, 화면 반응을 관찰하면서 "아, 이 기능은 이런 거구나"라고 스스로 추론해야 합니다. 그리고 그 동작을, 기능이 다 채워지지 않은 미완성 앱 위에 구현해 넣어야 합니다.
비유하자면 기존 벤치마크가 "레시피를 보고 요리하기"라면, 이 논문이 겨냥하는 상황은 "무슨 요리인지 간단한 설명만 듣고, 맛집의 완성된 요리를 직접 먹어 보며 그 맛을 재현하기"에 가깝습니다. 자세한 레시피(구체적 동작 명세)는 없고, 목적을 적은 짧은 설명과 결과물(작동하는 앱)만 있습니다. 이 격차 때문에, 기존 벤치마크에서 좋은 점수를 받은 에이전트가 실제 웹 개발 상황에서도 잘한다고 보장하기 어려웠습니다.
ProgramDistill의 핵심은 "작동하는 앱을 잘게 쪼개서, 각 조각의 동작을 다시 재생(replay)해 볼 수 있게 만드는 것"입니다.
저자들은 완성된 애플리케이션을 서로 다른 세밀함(granularity)의 기능(feature) 단위로 분해(factorize)합니다. 큰 기능도 있고 작은 기능도 있습니다. 그리고 각 기능마다 재생 가능한 동작(replayable behavior)을 연결해 둡니다. 이 동작은 정답 코드 수정본, 즉 골드 패치(gold patch, 정답 코드 변경분)를 적용하면 실제로 실행되어 재현됩니다. 쉽게 말해, "이 기능이 제대로 구현되면 화면에서 정확히 이런 일이 벌어져야 한다"는 것을 기계가 자동으로 다시 틀어 보며 채점할 수 있게 만든 것입니다. 시험 문제와 채점 기준(재생 결과)이 한 몸으로 묶여 있는 셈입니다.
저자들이 이 벤치마크를 만들고 그 위에서 에이전트를 평가하는 전체 절차의 이름이 mine-craft-patch(발굴-제작-패치)입니다. 앞의 두 단계(발굴·제작)는 사람 없이 벤치마크를 만들어 내는 과정이고, 마지막 단계(패치)는 평가 대상 에이전트가 실제로 과제를 푸는 과정입니다.
| 단계 | 하는 일(직관적 설명) |
|---|---|
| mine (발굴) | 작동하는 앱에서 재생 가능한 동작들을 캐냄 |
| craft (제작) | 그 동작들을 평가 가능한 과제로 다듬고, 정답 코드 변경분(골드 패치)을 만들어 재생으로 검증함 |
| patch (패치) | 평가 대상 에이전트가 참조 앱을 관찰해 누락된 기능을 미완성 앱에 구현하고, 재생 검증으로 채점받음 |
이 파이프라인으로 저자들은 26개 애플리케이션에서 1,975개의 재생 검증된(replay-verified) 동작을 찾아냈고, 이를 조합해 4,063개의 과제를 만들었습니다. 중요한 점은 이 전 과정이 사람의 개입 없이(without human intervention) 이뤄졌다는 것입니다. 사람이 일일이 정답을 라벨링하지 않아도 벤치마크가 계속 확장될 수 있다는 뜻입니다.
평가 방식도 두 갈래로 나뉩니다. 하나는 전체 앱 재구성(full-application reconstruction)으로, 앱을 통째로 다시 만들어 가는 누적 워크플로우(cumulative workflow)를 다룹니다. 다른 하나는 부분 앱 재구성(partial-application reconstruction)으로, 이미 상당 부분이 채워진 앱에서 빠진 조각만 복원합니다. 이때 에이전트에게는 해당 기능의 목적과 워크플로우를 설명하는 자동 생성 문제 설명문이 함께 주어지고, 구체적으로 어떻게 동작해야 하는지는 참조 앱과의 상호작용으로 추론하게 됩니다. 여기서 저자들은 복원 깊이(restoration depth)라는 조절 손잡이를 둬서, 얼마나 많은 것을 되살려야 하는지에 따라 난이도를 세밀하게 통제합니다. 난이도가 고정된 벤치마크가 아니라, 다이얼을 돌리듯 어려움을 조절할 수 있는 벤치마크라는 점이 특징입니다.
초록이 밝힌 수치는 두 가지 실험에서 나옵니다.
먼저 전체 앱 재구성의 누적 워크플로우에서, 최신 코딩 에이전트 아홉 개 중 GPT-6 Astra가 49.2%, Claude Opus 5가 28.8%의 성공률을 기록했습니다. 절반 근처이거나 그 아래라는 뜻으로, 작동하는 앱을 보고 그 전체를 다시 조립해 내는 과제가 최신 모델에게도 결코 쉽지 않다는 것을 보여줍니다.
다음으로 부분 앱 재구성에서는 복원 깊이가 커질수록 성능이 뚜렷하게 떨어졌습니다. 초록에 따르면 복원 깊이가 1에서 8로 늘어날 때 성공률이 100%에서 64.0%로, 그리고 96%에서 32%로 하락했습니다. 얕게 한두 조각만 되살릴 때는 거의 완벽하지만, 되살려야 할 것이 깊게 쌓일수록 급격히 무너진다는 것입니다. 이는 곧 이 벤치마크가 난이도를 제어(controlled difficulty)할 수 있음을 실증하는 결과이기도 합니다.
종합하면 ProgramDistill의 의미는 세 가지입니다. 첫째, 사람 개입 없이 자동으로 확장 가능한(scalable) 대규모 벤치마크라는 점. 둘째, 난이도를 조절해 에이전트의 약점을 진단(diagnose)할 수 있다는 점. 셋째, 초록이 직접 언급하듯 난이도가 조절되는 이 구조가 커리큘럼 기반 학습(curriculum-based training, 쉬운 것부터 어려운 것 순으로 가르치는 방식)의 자연스러운 토대가 될 수 있다는 점입니다.
초록만으로 판단할 때 몇 가지 솔직한 한계와 열린 질문이 남습니다.
이 이상의 구체적인 방법 세부나 추가 수치는 초록에 없으므로 단정하지 않겠습니다. 정확한 내용은 원문을 확인하는 것이 바릅니다.
온틀은 AI 프로젝트 매니저를 파견하는 서비스입니다. 그래서 이 논문은 우리에게 두 가지 지점에서 직접적입니다.
첫째, "대략적인 목적 설명만 있을 뿐, 구체적인 동작은 결과물을 보고 추론해야 하는 능력"은 실무 PM·에이전트의 핵심 역량과 정확히 겹칩니다. 현실의 고객은 깔끔한 기능 명세서를 주지 않습니다. "이 서비스처럼 만들어 주세요", "이거 되게만 해 주세요"라며 작동하는 예시나 어렴풋한 기대만 건넵니다. ProgramDistill이 측정하는 것은 바로 이 상황, 즉 목적 설명을 실마리 삼아 완성된 결과물에서 구체적 동작을 역추론해 미완성 상태 위에 구현하는 능력입니다. 최신 모델조차 전체 재구성에서 절반 안팎에 머문다는 결과는, 실제 제품에 에이전트를 투입할 때 "사람 PM의 요구사항 명확화 단계"가 여전히 필수임을 시사합니다.
둘째, 난이도를 조절 가능한 검증 체계라는 발상은 그대로 가져올 만합니다. 온틀의 에이전트가 다루는 작업도 "얕은 수정"부터 "여러 조각이 얽힌 깊은 복원"까지 폭이 넓습니다. 복원 깊이가 1에서 8로 갈 때 성능이 급락한 결과는, 에이전트에게 한 번에 큰 덩어리를 맡기기보다 작은 단위로 쪼개 누적적으로 진행하도록 워크플로우를 설계하는 편이 안전하다는 실무 교훈으로 읽힙니다. 또한 재생 검증처럼 "결과가 실제로 재현되는지를 기계가 다시 확인하는" 자동 검증 고리는, 에이전트 산출물을 사람이 매번 눈으로 확인하는 부담을 줄이는 방향과 맞닿아 있습니다.
RAG나 에이전트 파이프라인 관점에서도, 이 논문은 "명세 텍스트"만이 컨텍스트의 전부가 아니며 작동하는 참조물과의 상호작용 자체가 강력한 입력이 될 수 있음을 보여 줍니다. 문서를 검색해 넣는 것을 넘어, 실제로 동작을 관찰·재생해 확인하는 단계를 파이프라인에 넣는 설계를 고민하게 만듭니다.
기존 벤치마크는 이슈나 지시문 같은 글로 된 명세에 구체적인 동작까지 적어 주고 그대로 구현하게 합니다. ProgramDistill은 기능의 목적과 워크플로우를 설명하는 문제 설명문은 주되, 구체적인 동작은 작동하는 참조 앱과의 상호작용을 통해 스스로 추론해 미완성 앱에 구현하도록 요구한다는 점이 다릅니다.
mine-craft-patch 파이프라인의 발굴·제작 단계가 앱을 기능 단위로 분해하고, 각 동작을 정답 코드 변경분(골드 패치)으로 재생·검증합니다. 초록에 따르면 이 과정으로 26개 앱에서 1,975개의 검증된 동작과 4,063개의 과제를 사람 개입 없이 생성했습니다.
초록 기준으로 전체 앱 재구성의 누적 워크플로우에서 GPT-6 Astra가 49.2%, Claude Opus 5가 28.8%의 성공률을 보였습니다. 부분 재구성에서는 복원 깊이가 1에서 8로 커질 때 성공률이 100%에서 64.0%로, 96%에서 32%로 떨어졌습니다.
초록은 난이도를 조절할 수 있는 이 구조가 쉬운 것부터 어려운 것 순으로 가르치는 커리큘럼 기반 학습의 자연스러운 토대가 될 수 있다고 언급합니다. 다만 구체적인 학습 방법은 초록 범위 밖입니다.