Тема
Оптимизация расхода лимитов Claude Code (Max X5)
Главный принцип
MCP-результаты остаются в контексте до конца сессии. Контекст растёт → каждый следующий запрос дороже. /compact — основной инструмент контроля расхода.
Приоритет выбора MCP (от дешёвого к дорогому)
1. Laravel Boost — первый выбор для Laravel-задач (1% лимита)
Возвращает структурированные компактные ответы. Всегда предпочитать Docker MCP.
| Задача | Инструмент | Вместо |
|---|---|---|
| Ошибка в логах | laravel-boost__last-error | docker_exec + tail storage/logs/laravel.log |
| Записи лога | laravel-boost__read-log-entries | docker_exec + cat |
| Схема таблицы | laravel-boost__database-schema | docker_exec + psql \d table |
| Запрос к БД проекта | laravel-boost__database-query | docker_exec + psql -c |
| Информация о проекте | laravel-boost__application-info | docker_exec + php artisan about |
| Документация Laravel | laravel-boost__search-docs | WebFetch на laravel.com |
2. Postgres/MySQL MCP — для SQL-запросов (6% лимита)
Напрямую к БД, минуя Docker. Возвращает JSON — компактнее raw-вывода psql.
| Задача | Инструмент | Вместо |
|---|---|---|
| SELECT-запросы | mcp__postgres__query | docker_exec + psql -c |
| Схема/индексы | mcp__postgres__query | docker_exec + \dt, \di |
| EXPLAIN запроса | mcp__postgres__query | docker_exec + psql |
| Bulk UPDATE/DELETE | mcp__postgres__query | docker_exec + psql |
3. Docker MCP — fallback (20% лимита)
Использовать только когда Laravel Boost и Postgres MCP не покрывают задачу.
| Задача | Оправданный docker_exec |
|---|---|
php artisan migrate | Boost не умеет произвольные artisan |
php artisan test | Только через exec |
composer require/install | Только через exec |
php artisan make:* | Генерация файлов |
npm run build | Frontend-сборка |
./vendor/bin/pint | Lint |
| Логи nginx/redis | docker_container_logs с tail: 20 |
Как экономить Docker MCP
- Цепочка команд в одном
docker_exec:cmd1 && cmd2 && cmd3вместо 3 отдельных вызовов /compactпосле серии docker-вызовов — сжимает контекст, убирает raw-данныеdocker_container_logs— всегда указыватьtail: 20, не читать всё- Предсказуемые команды (
cache:clear,config:clear) — не проверять вывод, результат известен - Не вызывать
docker_list_containersбез необходимости — контейнеры известны из CLAUDE.md
Браузерная проверка: claude-in-chrome (2%) vs Playwright (19%)
claude-in-chrome — первый выбор
get_page_text— компактный текст страницы (5-10 строк vs DOM-дерево)javascript_tool— выполнить JS, вернуть только результатread_console_messagesсpattern— фильтрация на стороне расширенияbrowser_batch— серия действий в одном вызове- Работает в реальном Chrome с логинами/сессиями
Playwright — отключён по дефолту
Включать в конкретном проекте только когда claude-in-chrome недоступен:
- Headless-автоматизация (CI/CD, нет GUI)
- Изолированный браузер (без cookies)
- Перехват сетевых запросов
Включить: убрать playwright из disabledMcpServers в .claude.json для нужного проекта.
Субагенты (83% лимита за 24ч)
Проблема
Каждый субагент — отдельный запрос со своим контекстом. coder (14%), tester (4%), general-purpose (2%).
Как экономить
- Не запускать субагенты для простых задач — правка одного файла, поиск по grep
- Sonnet для субагентов (когда доступен) — дешевле Opus
- Не более 2 субагентов параллельно при низком остатке лимита
- Конкретные промпты — чем точнее задача, тем быстрее субагент завершит
Контекст (19% от длинных сессий >150k)
Как экономить
/compactпосле каждого логического блока работы (MCP-серия, отладка)/clearпри переключении между задачами/проектами- Не держать одну сессию часами — лучше несколько коротких
- Не просить «покажи весь файл» — читать конкретные строки (
offset+limit)
Команды управления
| Команда | Когда использовать | Эффект |
|---|---|---|
/compact | После MCP-блока, после отладки | Сжимает контекст, сохраняет суть |
/clear | Смена задачи/проекта | Полная очистка контекста |
/model sonnet | Рутинные задачи (CRUD, CSS) | Дешевле Opus |
/model opus | Архитектура, security, сложная логика | Дороже, но точнее |
Чеклист перед работой
- Sonnet доступен? → использовать для рутины
- Задача простая? → без субагентов
- Нужен MCP? → минимум вызовов,
/compactпосле - Сессия длинная? →
/compactкаждые 15-20 минут работы - Новая задача? →
/clearи начать с чистого контекста - Лимит < 20%? → только точечные задачи, без субагентов и Playwright
Типичные расходные сценарии
| Сценарий | Расход | Как оптимизировать |
|---|---|---|
| Ошибка в Laravel | Низкий | laravel-boost__last-error, не docker_exec + tail |
| SQL-запрос к БД | Низкий | postgres__query, не docker_exec + psql |
| Схема таблицы | Низкий | laravel-boost__database-schema, не raw SQL |
php artisan test | Средний | docker_exec (единственный путь) + /compact |
php artisan migrate | Средний | docker_exec + /compact |
| Отладка с Playwright (5 страниц) | Высокий | Snapshot 1-2 страниц + /compact |
| Субагент coder на фичу | Высокий | Точный промпт, sonnet модель |
| Чтение логов контейнера | Средний | docker_container_logs с tail: 20 |
| Grep по кодбазе | Низкий | Прямой Grep-инструмент, не субагент |
Быстрая шпаргалка: задача → MCP
Ошибка Laravel → laravel-boost (1%)
Схема БД → laravel-boost (1%)
SQL-запрос → postgres / mysql MCP (6%)
Документация → laravel-boost search-docs (1%)
Визуальная проверка → claude-in-chrome (2%) — не playwright!
JS-ошибки console → claude-in-chrome read_console_messages (2%)
Artisan-команда → docker_exec (20%, fallback)
Composer/npm → docker_exec (20%, fallback)
Логи контейнера → docker_container_logs (tail: 20)
Поиск по коду → Grep/Glob (встроенные, бесплатно)Контекст-инжиниринг (техники из expert-docs)
.claudeignore — исключение шума из индексации
Файл .claudeignore (аналог .gitignore) исключает vendor/, node_modules/, storage/logs/ из индексации. Экономия: 5 000–30 000 токенов на проект. Создан во всех Laravel-проектах.
Context Priming — задание рамки с первого сообщения
Начинайте сессию с конкретного контекста:
Что делаем: [одно предложение]
Ключевые файлы: [перечислить]
Что НЕ трогаем: [явно исключить]Секция «Что НЕ нужно» не менее важна — CC не потянет лишнее в контекст.
Scratchpad — рабочий документ вместо длинной истории
Для задач 30+ минут — файл scratchpad.md с прогрессом:
- Текущая задача, прогресс (чеклист), принятые решения, блокеры
- После
/clear→ новая сессия с «Прочитай scratchpad.md и продолжи» - Выживает между сессиями, компактнее чем вся история чата
Context Checkpoints — точки сохранения
Каждые 20-30 минут: «Обнови scratchpad.md с текущим прогрессом» → /clear → свежая сессия. Особенно критично при auto-compaction — checkpoint гарантирует что решения не потеряются.
Selective Reading — читать части, не файлы целиком
Вместо «прочитай UserController.php» (800 строк) → «прочитай строки 120-180, метод update()». На файлах 2000+ строк это разница в тысячи токенов.
Haiku для рутины
/model haiku для переименований, CRUD-полей, форматирования — в 3-5x быстрее ответ. На Max X5 Haiku имеет отдельный лимит. Sonnet для рефакторинга. Opus для архитектуры.
Иерархия CLAUDE.md
- Корневой: общие правила (до 200 строк)
- Проектный: специфика проекта
- specs/*.md: детали по областям (загружаются по требованию, не всегда)
Каждый уровень добавляет только релевантное. Specs не загружаются автоматически.
Автоматизация через хуки
| Хук | Момент | Что делает |
|---|---|---|
docker-mcp-guard | PreToolUse Bash | Блокирует bash docker, направляет на MCP |
laravel-mcp-guard | PreToolUse Bash | Laravel-специфичная защита, автоопределение контейнера |
mcp-cost-optimizer | PreToolUse mcp__docker__ | Перенаправляет docker→laravel-boost/postgres |
playwright-cost-optimizer | PreToolUse mcp__playwright__ | Перенаправляет на claude-in-chrome (10x дешевле) |
post-mcp-compact-reminder | PostToolUse docker/playwright | Напоминает /compact при ответе >2000 токенов |
prompt-classifier | UserPromptSubmit | Подсказывает нужный MCP по типу задачи |