코딩 에이전트는 저장소를 이해하는가, 아니면 익숙한 단서를 기억하는가
들어가며
SWE-bench와 같은 저장소 수준 코딩 벤치마크는 코딩 에이전트를 평가하는 대표적인 기준으로 자리 잡았습니다. 단일 함수 완성과 달리 실제 프로젝트를 읽고, 버그나 누락된 기능의 위치를 찾고, 필요한 코드를 수정한 뒤 테스트로 결과를 확인해야 합니다. 따라서 현실적인 소프트웨어 엔지니어링 능력을 평가하는 데 적합해 보입니다.
하지만 이와 같은 현실성이 약점으로 이어질 수도 있습니다. 평가에 사용되는 오픈소스 저장소가 모델의 학습 데이터나 공개 패치에 반복해서 등장했을 가능성이 있기 때문입니다. 높은 점수가 일반적인 코드 추론을 반영하는 동시에 프로젝트 이름, 디렉터리 구조, issue 문구, 익숙한 구현 패턴에 대한 기억을 반영할 수 있다는 뜻입니다.
SchrodingerRepo의 접근법
상하이 자오퉁대학교 연구진은 이 문제를 검증하기 위해 SchrodingerRepo를 제안했습니다. 이 프레임워크는 평가가 시작될 때 저장소의 표현을 동적으로 생성합니다. 에이전트가 받는 프로젝트는 원본과 실행 동작이 동등하지만, 이름과 구조 같은 표면적 단서는 낯선 형태로 바뀝니다.
변환은 네 단계로 구성됩니다.
- 문제 설명 재구성: 원래 issue의 고정된 표현이나 문구에 대한 의존을 줄입니다.
- 네임스페이스 매핑: 클래스, 함수, 모듈 등의 이름을 바꿔 익숙한 식별자를 통한 탐색을 어렵게 합니다.
- 파일 내부 배치 재정렬: 실행 동작을 유지하면서 파일 안의 코드 배치와 구성을 바꿉니다.
- 기능 보존형 코드 재작성: 기능은 유지하되 기존 구현 방식과 표면적 형태를 변경합니다.
연구진은 SWE-bench Verified와 SWE-QA에서 여러 대규모 언어 모델을 평가했습니다. 보고된 결과에 따르면 저장소의 익숙한 단서를 제거할수록 모델의 성능은 일관되게 하락했습니다. 동시에 에이전트의 상호작용 비용도 크게 늘었습니다. 추가 비용의 주요 원인은 최종 패치 작성보다 저장소를 탐색하고 문제 위치를 찾는 과정에서 발생했습니다.
의미와 영향
이 결과만으로 현재 에이전트가 답을 단순히 암기한다고 단정할 수는 없습니다. 그러나 벤치마크 점수가 일반적인 디버깅 능력, 프로젝트 관습에 대한 친숙도, 학습 데이터에 포함됐을 가능성이 있는 코드의 기억을 함께 반영할 수 있다는 점은 분명히 보여줍니다. 평가 표현이 항상 고정되어 있다면, 모델은 특정 저장소의 단서를 이용해 더 짧은 경로로 정답에 접근할 수 있습니다.
견고한 코딩 에이전트라면 낯선 디렉터리를 읽고, 파일 간 의존성을 추적하며, 가설을 테스트하고, 이름과 구조가 도움이 되지 않는 상황에서도 조사 범위를 좁힐 수 있어야 합니다. 동일한 동작을 유지한 여러 저장소 표현을 평가에 활용하면 ‘프로젝트를 알아보는 능력’과 ‘문제를 해결하는 능력’을 더 잘 분리할 수 있습니다.
다만 변환 과정이 원래 과제와 무관한 추가 난도를 만들지 않도록 의미와 실행 결과를 엄격하게 검증해야 합니다. SchrodingerRepo의 핵심 가치는 데이터 누출에 대한 막연한 우려를 실험 가능한 평가 방식으로 바꾼 데 있습니다. 익숙한 코드베이스에서의 높은 점수만으로는 낯선 실제 개발 환경에서 안정적으로 작업할 수 있다는 사실을 입증하기 어렵습니다.
댓글
로그인 상태 확인 중…
댓글 불러오는 중…