Как экономить токены в Claude Code без боли и переплат

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

Что сжирает ваши токены

Начнем с базы. Токены делятся на входящие (input) и исходящие (output). Генерация ответа обходится в пять раз дороже чтения промпта, потому что видеокарта работает на каждый токен по отдельности. Но главная статья расходов кроется в контексте. Каждый прочитанный файл и каждый лог сборки остаются в сессии навсегда. На сороковом шаге вы платите за повторное чтение всех тридцати девяти предыдущих.

Как работает кэш и почему он слетает

Кэширование промптов включено по умолчанию. Если начало вашего запроса совпадает с тем, что сервер уже видел, вы платите за чтение кэша сущие копейки (0.1x от базовой цены). Идеальный сценарий: вы просто добавляете новые команды в конец сессии.

Вот что полностью сбрасывает кэш и заставляет платить за весь контекст заново:

  • смена модели через /model в середине работы;
  • изменение уровня усердия командой /effort;
  • включение быстрого режима (лучше делать это до начала работы);
  • команда /compact заменяет длинный диалог коротким пересказом;
  • таймаут (кэш живет час на подписке и пять минут по API).

⚙️ Настраиваем среду перед стартом

Хватит теории, переходим к настройке.

  1. Задайте параметры до старта. Сразу решите, какая модель нужна. Для рутины хватит базовой, для сложной архитектуры берите максимум. Если сессия обещает быть примитивной, отключите лишние раздумья модели:
StoDum
MAX_THINKING_TOKENS=0 claude
  1. Проверьте стартовый контекст. Вызовите команду /context в чистой сессии. Уберите лишнее из файла CLAUDE.md и перенесите специфичные для воркфлоу инструкции в skills. Если запущен ненужный MCP-сервер, отключите его командой /mcp.
  2. Заглушите шумные команды. Огромные логи больше 30 тысяч символов Claude Code обрежет сам. Проблема кроется в логах среднего размера. Тестраннеры любят выводить сотни строк с зелеными галочками. Модель запишет все это в историю. Добавьте в CLAUDE.md алиасы с флагами тишины:
StoDum
Run tests with quiet flag: npx vitest run <file> --reporter=dot

Как правильно общаться с моделью

Привычки тоже придется поменять.

Указывайте файлы напрямую через @. Если написать обычный текст, модель сначала сделает вызов инструмента для поиска, потом прочитает файл. Все эти шаги осядут в контексте. Упоминание через @ прикрепляет файл к сообщению до отправки:

StoDum
Fix the failing test in @utils.test.ts

Используйте субагенты для черновой работы. Если нужно пропарсить огромный лог сборки, отправьте туда агента-помощника. Он получит свой изолированный контекст, сделает работу и вернет в основную сессию только короткий ответ. Весь мусор исчезнет вместе с ним.

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

Следите за фоновыми задачами. Если используете /loop, запускайте его в отдельном терминале. Иначе каждый виток цикла потащит за собой всю историю основного диалога.

⚠️ Важный нюанс: если последние пару команд пошли не по плану, используйте /rewind. Эта команда отрезает хвост диалога, сохраняя остальной кэш в целости.

Четыре всадника слитого бюджета

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