Как Spotify срезал 90% токенов в Claude Code
Когда вы даете условному Claude Code задачу разобраться в легаси-проекте или написать тесты, львиная доля токенов улетает не на гениальный ризонинг. Она сгорает на том, что фронтирная модель за бешеные деньги просто читает файлы с тысячами строк кода ради поиска одного метода или фигачит тридцать типовых юнит-тестов по шаблону.
И разработчики скармливают этот мусор топовым frontier-моделям, которые для таких задач оверквалифайд примерно как профессор ядерной физики, подметающий склад. В итоге компании начинают сжигать по $300–$1000 на "ИИ-разработчика" в месяц просто на перекладывании байтов туда-обратно.
Инженеры из Spotify выкатили статью и репозиторий со своими AI-плагинами (portal-ai-plugins), где показали плагин shunt, срезающий потребление токенов в Claude Code в среднем на 90%.
Архитектурный паттерн там раскладывается на три слоя:
1️⃣ Блокировки через хуки Раньше все пытались писать в CLAUDE.md: «Пожалуйста, не читай файлы целиком, экономь токены». Модели, естественно, глубоко плевать на эти мольбы — она всё равно гребет файлы сотнями строк через cat.
В Spotify зашли через рантайм: написали PreToolUse-хуки. Логика простая: если файл длиннее 350 строк, а агент пытается сделать Read или прочитать его через cat/head/tail/less в терминале — хук намертво блокирует операцию. Никаких исключений. Пропускаются только таргетированные чтения с явными offset и limit или пайпы вроде cat file | grep.
2️⃣ Делегирование рутины дешевым воркерам Когда хук блокирует чтение, он заворачивает Claude на вызов скрипта bulk-read. Скрипт упаковывает файлы в XML и отправляет их дешевой рабочей лошадке (например, Gemini 2.5 Flash). Воркер делает грязную работу и возвращает жестко структурированную выжимку: список методов, структуры данных, конкретные факты. Claude получает в свой контекст 100 токенов готовой выжимки вместо 15 000 токенов сырого кода.
3️⃣ Генерация мимо контекста С шаблонным кодом поступили еще проще. Скрипт code-write отправляет спеку и файл-референс дешевой модели, забирает сгенерированный код и пишет его сразу на диск. Дорогая основная модель даже не видит сгенерированный бойлерплейт. Она не тратит на него токены — файл уже лежит в проекте, готовый к точечным правкам.
Где начинаются грабли: 🟠 Рассуждения и дебаг делегировать нельзя. Дешевые легковесные модели отлично делают саммари интерфейсов, но напрочь слепы к сложным багам. В тестах того же Spotify воркер в упор не заметил ошибку потокобезопасности, которую Claude вскрыл за пару секунд. Дебаг, архитектура и критическая логика должны оставаться на сильной модели. 🟠 Сетевой оверхед. Каждый вызов воркера — это лишний сетевой раунд запросов (10–30 секунд). Если дергать делегирование на файлах в 100 строк, вы проиграете по времени и удобству, ничего толком не сэкономив. 🟠 Галлюцинации по строкам. Воркеры паршиво ориентируются в точных номерах строк. Поэтому для правок Claude все равно приходится точечно перечитывать конкретные куски исходника через offset/limit.
Сам репозиторий Spotify завязан на их внутреннюю экосистему Portal и CLI, но паттерн — это база, которую в том или ином виде придется внедрять всем, кто по полной использует нейронки для разработки. Иначе денюжек не хватит. 🤷♂️