Portal by Spotify cut my Claude Code token usage by 90%
개요
Spotify의 Portal by Spotify는 AI 코딩 작업에서 발생하는 불필요한 토큰 사용량을 줄이기 위해 Claude Code와 같은 고가 모델 대신 저렴한 모델을 활용하는 두 가지 모드(bulk-reader, code-writer)를 도입하여 토큰 사용량을 90%까지 절감했다.
주요 내용
* AI 코딩 비용 문제: AI 코딩 에이전트의 상당 부분이 추론보다는 파일 읽기, 테스트 파일 생성, 문서 업데이트 등 I/O 작업에 집중되어 불필요한 토큰 사용이 발생하며, 이는 개발자 연봉을 초과할 것으로 예상되는 AI 코딩 비용의 주요 원인이다.
* Portal by Spotify의 AiKA Modes: Portal은 AWS Lambda와 유사한 개념의 에이전트 런타임인 '모드'를 사용하여 I/O 집약적 또는 예측 가능한 패턴의 작업을 저렴한 모델로 위임하고, 복잡한 추론이 필요한 작업만 고가 모델에 할당한다.
* 두 가지 핵심 모드:
* bulk-reader: 여러 개의 대용량 파일을 읽어야 하는 경우, Claude Code 대신 Gemini 2.5 Flash와 같은 저렴한 모델을 사용하여 파일 내용을 요약하고 질문에 답변한다.
* code-writer: 테스트 코드, 설정 파일 스텁 등 기존 패턴을 따르는 코드 생성이 필요한 경우, Claude Code 대신 저렴한 모델을 사용하여 코드를 생성하고 디스크에 직접 작성한다.
* 계층적 라우팅 시스템 (Shunt 플러그인):
* Layer 1 (Hooks): Claude Code의 PreToolUse 훅을 사용하여 파일 크기 임계값을 초과하는 Read 호출 또는 특정 bash 명령(cat, head, tail 등)을 차단하고 bulk-reader 모드 사용을 지시한다.
* Layer 2 (Scripts): Portal CLI 호출을 래핑하는 bash 스크립트를 통해 Claude Code가 bulk-read 또는 code-write 스크립트를 이름으로 호출하면, 스크립트가 요청을 빌드하고 모드를 호출하며 결과를 반환한다.
* Layer 3 (Skills): Markdown 형식의 스킬 파일은 Claude Code에게 스크립트 호출 방법과 시점을 안내하며, 훅에 의해 읽기가 차단될 때 bulk-reader 스킬을 참조하도록 유도한다.
* 성능 벤치마크: Java 모노레포에서 테스트한 결과, bulk-reader 모드를 사용하여 Claude Code가 직접 파일을 읽는 경우 대비 토큰 사용량이 약 90% 감소했으며, code-writer 모드는 Claude Code가 코드를 생성하는 동안 토큰을 소비하지 않아 더 큰 절감 효과를 기대할 수 있다.
* 한계점:
* 편집 작업 위임 불가: worker 모델의 요약에는 정확한 줄 번호가 포함되지 않아, Claude Code가 특정 줄을 직접 수정해야 할 때는 해당 섹션을 직접 읽어야 한다.
* 추론 작업 위임 불가: worker 모델은 표면적인 패턴만 감지하며 미묘한 스레드 안전성 버그와 같은 문제는 Claude Code가 직접 해결해야 한다. 디버깅, 아키텍처 결정, 안전이 중요한 코드 등은 라우팅에서 제외된다.
* 지연 시간: 각 위임은 네트워크 왕복으로 인해 10~30초의 응답 시간을 가지며, 매우 큰 생성을 위해 여러 호출로 분할해야 할 수 있다.
* AiKA Modes의 재사용성 및 구성 가능성: bulk-reader와 code-writer 모드는 재사용 가능하며, 다른 프로젝트나 도구에서 Portal CLI를 통해 사용할 수 있다. 또한, 팀 내에서 공유 가능하며, 다른 용도(문서 작성, 코드 리뷰 요약, 번역 등)로 확장될 수 있다. 모드 구성만으로 모델 라우팅을 변경할 수 있어 시스템 엔지니어링 문제를 구성 문제로 전환한다.
시사점
Spotify의 Portal by Spotify 접근 방식은 AI 코딩 작업에서 발생하는 비용 효율성 문제를 해결하고, 고가 모델의 활용도를 높이며, 재사용 가능한 모듈식 AI 에이전트 구축을 위한 유연한 프레임워크를 제공한다는 점에서 실무적으로 중요한 시사점을 갖는다.
댓글
GitHub Discussions