← К блогу

Почему Claude Code постоянно расходует много токенов? Где именно теряются токены при повторном чтении кодовой базы и как снизить стоимость контекста

AI-разработка · 2026.10.24 · ~10 мин чтения

Почему Claude Code постоянно расходует много токенов? Где именно теряются токены при повторном чтении кодовой базы и как снизить стоимость контекста

С этой недели начните с проверки реальных чтений файлов и ответов инструментов: Claude Code не обязательно заново загружает всю кодовую базу при каждом сообщении. Расход токенов обычно складывается из содержимого, попавшего в контекст, а инструментов и истории диалога; сужайте область задачи, ограничивайте вывод, поддерживайте краткие проектные инструкции и начинайте новую сфокусированную сессию, когда меняется задача.

Эта статья для разработчиков, которые анализируют крупные репозитории с Claude Code и замечают высокий расход токенов. Она также поможет инженерам разобраться в причинах затрат и техническим руководителям выстроить общие правила управления контекстом.

Не путайте повторные чтения с постоянной загрузкой всего репозитория

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

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

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

Вот какие источники расхода стоит различать:

Источник Что может попасть в контекст Как проверить Что попробовать
Содержимое файлов Фрагменты исходного кода, конфигурации и документации Сопоставить чтения файлов с конкретным шагом задачи Указать нужный каталог или файл, затем раскрывать только необходимые части
Результаты инструментов Совпадения поиска, вывод команд, сообщения об ошибках Посмотреть, какие команды выполнялись и насколько широкие результаты они вернули Ограничить поиск и вывод тем, что нужно для решения
История диалога Предыдущие требования, уточнения, код и результаты анализа Проследить, какие старые детали нужны для текущего шага Завершить прежнюю задачу и начать новую сфокусированную сессию

Из чего складывается стоимость контекста в Claude Code

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

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

Наблюдение Вероятная причина Не следует сразу заключать
Одни файлы появляются в нескольких шагах Их содержимое повторно понадобилось или анализ вернулся к той же области Что каждый запрос читает весь проект
Один поиск возвращает много совпадений Слишком широкая формулировка или область поиска Что каждое совпадение целиком стало частью контекста
Длинные ответы команд регулярно появляются в сессии Команда выводит больше, чем нужно для решения Что основной расход обязательно вызван исходным кодом
При продолжении задачи важны старые требования Накопилась история диалога, которую всё ещё нужно учитывать Что история равна повторному чтению файлов

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

Как определить, где именно расходуются токены

Сначала разберите одну реальную сессию, в которой расход показался высоким. Не меняйте сразу команды, инструкции и способ постановки задач: иначе вы не поймёте, какое изменение помогло. Зафиксируйте тип задачи, модель и рабочий процесс, затем отдельно отметьте содержимое файлов, ответы инструментов и историю диалога.

Для организаций документация описывает отчёт об использовании и затратам по сообщениям. В нём предусмотрены поля для анализа потребления; перед применением проверьте, какие именно данные доступны для вашей учётной записи и отчётного периода в описании отчёта об использовании и затратах. Сопоставляйте показатели отчёта с сессией осторожно: условия учёта зависят от используемой модели и платформы.

Признак в сессии Что проверить прежде всего Следующее действие
Много переходов между несвязанными областями кода Не смешаны ли разные задачи в одном диалоге Разделить работу по самостоятельным целям
Большой вывод команды Возвращает ли команда весь файл, журнал или набор совпадений Оставить только ошибки, нужный диапазон или ключевые строки
Повторные чтения одних путей Используются ли те же материалы для новой проверки Передавать конкретный результат предыдущего шага вместо повторного широкого поиска
Длинная история с изменившейся целью Нужны ли ранние обсуждения новой задаче Начать отдельную сессию и кратко перенести только актуальные ограничения

Почему широкие вопросы увеличивают число чтений

