아티클 목록으로
코딩 AI

코딩 AI의 숨은 약점: 코드를 제대로 지우지 못한다

약 3분 소요

도입

AI 코딩 도구는 이제 함수를 작성하고 버그를 고치며 저장소 안에서 수정 지점을 찾을 수 있다. 하지만 “To Add Is Machine, To Delete Is Human” 논문은 덜 화려하지만 중요한 약점을 짚는다. 대규모 언어모델은 코드를 추가하는 것보다, 제거해야 할 코드를 정확히 지우고 거기서 멈추는 데 어려움을 겪는다. 연구진은 이를 deletion avoidance, 즉 삭제 회피라고 부른다.

핵심 내용

  • 테스트 통과가 곧 좋은 패치는 아니다. SWE-bench Verified 공식 리더보드의 상위 5개 모델을 분석한 결과, 모든 모델이 해결한 과제에서도 개발자 패치 기준 삭제 재현율은 최대 71.7%였다. 모델은 필요한 삭제가 있는 파일에는 92% 이상 도달했지만, 정확한 줄을 삭제한 비율은 52% 미만이었다.
  • 대표 패턴은 Guard-and-Go다. 모델은 오래된 로직을 삭제하는 대신 guard, fallback, 조건문 뒤에 감싸 남겨두는 경우가 많았다. 연구에 따르면 테스트를 통과한 패치의 29.0%가 이런 형태였다. 겉으로는 문제가 해결된 것처럼 보이지만, 코드베이스에는 유지보수 부담이 남는다.
  • 기존 테스트는 ‘사라졌는지’를 잘 보지 않는다. 연구진이 삭제 중심 Verified 과제 34개에 대상 코드가 남아 있으면 실패하는 테스트를 추가하자, 4개 프런티어 모델의 해결률은 63.2%에서 41.9%로 떨어졌다. 이는 기존 벤치마크가 우회성 수정에 관대할 수 있음을 뜻한다.
  • CanItDelete는 삭제 능력만 분리한다. 실제 수리 작업은 보통 추가와 삭제가 섞여 있어 원인 분석이 어렵다. 그래서 연구진은 실제 커밋에서 편집 전체가 삭제만으로 이뤄진 200개 과제를 모아 CanItDelete를 만들었다. 추가 작업을 없애도 최고 모델은 여전히 약 5개 중 1개 과제에서 실패했다.
  • 정확한 줄을 알려줘도 충분하지 않다. 삭제할 줄을 직접 제시하면 남겨두는 문제는 줄지만, 일부 모델은 범위를 넘어 삭제하거나 오히려 새 코드를 추가했다. 완전한 삭제와 과잉 삭제 방지는 별개의 능력이다.

의미와 영향

이 연구는 코딩 AI 평가의 초점을 단순한 테스트 통과에서 유지보수 가능한 패치로 넓힌다. 인간 개발자에게 삭제는 리팩터링과 버그 수정의 핵심이다. 필요 없는 로직을 남긴 채 조건문으로 우회하는 패치는 벤치마크 점수는 얻을 수 있어도, 실제 병합 가능한 코드라고 보기 어렵다.

긍정적인 신호도 있다. 논문은 삭제 중심 데이터를 소량 추가한 후학습이 불완전 삭제를 줄이고 SWE-bench Verified 성능을 높일 수 있음을 보였다. 다만 과잉 삭제도 늘어났기 때문에, 앞으로의 학습과 평가는 “끝까지 지우기”와 “정확한 경계에서 멈추기”를 함께 다뤄야 한다.

코딩 에이전트가 생산 환경의 동료가 되려면, 무엇을 생성할 수 있는지뿐 아니라 무엇을 안전하게 제거할 수 있는지도 검증해야 한다.

출처: Hugging Face Daily Papers

댓글

로그인 상태 확인 중…

댓글 불러오는 중…

관련 게시물

CCTest · Blog
코드 모델을 ‘정답’에서 ‘더 빠른 정답’으로 학습시키는 강화학습
코딩 AI
cctest.ai
코딩 AI

코드 모델을 ‘정답’에서 ‘더 빠른 정답’으로 학습시키는 강화학습

이 논문은 코드 모델이 테스트를 통과하는 데 그치지 않고 더 빠르게 실행되는 프로그램을 만들도록 학습하는 방법을 다룬다. 실행 시간을 보상에 넣는 방식은 직관적이지만, 측정 노이즈와 희소한 보상, GRPO 불안정성 때문에 쉽게 실패할 수 있다.

더 보기