claude-code

Portal by Spotify уводит чтение файлов из Claude Code

Claude News

claude-code

Маршрутизация тяжёлых чтений файлов из Claude Code на Gemini 2.5 Flash сократила расход токенов в среднем примерно на 90% в четырёх тестовых сценариях на Java-монорепозитории. Схему описал инженерный блог Spotify: делегирование идёт через режимы AiKA в Portal by Spotify и плагин shunt для Claude Code.

Коротко

  • Хук PreToolUse блокирует чтение файла длиннее 350 строк по умолчанию и перенаправляет запрос через Portal CLI в режим bulk-reader, второй хук перехватывает cat, head, tail, less и more.
  • Оба режима работают на Gemini 2.5 Flash с temperature 0.2 и живут в эфемерном рантайме Portal: инструкции, модель и MCP-инструменты описываются декларативно, серверы и ключи API держать не нужно.
  • Редактирование и рассуждение из маршрутизации исключены: сводки рабочей модели не содержат надёжных номеров строк, а в тестах она пропустила ошибку потокобезопасности, найденную Claude за секунды.

Экономика агентного программирования смещается с лицензий на токены, и основная доля расхода уходит на ввод-вывод: чтение файлов и генерацию предсказуемого кода. Описанный подход выглядит как попытка превратить маршрутизацию моделей из инфраструктурной задачи в конфигурационную, где момент делегирования определяет плагин, а форму ответа задаёт декларативный режим. Судя по замерам, выигрыш обеспечивает объём вытесненного ввода-вывода, а качество рабочей модели остаётся второстепенным фактором для итоговой экономии.

Хук блокирует чтение файла длиннее 350 строк

Shunt регистрирует два хука PreToolUse. check-file-size срабатывает на каждый вызов Read: если файл длиннее заданного порога, по умолчанию 350 строк, чтение блокируется, а Claude получает указание использовать навык /bulk-reader. check-bash-read перехватывает cat, head, tail, less и more на крупных файлах, но пропускает конвейеры вроде cat file | grep как точечные чтения.

Точечные чтения с offset и limit проходят без блокировки: именно они нужны Claude, когда правка идёт по конкретному участку кода. Порог задаётся переменной SHUNT_MIN_LINES в профиле оболочки или в файле .claude/settings.json, в примере автора указано значение 500. Поверх хуков лежат два файла навыков с описанием и примерами вызова, и даже если Claude не прочитает описание навыка, хук всё равно остановит дорогое чтение.

Режимы bulk-reader и code-writer работают на Gemini 2.5 Flash

Режим AiKA это декларативный агент, который выполняется в эфемерном рантайме Portal по логике AWS Lambda: задаются инструкции, модель, параметры вроде температуры и набор MCP-инструментов. Ни серверов, ни ключей API держать не требуется, вызвать режим можно из Portal CLI или через API, а видимость бывает публичной или приватной.

В примерах оба режима работают на Gemini 2.5 Flash с temperature 0.2, но поле model принимает любую модель, настроенную в инстансе Portal. Режимы адресуются по имени и разрешаются без учёта регистра: сначала собственный, затем командный, затем публичный. Форк публичного bulk-reader автоматически получает приоритет над оригиналом.

bulk-read оборачивает каждый файл в XML-теги и отправляет их в режим вместе с вопросом; корпус уходит рабочей модели и в контекст Claude не попадает, поэтому повторный вопрос по тем же файлам обходится дёшево. code-write требует файл-образец, срезает markdown-ограждения и пишет результат прямо на диск. Файл-образец обязателен: без него рабочая модель сгенерировала бы код вне контекста проекта.

Четверть инженерных руководителей тратит $200–500 на разработчика в месяц

По приведённым в публикации оценкам, четверть инженерных руководителей уже тратит на токены $200–500 на разработчика в месяц, отдельные команды заметно превышают $2000, а к 2028 году расходы на ИИ-разработку, как ожидается, обгонят среднюю зарплату разработчика. Именно токены, а не стоимость лицензий, автор называет основной статьёй расхода.

Замеры проводились на Java-монорепозитории в четырёх сценариях: сравнивался объём токенов, который Claude потратил бы на прямое чтение файлов, с объёмом сводки от bulk-reader. Средняя экономия составила около 90%. Сценарий code-write в токенах измерить сложнее: без делегирования Claude и читает образцы, и оплачивает генерацию как выходные токены.

Каждое делегирование это сетевой круг от Claude Code к бэкенду Portal и рабочей модели, ответ обычно занимает 10–30 секунд, а один вызов ограничен 30 секундами. Для крупных чтений задержка окупается, для мелких нет, поэтому порог по числу строк работает как граница, ниже которой накладные расходы съедают экономию.

Установка из маркетплейса spotify/portal-ai-plugins. Маркетплейс подключается командой claude plugin marketplace add spotify/portal-ai-plugins, после чего ставятся плагины portal@portal и shunt@portal: первый даёт Portal CLI, через который shunt и делегирует работу. Команда /portal:setup в новой сессии Claude Code авторизует CLI в нужном инстансе Portal.

Оба режима уже опубликованы в AiKA, так что создавать их не нужно, а кастомизация сводится к форку. Поддержка других агентных клиентов, помимо Claude Code, в публикации не обсуждается. В самом тексте акцент сделан на переиспользуемости режимов между проектами и командами.

Комментарии

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.

Из Google мы используем только имя и аватар. Почту не сохраняем.