다른 버그를 조사하던 코딩 에이전트가 코드 파일에서 TODO 주석을 발견했다. 그 주석이 가리키는 버그는 2023년에 이미 수정됐지만, 에이전트는 해당 버그를 더 알아보는 조사에 들어갔다. 코드에 남은 할 일 표시가 끝난 일을 다시 쫓게 만든 셈이다.

구글이 11월 6일 공개한 「Agent Distraction」의 사례다. 구글은 엔지니어 수천 명의 에이전트 상호작용 기록과 수억 단계가 넘는 행동 기록을 분석해, 코드의 버그 참조가 요청 밖의 작업으로 이어지는 양상을 살폈다. 핵심은 에이전트가 주석을 읽었느냐보다, 그 뒤에 어떤 일을 스스로 시작했느냐에 있다.

주석을 읽는 것과 일을 벌이는 것

TODO는 코드에 남기는 할 일 표시다. 구글은 그중에서도 버그 번호가 연결된 TODO(bug/...)와 FIXME(bug/...)를 분석의 단서로 삼았다. 주석에는 할 일이 남아 있는 것처럼 적혀 있어도, 연결된 버그 기록에는 이미 해결됐거나 더는 처리하지 않기로 한 상태가 남아 있을 수 있기 때문이다.

분석에는 두 가지 대조가 필요했다. 에이전트가 만난 TODO를 연결된 버그의 상태, 사용자의 요청과 대조했다. 버그 상태는 아직 유효한 문제인지를, 사용자 요청은 이번에 맡긴 일인지를 구별하는 기준이다.

구글에 따르면 파일을 읽은 수백만 세션 가운데 13%가 이런 버그 참조에 노출됐다. 그렇다고 모두 추가 작업으로 이어진 것은 아니다. 주석을 만난 경우의 94%에서는 이를 무시했고, 6%에서는 해당 버그 번호를 겨냥한 후속 행동이 나왔다. 그 후속 행동이 나타난 세션 가운데 83%는 개발자가 해당 버그를 다뤄 달라고 요청하지 않은 경우였다. 83%를 전체 세션에서 작업이 이탈한 비율로 읽어서는 안 된다.

요청하지 않은 우회 작업에는 이미 종료된 버그를 쫓는 경우와, 아직 열린 버그로 작업을 넓히는 경우가 모두 있었다. 버그가 실제로 남아 있다는 사실과 사용자가 그 버그를 맡겼다는 사실은 별개다. 열린 버그로 범위를 넓힌 경우에도 조사에 머물 때가 있었고 코드 수정까지 진행할 때가 있었다.

구글이 소개한 다른 사례에서는 에이전트가 조사 중 TODO를 발견한 뒤, 요청받지 않은 수정을 하기로 결정했다. 여러 차례 코드와 내부 지식을 검색한 끝에 코드를 바꿨고, 이후 사람이 작업 범위가 넓어진 점을 지적했다. 주석의 내용이 낡았는지만으로는 이런 행동을 모두 설명할 수 없다. 아직 할 가치가 있는 일이라도 이번 요청의 범위인지는 따로 판단해야 한다.

옆길에서 쓴 단계와 토큰, 시간

구글의 분석에서는 요청하지 않은 버그로 우회한 세션이 더 많은 단계와 토큰, 대기 시간을 쓰는 것으로 나타났다.

지표 구글이 보고한 세션당 증가율
단계 수 70%
토큰 수 77%
대기 시간 105%

이 수치는 구글 내부 기록에서 개발자, 코드베이스 복잡도, 작업 유형, 모델 등 여러 조건을 통제한 회귀분석 결과다. 개별 TODO 하나가 어느 환경에서든 같은 비용 증가를 일으킨다는 뜻은 아니다. 분석에서 관측된 차이는 추가 작업의 부담이 코드 수정 여부에만 달려 있지 않음을 보여 준다. 버그를 찾아보고 맥락을 조사하는 우회도 단계와 토큰, 시간을 사용한다.

구글은 대응 과정에서 낡은 버그 참조를 정리하는 에이전트도 만들었다. 다만 버그가 종료됐다는 이유만으로 주석을 지우지는 않았다. 버그와 파일, 코드 변경 이력을 살펴 주석뿐 아니라 그 주석을 남긴 의도까지 더는 유효하지 않은지 확인한 뒤, 삭제 변경을 사람의 검토에 보냈다.