Запрос вроде «разберись, как устроен проект» не указывает ни цель, ни область, ни ожидаемый результат. Для ответа могут понадобиться поиск по разным каталогам, чтение нескольких файлов и дополнительные уточнения. Это не обязательно лишняя работа, но её объём сложно предсказать. При этом общая формулировка повышает вероятность того, что часть изученного материала не понадобится для конечного решения.

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

Сравнение показывает, почему точность постановки помогает ограничить исследование:

Формулировка задачи Вероятный ход исследования Как сделать точнее
«Объясни архитектуру проекта» Поиск по множеству областей и чтение разнородных файлов Назвать подсистему и нужный результат: например, путь запроса от маршрута до хранилища
«Найди причину ошибки» Поиск без известного места возникновения и повторная проверка гипотез Передать текст ошибки, условие воспроизведения и предполагаемую область
«Исправь тест» Чтение теста, реализации и связанных настроек Уточнить ожидаемое поведение и попросить сначала определить минимальный набор файлов
«Добавь проверку входных данных» Возможное изучение нескольких слоёв приложения Указать интерфейс, правила валидации и место, где проверка должна выполняться

Фраза «сначала найди вероятные файлы, затем объясни, почему они нужны» задаёт последовательность без требования заранее читать весь проект. После локализации области можно спросить, какие зависимости необходимы для уверенного ответа. Так вы сохраняете полезное исследование, но не поощряете бессистемный обход репозитория.

Как сузить чтение и разделить работу на шаги

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

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

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

Если задаче действительно нужны несколько подсистем, не запрещайте их исследование искусственно. Попросите Claude Code сначала объяснить, какая связь между ними необходима для ответа, и переходить к следующей области только при наличии конкретной причины.

Как контролировать вывод инструментов и проектные инструкции

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

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

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

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

Команды и параметры могут меняться. Не копируйте случайно найденный пример без сверки с текущим официальным описанием. Для продолжения и восстановления сессии используйте справочник командной строки Claude Code. Если прежняя сессия относится к той же задаче, её продолжение может быть уместно; если цель другая, отдельная сфокусированная сессия обычно проще для анализа.

Как проверить, снизились ли затраты

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

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

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

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

Чек-лист для разбора следующей сессии

  • [ ] Запишите одну цель задачи и проверьте, не смешались ли в диалоге независимые изменения.
  • [ ] Просмотрите историю сессии и отметьте чтения файлов, поисковые запросы и запуски инструментов.
  • [ ] Для каждого повторного чтения сформулируйте причину: новая гипотеза, проверка изменения или лишний возврат к уже изученной области.
  • [ ] Найдите самый объёмный вывод команды и определите, какие его части действительно повлияли на решение.
  • [ ] Проверьте, не дублируют ли инструкции проекта требования, которые уже задаются в запросе.
  • [ ] Сравните похожие задачи до и после изменения процесса, учитывая модель и различия в объёме работы.
  • [ ] Оставьте полезные чтения, но сузьте следующий запрос там, где поиск и вывод оказались шире необходимого.

Если вы проверили этот список и видите, что основная нагрузка возникла из-за расползания истории, разделите несвязанные задачи. Если её создают широкие поиски — начните с локализации. Если заметнее всего длинные ответы инструментов — настройте выборочный вывод. А когда команде важно иметь постоянную удалённую среду Mac для разработки или AI Agent-процессов, сначала оцените соответствие такого режима вашей работе и изучите доступные варианты среды Hashvps. Для сценариев с агентными рабочими процессами можно также посмотреть материал Hashvps об OpenClaw. Для разовой проверки отдельной задачи достаточно локальной среды; постоянная аренда не нужна, если вам важны физические интерфейсы или стабильная длительная нагрузка на собственном оборудовании.

Перенесите рабочую среду на выделенный Mac в облаке

Hashvps предоставляет удалённый Mac mini с macOS и ресурсами Apple Silicon для постоянной среды разработки.
Подключайтесь по SSH или VNC и продолжайте работу с удобного для вас устройства.

На главную

Hashvps · Mac Cloud

Выделенный Mac Cloud

Выделенные вычисления + эксклюзивный IP.

На главную
Акция