04 / 06 · Эксперт

🪙 Оптимизация токенов

Токены — это не просто деньги. От количества токенов в контексте зависит качество ответов, скорость работы и то, сколько реальной работы CC успеет сделать до compaction. Оптимизация — это про эффективность, а не только про экономию.

💡 Почему токены важны — не только про деньги

💰
Стоимость
Тариф Max — фиксирован, но интенсивное использование быстро упирается в rate limits. Меньше токенов = больше задач за тот же период.
🧠
Качество ответов
Чем больше «шума» в контексте (нерелевантные файлы, MCP-схемы, длинная история) — тем хуже модель фокусируется на задаче. Чистый контекст = точнее ответы.
Скорость
CC обрабатывает весь контекст при каждом ответе. Большой контекст = медленнее первый токен ответа. На задачах с коротким итогом это очень заметно.
🔄
Длина полезной работы
Auto-compaction срабатывает при ~90% заполнения контекста. Меньше «мусора» в начале — дольше CC работает до сжатия, меньше риск потерять задачу.

📊 Визуальный разбор: что съедает токены

Типичная сессия CC в большом проекте с несколькими MCP-серверами. Смотрите как распределяются 200 000 токенов контекстного окна до начала реальной работы:

Расход контекста при старте сессии (без оптимизации)
🔌 MCP схемы (все)
45 000–60 000 ток.
~55 000 ⚠️
📜 История сессии
15 000–25 000
~20 000
📋 CLAUDE.md (большой)
3 000–7 000
~5 000
📂 Прочитанные файлы
5 000–20 000
~10 000
💬 Ваш промпт
200–2000
~500
Итого занято до начала работы:
~90 500 токенов (45% контекста)
⚠️
MCP схемы — главный пожиратель — Каждый подключённый MCP-сервер добавляет свои схемы инструментов в контекст. Типичная установка с docker, playwright, google-search-console, ruflo и другими — это 45 000–60 000 токенов ещё до первого слова задачи. Решение: ленивая загрузка схем (Tool Search автоматичен с CC 1.0+).

🛠️ Техники оптимизации

1
Tool Search — отложенная загрузка схем (автоматически с CC 1.0+)
Загружает схемы MCP-инструментов только когда они реально нужны
−47% до −95%

Исторически CC загружал схемы всех подключённых MCP-инструментов в начале каждой сессии. С CC 1.0+ это поведение изменено: схемы загружаются лениво по умолчанию — CC сначала ищет нужный инструмент, и только потом подгружает его схему. Остальные инструменты не занимают контекст. Никаких переменных окружения не требуется.

До (стандартно)
45 MCP инструментов × ~1000 ток. каждый = все схемы в контексте
45 000
токенов на MCP схемы
После (CC 1.0+, по умолчанию)
Загружаются только схемы тех инструментов, которые реально вызвал CC
2 400
токенов на MCP схемы (3–5 инструментов)
✂️ Экономия: 42 600 токенов (−94%) только за счёт одной настройки
Работает автоматически с CC 1.0+ — никаких переменных окружения не нужно. CC знает о всех MCP-инструментах, но схемы загружаются лениво. Функциональность не меняется, только потребление токенов (~5 700 токенов при старте вместо ~82 000).
2
Компактный CLAUDE.md
Каждая строка CLAUDE.md читается в каждой сессии — делайте его точным
−1 000 до −4 000 ток.

CLAUDE.md загружается при каждом старте сессии. Лишние строки — это токены которые тратятся постоянно, в каждом разговоре. Цель: под 200 строк, только то что CC реально использует.

Что убрать
  • Длинные примеры кода (2–3 примера по 30 строк)
  • Повторяющиеся правила («не делай X», «не делай Y», «не делай Z» → «не делай X, Y, Z»)
  • Историю проекта и контекст «как мы пришли к этому»
  • Закомментированный код или старые правила
  • Описание инструментов которые CC и так знает (git, npm, artisan)
