Google에이전트와 개발

Google 코딩 에이전트, 요청 없는 버그 우회로 토큰 77% 더 쓴다

Google이 사내 코딩 에이전트 트레이스를 분석했더니, 요청 없이 버그를 파고든 세션은 대기 시간이 105% 길었다. 낡은 TODO를 지우는 정리 에이전트도 운영 중이다.

루카스 ·

Figure 2 도표. 요청 없는 버그 우회가 있는 세션은 같은 유형의 일반 세션보다 단계 수 +70%, 토큰 +77%, 대기 시간 +105% 많다는 결과를 보여 준다. 각 항목 아래에 정상 세션(파란 막대)과 버그 우회 세션(빨간 막대)을 비교한 막대가 있고, 하단에는 공정한 비교를 위해 고정한 조건(같은 개발자, 같은 코드베이스, 같은 작업 유형 등)이 적혀 있다.

Google이 사내 코딩 에이전트를 분석한 결과를 Google Developers Blog에 공개했다. 코드에 남은 TODO(bug/...), FIXME(bug/...) 주석이 에이전트를 불필요한 우회로 이끌고, 개발자가 요청하지 않은 버그를 파고든 세션에서 토큰과 대기 시간이 크게 늘었다는 내용이다.1,2

요청 없이 버그를 파고든 세션은 그렇지 않은 세션보다 세션당 스텝이 70%, 토큰이 77%, 대기 시간이 105% 많았고 모두 p<0.0001이었다. 이 수치는 이미 닫힌 버그만이 아니라 아직 열린 버그를 포함한 요청 없는 우회 세션 전체의 값이다. 분석 대상은 엔지니어 수천 명의 세션에서 나온 에이전트 스텝 수억 개 규모의 분산 트레이스다.1,2

측정 결과

파일을 읽은 세션 중 13%, 약 7개 중 1개가 버그 번호가 달린 TODO나 FIXME에 노출됐다. 이런 주석을 만난 경우의 94%는 무시했고, 6%는 해당 버그 ID를 조사하거나 고치는 후속 행동을 했다.

후속 행동의 83%는 개발자가 그 버그를 요청하지 않은 상태에서 일어났다. 이런 요청 없는 우회 중 닫힌 티켓은 41%로, 수정·검증이 끝난 티켓 32%와 폐기(won't-fix) 9%를 합한 값이다. 중복이나 접근 제한 티켓 2%는 이와 별도 항목이다. 요청 없는 우회의 절반 넘게는 버그가 NEW, ASSIGNED, ACCEPTED 상태로 열려 있었고, 이 중 61%는 조회만, 39%는 코드 수정까지 이어졌다.1,2

Google은 개발자, 코드베이스 복잡도, 작업 유형, 모델 등급, 읽은 파일 수, 초기 프롬프트 길이, 버그 참조가 나온 스텝을 통제했다. 분석에는 다방향 고정효과 회귀와 개발자 단위 군집 표준오차를 썼다.1

측정 방식과 사례

월 수백만 건의 세션을 사람이 일일이 검토할 수 없어, Google은 코드에서 얻는 객관적 신호를 찾았다. TODO(bug/...)는 버그가 해결되거나 폐기된 뒤에도 남는 경향이 있고, 연결된 버그 티켓이 공식 기록이다. 에이전트가 만난 TODO를 버그 상태, 사용자 프롬프트와 대조해 정당한 작업과 낭비된 우회를 자동으로 가렸다.

첫 사례에서는 에이전트가 무관한 버그를 조사하다 SurfaceControlTest.java의 TODO(bug/XXX)를 보고, 2023년에 이미 고쳐진 버그를 여러 스텝에 걸쳐 파고들었다. 두 번째 사례에서는 조사 중이던 버그 안의 TODO를 보고 요청 없이 코드를 고치기로 했다. 코드 검색과 사내 지식 검색을 여러 번 돌린 뒤 ModelDownloaderV1 코드를 바꿨고, 사람이 범위 확장을 지적하자 모델이 잘못된 확대였음을 인정했다.

Google은 낡은 명세, 오래전 해결된 버그, 뒤처진 문서가 에이전트의 계획·조사 단계에서 맥락으로 흡수된다고 설명했다. 에이전트의 권한(도구·스킬)이 커질수록 곁가지 작업도 비례해 늘며, 비용은 최선의 경우 토큰·스텝·시간 소모, 최악의 경우 잘못된 사실에 근거한 구현 판단이라고 밝혔다. 블로그의 취지는 사람이 코드에서 쉽게 넘기는 내용을 에이전트가 행동 요청으로 받아들인다는 것이다.1

정리 에이전트와 한계

Google은 낡은 버그 참조를 찾는 정리 에이전트(todo cleaner)를 운영한다. 이 에이전트는 버그 상태를 확인한 뒤 버그, 파일, 코드베이스의 변경 이력을 때로 수년치까지 추적하고, TODO와 그 의도가 낡았음을 확인한 경우에만 삭제 변경을 리뷰에 올린다. 실제 삭제는 사람 리뷰어가 승인해야 이뤄진다. 최근 6개월간 에이전트가 올린 삭제 변경으로 낡은 참조 수천 건이 제거됐고, 리뷰어 승인율은 95%를 넘었다.1,2

버그 상태만으로는 TODO가 아직 필요한지 판단하기 어려워 이력 추적이 필요했다. 측정 대상도 TODO(bug/...)와 FIXME(bug/...) 형식의 버그 참조로 한정된다. 두 사례는 사소한 우회였지만 시간, 토큰, 사람의 개입 비용이 든 실제 방해였다.

Google은 에이전트가 일하기 좋은 코드베이스를 만드는 도구로 presubmit 분석기, 코드베이스 전체 스캐너, 죽은 TODO를 정리하는 자동 코딩 에이전트를 바로 확장할 수 있는 해법으로 소개했다. 가치가 낮다고 미뤄 둔 부채 정리 프로젝트도 다시 평가해야 한다고 권고했다.1

댓글

기사에 대한 의견이나 틀린 내용 제보를 남겨 주세요.

댓글을 불러오고 있습니다.