Hacker News가 주목한 SWE-CI, 장기 코드 유지보수형 coding agent benchmark

최근 Hacker News 전면에 오른 SWE-CI는 기존 coding benchmark가 잘 드러내지 못했던 질문을 정면으로 다룬다. agent가 단일 patch를 맞히는 데 그치지 않고, 시간이 지나도 codebase를 건강하게 유지할 수 있는가 하는 점이다. 논문은 HumanEval, LiveCodeBench, SWE-bench 같은 기존 benchmark가 대체로 snapshot 성능을 본다고 지적한다. 하지만 실제 software 개발에서는 요구사항이 순차적으로 들어오고, interface가 바뀌며, 초기에 한 설계 선택이 이후 변경 비용을 크게 좌우한다.

SWE-CI는 이 현실을 benchmark 설계에 직접 넣는다. 데이터셋은 68개 실저장소에서 뽑은 100개 task로 구성된다. 각 task는 base commit과 더 뒤의 target commit을 연결하며, 평균적으로 233일과 71개의 연속 commit을 가로지른다. 평가는 base code에서 시작해 analysis, implementation, test를 반복하면서 target 쪽으로 이동하는 구조다. 즉, issue 하나를 patch 하나로 푸는 방식이 아니라 Continuous Integration loop 자체를 따라가는 셈이다.

평가 프로토콜도 흥미롭다. Architect agent가 failing test를 검토하고 문제의 원인을 찾은 뒤, 짧고 high-level한 requirement 문서를 쓴다. Programmer agent는 그 문서를 받아 다음 변경을 구현한다. 중간 상태 평가는 EvoScore라는 future-weighted metric으로 이뤄지는데, 확장하기 쉬운 code는 보상하고 technical debt나 regression을 쌓는 code는 불리하게 만든다. maintainability는 한 시점의 정답 여부로는 보이지 않기 때문에, 연속된 수정 과정에서만 드러난다는 논문 주장과 맞닿아 있다.

초기 결과도 꽤 실무적이다. 저자들은 8개 provider의 18개 model을 대상으로 총 100억 token이 넘는 실험을 수행했다고 설명한다. 같은 계열에서는 newer model이 대체로 더 높은 점수를 냈고, Claude Opus 계열이 가장 강하게 앞섰다고 한다. 그러나 더 중요한 결론은 상한선이다. 장기 유지보수 과정 전체에서 regression이 전혀 없는 sample 비율, 즉 zero-regression rate가 대부분의 model에서 0.25 미만이었다. 단일 patch benchmark를 잘 푸는 것과 장기 code maintenance를 안정적으로 수행하는 것은 아직 다른 문제라는 뜻이다.

그래서 HN에서 이 논문이 반응을 얻은 이유도 분명하다. SWE-CI는 또 하나의 leaderboard라기보다, 평가 대상을 단기 functional correctness에서 장기 code quality로 옮기려는 시도다. coding agent가 demo patch를 넘어 실제 유지보수 업무로 가려면, 이런 benchmark가 결국 진짜 한계를 먼저 드러내게 될 가능성이 크다.

원문: SWE-CI 논문
커뮤니티 출처: Hacker News 토론
프로젝트 링크: GitHub, dataset