Что оставить
  • Стек технологий с версиями (1 строка)
  • Архитектурные правила (кратко, без примеров)
  • Команды запуска тестов и линтера
  • Специфика проекта (порты, имена контейнеров)
  • Запреты которые CC нарушает (только реальные проблемы)

Шаблон: CLAUDE.md до 200 строк

CLAUDE.md — оптимизированный шаблон
# Проект: MyApp ## Стек Laravel 11, PHP 8.3, Nuxt 3, TypeScript, PostgreSQL 16, Redis 7 ## Команды - тесты PHP: `php artisan test` - тесты JS: `npm run test` - линтер: `npm run lint && ./vendor/bin/pint` - миграции: `php artisan migrate` ## Архитектура (обязательно) - Логика ТОЛЬКО в app/Services/ - Контроллеры: вызов сервиса + HTTP-ответ, без логики - Репозитории: только в app/Repositories/, только работа с БД - DTO: app/DTO/, использовать между слоями - Vue: composables/ для логики, компоненты только UI - Store (Pinia): только в stores/, не в компонентах ## Запреты - НЕ создавай классы без явного запроса - НЕ меняй .env — только читай - НЕ трогай docker-compose.yml - НЕ используй SQL напрямую в контроллерах - НЕ делай git add . — только конкретные файлы ## Инфраструктура - Docker: app:8000, frontend:3000, db:5432 - Контейнеры: myapp-app-1, myapp-db-1, myapp-redis-1 ## После каждого изменения Запусти тесты и покажи результат.
3
.claudeignore — исключить лишние файлы из индексации
CC не будет читать и индексировать файлы которые ему не нужны
−5 000 до −30 000 ток.

Без .claudeignore CC может случайно прочитать огромные файлы: логи, vendor-зависимости, скомпилированные бандлы. Один файл storage/logs/laravel.log на 50 MB — это катастрофа для контекста.

Синтаксис аналогичен .gitignore. Создайте в корне проекта:

.claudeignore
# Зависимости (читать не нужно — CC знает API) vendor/ node_modules/ .pnpm-store/ # Git внутренности .git/ # Логи — огромные, бесполезны для кода storage/logs/ *.log *.log.* # Кэши и скомпилированные файлы storage/framework/cache/ storage/framework/views/ bootstrap/cache/ .cache/ # Фронтенд-бандлы public/build/ public/hot dist/ .nuxt/ .output/ # Тесты-покрытие (большие HTML-отчёты) coverage/ .nyc_output/ test-results/ # Секреты и credentials .env .env.* *.pem *.key *.p12 secrets/ credentials.json # IDE .idea/ .vscode/settings.json # Временные файлы *.tmp *.swp *.DS_Store
💡
Проверить эффект — Запустите /status в CC до и после добавления .claudeignore. В разделе «Context» увидите количество проиндексированных файлов — разница часто в 10–50 раз на Laravel-проектах.
4
Специализированные сессии
Стартуйте CC в поддиректории, не в корне огромного проекта
−30% до −70%

Когда вы запускаете claude в корне монорепо или большого Laravel-проекта — CC пытается понять весь проект. Если задача касается только backend, смысла загружать контекст frontend нет.

🔧 Backend сессия
cd E:\project\app
Только PHP-файлы. CC не видит resources/js, не читает TypeScript.
🎨 Frontend сессия
cd E:\project\resources\js
Только Vue/TS. Нет доступа к PHP-коду, меньше отвлечений.
🗄️ DB / Migrations
cd E:\project\database
Только миграции, сидеры, схемы. Фокус на структуре данных.
🧪 Tests сессия
cd E:\project\tests
Только тест-файлы. CC понимает тестовый контекст быстрее.
Запуск специализированной сессии
# Вместо этого (полный проект — огромный контекст): cd E:\project claude # Делайте так (только нужная часть): cd E:\project\app\Services claude # Задача: "Добавь метод в OrderService" — CC видит только Services/ # Или через параметр --cwd: claude --cwd E:\project\app\Services claude --cwd E:\project\resources\js\stores
5
Стратегия сессий — короткие и целевые
История сессии нарастает и превращается в балласт
Системный подход

