본문으로 건너뛰기

© 2026 Molayo

Dev.to헤드라인2026. 06. 19. 17:15

나를 위한 코드 리뷰어를 만들었습니다. API 청구서를 통해 진짜 비용이 어디에 숨어 있었는지 알게 되었습니다.

요약

멀티 에이전트 기반의 코드 리뷰 도구인 Revue를 개발하며 겪은 API 비용 최적화 경험을 다룹니다. 에이전트 워크플로우가 복잡해질수록 발생하는 막대한 토큰 비용 문제를 구독 토큰 활용과 모델 전환을 통해 해결하는 방법을 제시합니다.

핵심 포인트

  • 멀티 에이전트 워크플로우는 컨텍스트 소모가 커서 API 비용이 급증할 수 있음
  • API 호출 대신 구독 토큰을 사용하는 로컬 세션 활용으로 비용 절감 가능
  • CI 환경에서는 Sonnet 4.5 대신 DeepSeek-V4-Pro 같은 저렴한 모델로 전환 권장
  • Revue는 특정 모델이 아닌 GitHub/GitLab 등에서 작동하는 리뷰 워크플로우임

저는 3월부터 Revue를 만들어 왔습니다.

처음에는 개인적인 도구로 시작했습니다. 저는 단순히 "Claude에게 이 PR을 리뷰해달라고 요청하기"와 같은 일회성 프롬프트가 아니라, 제 개발 워크플로우 내부에서 실행되는 멀티 에이전트 (multi-agent) 코드 리뷰를 원했습니다. 4월 무렵에는 핵심 기능이 작동하기 시작했고 집중적으로 테스트를 진행했습니다.

그러다 Anthropic API 사용량을 확인했습니다. Max 구독료 외에 13일 동안 78.83달러가 추가로 발생했습니다. 계측기를 확인하지 않은 채 Sonnet 4.5로 하루에 150만에서 200만 개의 입력 토큰 (input tokens)을 소모하고 있었던 것입니다.

아이러니한 상황이었습니다. 저는 AI 지원 개발을 더 저렴하게 만들기 위한 도구를 만들고 있었는데, 정작 가장 비싼 방식으로 그 일을 하고 있었습니다.

비용이 실제로 어디서 발생했는가

API 비용이 제 Max 구독료와 별도로 청구된다는 점은 이미 알고 있었습니다. 그것은 놀라운 일이 아니었습니다. 진짜 놀라웠던 점은 훌륭한 리뷰가 얼마나 빠르게 토큰을 소모하느냐 하는 것이었습니다.

6개의 에이전트를 개선하고, 도구 호출 (tool calling) 기능을 추가하고, 댓글 추적 (comment tracking) 기능을 구축함에 따라 각 리뷰는 점점 더 무거워졌습니다. 더 많은 에이전트가 더 많은 컨텍스트 (context)를 읽고, 더 많은 호출을 수행하며, 더 많은 스레드를 따라갔습니다. 워크플로우가 좋아질수록 실행 비용은 더 많이 들었고, 저는 테스트하는 동안 그 모든 것을 API를 통해 처리하고 있었습니다.

그때부터 차이점이 중요해지기 시작했습니다. API 토큰은 토큰당 비용이 발생하지만, Max 플랜에 이미 포함된 구독 토큰은 제가 미리 지불한 것입니다. 제 세션 내에서 실행되는 리뷰는 무료였습니다. 하지만 API를 통한 동일한 리뷰는 모든 토큰에 대해 비용을 청구했습니다. 멀티 에이전트 (multi-agent) 리뷰는 토큰을 빠르게 소모하며, 그에 따라 청구 금액도 올라갑니다.

해결책은 두 가지였습니다:

  1. 리뷰를 커밋하기 전, 제가 이미 지불한 구독 토큰을 사용하는 제 세션 내부로 옮겼습니다.
  2. CI를 위해 더 저렴한 모델로 전환했습니다: Sonnet 4.5에서 DeepSeek-V4-Pro로 변경했습니다.

Revue의 실체

Revue는 리뷰를 수행하는 모델이 아니라 코드 리뷰 워크플로우입니다. Revue는 리뷰가 실제로 중요한 두 곳, 즉 커밋 전 사용자의 로컬 머신과 모든 풀 리퀘스트 (pull request) 시의 CI에서 실행됩니다. GitHub, GitLab, Bitbucket 전반에 걸쳐 거의 모든 선택 가능한 모델에서 동일하게 작동합니다.

