SSD Nodes Learn Hosting plans →
Руководства Matt ConnorАвтор: Matt Connor · Обновлено 2026-08-25

Как ускорить работу Claude Code и снизить расход токенов

Длительные сессии Claude Code замедляются из-за постоянной отправки контекста. Используйте команду /context для очистки памяти и оптимизируйте запросы, чтобы избежать лишних затрат.

Как предотвратить замедление и рост стоимости длительной сессии Claude Code

Длительная сессия Claude Code становится медленной и дорогой, так как на каждом шаге повторно отправляется весь контекст, объем которого постоянно растет. Решение заключается в соблюдении гигиены в определенном порядке. Запустите /context, чтобы увидеть, что именно заполняет окно контекста, удалите элементы, за которые вы платите при каждом запросе, затем используйте /clear между несвязанными задачами и /compact с инструкцией внутри одной длительной задачи. Работайте непрерывными сессиями, так как «холодный» кэш промптов превращает дешевое чтение в полную перезапись всего, что вы ввели ранее.

Ответ на вопрос, почему счетчик расхода токенов продолжает расти, приведен в счетчик токенов в сессии агента.

Ознакомьтесь с /context перед внесением изменений

Не пытайтесь угадать, что заполняет окно контекста. Claude Code предоставит вам эту информацию.

/context [all] отображает текущее использование контекста в виде цветной сетки с рекомендациями по оптимизации для инструментов, потребляющих много ресурсов, и выявлению избыточного использования памяти; all разворачивает подробный разбор по элементам в полноэкранном режиме. Воспринимайте результат как пять категорий.

  • Системный промпт. Инструкции для самого Claude Code. Фиксированы на время сессии.
  • Определения инструментов. Схемы для всех инструментов, которые может вызвать агент, включая все подключенные серверы MCP (Model Context Protocol).
  • Файлы памяти. CLAUDE.md и автоматическая память, загружаемая при запуске сессии.
  • Файлы и результаты работы инструментов. Все прочитанные файлы и всё, что вывели ваши команды.
  • История сообщений. Ваши запросы и ответы агента.

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

Две строки сообщают о том, что окно заполнено:

Context exceeds the 200k-token limit by 94k tokens — run /compact or /clear to continue.
Context is 94k tokens past the 200k-token compaction window — run /compact to reduce usage.

Первая строка указывает на жесткий лимит, при котором запрос отклоняется; соответствующая ошибка API (application programming interface) выглядит как Prompt is too long. Вторая строка — это окно сжатия, которое может находиться ниже реального окна контекста модели при использовании модели с 1 миллионом токенов. Запросы продолжают выполняться после достижения этого порога, поэтому это скорее предупреждение, чем отказ.

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

CLAUDE.md — это постоянный налог, поэтому сохраняйте его лаконичным

Ваш CLAUDE.md загружается в контекст при запуске сессии и остается там. Если он содержит подробную процедуру развертывания, эти токены присутствуют, даже когда вы исправляете опечатку в тестовом файле. Рекомендация Anthropic — включать только самое необходимое и поддерживать объем файла менее 200 строк.

Переносите процедуры в навыки (skills). Навык загружается только при вызове, поэтому рабочий процесс, который вы запускаете дважды в неделю, не потребляет ресурсы в остальные дни. Навыки имеют собственный бюджет после компактизации: тела навыков повторно внедряются с ограничением в 5000 токенов на навык и 25 000 в сумме, при этом самые старые удаляются первыми. Усечение сохраняет начало файла, поэтому размещайте наиболее важные инструкции в верхней части SKILL.md.

То, что переживет компактизацию, определяет, где должна находиться инструкция.

  • Системный промпт и стиль вывода остаются неизменными, так как они не являются частью истории сообщений.
  • CLAUDE.md в корне проекта, не имеющие области действия правила и автоматическая память повторно внедряются с диска.
  • Правило с метаданными paths: теряется до тех пор, пока соответствующий файл не будет прочитан снова.
  • Вложенный CLAUDE.md в поддиректории теряется до тех пор, пока файл в этой поддиректории не будет прочитан снова.
  • Хуки остаются незатронутыми, так как хук выполняется как код и никогда не попадает в контекст.

Таким образом, правило, от которого вы зависите, должно находиться в CLAUDE.md в корне проекта: Claude Code сначала очищает старые выводы инструментов, а затем суммирует их, поэтому инструкции из начала диалога могут быть потеряны. Редактируйте память с помощью /memory. Claude Code хранит копию, загруженную при запуске сессии, поэтому обрезка в середине сессии сохраняет кэш промпта и не применяется до следующего /clear, /compact или перезапуска. Потеря контекста — лишь одна из причин, по которой правило перестает соблюдаться, поэтому, если правило явно находится в окне контекста, но все равно игнорируется, проработайте другие причины, прежде чем переписывать его.

/clear между задачами, /compact внутри одной

Эти две команды выглядят взаимозаменяемыми, но их стоимость существенно различается.

