코딩 에이전트: 모델과 작업 도구를 함께 학습하면 무엇이 달라질까
모델의 학습과 도구·실행 피드백을 함께 바꾸면 코딩 성능이 좋아지지만, 학습이 끝나도 어떤 보조 장치는 남겨야 하는지 보여줍니다.
쉽게 말하면비유하자면 수습 목수를 가르치면서 작업대와 연장도 함께 손보는 일이다. 가르칠 때 주던 요령 쪽지에는 정답이 아니라 원리만 적는다. 현장에 내보낼 때 쪽지는 거두지만, 손본 연장은 그대로 들려 보내야 솜씨가 유지된다.
- 왜 봐야 하나
- 코딩 에이전트의 성능은 모델만이 아니라 도구와 피드백 설계에도 달려 있음을 보여 준다. 같은 학습 모델에 손본 도구를 쓰자 한 코딩 평가(SWE-bench Verified)의 성공률이 52.8%에서 57.6%로 올랐다. 다만 9B 모델 하나를 코드 수정 과제에서 설정마다 한 번씩만 훈련한 결과다.
이 논문은 코딩 에이전트를 훈련할 때 정책 모델만 업데이트하는 기존 방식에서 벗어나, 모델과 하네스(도구·훅·스킬 안내)를 함께 적응시키는 HarnessAdapt-RL을 제안한다. 9B 모델 기준으로 GRPO 대비 SWE-bench Verified, Multilingual, Pro에서 pass@1이 각각 9.8, 12.6, 6.4%p 향상되었고, 메커니즘 수준 스킬은 평가 시 제거해도 이득이 남지만 진화된 도구·훅은 배포 시 유지해야 성능이 보존된다는 점을 보인다.
알아낸 것
- 모델의 행동 기록에서 학습용 조언을 만들고, 여러 과제의 문제를 바탕으로 실행 도구와 피드백을 단계적으로 바꿉니다.
- 세 코딩 평가의 평균 성공률은 기본 도구로 학습한 GRPO의 35.3%에서 44.9%로 9.6%포인트 높아졌습니다.
- 배포 때 학습용 조언은 제거하지만 개선된 도구는 남기며, 도구를 원래대로 되돌리면 성능 일부가 사라졌습니다.
한계와 주의할 점
- 한 9B 모델과 소프트웨어 수정 과제를 중심으로 한 사전공개 실험이며, 각 학습 설정을 한 번만 훈련했습니다.
- 정책 학습용 실행 횟수는 줄었지만, 준비·도구 비교와 교사 모델 호출까지 합친 전체 비용이 절반이라는 뜻은 아닙니다.
- 더 큰 모델이나 다른 업무에서도 같은 효과가 나는지, 실제 운영 비용이 줄어드는지는 확인되지 않았습니다.
용어 풀이
- 하네스(Harness)
- 정책 모델이 선택한 행동을 실행하고 관찰을 돌려주는 런타임 구성 요소. 기본 Bash 설정(H0), 추가 도구(T), 런타임 훅(K)으로 구성된다. 이 연구에서는 하네스가 훈련 중 정책과 함께 진화한다.
- 메커니즘 수준 스킬(Mechanism-level skill)
- 수리 전략이 언제, 왜 적용되는지 설명하는 텍스트 안내. 저장소 경로, 코드 기호, 리터럴 코드를 포함하지 않아 정책이 구체적인 해결책을 스스로 찾도록 유도한다. 훈련 중에만 제공되고 평가 시 제거된다.
- 훈련 가능률(Trainable rate)
- 전체 표본 실행 중 GRPO 정책 갱신에 쓸 수 있는 실행의 비율. 길이 제한 등으로 제외한 뒤 같은 과제에 성공과 실패가 함께 있어야 하며, 보상을 알 수 없는 그룹도 제외한다. 모두 성공한 그룹은 통과율에는 기여해도 훈련 가능률에는 기여하지 않는다.
- GRPO(Group Relative Policy Optimization)
- 같은 과제에 대한 여러 시도의 보상 차이를 이용해 정책을 업데이트하는 강화학습 알고리즘. 이 연구의 기본 훈련 방법으로, 하네스 적응과 결합된다.
- pass@1
- 각 과제에 대해 한 번의 시도만 허용했을 때 패치가 테스트를 통과하는 비율. 이 연구의 주요 평가 지표로, 세 번의 평가 실행 평균을 보고한다.
더 깊이 읽기 읽는 데 약 9분
배경과 문제
코딩 에이전트는 행동을 선택하는 정책 모델과 그 행동을 실행하고 피드백을 돌려주는 하네스(도구, 런타임 훅, 안내 텍스트)의 쌍으로 동작한다. 기존의 에이전트 훈련은 대부분 정책만 강화학습으로 업데이트하고 하네스는 고정해 두었다. 그러나 훈련 중 생성되는 궤적(trajectory)에는 잘못된 진단, 증상만 고치는 패치, 편집 명령 실패, 과도한 출력, 검증 부족 같은 문제가 드러난다. 이런 문제는 과제마다 다르고 정책이 학습됨에 따라 변하기 때문에, 고정된 하네스로는 훈련 효율과 최종 성능을 모두 끌어올리기 어렵다.
저자들은 하네스를 강화학습 중에 적응시키는 방식을 연구한다. 구체적으로는 (1) 정책 학습을 돕는 스킬을 어떻게 설계할지, (2) 정책이 변함에 따라 도구와 훅을 어떻게 설계하고 선택할지, (3) 배포 시 어떤 하네스 구성 요소를 남겨야 하는지를 질문으로 삼는다. 이를 위해 훈련 궤적에서 과제별 수리 전략을 설명하는 메커니즘 수준 스킬을 생성하고, 여러 과제에서 반복되는 상호작용 문제를 해결하는 도구·훅을 별도의 교사 모델이 제안하도록 한다.
기존 접근의 한계
선행 연구에는 정책을 고정하고 하네스를 탐색하는 방법, 개선된 하네스의 작업 기록으로 지도식 파인튜닝(SFT)을 번갈아 하는 Co-Harness 등이 있다. 이번 연구는 강화학습으로 정책이 변하는 동안 도구와 피드백도 조정한다. 스킬 안내가 어떤 형태여야 하는지도 별도 비교한다. 일반적인 절차를 모은 스킬 뱅크, 구체적인 수정 답안을 담은 힌트, 해결 원리만 알려 주는 안내를 같은 기본 하네스에서 학습시킨 뒤, 안내 없이 평가한다.
이 논문의 실험에서도 스킬 뱅크는 GRPO와 거의 같은 성능을 보였고, 정답 근접 힌트는 훈련 성공률을 높였지만 평가 시 스킬을 제거하면 GRPO보다 나빠졌다. 이는 훈련 중 성공률이 높다고 해서 독립적인 수리 능력이 생기는 것은 아니라는 점을 보여준다. 또한 고정된 하네스에서는 정책이 학습 후반에 검증 테스트를 덜 실행하는 행동 변화가 관찰되었는데, 기존 도구와 알림만으로는 이를 막지 못했다.
연구방법을 단계별로
HarnessAdapt-RL은 두 개의 별도 교사 모델을 사용한다. 첫 번째 교사(GLM-5.3-Flash)는 현재 정책의 궤적 두 개를 비교하여 과제별 메커니즘 수준 스킬을 만든다. 이 스킬은 수리 전략이 언제, 왜 적용되는지 설명하되 저장소 경로, 코드 기호, 리터럴 코드를 포함하지 않는다. 두 번째 교사(GPT-5.6 Sol/Codex)는 여러 과제의 궤적에서 반복되는 상호작용 문제를 찾아 도구와 훅의 변경을 제안하고 구현한다.
도구·훅 후보는 같은 정책, 46개 과제, 같은 스킬과 예산으로 현재 하네스와 비교한다. 각 쪽에서 과제당 네 번씩 총 184개 롤아웃을 새로 만든다. 관측 통과율(pass rate) 또는 훈련 가능률(trainable rate) 중 하나가 엄격히 증가하고 다른 하나가 낮아지지 않을 때 채택한다. 훈련 가능률의 분모는 모든 시도다. 길이 제한으로 잘린 시도를 제외하고 같은 과제에 성공·실패가 함께 남아야 보상 차이를 학습할 수 있으며, 보상을 알 수 없는 그룹도 정책 갱신에서 제외한다. 준비와 비교에 쓴 실행은 학습에 재사용하지 않고, 선택한 하네스로 새 실행을 모아 GRPO를 적용한다.
훈련은 두 에포크로 진행되며, 각 에포크 시작 시 최대 5라운드의 도구·훅 진화를 수행한다. 첫 에포크에서 H1이 만들어지고, 두 번째 에포크에서는 업데이트된 정책의 궤적을 사용해 H2로 진화한다. 스킬은 첫 에포크에서 모든 훈련 과제에, 두 번째 에포크에서는 고정된 512개 과제에만 제공된다. 평가 시에는 스킬을 제거하고, 최종 도구·훅(H2)은 유지한 채 pass@1을 측정한다.
훈련은 Qwen3.5-9B와 mini-swe-agent 기반 환경에서 R2E-Gym-Lite의 선별된 1,058개 과제를 두 번 거친다. 총 46회 갱신 중 사전에 정한 45번째 체크포인트를 평가한다. 학습 실행은 최대 64K 토큰·60턴, 평가는 128K 토큰·150턴이며 생성 온도는 1.0이다. 한 과제에서 여러 학습 시도를 비교하는 것과, 평가에서 한 번만 풀게 하는 pass@1은 구분해야 한다.
결과와 숫자의 의미
Table 1에 따르면 HarnessAdapt-RL의 평균 pass@1은 44.9%로 GRPO의 35.3%보다 9.6%p 높다. 벤치마크별로는 Verified 47.8→57.6, Multilingual 24.7→37.3, Pro 33.3→39.7로 각각 9.8, 12.6, 6.4%p 향상되었다. 이는 상대 증가율이 아니라 절대적인 퍼센트포인트 차이다. 인간이 설계한 OpenHands 하네스를 사용한 GRPO와 비교해도 HarnessAdapt-RL이 6.2, 4.0, 7.4%p 높아, 최소한의 기본 하네스와의 비교에서만 유리한 것이 아니다. 평균은 세 벤치마크의 동일 가중 평균이며 전체 과제를 합친 성공률과는 다르다. 또한 이 표는 각자의 최종 하네스를 쓴 에이전트 전체를 비교하므로, 가중치만 바꾼 효과를 분리한 표는 아니다.
스킬 변형 비교에서는 메커니즘 수준 스킬이 평가 시 제거된 후에도 평균 38.3%로 가장 높았다. 정답 근접 힌트는 32.7%, 스킬 뱅크는 34.1%였다. 정답 근접 힌트는 훈련 성공률을 크게 높였지만, 구체적인 코드 변경을 알려 주면 코드 위치 파악과 수정 결정을 스스로 연습할 기회가 줄 수 있다. 저자들은 짧아진 실행 기록과 안내 제거 후 성능을 이 설명에 부합하는 결과로 해석한다. 메커니즘 수준 스킬은 혼합 결과 그룹 비율이 46.5%로 힌트의 39.0%보다 높아 GRPO 학습에 필요한 보상 대비를 더 잘 제공했다.
도구·훅 진화의 효과는 Table 2에서 확인된다. 같은 훈련 모델이라도 H0에서 H2로 바꾸면 HarnessAdapt-RL의 Verified 점수가 52.8→57.6으로 4.8%p 상승한다. 반대로 H2를 제거하면 최대 7.7%p 하락한다. 이는 정책 가중치를 바꾸지 않고 하네스만 교체해도 성능이 크게 달라진다는 뜻이다. 또한 H2를 처음부터 고정하고 새로 훈련한 Frozen-H2 +Mechanism은 56.8/38.3/38.9로 HarnessAdapt-RL과 1.0%p 이내로 비슷했다. 이는 이미 발견한 H2를 새 훈련에 재사용할 수 있다는 결과다. 이 연구에서는 기본 모델을 고정한 사전 탐색보다 학습 중 탐색한 하네스가 좋았지만, 좋은 하네스를 찾는 유일한 방법이 동시 진화라는 증명은 아니다.
구체적인 예시
두 번째 에포크에서 정책은 테스트 도구와 알림이 있음에도 검증 테스트를 덜 실행하는 행동을 보였다. 교사는 패치 준비 도구(prepare_patch)를 수정하여 변경된 코드와 관련된 테스트를 자동으로 선택·실행하게 하고, 훅이 테스트 실패를 보고하고 제출 전에 확인하도록 상기시켰다. 이 제안은 통과율 6.3%, 훈련 가능률 7.4% 상승을 보여 채택되었다. 여기의 6.3%와 7.4%는 같은 라운드의 기존 하네스 대비 상대 증가율이며, 앞의 벤치마크 점수 차이인 퍼센트포인트와 다르다.
거부된 제안의 예도 있다. 첫 에포크에서 패치를 과제 요구사항과 비교하고 확인되지 않은 부분을 찾도록 요청하는 훅은 통과율을 2.7% 올렸지만 훈련 가능률을 7.0% 낮춰 거부되었다. 이후 라운드에서 이 검토 기능을 view_diff 도구와 결합하여 실제 편집 내용을 보여주는 방식으로 다시 제안했고, 두 지표 모두 개선되어 채택되었다. 이는 거부된 구성 요소도 나중에 다른 형태로 재고될 수 있음을 보여준다.
한계와 오해하기 쉬운 점
이 연구는 소프트웨어 수리(SWE-bench 스타일) 영역과 단일 9B 모델(Qwen3.5-9B)에 한정된다. 웹 내비게이션이나 데이터 분석 같은 다른 에이전트 영역에서 같은 절차가 유용한지는 확인되지 않았다. 더 큰 모델은 이미 도구가 패키징하는 작업을 처리할 수 있어 하네스 진화의 이득이 다를 수 있다. 각 학습 설정은 한 번만 훈련되었고, 세 번의 평가는 고정된 체크포인트에 대한 반복이지 독립적인 훈련 시드가 아니다.
후보 선택의 관측치 개선은 통계적 유의성 검정이 아니며, 반복 탐색과 실행 노이즈가 선택에 영향을 줄 수 있다. 최종 평가의 신뢰구간도 고정된 모델에서 과제별 변동을 요약할 뿐 재학습·재탐색 변동까지 다루지 않는다. 재현 측면에서는 교사 모델의 불변 스냅숏과 당시 CLI 버전이 보존되지 않았다. 비용 집계에서 HarnessAdapt-RL은 정책 학습 8,464개에 준비 6,280개와 비교 3,312개를 합해 총 18,056개 롤아웃으로, GRPO의 16,928개보다 많다. 여기에 교사 호출 비용은 별도다. 실행 길이도 달라 롤아웃 개수를 실제 GPU 시간이나 금액으로 바로 바꿀 수 없다.
실제로 어떻게 활용할까
배포 시에는 훈련된 정책과 최종 도구·훅(H2)만 필요하고, 스킬과 교사 모델은 제거된다. 정책 모델 자체의 추론 비용은 여전히 필요하며, 그에 더해 유지된 도구 실행과 짧은 훅 메시지 주입의 비용이 든다. 배포 중 교사 호출이나 하네스 탐색을 추가로 하지 않는다는 의미다. 이미 H2가 있다면 새로운 훈련 실행에서 도구·훅을 고정하고 메커니즘 수준 스킬만 제공해도 비슷한 성능을 얻을 수 있어, 반복적인 하네스 탐색 비용을 줄일 수 있다.
다만 이 결과를 다른 도메인이나 모델에 바로 적용하기는 어렵다. 하네스 진화가 유용하려면 훈련 궤적에서 반복되는 상호작용 문제가 관찰되어야 하고, 교사 모델이 현재 하네스의 확장 지점에 맞는 도구·훅을 구현할 수 있어야 한다. 또한 후보 선택의 노이즈를 고려하면, 정책을 함께 학습하는 실험에서는 자체 훈련 자료로 통과율과 훈련 가능률을 비교하고, 별도의 평가 자료로 배포 성능을 확인하는 방향을 생각할 수 있다. 훈련 가능률은 정책 갱신에 쓸 시도를 평가하는 지표여서 일반 서비스 추론 품질을 대신하지 않는다.
원문에서 확인한 근거 5곳
- HarnessAdapt-RL은 GRPO 대비 SWE-bench Verified, Multilingual, Pro에서 pass@1이 각각 9.8, 12.6, 6.4%p 향상되었다.Table 1
- 메커니즘 수준 스킬은 평가 시 제거된 후에도 평균 38.3%로 정답 근접 힌트(32.7%)와 스킬 뱅크(34.1%)보다 높다.Table 1
- H2를 H0로 교체하면 HarnessAdapt-RL의 pass@1이 Verified, Multilingual, Pro에서 각각 4.8, 7.7, 4.7%p 하락한다.Table 2
- Frozen-H2 +Mechanism은 HarnessAdapt-RL과 모든 벤치마크에서 1.0%p 이내로 비슷한 성능을 보인다.Figure 4
- 정답 근접 힌트는 훈련 성공률을 높였지만 평가 시 스킬을 제거하면 GRPO보다 성능이 낮다.Why Mechanism-Level Skills?
10월 22일(목) 정리 · AI가 쓰고 원문과 대조