로컬 머신(machine)에서 해당 레이어는 /revue Claude Code 스킬입니다. 기존 Claude Code 세션 내에서 스테이징된 디프(staged diff)를 대상으로 실행하므로, API 지갑 대신 구독 토큰(subscription tokens)을 사용합니다. 별도의 비용이 발생하지 않습니다.

여섯 개의 에이전트(agent)가 병렬로 실행됩니다:

  • Security (보안): 인젝션 벡터(injection vectors), 인증 우회(auth bypasses), 공급망 리스크(supply-chain risks)를 포착합니다.
  • Performance (성능): O(n²) 루프, 메모리 누수(memory leaks), 비효율적인 쿼리(queries)를 표시합니다.
  • Architecture (아키텍처): 결합도 위반(coupling violations) 및 누락된 에러 핸들링(error handling)을 확인합니다.
  • Code Quality (코드 품질): 명명 규칙(naming), 중복(duplication), 테스트 가능성(testability)을 검토합니다.
  • Licensing (라이선스): 종속성(dependencies) 내 GPL 및 AGPL 호환성을 확인합니다.
  • Synthesis (종합): 에이전트 간의 결과물을 조정(reconcile)하여 터미널에 출력합니다.

보안 추론(Security reasoning)은 성능 추론(performance reasoning)과 다릅니다. 이들을 하나의 프롬프트(prompt)에서 함께 실행하면 컨텍스트 압박(context pressure)이 발생하여 두 가지 모두의 품질이 저하됩니다. 병렬로 실행한다는 것은 전체 리뷰 시간이 가장 느린 단일 에이전트의 실행 시간과 거의 비슷하다는 것을 의미합니다.

모델을 교체하는 것은 쉬운 부분입니다

코멘트를 작성하는 에이전트는 누구나 복제할 수 있는 부분이며, 벤더(vendor)가 새로운 모델을 출시할 때마다 무료로 성능이 향상되는 부분입니다. 제가 실제로 시간을 쏟은 것은 그 주변을 둘러싼 레이어(layer)였습니다.

종합(synthesis) 에이전트는 단순히 여섯 개의 출력을 쌓아두기만 하지 않습니다. 에이전트 간의 모순을 포착하고, 결과가 사용자에게 전달되기 전에 각 발견 사항을 코드와 대조하여 검증합니다. 따라서 사용자는 서로 논쟁하는 여섯 명의 리뷰어를 읽게 되는 상황을 겪지 않아도 됩니다. 풀 리퀘스트(pull requests)에서 Revue는 피드백을 쏟아붓고 침묵하는 대신, 자신의 코멘트에 대한 사용자의 답변을 읽고 그에 응답합니다. 모든 실행은 로그(log)로 기록되므로, 스크롤되어 사라지는 코멘트 대신 리뷰 이력(review history)을 가질 수 있습니다.

A Revue security finding on a pull request, a developer reply, and Revue acknowledging and resolving the thread

Zara 보안 에이전트가 누락된 HTTP 타임아웃을 감지하고 수정을 제안합니다. 개발자가 완료되었다고 답하면, Revue는 이를 확인하고 스레드를 종료합니다. 이 리뷰는 단발성 댓글이 아니라, Revue가 전체 라이프사이클(lifecycle)에 걸쳐 추적하는 대화가 됩니다.

이 계층은 모델이 개선되더라도 변하지 않고 유지되는 부분입니다. 모델은 여러분이 선택합니다. 리뷰 워크플로우(workflow)는 여러분이 실제로 실행하는 것입니다.

CI 비용 문제

CI 파이프라인(pipeline)의 경우, Revue는 GitHub Actions, GitLab CI 또는 Bitbucket Pipelines의 파이프라인 단계(step)로 실행됩니다. 여기서 비용은 여러분의 API 지갑에서 발생하며, 여러분이 모델을 선택하기 때문에 비용 또한 직접 선택하게 됩니다.

저는 두 가지 모델을 통해 동일한 리뷰 작업량을 추적했습니다:

  • 4월, Sonnet 4.5, 13일: API 비용 $78.83
  • 5월~6월, DeepSeek, 동일하거나 더 많은 작업량 22일: 총 $27
  • 가장 작업량이 많았던 날(전체 구현 스프린트): DeepSeek에서 $4.30, Sonnet에서 약 $15 (약 70% 더 저렴함)

