Полгода назад разработчик под ником D1MANYCH начал писать веб-лист персонажа для D&D 5e. Сейчас это проект dnd-app: ванильный JavaScript без сборщика, 44 модуля, около 70 000 строк кода и 597 коммитов. Код почти целиком написан Claude Code — автор держит архитектуру, ревью и решения по контенту. Однако к обеду у него заканчивались лимиты подписки. Проблема была не в объёме запросов, а в том, как они формировались.

Чтобы разобраться, D1MANYCH написал скрипт на Node, который проанализировал все сессии Claude Code, хранящиеся в ~/.claude/projects/**/*.jsonl. В каждой строке ассистента есть message.usage с реальным биллингом. Результаты оказались показательны: 169 сессий, 28 649 запросов к модели, 5,75 млрд токенов чтения из кеша. Из них 3,64 млрд (63%) ушли на этот проект. Средний контекст одного запроса составил 201k токенов. При этом выход модели — всего 0,03 млрд токенов, то есть полпроцента от входа. Это означает, что все советы «просите отвечать кратко» экономят лишь доли процента — основные деньги уходят на то, что тащится в каждый запрос.

МетрикаЗначение
Сессий / запросов к модели169 / 28 649
Чтение из кеша5,75 млрд токенов
Из них на этот проект3,64 млрд (63%)
Запись в кеш0,20 млрд
Выход (ответы модели)0,03 млрд
Средний контекст одного запроса201k
Сессий длиннее 300 запросов22 штуки — 67% всего расхода
Самая длинная сессия886 запросов

Ключевая находка — распределение расхода по сессиям. 22 сессии длиннее 300 запросов дали 67% всего расхода токенов. Самая длинная сессия содержала 886 запросов. Причина в квадратичной зависимости стоимости от длины сессии: каждый запрос отправляет весь диалог заново — системный промпт, CLAUDE.md, прочитанные файлы, результаты команд. Prompt caching делает это дешевле, но не бесплатно. Если контекст растёт на d токенов за запрос, стоимость сессии из N запросов пропорциональна N·S + d·N²/2. Сессия на 800 запросов стоит вчетверо дороже четырёх сессий по 200 при том же объёме работы.

Средний контекст одного запроса составил 201k токенов, а выход модели — лишь 0,5% от входа.

Разложив накопленный контекст по источникам, автор обнаружил: стартовый контекст, умноженный на число запросов, даёт 39% расхода; результаты инструментов — 32%; сама переписка — 28%. Внутри инструментов 43% приходится на чтение файлов, 25% — на команды оболочки, 13% — на картинки. При этом 32% всего объёма чтения — повторные чтения одного и того же файла в одной сессии. Например, style.css (647 КБ, 16 123 строки) был прочитан 266 раз. Модель читает файл, что-то делает, а через двадцать шагов «на всякий случай» читает снова — хотя первое чтение уже лежит в контексте и оплачивается на каждом запросе.

На основе этих данных D1MANYCH изменил подход. Он ужал CLAUDE.md до 74 строк и переписал его на английский — это на 15–20% короче того же текста по-русски. Также он стал следить за длиной сессий: если сессия превышает 300 запросов, он её прерывает и начинает новую, чтобы избежать квадратичного роста стоимости. В результате расход токенов сократился в пять раз. Этот кейс показывает, что оптимизация работы с ИИ-ассистентами — это не про сокращение промптов, а про управление контекстом и структурой сессий.