$149로 오픈소스 메이저 버전 완성한 Claude 코딩 에이전트 실험 (simonwillison.net)
목차(5)
한줄 요약
AI 코딩 에이전트가 오픈소스 메이저 버전 릴리스의 리뷰·수정·문서화를 $149.25에 처리한 실제 사례.
Simon Willison은 자신이 관리하는 오픈소스 라이브러리 sqlite-utils의 4.0 안정 버전 출시를 앞두고, Claude Fable을 활용해 최종 릴리스 전 코드 리뷰부터 버그 수정, 문서 보완까지를 함께 진행했다. 총 37번의 프롬프트, 34번의 커밋, 30개 파일에 걸친 +1,321 -190 규모의 코드 변경이 이루어졌고, 비용은 약 $149.25였다. SemVer를 엄격히 따르는 그가 메이저 버전을 함부로 올리지 않는 원칙을 갖고 있다는 점에서, 이번 작업은 단순한 실험이 아니라 실제 출시 결정에 직결된 작업이었다.
AI가 찾아낸 게 무엇이었나?
첫 프롬프트는 간단했다. "4.0 안정 버전 출시 전 최종 리뷰 — 나중에 고치면 브레이킹 체인지가 될 수 있는 문제를 찾아달라." 이 한 줄로 Fable이 생성한 리포트에는 '릴리스 블로커'로 분류된 5가지 문제가 담겨 있었다.
그 중 가장 심각한 건 delete_where() 메서드의 트랜잭션 버그였다. 이 메서드는 DELETE를 실행한 뒤 커밋을 하지 않아 커넥션이 in_transaction=True 상태로 남는다. 이후 atomic()을 호출하면 세이브포인트 브랜치로 빠지고 그것도 커밋되지 않아, 결과적으로 데이터가 사라지는 현상이 발생한다. DB를 닫고 다시 열면 삭제한 행, 이후에 삽입한 행, 심지어 새로 만든 테이블까지 모두 사라진다. Willison은 이 버그를 직접 발견하지 못한 채 출시할 뻔했다고 인정했다.
그 외에도 Python 3.12에서 추가된 autocommit 설정 관련 호환성 문제가 있었다. sqlite3.connect(..., autocommit=True) 옵션을 사용하는 경우 sqlite-utils의 트랜잭션 처리가 거의 전체 테스트를 실패시키는 수준으로 충돌했고, 이 부분도 수정이 이루어졌다.
한 모델이 다른 모델의 작업을 검토한다는 것
작업이 마무리된 뒤 Willison은 GPT-5.5를 활용해 Fable의 작업물을 교차 검토했다. 처음에는 한 AI가 다른 AI의 작업을 검토한다는 개념이 다소 이상하게 느껴졌다고 그는 인정한다. 그러나 이 과정에서 실제로 유효한 문제가 추가로 발견됐다.
GPT-5.5가 찾아낸 문제는 두 가지였다. 하나는 db.query()가 잘못된 SQL을 실행한 뒤 ValueError를 던지기 전에 이미 커밋이 완료되는 문제, 다른 하나는 INSERT ... RETURNING 구문을 db.query()로 실행할 경우 반환된 제너레이터를 끝까지 순회하지 않으면 트랜잭션이 열린 채로 남아 데이터가 롤백될 수 있다는 점이었다. 둘 다 문서의 약속과 실제 동작이 어긋나는 케이스였다.
AI 간 교차 검토가 유효한 이유는 단순하다. 모델마다 학습된 패턴과 주의를 기울이는 지점이 다르기 때문에, 한 모델이 놓친 부분을 다른 모델이 잡을 가능성이 있다. 이 사례는 그 가능성이 실제로 작동한다는 증거다.
실무에서 어떤 의미인가?
이 사례가 흥미로운 건 비용 때문만이 아니다. 작업 방식 자체가 달라진다는 점이다. Willison은 Claude Code를 아이폰으로 실행한 채 4th of July 퍼레이드를 구경하다가, 에이전트가 처리를 마칠 때마다 다음 프롬프트를 입력하는 방식으로 작업을 이어갔다. 에이전트가 복잡한 작업을 처리하는 데 10~15분씩 걸리기 때문에 오히려 병렬로 다른 일을 할 수 있는 여유가 생긴다는 게 그의 설명이다.
소프트웨어 개발 외주나 코드 품질 보증 관점에서 보면, 이런 방식은 '사람이 모든 리뷰를 직접 한다'는 전제를 흔든다. 릴리스 전 최종 검토를 에이전트에게 맡기고, 그 결과를 사람이 판단해 다음 지시를 내리는 구조가 이미 실용적인 수준으로 작동하고 있다.
도입 전 체크포인트
AI 코딩 에이전트를 릴리스 리뷰나 버그 수정에 활용하기 전에 점검해야 할 사항들이 있다.
작업 범위를 명확히 정의할 수 있는가. 이번 사례에서 첫 프롬프트가 효과적이었던 이유는 목적이 명확했기 때문이다. "브레이킹 체인지가 될 수 있는 문제를 찾아달라"는 구체적인 조건이 에이전트의 탐색 방향을 결정했다.
사람이 최종 판단을 내리는 구조인가. Willison은 에이전트가 제안한 모든 변경 사항을 GitHub PR 인터페이스를 통해 직접 검토했다. 에이전트가 코드를 작성하더라도 커밋 단위의 검토는 사람이 담당해야 한다.
교차 검증 단계를 포함하는가. 단일 모델의 결과만 신뢰하지 않는 것이 중요하다. 서로 다른 모델로 교차 검토하는 단계를 프로세스에 포함시키면 누락된 문제를 잡을 가능성이 높아진다.
테스트 커버리지가 충분한가. 이번 작업에서 Python 3.12 autocommit 관련 문제를 발견할 수 있었던 건 테스트가 실제로 실패했기 때문이다. 에이전트가 생성한 코드의 품질은 기존 테스트의 커버리지에 의존한다.
자주 묻는 질문
Q.AI 코딩 에이전트가 릴리스 전 코드 리뷰에서 실제로 유용한가?
이번 사례에서는 사람이 미처 발견하지 못한 릴리스 블로커 5개를 에이전트가 먼저 찾아냈다. 특히 `delete_where()` 버그처럼 실제 데이터 손실로 이어질 수 있는 문제였음에도 발견되지 못했을 가능성이 있었다. 단, 에이전트가 제안한 수정 사항을 사람이 검토하지 않으면 새로운 문제가 유입될 수 있으므로, 리뷰의 도구로 활용하되 최종 판단은 사람이 내려야 한다.
Q.$149.25라는 비용은 어떤 기준으로 발생한 것인가?
원문에서 정확한 과금 구조는 설명되지 않는다. Willison은 Claude Max 구독을 사용 중이었고, 해당 구독에서 Claude Fable 접근이 제한적으로 제공되는 상황이었다고 밝혔다. 구체적인 토큰 소비량이나 API 호출 단가는 원문에 명시되어 있지 않다.
Q.AI 간 교차 검토 방식이 실제로 효과가 있는가?
이번 사례에서 GPT-5.5가 Claude Fable의 작업을 검토한 결과 두 가지 추가 문제가 발견됐다. Willison 본인도 처음엔 회의적이었지만 이 방식이 실제로 반복적으로 유효한 결과를 냈다고 밝혔다. 모델마다 패턴 인식의 강점이 다르기 때문에, 동일한 코드베이스에 대해 서로 다른 모델을 적용하는 것은 단순 반복이 아니라 보완적인 검증으로 작동할 수 있다.
관련 아티클
관련 사례
이 글의 키워드와 맞닿은 실제 개발 사례를 함께 보세요.