/clear [name] начинает новый диалог с пустым контекстом. Команда не отправляет запрос, поэтому она бесплатна. Передайте имя, чтобы пометить предыдущий диалог в меню /resume; /reset и /new являются псевдонимами. Используйте эту команду сразу при переключении на несвязанную задачу, иначе старая задача будет повторно отправляться и оплачиваться при каждом сообщении в новой.

/compact [instructions] освобождает контекст, продолжая тот же диалог: команда суммирует историю и заменяет её. Используйте её внутри одной длительной задачи, где вам всё ещё нужна преемственность.

Всегда давайте /compact инструкцию. Обычная /compact суммирует историю на основе стандартного промпта, который не знает, какая часть работы вам ещё нужна. Инструктированная команда сохраняет нужные данные:

/compact focus on the auth bug fix
/compact keep only the plan and the diff

Если вы выполняете сжатие по одной и той же причине, добавьте постоянную инструкцию в файл CLAUDE.md вашего проекта в раздел # Compact instructions. В новой сессии /compact выводит Not enough messages to compact., что означает лишь отсутствие истории.

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

Существуют две более дешёвые команды. /rewind [description] откатывает код и диалог к контрольной точке; для пути, который вы хотите полностью отбросить, это лучше, чем сжатие, так как команда обрезает историю до префикса, который уже кэширован. /recap добавляет резюме как вывод команды вместо замены истории, поэтому кэшированный префикс остаётся нетронутым.

Автоматическое сжатие, срабатывающее многократно, выводит следующее:

Autocompact is thrashing: the context refilled to the limit...

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

MCP-серверы создают фиксированные накладные расходы

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

Claude Code смягчает эту проблему. Определения инструментов MCP по умолчанию откладываются, поэтому в контекст попадают только имена инструментов, пока Claude не начнет использовать конкретный инструмент. Запустите /context, чтобы увидеть реальную стоимость ваших серверов, и /mcp disable <name>, чтобы отключить сервер, который не понадобится вам сегодня. Если вы запускаете собственные MCP-серверы на VPS, та же арифметика ограничивает количество инструментов, которые должен предоставлять один сервер.

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

Фильтрация подробного вывода инструментов перед его попаданием в контекст

Результат работы инструмента становится входными данными, которые повторно отправляются при каждом последующем запросе. Тестовый запуск, выводящий 20,000 токенов, — это не разовые затраты: вы оплачиваете их снова на каждом шаге, пока этот вывод не выйдет за пределы окна контекста.

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

npm test 2>&1 | grep -E "FAIL|Error:" | head -40

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

Ограничение области чтения агента и делегирование ресурсоемких задач

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

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

Кэширование: работа сессиями

Кэширование промптов делает повторную отправку данных экономически выгодной: чтение префикса обходится в 0.1x от базовой стоимости входных токенов, тогда как запись стоит 1.25x, а при часовом времени жизни — 2x. Каждое использование обновляет запись без дополнительных затрат, поэтому отсчет времени жизни начинается с момента последнего обращения. Эти множители определяют структуру счета, но не его итоговый размер, поэтому используйте их вместе с реальной стоимостью миллиона токенов, чтобы перевести объем контекстного окна в денежный эквивалент.

Время жизни кэша зависит от способа аутентификации, поэтому утверждение «кэш всегда истекает через пять минут» неверно.

  • При наличии подписки Claude, Claude Code автоматически запрашивает часовой интервал жизни кэша.
  • После исчерпания лимитов плана и перехода на использование платных кредитов, время жизни сокращается до пяти минут.
  • При использовании API key или облачного провайдера время жизни составляет пять минут. Флаг ENABLE_PROMPT_CACHING_1H=1 позволяет активировать часовой интервал, а FORCE_PROMPT_CACHING_5M=1 принудительно возвращает его к стандартному значению.

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

Некоторые действия сбрасывают кэш даже во время активной работы: переключение моделей, изменение уровня усилий (effort level), включение быстрого режима, подключение или отключение MCP-сервера, включение или выключение плагина, полный отказ от использования инструмента, сжатие (compacting) и обновление Claude Code. /model часто становится неожиданностью, так как каждая модель имеет собственный кэш: следующий запрос будет считывать всю историю без попаданий в кэш, даже если содержимое идентично. Это повторное чтение тарифицируется по расценкам целевой модели, поэтому переключение на Fable в середине сессии приведет к оплате всей накопленной истории по опубликованному тарифу на входные данные для Fable 5.

Редактирование файлов, изменение CLAUDE.md, вызов навыков и команд, запуск /recap, откат изменений (rewinding) и создание субагентов сохраняют кэш. Область действия кэша ограничена одной машиной и одной директорией, поэтому две сессии в разных папках не используют кэш друг друга. Эта область привязана к CLI, а не к учетной записи, поэтому данные не переносятся в десктопное приложение Claude, которое в Linux является отдельной бета-версией, устанавливаемой параллельно с CLI.

Чтобы проверить эффективность кэширования, изучите current_usage. Запись cache_creation_input_tokens была выполнена по тарифу записи в кэш; cache_read_input_tokens была обработана примерно за одну десятую от стандартной стоимости входных токенов. Высокое соотношение операций чтения к операциям создания является показателем нормальной работы. Если количество операций создания остается высоким на протяжении нескольких итераций, значит, в вашем префиксе постоянно что-то меняется.