Длинная сессия накапливает историю: код который CC читал но уже не нужен, промежуточные размышления, ошибки и их исправления. Всё это токены которые платите вы и которые снижают качество следующих ответов.

Антипаттерн
Одна сессия на 3–4 часа работы. Решили 5 разных задач в одном потоке. История раздулась до 80 000 токенов. CC отвечает медленно и путает контекст задачи #2 с задачей #5.
Правильно
Одна задача — одна сессия. Закончили Cart API → /clear или новая вкладка. История не раздувается, CC работает с чистым контекстом, качество стабильное весь день.

Правила управления сессиями

⚠️
Частая ошибка новичков: путают /compact и /clear. /compact сжимает историю сессии, сохраняя её суть в контексте (меньше токенов, но работа продолжается). /clear полностью сбрасывает историю — CC забывает всё из текущего разговора. Для переключения на другую задачу нужен /clear; для экономии токенов в рамках одной задачи — /compact.
  • /clear перед новой задачей — сбрасывает историю, оставляет CLAUDE.md. Используйте когда переключаетесь на другую задачу в том же терминале.
  • Новая вкладка терминала — когда хотите полностью чистый старт для другой части проекта.
  • Не держите сессию «на всякий случай» — если задача закончена и новой нет, закройте сессию. Длинные паузы всё равно не сохраняют контекст.
  • Scratchpad вместо памяти сессии — если нужно передать контекст между сессиями — пишите в файл, не надейтесь на историю чата.
Команды управления сессией
# Сбросить историю (остаётся CLAUDE.md и конфиг) /clear # Проверить состояние контекста /status # Принудительный compact (сжать историю не дожидаясь авто) /compact # Показать статистику токенов сессии /status tokens

📋 Сравнительная таблица: до и после оптимизации

Сценарий Без оптимизации С оптимизацией Экономия
Laravel + 5 MCP серверов, старт сессии ~65 000 ток. ~3 500 ток. −94% (Tool Search, авто)
Большой CLAUDE.md (500 строк) ~8 000 ток. ~1 800 ток. −77% (компактный MD)
Проект без .claudeignore (node_modules) индекс 50 000 файлов индекс 2 000 файлов −96% (claudeignore)
Сессия 4 часа, 6 разных задач история ~80 000 ток. 6 × ~2 000 ток. −85% (стратегия сессий)
CC в корне монорепо vs поддиректории контекст всего проекта только нужная часть −30–70% (спец. сессии)
Всё вместе (типичный день) ~180 000 ток. за день ~25 000 ток. за день −86%

📈 Мониторинг расхода токенов

📊 Внутри CC
  • Команда /status — состояние контекста, % заполнения окна
  • Команда /status tokens — подробная статистика токенов текущей сессии
  • Команда /compact — принудительное сжатие без ожидания авто-compact
  • При auto-compaction CC показывает сколько токенов было сжато
🌐 Anthropic Console
  • console.anthropic.com → Usage — детальная статистика по дням
  • Breakdown по input/output токенам и типам запросов
  • Тариф Max не тарифицирует по токенам, но показывает нагрузку
  • API keys → Logs — история каждого запроса к API с токенами
Что показывает /status
# Вывод команды /status (примерно): Model: claude-sonnet-5 Context: 47,230 / 1,000,000 tokens (5%) Session: 1h 12m Context breakdown: System prompt: 5,840 tokens Conversation: 38,420 tokens Files read: 2,970 tokens # При высоком заполнении (>80%) — рекомендуется /clear или /compact # При >90% — CC запустит auto-compaction автоматически

🔥 Три главных пожирателя токенов Новое · июнь 2026

