70% токенов Claude Code уходит на мусор — 8 приёмов, которые это исправляют
Написание кода — самая дешёвая часть работы с Claude Code. По данным DEV Community, 70% токенов уходит на то, что агент делает до того, как написал хоть строчку: чтение файлов, поиск по репозиторию, переотправка всей истории разговора, загрузка схем MCP-серверов, которые ты не используешь.
Из этого следует неочевидный вывод: оптимизировать нужно не «как ты формулируешь задачи», а «что агент тащит в контекст перед тем как ответить».
TL;DR: 8 приёмов, которые режут расход токенов в Claude Code на 50–80%. Самый быстрый — создать
.claudeignore(2 минуты, −40% к каждой сессии). Самый нестандартный — заменить бинарник на npx: баг в standalone-версии тихо отключает кеширование и может умножить стоимость в 10–20 раз.
Почему сессия дорожает со временем
Каждое сообщение в Claude Code включает гораздо больше, чем твой вопрос:
Реальный запрос = содержимое CLAUDE.md
+ вся история разговора с самого начала
+ файлы, прочитанные за сессию
+ результаты tool-вызовов (bash, поиск, grep...)
+ схемы всех подключённых MCP-серверов
+ твой текущий вопрос
Первое сообщение — ~500 токенов. Тридцатое сообщение в той же сессии — ~15 000 токенов. Одна и та же задача, только разговор успел накопить историю. Это механизм большинства неожиданно высоких счетов.
1. Баг с промпт-кешированием в standalone-бинарнике
Самый неочевидный пункт — поэтому первый.
Если ты установил Claude Code через бинарник (стандартная установка), есть известный баг: промпт-кеширование может тихо не работать. Кеширование означает, что статичный контекст — CLAUDE.md, системный промпт, открытые файлы — при повторных запросах обрабатывается с 90%-ной скидкой. Без кеша каждый запрос пересчитывает весь этот контекст с нуля по полной цене.
Итог: стоимость сессии в 10–20 раз выше нормальной при полностью идентичных задачах.
Фикс — переключиться на npx-версию:
alias claude='npx @anthropic/claude-code'
Добавь в .bashrc или .zshrc. Промпт-кеш заработает корректно.
Как проверить работу кеша: запусти /cost после нескольких сообщений подряд. Если стоимость каждого следующего сообщения растёт пропорционально истории без видимых скидок — кеш не работает.
2. .claudeignore — две минуты, −40% к каждой сессии
Агент не знает, какие файлы тебе нужны. Без подсказки он читает всё подряд — включая node_modules, dist, build, .next и всё остальное, что не имеет отношения к задаче.
Реальный пример из Next.js-проекта (Andrei Nita):
node_modules/— 847 000 строк.next/— 124 000 строк- Реальный исходный код — 8 900 строк
Агент обрабатывал 93% нерелевантного кода до того, как ты написал хоть что-то. Токенов при старте сессии: 347 000 → после .claudeignore: 19 800.
# .claudeignore node_modules/ .next/ dist/ build/ *.log .cache/ .git/ package-lock.json yarn.lock pnpm-lock.yaml *.csv *.pdf
Для команды из 5 человек с 20 сессиями в день — это ~$98 экономии в день только от одного файла.
3. CLAUDE.md: убей монолит, создай индекс
CLAUDE.md читается на каждом сообщении. Каждом. Тысячестрочный файл с документацией API, примерами кода и гайдами по стилю — это тысяча строк токенов при каждом обращении к агенту.
Один разработчик нашёл, что его CLAUDE.md загружает 42 000 токенов за сообщение. После реструктуризации — 2 400 токенов. Снижение на 94%.
Принцип: CLAUDE.md как индекс, не как энциклопедия.
Антипаттерн:
## API Reference
POST /auth/login
Params: email (string, required), password (string, min 8)
Response: { token: string, expires_in: number }
... (ещё 800 строк)
Правильно:
## Core Stack: Node.js + Express + PostgreSQL. Пакетный менеджер: pnpm. Не трогать: migrations/, .env ## Детали — читай при необходимости - API contracts → /docs/api-contracts.md - DB schemas → /docs/data-models.md - Deployment → /docs/deployment.md ## Жёсткие правила 1. Тесты проходят до коммита 2. Никаких секретов в коде
Детальные файлы загружаются только когда агент к ним явно обращается. CLAUDE.md — не больше 200 строк.
4. MCP-жор: отключи то, что не используешь
Каждый подключённый MCP-сервер загружает всю схему своих инструментов в контекст каждого сообщения — даже если ты не вызываешь ни один из них.
Реальные цифры из анализа Roman Peschke:
- GitHub MCP — ~8 000 токенов за сообщение
- Playwright MCP — ~13 000 токенов
- Gmail MCP — ~2 600 токенов
Три неиспользуемых сервера = 26 000 токенов на каждое сообщение. За 10 сообщений — 260 000 токенов, которые не сделали ничего.
Проверь, что подключено: напиши /mcp в Claude Code. Всё, что не нужно прямо сейчас — отключи. Если есть CLI-альтернатива — используй CLI.
5. /clear и /compact — правильные моменты
Два самых важных инструмента управления контекстом, которые большинство либо не использует совсем, либо использует слишком поздно.
/clear — обнуляет историю разговора полностью. Следующий запрос начинается с чистого листа: только CLAUDE.md + твой вопрос. Используй между несвязанными задачами.
/compact — сжимает историю в краткое резюме вместо полной копии. Типичное снижение: с 20 000+ токенов до 2 000–3 000. Используй когда задача ещё не закончена, но сессия затянулась.
Важный момент: запускать /compact нужно при 60% заполнения контекста, а не при 95%. По умолчанию автокомпакт срабатывает ближе к концу — к тому моменту агент уже страдает от «loss in the middle»: начинает игнорировать данные из середины огромного контекста. Компактируй раньше.
И обязательно с инструкцией:
/compact Сохрани: финальную схему БД и логику JWT-аутентификации
Без инструкции резюме сфокусируется на последних действиях и может потерять ключевые решения из начала сессии.
6. Efficiency header в CLAUDE.md
На Hacker News завирусился GitHub-репозиторий drona23/claude-token-efficient — заголовок для CLAUDE.md, который убирает словесный мусор из ответов агента.
# Response Efficiency CRITICAL: Minimize output tokens. - No preamble: just do it, don't announce what you're about to do - No recap: don't summarize what you just did - No meta-commentary: no "Great question!" or "Certainly!" - Truncate unchanged code: use `// ... existing code` - Simple tasks = one-sentence confirmation only
Репозиторий заявляет о снижении на 63%. Реальный тест на неделе обычной разработки дал другие цифры: разговорные ответы — на ~40% короче, правки кода — на ~30%, сложные объяснения — на ~10%. Средняя экономия на обычном миксе задач — около 35%. Меньше, чем в рекламе, но реальная.
Добавь этот блок в начало CLAUDE.md.
7. /model — Haiku для формат-задач, Opus для архитектуры
Переключение модели не сбрасывает историю разговора. Можно прямо в середине сессии написать /model и выбрать другую модель для конкретного шага.
Haiku стоит в 3 раза дешевле Sonnet за токен. Для задач «переформатируй этот JSON», «напиши JSDoc», «переименуй переменную» — полный Sonnet избыточен.
Рабочая схема:
- Sonnet — 80% задач: написание кода, рефакторинг, дебаггинг
- Haiku — форматирование, документация, мелкие правки
- Opus — архитектурные решения, сложный дебаг с несколькими гипотезами
Переключись, сделай дешевле, вернись обратно.
8. Конкретные промпты вместо «поищи по проекту»
Расплывчатый промпт «почини баг в авторизации» заставляет агента открыть 10–15 файлов, каждый из которых стоит 1 000–5 000 токенов — только чтобы найти, где именно проблема. В задокументированном случае Morph правка из одной строки потребовала 21 000 токенов, потому что агент самостоятельно искал контекст.
Конкретный промпт:
В src/auth/validate.ts, строка 42: JWT expiry check сравнивает Date.now() (миллисекунды) с полем expires, которое в Unix-секундах. Исправь сравнение.
Используй @filename для прямых ссылок на файлы:
Посмотри @src/lib/data.ts строки 45-80 — там тип getAllTools выглядит неправильно
Это сразу показывает агенту куда смотреть, без разведки по репозиторию.
Подводные камни
Баг с кешем актуален не для всех версий. Если ты обновился до последней версии Claude Code и используешь npx — кеш, скорее всего, уже работает. Но проверить через /cost стоит в любом случае: показатель cache hit rate виден прямо в выводе команды начиная с версии 2.1.92.
Efficiency header ломает сложные объяснения. «Без преамбул и резюме» отлично работает для рутинных правок. Если ты отлаживаешь нетривиальный баг, где важно понимать ход мысли агента — временно убери эти правила. 10% экономии на сложных задачах не стоят потери прозрачности.
Промпт-кеш сбрасывается после 5 минут неактивности. Ушёл на обед — следующий запрос пересчитывает весь контекст по полной цене. Кеш не ждёт. Если уходишь дольше пяти минут, лучше сохранить состояние через /compact перед уходом.
Sub-agents = в 7–10 раз больше токенов. Каждый субагент запускает своё независимое контекстное окно с нуля. Для открытых задач типа «найди все баги в проекте» — дорого. Используй субагентов только для чётко ограниченных изолированных задач: «проверь файлы в src/models/ на опечатки в названиях методов».
Вердикт
Из восьми приёмов три дают 80% эффекта: фикс бинарника (потенциально самый дорогой баг, который сейчас не виден), .claudeignore (2 минуты работы), разрезание CLAUDE.md с отключением лишних MCP. Остальное — хорошие практики поверх основных.
Efficiency header и /model-переключение дают реальную экономию, но требуют изменить привычки. Конкретные промпты с @filename — это уже оптимизация, которая имеет смысл после того как закрыты главные утечки.
Как попробовать прямо сейчас
-
Проверь кеширование. Запусти
which claude. Если путь не через npx — добавьalias claude='npx @anthropic/claude-code'в.bashrc/.zshrc. -
Создай
.claudeignore. Минимальный вариант:node_modules/,.next/,dist/,*.log,package-lock.json. Это займёт минуту. -
Запусти
/contextв свежей сессии. Посмотри, что занимает больше всего места — CLAUDE.md или MCPs. Это покажет, где искать самую большую утечку. -
Напиши
/mcpи отключи всё, что не нужно прямо сейчас. -
Добавь efficiency-header из раздела #6 в начало CLAUDE.md.
Официальные доки по расходам: Managing Claude Code costs, CLAUDE.md reference