Загрузка 0
ПОДЕЛИТЬСЯ

Мой блог

Листай вниз

Как я повторил трюк Spotify для Claude Code: экономия токенов, которая обошлась дороже

Как я повторил трюк Spotify для Claude Code: экономия токенов, которая обошлась дороже

Вопрос экономии токенов при решении агентских задач стоит очень остро. Обработка объемных документов или генерация тестов с помощью передовых моделей обходится недешево, особенно при оплате по API. Инженеры Spotify попытались решить эту проблему, внедрив специальный плагин shunt, который перекладывает рутинное чтение и написание кода на более дешевые или локальные языки. Я решил воспроизвести этот подход в собственном окружении с Claude Code, чтобы проверить эффективность метода на практике.

Обзор архитектуры проекта и структуры файлов
Общий обзор структуры репозитория, задействованного в бенчмарках.

Исходное решение Spotify строилось на использовании двух режимов в корпоративной платформе Portal. Идея проста: бо́льшая часть работы агента заключается вовсе не в логическом мышлении, а в обычном чтении файлов. Когда инструмент пытается проанализировать документ длиннее 350 строк, специальный хук перенаправляет задачу на вспомогательную модель, которая возвращает краткую выжимку. Аналогичным образом работает и генерация шаблонного кода, отправляемого напрямую на диск.

Просмотр исходного кода и файлов проекта в редакторе
Структура файлов, используемая для проверки эффективности чтения документов ИИ.
Консоль управления задачами и мониторинг запросов
Вывод диагностических сообщений в терминале в процессе работы агента.

Настройка плагина и первые технические трудности

Согласно отчетам Spotify, на масштабных монорепозиториях экономия при чтении крупных файлов достигала 90% при задействовании условного Gemini 2.5 Flash в качестве рабочей модели. Поскольку оригинальный плагин является открытым, мне удалось отвязать его от закрытой экосистемы Portal. В качестве альтернативы я задействовал сервер Lemonade с локальной моделью Qwen3-Coder-30B-A3B и утилиту Claude Haiku через безголосовую сессию Claude Code, что ближе всего к оригинальной архитектуре.

Реклама
Панель управления ИИ-агентами и метрики производительности
Интерфейс дашборда, использованного в качестве тестового стенда.
Настройка параметров генерации и параметров моделей
Настройка локальных серверных компонентов для обработки запросов.

Однако перед тем как удалось запустить систему в работу и замерить первые токены, пришлось столкнуться с тремя серьезными сбоями. Во-первых, хуки плагина использовали устаревший формат команд, который текущая версия Claude Code просто не принимала, из-за чего все запросы завершались ошибками, пока я не изменил возвращаемые значения. Во-вторых, локальная модель выдавала некорректные данные: бэкенд ROCm заставлял Qwen3-Coder придумывать несуществующие функции, тогда как бэкенд Vulkan справлялся с копированием строк корректно. В-третьих, автономный режим Claude Code пытался задействовать интерактивные разрешения, которые в фоновом режиме приводили к сохранению системных подсказок вместо готового кода.

Почему стандартные хуки не сработали с актуальными моделями

Моим испытательным стендом стала открытая панель Agency, а в роли главного мозга выступала актуальная модель Opus 5.5. Я замерял показатели в командной строке с помощью команды контекста, учитывая базовые фиксированные накладные расходы сессии. Первой задачей было извлечь все HTTP-маршруты из файла размером более 3000 строк. На практике Opus справился с помощью встроенного поиска grep, вообще не открывая сам файл целиком и потратив минимум токенов на формирование таблицы маршрутов.

Когда я усложнил задачу и попросил проанализировать логику организации кода и зависимостей, разница между включенным и выключенным плагином оказалась минимальной и укладывалась в рамки статистической погрешности. Модель Opus действовала ровно так же, как и раньше: находила нужные фрагменты через grep и точечно подгружала их через утилиту sed. Хуки плагина просто не перехватывали те команды, которые использовались в работе, поэтому специализированный навык чтения оставался невостребованным.

Делегирование записи: почему самостоятельная работа оказалась эффективнее

Убедившись, что функция чтения работала автономно и без помощи плагина, я перешел к тестированию генерации тестов для интерфейса командной строки. Opus успешно загрузил инструмент написания кода и сформировал детальную спецификацию, описав все требования к окружению, датам и стандартному вводу. Однако подключенные вспомогательные модели не смогли справиться с задачей на должном уровне.

Локальная модель Qwen3-Coder проигнорировала важные ограничения из спецификации и запустила тесты в неверной директории, в результате чего провалилось подавляющее большинство проверок. В итоге основной модели Opus пришлось читать весь черновой вариант и переписывать код с нуля. Вариант с Claude Haiku сработал точнее, но допустил ошибку с фиксированной датой в тестовых данных, из-за чего Opus также пришлось выполнять исправления. В результате делегирование потребовало на 23–34% больше токенов и заняло в семь-десять раз больше времени.

Статистика использования токенов и метрики сессии
Сводные данные по потреблению ресурсов после выполнения крупных задач.

Скорость работы и целесообразность использования сторонних решений

Отдельной проблемой стала скорость генерации. На бэкенде Vulkan локальная модель выдавала около двенадцати токенов в секунду, из-за чего обработка файлов затягивалась на несколько минут, а иногда и вовсе приводила к тайм-аутам. Сессии с Claude Haiku также не отличались мгновенным откликом, поскольку фоновый запуск процессов добавлял существенную задержку. В конечном счете опыт Spotify актуален для тех сценариев, где базовые модели читают массивные файлы целиком на регулярной основе.

Если же ваша рабочая модель, подобно актуальным версиям от Anthropic, умеет работать с контекстом выборочно и самостоятельно проверяет качество сгенерированного кода, попытка подключить дополнительные слои делегирования лишь увеличит расходы. Перед внедрением подобных оптимизаций стоит проверить реальные показатели сессии: если инструмент не обращается к полномасштабному чтению крупных файлов, лучший способ сэкономить токены — оставить систему в исходном виде.

01.