The agent didn't hallucinate. It ignored what the repo already knew.

개요

이 연구는 AI 코딩 도구가 생성한 코드에서 발생하는 실패 모드를 조사했으며, 일반적인 예상과 달리 API를 잘못 만드는 '환각'보다는 기존 코드베이스의 지식을 무시하는 패턴이 주요 문제로 나타났습니다.

주요 내용

* 연구 설계: 12명의 리뷰어로 구성된 파이프라인을 통해 3개의 Copilot PR을 분석했으며, 분석 도구 'review-pro'는 각 주장에 대한 저장소 내 증거를 요구하도록 설계되었습니다.
* 테스트 코퍼스: GitHub Copilot이 작성하고 실제 조직에서 병합된 PR 3건을 대상으로 분석을 수행했습니다.
* 결과 1: 환각 없음: 분석된 PR에서 AI가 존재하지 않는 API, 심볼, 임포트 또는 구성 키를 만들어내는 '환각' 현상은 발견되지 않았습니다. 단 하나의 '필요 없는 종속성'이 발견되었으나, 이는 코드베이스의 기존 버전으로도 해결 가능했습니다.
* 결과 2: 기존 규범 무시: 실패의 주요 원인은 AI가 새로운 것을 발명하는 것이 아니라, 코드베이스에 이미 존재하는 규범, 패턴 또는 해결책을 인지하지 못하고 이를 무시하는 것이었습니다.
* 예시 1: 새 코드가 기존에 이미 처리된 예외 처리 로직(가드)을 무시하고 에러를 발생시켰습니다.
* 예시 2: 외부 SDK 버그 수정에 대한 PR이었으나, 실제로는 수정이 부분적이었고 기존의 우회 코드를 제거함으로써 문제가 다시 발생했습니다.
* 예시 3: 새로운 타임아웃 상수가 기존 헬퍼 함수의 로직과 반대로 작동하고, 실제 사용 환경에서는 설정되지 않는 환경 변수에 의존했습니다.
* 결과 3: CI 녹색 불빛의 함정: CI 테스트 통과가 코드의 실제 위험을 보장하지 못했습니다. 분석된 PR 대부분에서 CI는 녹색 불빛을 받았지만, 코드 변경으로 인해 발생할 수 있는 실제 문제는 테스트되지 않았습니다.
* 결과 4: 도구의 자가 교정: 연구자는 자신의 초기 가설에 오류가 있음을 도구와 리뷰어들의 검증을 통해 두 번 수정받았습니다. 이는 '증거 기반 검토'의 중요성을 보여줍니다.
* 문제점: 일부 리뷰어의 판단 근거가 틀리거나, 외부 SDK 검증이 누락되는 등 개선의 여지가 있었습니다.
* 다중 리뷰어의 이점: 12명의 리뷰어를 사용함으로써 다양한 관점에서 문제를 발견하고, 의견 충돌 시 합성 과정을 통해 해결하는 효율성을 높였습니다.

시사점

AI 생성 코드의 문제는 '발명'보다는 '기존 지식 무시'에 있으며, 이를 해결하기 위해서는 코드 변경 사항뿐만 아니라 저장소 전체를 탐색하고 과거 코드 변경 이력을 추적하는 등 더 심층적인 코드 검토 프로세스가 필요합니다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions