12k
All articles

Как сократить расход токенов в ИИ-агентах для программирования

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

OpenReplay Team
OpenReplay Team
Как сократить расход токенов в ИИ-агентах для программирования

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

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

Эти приёмы одинаково работают в Claude Code, Codex, Cursor и аналогичных агентах. В каждом разделе ниже объясняется, почему приём работает, приводится короткий пример, который можно скопировать, и указывается, на чём он основан: на измерениях или на обоснованной практике.

Ключевые выводы

  • Каждый файл, который читает агент, и каждая предыдущая реплика, которую он хранит, остаются в его контексте. Самый дешёвый токен тот, который агент так и не увидел.
  • В исследовании 124 пул-реквестов, выполненных с помощью OpenAI Codex, добавление файла AGENTS.md сопровождалось снижением медианного числа выходных токенов на 16,58% и медианного времени выполнения на 28,64%. Медианное общее число токенов почти не изменилось (примерно на 1% выше).
  • В посте Spotify Engineering зафиксирована средняя экономия около 90% на массовом чтении файлов в Java-монорепозитории: вместо самих файлов Claude получал их сводку, подготовленную более дешёвой моделью. Эта цифра учитывает только контекст Claude.
  • Согласно документации Anthropic по Claude Code, если расходы на тарифе API или облачного провайдера оказываются выше ожидаемых, причина обычно в длинной сессии, которую никто не очистил, или в том, что Opus остался моделью по умолчанию.

Почему важно сокращать расход токенов в ИИ-агентах для программирования?

Токены обходятся вам дважды: сначала в счёте или лимите использования, затем в качестве результата. Каждый файл, который читает ИИ-агент, и каждая предыдущая реплика, которую он хранит, остаются в его контексте, поэтому самый дешёвый токен тот, который агенту вообще не пришлось увидеть. Кроме того, в компактном и релевантном контексте меньше постороннего материала, способного отвлечь модель. Лаконичная сессия обычно и дешевле, и точнее раздутой.

Например, сессия отладки, начинающаяся с фразы «просмотри репозиторий», может затянуть в контекст десятки не относящихся к делу файлов, прежде чем агент доберётся до самой ошибки. Вы платите за каждый из них, а модели приходится продираться сквозь все них в своих рассуждениях.

Ограничьте то, что видит агент

Чтобы сократить ознакомительное чтение файлов, укажите ИИ-агенту, какие файлы читать, а не отправляйте его в весь репозиторий. Иначе агенту придётся искать их самому, и каждый файл, открытый по пути, окажется в контексте. Если же вы назовёте файлы, агент будет читать только то, что действительно нужно для задачи.

# Before
Why is the checkout total wrong? Look through the repo.

# After
The total in src/cart/total.ts is wrong when a discount code is applied.
Read src/cart/total.ts and src/cart/discounts.ts only. Do not open other files
without asking.

Можно также изначально ограничить то, до чего агент в принципе может добраться. Если он работает на выделенной машине, как в конфигурации с удалённым сервером для агентной разработки, клонируйте только те репозитории, которые нужны для задачи.

Держите файл с инструкциями по проекту

Файл с инструкциями по проекту, обычно называемый AGENTS.md или CLAUDE.md, избавляет ИИ-агента от необходимости заново разбираться в ваших соглашениях в каждой сессии. Большинство агентов поддерживают такой файл. Какое имя файла читает ваш агент, уточните в его документации. Claude Code читает CLAUDE.md, а в его документации по памяти сказано, что начиная с версии v2.1.277 он также напрямую читает AGENTS.md, если в репозитории нет CLAUDE.md.

Здесь есть конкретные данные. В исследовании 124 пул-реквестов в 10 репозиториях с использованием OpenAI Codex у запусков с файлом AGENTS.md медианное время выполнения было ниже на 28,64%, а медианное число выходных токенов на 16,58%. При этом в той же таблице результатов видно, что медианное общее число токенов практически не изменилось: с файлом оно было даже примерно на 1% выше. На практике файл в основном заставляет агента меньше писать и быстрее заканчивать работу, но не сокращает всё, что он читает. У исследования есть и ограничения: в нём использовался один агент (Codex на gpt-5.2-codex), рассматривались только небольшие смёрженные PR (не более 100 изменённых строк и пяти файлов в каждом), а корректность результата полностью не оценивалась.

Держите файл коротким. Claude Code загружает CLAUDE.md в контекст в начале каждой сессии, поэтому вы платите за каждую его строку в каждом диалоге. Anthropic рекомендует укладываться в 200 строк и отмечает, что Claude надёжнее следует коротким конкретным инструкциям, чем длинным или расплывчатым.

# AGENTS.md

## Project
Web API for order processing. Entry point: src/server.ts.

## Structure
- src/routes/: HTTP handlers, one file per resource
- src/services/: business logic; handlers never touch the DB directly
- tests/: mirrors src/; test files end in .test.ts

## Conventions
- Run `npm test` before proposing changes; run `npm run lint` on touched files
- Use the logger in src/lib/log.ts, never console.log
- Do not edit generated files in src/generated/

Просите план до написания кода

Если попросить ИИ-агента составить план до того, как он начнёт писать код, можно заметить неверное направление раньше, чем он прочитает и перепишет файлы. Отбросить план почти ничего не стоит. А неправильная реализация к моменту, когда вы это заметили, уже потратила токены на каждый затронутый файл. Кроме того, план даёт вам список файлов, который можно сократить ещё до начала работы.

Before writing any code: list the files you intend to read and change, and
the steps you will take, in under 10 bullets. Wait for my approval.

Если в плане есть нерелевантный файл, уберите его из списка, прежде чем одобрить план.

Выполняйте поиск сами и передавайте агенту результаты

Если вы сами запускаете grep и вставляете найденные строки, агент платит только за эти строки. Если же поручить поиск агенту, он может потратить токены на каждый файл, открытый по пути. Инструменты вроде git grep и git diff работают быстро и не расходуют токенов, так что пусть поиском занимаются они, а модель получает только результаты.

# Find every call site yourself
git grep -n "applyDiscount(" -- '*.ts'

# See only what changed, not whole files
git diff --stat
git diff -- src/cart/total.ts

Затем вставьте вывод: «Вот 4 места вызова applyDiscount: [вставленные строки]. Обнови их, чтобы передавался аргумент currency».

В Spotify автоматизировали этот приём. Их решение перенаправляет массовое чтение файлов из Claude Code более дешёвой модели-исполнителю и передаёт Claude только сводку. Инженер Spotify протестировал его на Java-монорепозитории в четырёх сценариях. В каждом он сравнил число токенов, которое Claude потратил бы на самостоятельное чтение файлов, с числом токенов, ушедших на чтение сводки от исполнителя; экономия на массовом чтении составила в среднем около 90%. Эта цифра относится к одной конкретной кодовой базе, учитывает только контекст Claude без токенов модели-исполнителя и охватывает только сценарии массового чтения. В посте Spotify Engineering также перечислены ограничения: для правок по-прежнему нужно прямое чтение файлов, поскольку в сводках нет надёжных номеров строк; рассуждения и отладка остаются за Claude; каждое делегирование добавляет задержку.

Делайте сессии короткими и начинайте заново

Начинайте новую сессию между задачами, а не позволяйте одному диалогу бесконечно разрастаться. Длинный диалог передаёт всю свою историю с каждым новым сообщением, поэтому, продолжая устаревшую ветку, вы продолжаете платить за контекст, который вам больше не нужен. В рекомендациях Anthropic по расходам в Claude Code говорится, что если расходы на тарифе API или облачного провайдера оказываются выше ожидаемых, обычно причина в сессии, которую так и не очистили, или в том, что Opus остался моделью по умолчанию. Очистка между несвязанными задачами указана там среди приёмов с наибольшим эффектом.

# End of session 1
Summarize in under 15 lines: what we changed, what we decided, what is left.
Write it to NOTES.md.

# Start of session 2 (new chat/session)
Read NOTES.md, then continue with the first remaining item.

Сводка сохраняет принятые решения. Новая сессия отбрасывает историю, которая к ним привела.

Отключайте инструменты и интеграции, не нужные для задачи

