FC-SWE, 실패한 패치에서 배우는 소프트웨어 에이전트
배경
저장소 수준의 소프트웨어 엔지니어링은 한 번의 코드 생성으로 끝나는 작업이 아닙니다. 에이전트는 코드를 탐색하고, 도구를 호출하고, 여러 파일을 수정한 뒤 테스트 결과에 따라 계획을 바꿔야 합니다. 패치가 검증에 실패하더라도 테스트 출력에는 오류 원인을 추적할 수 있는 단서가 남습니다. NVIDIA 연구진이 제안한 FC-SWE는 이 실패 이후의 복구 과정을 강화학습의 일부로 다룹니다.
FC-SWE의 핵심
일반적인 GRPO는 같은 이슈에 대해 여러 궤적을 독립적으로 샘플링하고, 각 패치의 최종 보상을 비교합니다. 성공과 실패를 구분할 수는 있지만, 실패한 패치와 검증 결과가 다음 시도의 입력으로 이어지는 구조는 아닙니다. FC-SWE는 초기 시도와 복구 시도를 하나의 연쇄로 구성합니다.
- 실패 조건 컨텍스트: 검증이 실패하면 저장소를 원래 과제 상태로 되돌립니다. 이후 시도에는 원래 이슈, 실패한 패치, 검증기 피드백이 함께 제공됩니다.
- 궤적별 보상: 각 시도는 자신의 검증 결과만으로 보상받습니다. 복구에 성공했다고 해서 이전의 실패한 패치가 잘못된 보상을 받지 않습니다.
- 액티브 세트 어드밴티지: 같은 이슈에서 실제로 실행된 초기·복구 궤적만 비교 그룹에 포함합니다. 실패한 시도는 유지하지만, 실행되지 않은 가상의 시도는 포함하지 않습니다.
이 방식은 복구 학습의 구조적 문제를 다룹니다. 다음 시도가 생성될지는 이전 결과에 달려 있고, 다음 시도의 입력은 이전 실행에서 나온 구체적인 피드백에 달려 있기 때문입니다. 저장소를 초기 상태로 복원하는 절차는 오염된 상태에서 계속 수정하는 것과 피드백에 기반한 복구를 구분하는 데도 도움이 됩니다.
실험 결과와 해석
연구진은 Qwen3.5-4B와 SWE-agent를 사용해 SWE-bench Verified의 500개 과제를 모두 평가했습니다. 프로토콜은 검증기 피드백을 이용하는 다중 시도 방식이었습니다. FC-SWE는 Resolved@1에서 41.7%, Resolved@2에서 52.8%를 기록했으며, GRPO 기준선은 각각 38.9%와 48.5%였습니다. 학습 중 하나의 연쇄에는 최대 두 번의 시도만 포함됐지만, 테스트 시 11회의 시도 예산을 주자 Resolved@11은 70.7%에 도달했습니다.
지표의 의미는 구분해서 봐야 합니다. Resolved@K는 최대 K번의 피드백 연결 시도 안에서 누적적으로 해결된 비율입니다. 독립 샘플링 기반 Pass@K나 일반적인 단일 시도 리더보드 점수와는 다릅니다. 따라서 이 결과는 모든 소프트웨어 개발 환경에서의 보편적 성능 향상이라기보다, 검증기 지원 복구 능력이 개선됐다는 점을 보여줍니다.
의미와 남은 과제
FC-SWE의 핵심은 실패를 단순한 음의 보상으로 처리하지 않고 다음 결정을 위한 학습 정보로 바꾼 데 있습니다. 비용이 큰 테스트, 상태를 가진 저장소, 장시간의 도구 사용이 필요한 에이전트에 특히 적용 가능성이 있습니다. 학습 단계에서 복구 횟수를 늘릴 때의 안정성, 검증기 호출 비용, 불완전하거나 noisy한 피드백에 대한 견고성은 앞으로 검토해야 할 문제입니다. 구현 코드는 NVIDIA NeMo RL의 별도 브랜치에 공개될 예정이며, 현재는 아직 공개되지 않았습니다.
댓글
로그인 상태 확인 중…
댓글 불러오는 중…