SSD Nodes Learn
Руководства Matt ConnorАвтор: Matt Connor · Обновлено 2026-07-24

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

Каждый ход повторно отправляет весь контекст. Узнайте, как использовать /context, /clear и /compact, чтобы избежать роста стоимости и замедления сессии.

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

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

Причины расхода токенов описаны в счетчике токенов в сессии агента.

Прочитайте /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 million токенов). Запросы после этого окна все еще выполняются, поэтому эта строка является предупреждением, а не отказом.

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

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

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

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

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

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

Таким образом, правило, от которого вы зависите, должно находиться в корневом CLAUDE.md: Claude Code сначала очищает старые результаты работы инструментов, а затем выполняет суммаризацию, поэтому инструкции из начала диалога могут быть потеряны. Редактируйте память с помощью /memory. Claude Code сохраняет копию, загруженную в начале сессии, поэтому обрезка данных в середине сессии сохраняет prompt cache и не применяется до следующего /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 строк: запрашивайте только нужный диапазон строк, так как после получения весь файл будет оставаться в окне контекста.

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

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

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

Кэш-таймер: работа короткими сессиями

Кэширование промптов делает повторную отправку доступной: стоимость чтения префикса составляет 0,1x от базовой скорости ввода, против 1,25x для записи или 2x для записи при жизненном цикле в один час. Каждое использование обновляет запись без дополнительных затрат, поэтому отсчет времени начинается с момента последнего использования.

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

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

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

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

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

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

Исправит ли это увеличение контекстного окна?

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

Редактирование контекста и компакция в API — это разные операции

Если вы создаете собственного агента на базе Messages API, команды через slash не существуют; вы должны реализовать их самостоятельно. Для решения задачи используются две функции на стороне сервера, и это разные функции.

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

Компакция (Compaction) создает резюме (summary) и заменяет им полную историю диалога. Это также бета-функция: отправьте 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 сохраняет текущий диалог, но заменяет историю резюме (summary). Это подходит для работы в рамках одной длинной задачи. Указывайте цель команды, как в /compact keep only the plan and the diff, так как инструкция определяет, какие данные будут сохранены.

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

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

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

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

В чем разница между редактированием контекста (context editing) и компакцией (compaction) в Claude API?

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