Решает ли эту проблему увеличение контекстного окна?

Отчасти. Ряд современных моделей поддерживают контекстное окно в 1 миллион токенов, и при таком лимите сжатие работает аналогичным образом. Экономика процесса не меняется, так как полный промпт по-прежнему отправляется повторно и тарифицируется на каждом шаге. Большее окно определяет лишь момент, когда вы вынуждены принять меры; гигиена данных определяет стоимость. Если проблема заключается в счёте, а не в ограничении объёма, то какой тариф Claude подходит для вашего стиля работы определяет, расходуете ли вы денежные средства или лимиты тарифного плана.

Редактирование контекста и сжатие в API — это разные вещи

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

Редактирование контекста выборочно удаляет определенный контент из истории диалога по мере его роста, заменяя каждый удаленный результат текстом-заполнителем, чтобы Claude знал, что часть данных была удалена. Это бета-версия: отправьте anthropic-beta: context-management-2025-06-27 и настройте стратегии в context_management.edits. clear_tool_uses_20250919 очищает результаты работы инструментов, а clear_thinking_20251015 управляет блоками размышлений. Значение по умолчанию для trigger составляет 100,000 входных токенов, для keep — последние 3 использования инструментов, а для clear_tool_inputsfalse, поэтому входные данные остаются, а удаляются только результаты.

Сжатие создает краткое изложение и заменяет им всю историю диалога. Это также бета-версия: отправьте anthropic-beta: compact-2026-01-12 и используйте тип редактирования compact_20260112. Триггер по умолчанию установлен на {"type": "input_tokens", "value": 150000}, а значение должно быть не менее 50,000.

У сжатия есть одно правило передачи, которое незаметно нарушает работу агентов. Ответ начинается с блока контента compaction, содержащего краткое изложение, за которым следует обычный текстовый блок. Вы должны передать этот блок обратно в последующих запросах, после чего API удалит все блоки контента, предшествующие ему. На практике: добавляйте весь объект response.content, а не только текст.

В документации Anthropic серверное сжатие называется основной стратегией управления контекстом в длительных диалогах, а редактирование контекста — опцией для более точного контроля над тем, что именно удаляется. Сначала проверьте поддержку модели. Текущие модели Opus, Sonnet и Fable поддерживают сжатие; claude-haiku-4-5 — нет, актуальный список всегда доступен на странице сжатия. Ни одна из этих бета-функций не управляет собственным механизмом /compact в Claude Code, который, согласно документации, является разовым запросом на суммаризацию, отправляемым клиентом.

FAQ

Почему сессия Claude Code становится медленнее и дороже по мере работы?

Потому что при каждом запросе вся история диалога отправляется заново. Таким образом, однострочный вопрос в сессии, которая была открыта весь день, несет в себе весь объем данных за этот день. Prompt caching позволяет снизить стоимость, пока кэш активен (0.1x от базовой стоимости входных данных при чтении). Как только запрос не попадает в кэш, тот же префикс перезаписывается с коэффициентом 1.25x. Выполните /context, чтобы увидеть, что именно заполняет окно контекста, и ознакомьтесь с принципами тарификации сессий Claude Code, чтобы понять механизм расчетов.

В чем разница между /clear и /compact в Claude Code?

/clear начинает новый диалог с пустым контекстом. Команда не отправляет запрос, поэтому она бесплатна и лучше всего подходит для переключения между несвязанными задачами. /compact сохраняет текущий диалог, заменяя историю кратким содержанием, что оптимально для одной длительной задачи. Укажите фокус, как в /compact keep only the plan and the diff, так как именно инструкция определяет, какая информация будет сохранена.

Как узнать, что именно расходует окно контекста Claude Code?

Выполните /context или /context all для получения полной детализации по элементам. Команда отображает системный промпт, определения инструментов, MCP-серверы, файлы памяти и историю в виде цветной сетки с рекомендациями по инструментам, потребляющим много контекста, и избыточным данным в памяти. В платной подписке /usage также распределяет недавнее использование между отдельными навыками, субагентами и MCP-серверами.

Стоит ли использовать окно контекста на 1 миллион токенов вместо сжатия?

Увеличение окна лишь откладывает проблему, а не решает её. Ряд современных моделей, включая Opus 4.8 и Sonnet 5, поддерживают окно в 1 миллион токенов, но сжатие работает там аналогично. Каждый запрос по-прежнему отправляет полный промпт и тарифицируется, поэтому диалог на 400,000 токенов будет дорогим независимо от того, помещается он в окно или нет.

В чем разница между редактированием контекста и сжатием в Claude API?

Редактирование контекста выборочно удаляет старый контент (преимущественно результаты работы инструментов), оставляя на его месте текст-заполнитель, чтобы Claude знал об удалении. Сжатие создает резюме и заменяет им полную историю. В документации Anthropic сжатие названо основной стратегией для длительных диалогов, а редактирование контекста позиционируется как инструмент для точечной настройки. Оба метода находятся в стадии бета-тестирования, используют собственные заголовки и отличаются от команды /compact в Claude Code.