인공지능(AI)을 활용한 코드 작성과 리뷰가 보편화되면서, 개발자들은 'AI 코드 리뷰를 몇 번이나 반복해야 최적의 결과를 얻을 수 있을까?'라는 질문에 직면하고 있습니다. 코드 작성 후 AI 리뷰, 수정, 그리고 다시 리뷰하는 과정이 끝없이 이어지는 경우가 많기 때문입니다. 이러한 반복적인 루프가 과연 코드 품질 향상으로 직결되는지, 그리고 언제 멈춰야 하는지에 대한 명확한 기준이 부족했습니다.
최근 한 개발자가 약 400회의 대규모 언어모델(LLM) 호출을 통해 이 질문에 대한 답을 찾기 위한 실험을 진행했습니다. C 펌웨어 코드와 벤치마크 과제를 대상으로 리뷰어와 수정자를 분리하여 측정한 결과는 예상과 달랐습니다. 첫째, 같은 코드를 수정 없이 반복 리뷰했을 때 결함 커버리지(defect coverage)가 34%에서 76%까지 증가하여, AI 리뷰 한 번으로는 충분하지 않음을 보여주었습니다. 둘째, 하지만 리뷰와 수정을 반복하는 루프에서는 테스트 통과율은 유지되지만 코드 크기가 최대 152%까지 커지는 현상이 나타났습니다. 이는 수정 과정에서 새로운 변경과 위험이 발생하기 때문입니다. 셋째, 여러 번 지적된 사항이 항상 정확한 것은 아니었으며, 저장소(repository) 컨텍스트(context)를 제공했을 때 오탐(false positive)이 크게 줄어들어 AI 모델 자체뿐 아니라 모델에게 제공하는 정보의 범위가 중요함을 시사했습니다. 마지막으로, AI가 '지적 없음'이라고 하거나 테스트를 통과하더라도 코드 품질이 최적이라는 보장은 없었습니다.
이 실험은 AI 코딩 에이전트의 리뷰/수정 루프를 어떻게 설계하고 언제 멈출 것인가에 대한 중요한 통찰을 제공합니다. 단순히 '지적 0개'나 '테스트 통과'를 종료 조건으로 삼는 것은 불충분하며, 오히려 '리뷰는 여러 번, 수정은 한 번'이라는 원칙을 제안합니다. 즉, 여러 독립적인 AI 리뷰를 통해 먼저 결함(finding)을 모으고, 사람이 이를 선별한 후 한 번에 수정하는 방식이 더 효과적일 수 있다는 것입니다. 또한, 수정 폭이 크다면 다음 리뷰는 '재리뷰'가 아닌 '새로운 코드에 대한 첫 리뷰'로 간주해야 한다는 점도 강조합니다. 이는 AI 기반 개발 워크플로우를 최적화하고 불필요한 반복을 줄여 생산성을 높이는 데 기여할 수 있습니다.