배포 전에 한 번 더 돌리는 습관

바이브 코딩으로 만든 서비스를 배포하기 전, 혹시 몰라 AI에게 '버그 찾아서 고쳐줘'를 서너 번 더 돌리고 계십니까. 돌릴 때마다 뭔가 고쳐 주니 아직 손볼 데가 남았다는 느낌이 들고, 그래서 한 번 더 돌리게 됩니다.

1인 사업자나 기획자에게 이 반복은 합리적인 보험처럼 보입니다. 코드를 직접 읽어 판단할 수 없으니, 읽을 수 있는 쪽에 거듭 물어보는 것입니다. 그런데 매번 수정이 나오는 이유가 코드에 있지 않고 질문 방식에 있다면 어떨까요. 이번에 소개하는 논문은 그 지점을 실험으로 파고듭니다.

어떤 연구인가

Xietao Wang-Lin, Anton Isopoussu, Louis Mahon 세 연구자가 쓴 이 논문은 LLM을 버그 수정기로 확인 없이 반복해서 쓰는 상황을 다룹니다. LLM 기반 자동 프로그램 수리 도구가 코드 리뷰 단계에서 점점 더 많이 쓰이고 있다는 현실이 출발점입니다.

연구진이 던진 질문은 세 갈래입니다. 버그가 없는 코드를 주면 AI는 없다고 답하는가. 수정을 반복하면 코드는 어디로 흘러가는가. 그리고 AI 내부에서 무엇이 이런 편집 행동을 일으키는가. 이를 위해 여러 모델과 여러 수리 환경에서 같은 실험을 되풀이했고, 마지막 질문에는 모델 내부 작동을 직접 들여다보는 탐침 기법을 썼습니다.

무엇을 발견했나

첫 번째 결과가 가장 뼈아픕니다. 여러 모델과 환경에 걸쳐, LLM은 버그가 전혀 없는 프로그램에서도 일관되게 버그를 발견했다고 주장했습니다. AI 코드 리뷰 오탐이 특정 모델의 결함에 그치지 않고 공통된 경향으로 나타난 것입니다. 게다가 버그 있는 프로그램이 고쳐지는 비율보다 멀쩡한 프로그램이 망가지는 비율이 더 높았습니다. 반복 요청을 거듭할수록 얻는 것보다 잃는 것이 많을 수 있다는 뜻입니다.

두 번째는 반복의 끝이 어디인가입니다. 연구진은 이 과정을 오래 이어 가면 유사 버그 수정 순환이라 부를 만한 상태에 자주 빠진다는 것을 발견했습니다. 같은 변경이 더해졌다가 다음 회차에 지워지고, 그다음에 다시 더해지는 식으로 끝없이 되풀이됩니다. 코드에 버그가 있느냐 없느냐에 따라 갈라지는 두 경로와 그 끝을 정리하면 다음과 같습니다.

반복 수정 요청이 닿는 곳AI에게 버그 수정 요청버그 있는 코드일부만 고쳐진다버그 없는 코드버그가 있다고 답한다멀쩡한 코드가 망가진다같은 변경을 넣고 빼는 순환요청을 거듭하면

겉으로는 매번 수정이 일어나 일이 진행되는 듯 보이지만, 코드는 제자리를 맴돕니다.

세 번째 발견은 이 현상의 원인을 모델 내부에서 찾은 것입니다. 연구진은 편집 성향을 조절하는 조향 벡터가 존재한다는 것을 밝혔습니다. 모델 안에 버그 있는 코드라는 내부 표상이 따로 있고, 그 표상이 잘못 켜질 때 없는 버그를 고치는 행동이 유발된다는 해석입니다.

실무에 적용하면

바꿔야 할 것은 도구보다 묻는 방식입니다. '문제 있는지 봐줘'는 열린 질문이고, 이 논문에 따르면 AI는 열린 질문에 문제가 있다고 답하는 쪽으로 기울어 있습니다. 그러니 답이 나왔다는 사실 자체는 코드 상태에 관해 아무 정보도 주지 않습니다.

대신 판정 기준을 AI 바깥에 두십시오. 배포 전 확인은 이 기능이 이렇게 동작해야 한다는 목록을 먼저 적고, 그 항목이 통과하는지 확인하는 방식이어야 합니다. 테스트가 통과하고 사용자 시나리오가 재현되면 거기서 멈춥니다. 한 번 더 돌려서 수정이 나온다고 해서 개선된 것이 아닙니다. 논문이 말하는 대로, 멀쩡한 코드가 망가지는 쪽이 더 흔합니다.

협업 도구가 AI 리뷰를 자동으로 붙여 준다면, 그 리뷰가 몇 번째 회차인지, 이전 회차에서 넣었던 변경을 다시 빼고 있지는 않은지를 보십시오. 같은 파일에서 같은 줄이 오락가락한다면 AI 코드 리뷰 오탐의 순환에 들어갔다는 신호입니다. 그때는 리뷰를 한 번 더 돌리는 대신 사람이 판정을 내려야 합니다. 연구진도 이 결과가 목표가 모호할 때 어디서 멈출 것인가라는 문제에 시사점을 준다고 밝혔습니다.

주의할 점

이 글은 초록에 담긴 내용을 바탕으로 썼습니다. 연구진은 여러 모델과 여러 수리 환경에서 결과가 일관됐다고 밝혔지만, 어떤 모델과 어떤 환경이었는지, 오탐과 손상이 정확히 어느 정도였는지는 초록만으로 알 수 없습니다.

또한 연구는 사람이 확인하지 않고 AI에게 반복을 맡기는 상황을 대상으로 합니다. 사람이 매 회차 결과를 읽고 취사선택하는 경우에는 결과가 다를 수 있습니다. 조향 벡터에 관한 발견도 오탐의 기원을 설명하는 단서이지, 당장 사용자가 손댈 수 있는 설정은 아닙니다. 논문이 겨냥하는 것은 완전 자율 수정 시스템의 동학과 그 멈춤 조건입니다. 버그가 없다면 고치지 말라는 제목이 곧 결론입니다.