04 / 06 · Эксперт
🪙 Оптимизация токенов
Токены — это не просто деньги. От количества токенов в контексте зависит качество ответов, скорость работы и то, сколько реальной работы CC успеет сделать до compaction. Оптимизация — это про эффективность, а не только про экономию.
💡 Почему токены важны — не только про деньги
💰
Стоимость
Тариф Max — фиксирован, но интенсивное использование быстро упирается в rate limits. Меньше токенов = больше задач за тот же период.
🧠
Качество ответов
Чем больше «шума» в контексте (нерелевантные файлы,
MCP-схемы, длинная история) — тем хуже модель фокусируется на задаче. Чистый контекст = точнее ответы.
⚡
Скорость
CC обрабатывает весь контекст при каждом ответе. Большой контекст = медленнее первый токен ответа. На задачах с коротким итогом это очень заметно.
🔄
Длина полезной работы
Auto-compaction срабатывает при ~90% заполнения контекста. Меньше «мусора» в начале — дольше CC работает до сжатия, меньше риск потерять задачу.
📊 Визуальный разбор: что съедает токены
Типичная сессия CC в большом проекте с несколькими MCP-серверами. Смотрите как распределяются 200 000 токенов контекстного окна до начала реальной работы:
Расход контекста при старте сессии (без оптимизации)
🔌 MCP схемы (все)
~55 000 ⚠️
📋 CLAUDE.md (большой)
~5 000
📂 Прочитанные файлы
~10 000
Итого занято до начала работы:
~90 500 токенов (45% контекста)
⚠️
MCP схемы — главный пожиратель — Каждый подключённый MCP-сервер добавляет свои схемы инструментов в контекст. Типичная установка с docker, playwright, google-search-console, ruflo и другими — это 45 000–60 000 токенов ещё до первого слова задачи. Решение: ленивая загрузка схем (Tool Search автоматичен с CC 1.0+).
🛠️ Техники оптимизации
Исторически 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).
CLAUDE.md загружается при каждом старте сессии. Лишние строки — это токены которые тратятся постоянно, в каждом разговоре. Цель: под 200 строк, только то что CC реально использует.
Что убрать
- Длинные примеры кода (2–3 примера по 30 строк)
- Повторяющиеся правила («не делай X», «не делай Y», «не делай Z» → «не делай X, Y, Z»)
- Историю проекта и контекст «как мы пришли к этому»
- Закомментированный код или старые правила
- Описание инструментов которые CC и так знает (git, npm, artisan)
Что оставить
- Стек технологий с версиями (1 строка)
- Архитектурные правила (кратко, без примеров)
- Команды запуска тестов и линтера
- Специфика проекта (порты, имена контейнеров)
- Запреты которые CC нарушает (только реальные проблемы)
Шаблон: CLAUDE.md до 200 строк
# Проект: 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
## После каждого изменения
Запусти тесты и покажи результат.
Без .claudeignore CC может случайно прочитать огромные файлы: логи, vendor-зависимости, скомпилированные бандлы. Один файл storage/logs/laravel.log на 50 MB — это катастрофа для контекста.
Синтаксис аналогичен .gitignore. Создайте в корне проекта:
# Зависимости (читать не нужно — 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-проектах.
Когда вы запускаете 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
Длинная сессия накапливает историю: код который 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 (примерно):
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.
# Получить полный 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 задаёт потолок модели для всех субагентов
текущей сессии. Это позволяет автоматически направлять все дочерние задачи на более дешёвую модель,
не меняя основной агент.
# Все субагенты будут использовать 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»
✅ Чеклист оптимизации для нового проекта