Каждая включённая интеграция увеличивает объём того, что агент загружает и к чему может обратиться. Если задаче интеграция не нужна, отключите её. Обычно главные виновники здесь MCP-серверы. Сейчас Claude Code не загружает полные определения инструментов MCP, пока они не понадобятся Claude, поэтому простаивающий сервер обходится дешевле, чем раньше, но имена его инструментов и инструкции всё равно находятся в контексте. В рекомендациях Anthropic по расходам в Claude Code по-прежнему советуют выполнить /mcp и отключить неиспользуемые серверы. Сервер базы данных, сервер автоматизации браузера и интеграция с трекером задач, подключённые месяц назад, утяжеляют сессию, в которой вы правите только CSS.

Для рефакторинга одного файла откройте настройки агента и отключите серверы базы данных, браузера и трекера задач. Включите их снова, когда они понадобятся. Если вы не уверены, что предоставляет каждый сервер, руководство по экосистеме MCP объясняет, как взаимодействуют клиенты и серверы. Если вы поддерживаете собственный сервер, статья о пошаговом создании MCP-сервера показывает, как предоставлять только те инструменты, которые вы определили сами.

Итоги

ПриёмЧто убирается из контекстаОснование
Указывать файлыОзнакомительное чтение файловОбоснованная практика
Файл с инструкциямиПовторное выяснение соглашений; лишний выводarXiv 2601.20404
План до кодаЧтение и запись, потраченные на неверные направленияОбоснованная практика
Самостоятельный поискЦелые файлы, открытые ради нескольких строкSpotify Engineering, один Java-монорепозиторий
Короткие сессииУстаревшая история диалогаРекомендации Anthropic по расходам в Claude Code
Отключение неиспользуемых инструментовИнтеграции, к которым задача не обращаетсяРекомендации Anthropic по расходам в Claude Code

Заключение

Стоимость токенов растёт вместе с размером контекста, а агент вроде Claude Code отправляет весь диалог заново с каждым запросом, поэтому контекст, который он читает и перечитывает, быстро накапливается. Каждый из описанных приёмов работает за счёт того, что контекст остаётся небольшим и сфокусированным на задаче. Выберите один из них, затем вставьте промпт и файлы, которые собираетесь отправить, в счётчик токенов для LLM и посчитайте токены до и после изменения. Без измерений экономия остаётся лишь догадкой.

Часто задаваемые вопросы

Чем отличается сжатие (compact) сессии агента от её очистки (clear)?

При сжатии старая история диалога заменяется сводкой, а сессия продолжается; при очистке история отбрасывается и начинается новый контекст. В Claude Code модели нужно прочитать весь диалог, чтобы составить сводку, поэтому сжатие большого контекста само по себе является крупным запросом, тогда как очистка ничего не стоит. Сжимайте контекст посреди задачи, когда предыдущие решения ещё важны, и очищайте его между несвязанными задачами.

Расходуют ли токены MCP-серверы, которые я не использую в Claude Code?

Меньше, чем раньше. По умолчанию Claude Code использует поиск инструментов (tool search): при запуске модель видит имена инструментов и инструкции каждого сервера, а полная схема инструмента загружается только тогда, когда она нужна для задачи. Claude Code возвращается к предварительной загрузке всех определений, если ANTHROPIC_BASE_URL указывает на сторонний хост, в развёртываниях Microsoft Foundry на Azure, а также для моделей в Agent Platform от Google Cloud, вышедших раньше поколения Claude 4.5. Серверы с пометкой alwaysLoad также загружаются полностью. Вывод инструментов любого сервера в любом случае попадает в контекст.

Сокращает ли переход на более дешёвую модель расход токенов?

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

Как проверить расход токенов прямо в Claude Code?

Выполните /usage, чтобы увидеть стоимость сессии, лимиты использования по тарифу и статистику активности, и /context, чтобы получить разбивку того, чем заполнено текущее контекстное окно. На тарифах Pro, Max, Team и Enterprise команда /usage также указывает на любые паттерны, например длинный контекст, на которые приходится 10% и более вашего недавнего использования, и подсказывает, как их сократить. Сумма в долларах всегда является оценкой по прейскурантным ценам. При подписке она не отражает то, что вы фактически платите.

Understand every bug

Uncover frustrations, understand bugs and fix slowdowns like never before with OpenReplay — self-hosted, with full data ownership.

Star on GitHub

We use cookies to improve your experience. By using our site, you accept cookies.