← Блог

Как перестать сжигать контекст Claude Code впустую

Сережа Рис · 7 February 2026

claude codeоптимизация

95% контекста в Claude Code — не код. Не ответы агента. Результаты тулов. Я проверил на своих логах.

Как я это выяснил

Вчера заметил: сессия на 400 промптов, а агент ни разу не уткнулся в лимит контекста. При этом ощущение — терминал забит мусором. Diff’ы после каждого Edit, простыни из WebFetch, результаты поиска.

Решил разобраться. Написал скрипт на Python, который парсит ~/.claude/projects/ — там Claude Code хранит логи в JSONL. Каждый блок разговора: мой промпт, ответ агента, результат инструмента. Скрипт считает размер каждого блока и группирует.

Взял вчерашний день. 22 сессии, четыре проекта. 920 вызовов инструментов.

Что показали данные

КОНТЕКСТ ЗА ДЕНЬ (~616K токенов):

███████████████████████████████████████████████ 95.5%  Tool results
██                                              4.0%  Текст агента
░                                               0.5%  Код в ответах

Код в ответах — 17 блоков за весь день. Семнадцать. На фоне 920 вызовов инструментов.

219 результатов тулов оказались больше 2K символов, из них 25 — больше 10K. Один Read файла на 5000 строк съедает больше контекста, чем все ответы агента за час.

Вот топ по количеству вызовов:

Task ─────────── 110  субагенты
Bash ─────────── 83   git, тесты
Edit ─────────── 76   правки файлов
Read ─────────── 74   чтение файлов
Exa search ───── 29   поиск в вебе
WebFetch ─────── 20   загрузка страниц

Ни одной авто-компакции за день. Ноль. Потому что я начинаю новые сессии до того, как контекст разрастётся.

Пять приёмов

1. Правило двух фейлов

Агент ошибся второй раз подряд в одной задаче — не дебажу. /clear. Новая сессия. Точный промпт.

Почему это работает: при дебаге агент перечитывает предыдущие попытки, результаты тулов, логи. Два Read по 3K строк плюс контекст прошлых ошибок — легко 20-30K токенов на то, чтобы разобраться что пошло не так.

Новая сессия — ноль багажа. “В auth.js проверь JWT валидацию, должна возвращать 401 на expired токен.” Агент читает один файл, правит, тест проходит.

По-моему, это самый недооценённый приём. Все пытаются дожать сессию, хотя новая стоит ровно ноль.

2. Субагенты для тяжёлых операций

Task tool запускает отдельного агента с чистым контекстом. Тот копается в файлах, а родитель получает сжатый результат — 50-200 строк вместо тысяч.

Когда использую:

Похожий двухэтапный подход для экономии я использовал раньше в Telegram-боте — дешёвая модель извлекает, дорогая генерирует. Тут принцип тот же: субагент фильтрует, родитель работает с результатом.

3. Конкретные промпты

“Проверь мой код на баги” — агент читает весь проект. 15-20 вызовов Read, 50-70K токенов.

“В auth.js проверь JWT валидацию” — один файл, 3K токенов.

Если не знаю где проблема — разбиваю на два шага. Сначала: “найди файл где обрабатывается авторизация”. Потом /clear и новый промпт с конкретным файлом. Цепочка “найди → новая сессия → исправь” дешевле, потому что результаты поиска не тащатся в контекст исправления.

4. Plan mode перед дорогими операциями

Shift+Tab. Агент пишет план вместо того чтобы делать. Читаю, правлю если нужно, одобряю.

Использую для рефакторинга на 5+ файлов, миграций, изменений в API. План стоит 2-5K токенов. Неудачная реализация которую потом откатываешь — в десять раз больше.

Бонус: в плане видно что агент собирается делать. Ловлю проблемы до выполнения, не после. Подробнее про то как учить агента не повторять ошибки — отдельная история.

5. Мониторинг через ccusage

ccusage — CLI для анализа логов Claude Code. Показывает токены по проектам, сессиям, дням.

npm install -g ccusage
ccusage

Нашёл через него что в одном проекте CLAUDE.md весил 800 токенов. Он подгружается к каждому промпту. Сократил до 150 — минус 650 токенов на каждое обращение. За 50 промптов в сессии это 32K токенов.

/usage прямо в Claude Code показывает текущее использование. Смотрю когда близко к лимиту.

Что не помогает

Output styles типа “пиши короче”. Текст агента — 4% контекста. Код в ответах — полпроцента. Даже если агент замолчит совсем, 95% контекста никуда не денутся. Output style оптимизирует не то.

“verbose: false” в CLAUDE.md. Агент будет писать меньше текста в ответе. Но файлы всё равно читает целиком — это tool result, инструкция на него не влияет.

Ручная компакция. /compact сжимает контекст, но если сессии короткие (как у меня — /clear при каждой смене задачи), до порога компакции просто не доходит.

Итог

Контекст в Claude Code — это на 95% результаты инструментов. Read, Bash, WebFetch, Exa. Не код в ответах, не текст агента.

Что реально экономит:

Оптимизируй то, что занимает 95%. Не то, что занимает 4%.


Данные: 6 февраля 2026, Claude Code на Opus 4.6, 22 сессии в 4 проектах.

Подписаться на обновления — @sereja_tech