기본적으로 OpenRouter를 통해 DeepSeek-V4-Pro로 실행됩니다.

이러한 절감은 Revue의 아키텍처(architecture)가 영리해서가 아니라, 모델 선택에서 비롯된 것입니다. 저는 Sonnet 4.5, Haiku 4.5, Qwen3 Coder, DeepSeek-V4-Pro를 테스트했습니다. DeepSeek가 승리했습니다. 코드 리뷰의 정밀도 면에서는 Sonnet 4.5와 맞먹지 않지만, 자동화된 CI 리뷰용으로는 충분히 훌륭했으며 비용 차이가 결정적이었습니다. 기술적인 독자들에게 정직해야 하기에 이 점을 명시적으로 밝힙니다.

먼저 로컬에서 /revue를 실행하면 절감 효과가 배가됩니다. 푸시(push) 전에 수정된 이슈는 풀 리퀘스트(pull request)에 도달하지 않으므로, CI 리뷰를 트리거(trigger)하지 않습니다. 즉, 푸시하고, 플래그(flag)를 받고, 수정하고, 다시 푸시하는 과정이 반복될 때마다 비용이 청구되는 루프를 건너뛸 수 있습니다.

여러분은 본인의 키(key)를 가져와 사용합니다: OpenAI, Anthropic, Azure 또는 모든 OpenRouter 모델을 사용할 수 있습니다. 모델은 여러분이 선택하며, 여러분의 디프(diff)만이 여러분의 머신을 떠나게 됩니다.

대상 사용자

AI 보조 개발(AI-assisted development)을 하고 있으며 API 청구 금액이 늘어나고 있다면, /revue 로컬 워크플로우가 가장 직접적인 해결책입니다. 여러분은 이미 구독료를 지불하고 있습니다.

만약 CI(지속적 통합) 환경에서 GPT-4 또는 Sonnet급 모델을 사용하여 AI 리뷰를 실행하고 있다면, Revue는 더 저렴한 모델로 교체할 수 있게 함으로써 청구 금액을 절감해 줍니다. 또한 Revue는 단일 모델 호출로는 제공할 수 없는 워크플로우, 즉 멀티 에이전트 합성 (multi-agent synthesis), 모순 체크 (contradiction checks), 회신 루프 (reply-loop), 그리고 히스토리 (history) 기능을 추가합니다. 모델 전환은 비용을 절약해 주지만, 워크플로우는 여러분이 이 도구를 계속 사용하게 만드는 이유입니다.

AI 덕분에 코드 작성은 빨라졌지만 리뷰가 병목 구간이 된 팀에 있다면, Revue는 리뷰어를 대체하는 것이 아니라 동료 리뷰어 역할을 합니다. Revue가 1차 검토를 수행하므로, 여러분의 리뷰어들은 인간의 판단이 필요한 결과물에 시간을 집중할 수 있습니다. 인간은 루프 안에 머물러 있습니다(human stays in the loop). 누군가 특정 결과물을 오탐 (false positive)으로 표시하면, Revue는 작은 풀 리퀘스트 (pull request)를 통해 해당 패턴을 저장소의 리뷰 설정 (review config)에 기록합니다. 이를 한 번 머지 (merge)하면 팀 전체가 더 이상 해당 문제를 보지 않게 되며, 이 공유된 설정은 모든 수정 사항과 함께 성장하는 지식 베이스 (knowledge base)가 되어 병목 현상이 반복되는 대신 점차 줄어들게 됩니다.

사용해 보기

Revue는 현재 운영 중입니다. 무료 티어: 월 25회 리뷰 가능, 신용카드 불필요.

revue.sh에서 가입하여 라이선스 키를 받으세요. 온보딩 페이지에서 설치 명령어를 제공합니다:

curl -fsSL https://raw.githubusercontent.com/Revue-sh/revue/main/scripts/install.sh | bash -s -- --key <your-key>

https://revue.sh

저는 3월부터 Revue를 운영해 왔으며, 여러분의 워크플로우에서 어떻게 작동할지 진심으로 궁금합니다. 한 번 시도해 보시고 의견이 있다면 support@revue.sh로 이메일을 보내주세요.

AI 자동 생성 콘텐츠

본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0