📦
1. Накопление tool output
Каждый Read и MCP-ответ перманентно остаётся в контексте. Прочитали 10 файлов по 200 строк — это ~20 000 токенов на весь остаток сессии, даже если эти файлы уже не нужны.
💬
2. История диалога
Claude перечитывает весь предыдущий диалог с каждым новым вводом. Длинная беседа из 20 реплик может занимать 30 000–60 000 токенов — и каждый ваш новый вопрос обходится всё дороже.
📋
3. CLAUDE.md baseline
Файл загружается перед каждым сообщением. Если CLAUDE.md весит 5 000 токенов — это 5 000 токенов КАЖДЫЙ раз, при каждом запросе. Не раз за сессию, а раз за реплику.

⚡ Конкретные техники экономии Новое · июнь 2026

ТехникаЭффект
/clear при смене темы 30–50% экономии за сессию
/compact Суммаризация истории + свежий старт в рамках той же задачи
Trim CLAUDE.md до < 500 токенов Постоянная экономия при каждом запросе
.claudeignore для build/, logs/ Снижает overhead при индексации проекта
Context-Mode MCP Compression 50–90% снижения на MCP-выводе
Subagent isolation Стектрейсы и промежуточные результаты остаются у субагента, не засоряют основной контекст

🏗️ 3-уровневая стратегия загрузки памяти Новое · июнь 2026

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

1
Классификация намерения по ключевым словам
Определяется тип задачи без чтения каких-либо файлов. Нулевое потребление токенов на контекст. Работает на промпте пользователя.
2
Топ-2 релевантных файла (~20 строк каждый)
Читаются только два наиболее релевантных файла, и только по ~20 строк контекста вокруг нужного участка. Это даёт достаточно информации для 80% задач.
3
Дополнительный контекст по явному запросу
Только если задача требует большего — подгружаются дополнительные файлы или разделы. Не проактивно, а реактивно.
📉
Эффект: 60–65% снижение типичного потребления контекста по сравнению с подходом «загрузить всё сразу».

⚠️ Инцидент с кешированием — март 2026 Важное предупреждение

⚠️
Баг в prompt caching (март 2026): Была обнаружена ошибка в механизме prompt caching, которая приводила к 10–20x инфляции токенов без каких-либо предупреждений со стороны API. Расходы росли незаметно — счётчик токенов показывал нормальные значения, но фактически тарифицировалось в 10–20 раз больше.

Как защититься: Регулярно проверяйте total_cost_usd в JSON-выводе (--output-format json). При аномальном росте стоимости при неизменном объёме задач — немедленно проверяйте логи в console.anthropic.com.
bash Мониторинг реальной стоимости запроса
# Получить полный JSON-ответ с метриками стоимости claude -p "Задача..." \ --output-format json \ --no-interactive | jq '{cost: .total_cost_usd, tokens: .usage}' # Пример вывода: # { "cost": 0.0023, "tokens": { "input": 1840, "output": 312 } }

🤖 CLAUDE_CODE_SUBAGENT_MODEL Новое · июнь 2026

Переменная окружения CLAUDE_CODE_SUBAGENT_MODEL задаёт потолок модели для всех субагентов текущей сессии. Это позволяет автоматически направлять все дочерние задачи на более дешёвую модель, не меняя основной агент.

bash Ограничение модели субагентов
# Все субагенты будут использовать Sonnet максимум # (даже если основной агент — Opus) export CLAUDE_CODE_SUBAGENT_MODEL=claude-sonnet-5 # Для CI/CD — в секции env workflow: # CLAUDE_CODE_SUBAGENT_MODEL: claude-sonnet-5
Практическое применение
  • Основной агент (Opus) — архитектурные решения и финальный вывод
  • Субагенты (Sonnet) — поиск файлов, grep, чтение кода, рутинные операции
  • Экономия: 3–5x по сравнению со сценарием «все агенты на Opus»

✅ Чеклист оптимизации для нового проекта

🌱
Только начинаете работу с CC и не знаете как настроить базовый settings.json? Базовая конфигурация подробно объяснена в разделе Начинающего уровня — Минимальная настройка. Начните оттуда, а потом возвращайтесь сюда за оптимизацией.