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

Чтобы снизить расход токенов Claude Code, сначала выясните, что заполняет контекст, и перестаньте передавать в диалог лишний вывод инструментов. Начните со встроенных средств: Context Mode имеет смысл добавить для выборочной обработки данных и продолжения работы после сжатия истории, а Headroom — для сжатия через локальный прокси. Если основные расходы приходятся на рассуждения и повторные неудачные попытки, сначала уточните задачу и выбор модели.
На 2026-10-21 актуальный релиз Claude Code — 2.1.306. В примере установки Headroom ниже закреплена версия 0.41.0.
На что Claude Code расходует токены?
Команда /context показывает, чем занят контекст, а /usage — расход и оценку стоимости. Эти показатели отвечают на разные вопросы.
| Что нужно узнать | Где смотреть | Что показывает |
|---|---|---|
| Почему заполняется окно контекста? | /context | Место, занятое инструкциями, сообщениями, инструментами и остальным контекстом |
| Сколько потрачено в этой сессии? | /usage | Категории токенов и расчётную стоимость сессии |
| Скоро ли закончится лимит подписки? | Сведения о тарифе в /usage | Использование лимита подписки, отдельно от оплаты API |
| Сколько денег списано на самом деле? | Данные биллинга вашего провайдера | Списания по его тарифам и правилам расчёта |
В текущем Claude Code команда /cost — это псевдоним /usage. Сумма в долларах является оценкой: она не означает, что за каждый запрос, включённый в Pro или Max, дополнительно спишут именно столько. Различие объясняется в документации по расходам Claude Code.
Большие логи, снимки состояния браузера, файлы зависимостей и повторяющиеся результаты инструментов могут занимать значительную часть контекста. Предыдущие сообщения тоже участвуют в следующих запросах, но кэширование входного контекста может удешевлять повторное использование данных. Поэтому уменьшение видимого содержимого на 50% не означает автоматического снижения счёта на 50%.
Сначала настройте встроенные средства
Выбирайте действие по причине перерасхода: ограничьте выборку при слишком объёмном выводе, начните новый диалог для другой задачи или сожмите историю, если нужно продолжить долгую работу.
Указывайте Claude точные пути к файлам, названия падающих тестов и команду проверки результата. Просьба разобраться с одним проблемным модулем обычно порождает меньше лишней работы, чем требование изучить весь репозиторий перед небольшой правкой.
Между несвязанными задачами используйте /clear, предварительно сохранив нужные показатели расхода. Если продолжаете ту же задачу, задайте для /compact, какие сведения необходимо сохранить:
/compact Preserve the current goal, modified files, failing test names, exact errors, and the next verification command.
В этом примере Claude получает указание сохранить цель, изменённые файлы, названия падающих тестов, точные ошибки и следующую команду проверки. Такие приёмы управления контекстом описаны в документации, однако сжатие создаёт пересказ, а не точную архивную копию. Важные критерии готовности храните также в постоянных инструкциях проекта или заметках к задаче.
Не запускайте сжатие после каждого обмена сообщениями. Оно само требует запроса на составление сводки и заменяет историю, после чего для следующего запроса нужно сформировать более короткий кэшируемый префикс. Частое сжатие может уменьшать контекст ценой дополнительной работы и перестроения кэша.
Для простых задач на моделях, поддерживающих настройку глубины рассуждений — effort, попробуйте /effort low. Это может сократить затраты на рассуждения, но не уменьшит лог, который инструмент уже вернул. Уровень, заданный командой, сохраняется для выбранной модели: после сравнения верните привычную настройку. Поддерживаемые параметры и псевдонимы моделей описаны в руководстве по конфигурации моделей.
Ещё один встроенный способ разгрузить основной диалог — субагенты, то есть вспомогательные агенты с отдельным контекстом. Они возвращают краткий отчёт, но их собственные запросы тоже расходуют токены.
Context Mode или Headroom: что выбрать?
Выбирайте Context Mode, если можете отобрать или обработать данные до передачи Claude. Headroom подходит, когда нужно пропускать уже существующие вызовы инструментов через слой сжатия.
| Что мешает работе | С чего начать | Что изменится |
|---|---|---|
| Большие файлы и логи, которые можно обработать или опросить локально | Context Mode | Claude получает выбранные результаты через инструменты выполнения кода и поиска |
| После сжатия теряются отдельные сведения о ходе задачи | Context Mode | Обработчики событий сохраняют сведения и возвращают информацию для продолжения работы |
| Слишком подробный вывод привычных инструментов | Headroom | Локальный прокси сжимает подходящее содержимое перед отправкой запросов |
| Короткие задачи с большими затратами на рассуждения или повторные попытки | Встроенные настройки задачи, effort и модели | Сначала уменьшается объём работы, которую должна выполнить модель |
Проверяйте по одному инструменту за раз, иначе будет трудно понять, что именно повлияло на результат.
Опубликованные проценты нельзя сравнивать напрямую. В материалах тестирования Context Mode измеряется размер вывода в байтах для выбранных примеров. Показатели Headroom 21%–57% получены в офлайн-тестах на воспроизводимых синтетических наборах вывода инструментов. Ни один из этих результатов не определяет экономию на всём сеансе Claude Code и не заменяет проверку того, что задача по-прежнему решается правильно.
Context Mode: передавайте результат обработки вместо целого файла
Context Mode полезен, когда ответ можно вычислить локально, не загружая все исходные данные в диалог Claude. Плагин также записывает отдельные события сессии в SQLite и использует хуки — обработчики событий — для восстановления сведений, нужных после сжатия истории.
Текущий пакет требует Node.js 22.5.0 или новее. Проверьте установленные версии в Bash:
claude --version
node --version
Внутри Claude Code выполните команды установки через каталог плагинов:
/plugin marketplace add mksglu/context-mode
/plugin install context-mode@context-mode
Перезапустите Claude Code и запустите диагностику:
/context-mode:ctx-doctor
Диагностическая команда проверяет, в частности, среды выполнения, регистрацию плагина, хуки и поддержку поиска SQLite. Устраните ошибки, относящиеся к вашей настройке, прежде чем считать плагин рабочим. Установка только MCP-сервера не обеспечивает ту же интеграцию с событиями сессии.
Для предметной проверки откройте npm-проект, в котором уже есть package-lock.json версии 2 или 3. Попросите Claude вызвать ctx_execute_file с параметрами path: "package-lock.json", language: "javascript" и следующим кодом:
const lock = JSON.parse(FILE_CONTENT);
if (!lock.packages) {
console.log("This example requires an npm v2/v3 lockfile.");
} else {
const rows = Object.entries(lock.packages).filter(([path]) => path !== "");
console.log(JSON.stringify({
lockfileVersion: lock.lockfileVersion,
packageEntries: rows.length,
entriesMarkedDev: rows.filter(([, pkg]) => pkg.dev === true).length
}, null, 2));
}
Инструмент передаёт содержимое файла через FILE_CONTENT. Код подсчитывает записи зависимостей и записи с признаком dev. Ожидаемый ответ — небольшой JSON-объект с тремя полями вместо полного содержимого файла. Значения зависят от проекта: это количество записей в файле зависимостей, а не число уникальных названий пакетов.
Затем выполните:
/context-mode:ctx-stats
Команда статистики должна показать вызовы Context Mode. Если вызовов нет, использование нужного инструмента пока не подтверждено. Показатели сокращения вывода не являются расчётом списаний за API.
Так же работайте с логами: считайте нужные показатели локально, выбирайте относящиеся к задаче ошибки и возвращайте точные фрагменты с указанием источника. Небольшие исходные файлы, код которых Claude должен видеть целиком, можно читать напрямую.
Context Mode распространяется по Elastic License 2.0. Изоляция выполнения в нём не является полноценной защитной песочницей операционной системы: инструменты исполнения могут наследовать доступ к файловой системе. Сохраняйте обычные ограничения прав и настройки песочницы для команд, которые запускает агент.
Headroom: сжимайте вывод через локальный прокси
Headroom подходит, если вы хотите оставить привычные инструменты Claude Code, добавив сжатие подходящих результатов на уровне прокси. Режим для работы с кодом по умолчанию учитывает и повторное использование кэша; сжатие каждого исходного файла или каждого запроса не гарантируется.
В этом примере используется ключ API из Anthropic Console, поэтому запросы оплачиваются отдельно от подписки Claude. Нужны установленные uv и Claude Code, отсутствие уже запущенного прокси Headroom и отсутствие конфликтующих настроек стороннего шлюза или облачного провайдера. Для существующего корпоративного шлюза требуется подходящая ему схема интеграции.
Для прямого подключения нужен действующий ключ Anthropic API и доступ, разрешённый для вашего аккаунта и региона. На 2026-10-21 России нет в опубликованном списке стран, где доступен Claude. Локальный прокси Headroom сам по себе не меняет региональные условия провайдера.
В Bash установите закреплённую версию пакета с поддержкой прокси по инструкции Headroom:
uv tool install --python 3.13 "headroom-ai[proxy]==0.41.0"
headroom --version
Проверка должна показать версию 0.41.0. Выполните строку чтения ключа, введите ключ без отображения символов на экране и нажмите Enter, затем запустите Claude через Headroom:
read -rs ANTHROPIC_API_KEY && export ANTHROPIC_API_KEY
HEADROOM_TELEMETRY=on HEADROOM_BEACON=off headroom wrap claude --code-memory none
Если Claude запросит разрешение использовать API-ключ, подтвердите его. Затем проверьте в /status активный способ авторизации и модель. Если раньше вы отказались использовать этот ключ, в документации по авторизации описана настройка «Use custom API key» в /config.
Команда запускает или использует уже работающий локальный прокси, направляет через него Claude и регистрирует MCP-сервер Headroom для получения исходных данных. Флаг --code-memory none отключает дополнительную интеграцию Serena, сохраняя возможность запрашивать данные через Headroom. Не добавляйте здесь --no-mcp: он уберёт механизм получения данных по маркерам сжатого содержимого. Поведение флагов определено в реализации запуска для версии 0.41.0.
Переменные окружения включают локальный сбор телеметрии и отключают её необязательную отправку. Запросы к настроенному провайдеру модели при этом продолжают уходить.
Запомните адрес прокси, напечатанный при запуске. Обычно используется порт 8787, но команда может выбрать другой свободный порт. Во втором терминале Bash выполните проверки, при необходимости подставив фактический порт:
curl -fsS http://127.0.0.1:8787/health
curl -fsS http://127.0.0.1:8787/stats
Теперь дайте запущенному через Headroom Claude ограниченную задачу: по существующему большому файлу test.log перечислить уникальные падающие тесты и привести первую точную ошибку для каждого, не изменяя файлы. После завершения снова запросите /stats.
Ответ об исправном состоянии подтверждает, что прокси запущен. Рост requests.total показывает, что прокси учёл завершённые запросы; отдельно проверяйте requests.failed и requests.rate_limited. Поля описаны в документации метрик. Нулевая экономия на коротком выводе или данных, исключённых из сжатия, сама по себе не означает ошибку маршрутизации.
Если авторизация не проходит, перед новой попыткой проверьте конфликты ANTHROPIC_AUTH_TOKEN, ANTHROPIC_BASE_URL и настроек провайдера. Если запросы не появляются в статистике, сверьте порт из сообщения при запуске и адрес, через который работает именно эта сессия.
Механизм сжатия, кэширования и получения исходных данных Headroom позволяет запросить сохранённый оригинал, если Claude понадобятся пропущенные детали. Это создаёт дополнительную работу, а срок хранения ограничен. Если оригинал уже недоступен, вернитесь к исходному файлу или повторно выполните команду.
Завершив работу в запущенном через Headroom Claude, уберите настройки этого пробного запуска. В исходном терминале, в том же проекте, выполните команды с фактическим портом:
headroom unwrap claude --port 8787
unset ANTHROPIC_API_KEY
Команда unwrap удаляет настройки, которыми управляет Headroom, и пытается остановить соответствующий прокси. unset убирает из окружения API-ключ, экспортированный для этой проверки. Перед возвращением к привычному способу авторизации снова проверьте /status.
Поручайте ограниченные подзадачи более дешёвой модели
Выбирайте модель с меньшей ценой для работы, результат которой легко проверить: например, для извлечения ошибок из заданного лога. Это уменьшает цену единицы работы, но не гарантирует меньшего числа токенов.
Чтобы проверить встроенный механизм субагентов без дополнительных средств сжатия, создайте файл .claude/agents/log-summary.md:
---
name: log-summary
description: Summarize supplied test logs and identify failing tests.
model: haiku
tools: Read, Grep, Glob
maxTurns: 6
---
Read only the log paths supplied in the task.
Return failing test names, exact error excerpts, and file or line references.
Report uncertainty and missing evidence.
Do not modify files.
Эта конфигурация разрешает читать и искать данные, ограничивает работу заданными логами и требует возвращать точные ошибки со ссылками на источник. После создания каталога агентов перезапустите Claude Code, затем поручите субагенту существующий лог:
Use log-summary to inspect ./test.log and return the first failing test and its exact error. Stop after the summary.
Пока субагент работает, откройте /tasks и проверьте фактическую модель. Сверьте приведённую им ошибку с исходным логом. Параметр maxTurns ограничивает число ходов, а не деньги или токены; при достижении лимита результат может остаться неполным. Поля конфигурации и порядок загрузки описаны в документации субагентов.
haiku — псевдоним, поэтому конкретная модель зависит от настроек провайдера. Сложные архитектурные решения и неоднозначные ошибки оставляйте модели, которая надёжно с ними справляется. Более дешёвый субагент, которого приходится многократно исправлять, может увеличить итоговые затраты.
Если используете BetterToken с оплатой по потреблению, следуйте его инструкции подключения Claude Code: базовый адрес для Anthropic-совместимого подключения — https://bettertoken.ai, без /v1. Проверьте ANTHROPIC_DEFAULT_HAIKU_MODEL и остальные соответствия псевдонимов моделям. Если всем псевдонимам назначен один ID, выбор haiku не переключит вас на другую, более дешёвую модель. Выбирайте поддерживаемые ID осознанно, сравнивайте текущие цены на модель и кэш, затем сверяйте фактическую модель и списания. Оплата API BetterToken отделена от подписки Claude; настройку этого провайдера рассматривайте отдельно от примера прямого подключения Headroom к Anthropic.
Согласно документации BetterToken, для подключения к его API из России VPN не нужен, а баланс можно пополнять в рублях. Это не распространяется на сторонние сайты, загрузку инструментов, вход в аккаунты и обновления. Доступные способы оплаты, комиссии и другие условия проверяйте в консоли на момент платежа.
Сравнивайте стоимость решённой задачи и правильность результата
Оставляйте средство сжатия, только если оно улучшает итог работы с учётом кэша, субагентов, запросов исходных данных и повторных попыток.
Сравнивайте одинаковое состояние репозитория, запрос, конкретную модель, effort и команду проверки. Отмечайте, был ли кэш прогрет к началу запуска: если смешать запуски с прогретым и холодным кэшем, сравнение может исказиться. Проверяйте и итоговую правку или ответ, и точность приведённых доказательств.
В учёте Anthropic API input_tokens, cache_creation_input_tokens и cache_read_input_tokens — отдельные категории. Одного input_tokens недостаточно для подсчёта всего входа; выходные токены тоже нужно учитывать. Если тарифы указаны за миллион токенов, считайте sum(token_count × category_rate / 1,000,000) по всем запросам, разделяя запись в кэш по срокам хранения, когда цены различаются. Добавьте обязательные платежи, не зависящие от количества токенов.
Показатель кэша основного диалога в Claude Code доступен начиная с версии 2.1.251 и не включает субагентов. Счётчики экономии прокси помогают диагностировать поведение, но денежные расходы сравнивайте по данным биллинга провайдера.
Если пропущенная ошибка вынуждает заново разбираться в проблеме, субагенту постоянно нужна помощь или повторное получение данных возвращает прежний объём контекста, ослабьте сжатие либо пересмотрите границы задачи. Практический результат — правильно решённая задача с меньшим суммарным объёмом оплаченной работы.