5,75 млрд токенов за полгода: как сократить расход в Claude Code в разы
Claude Code за полгода съел 5,75 миллиарда токенов на одном проекте, и автор разобрал по байтам, куда именно они ушли и как сократить расход в разы без потери результата.

Популярные советы «пишите короткие промпты» и «просите отвечать кратко» экономят доли процента бюджета: выходные токены (ответы модели) составили 0,03 миллиарда из 5,75 миллиарда входных. Реальные деньги сжигает разросшийся контекст длинных сессий, и это можно измерить и починить конкретным кодом.
Разработчик Дмитрий (D1MANYCH на GitHub) полгода вёл проект веб-приложения для D&D 5e целиком через Claude Code: 44 модуля, около 70 000 строк кода, 597 коммитов. Подписочные лимиты заканчивались к обеду. Не от объёма задач, а от того, как именно велись сессии. Он написал скрипт аудита, нашёл узкие места и опубликовал результаты с кодом. Ниже пересказ его метода и находок, адаптированный для тех, кто работает с Claude Code на практике.
Что понадобится
- Подписка Claude с доступом к Claude Code
- Node.js (любая актуальная версия)
- Терминал с доступом к домашней директории (папка
~/.claude/projects/) - 15 минут на первый аудит, затем автоматический контроль через хук
Как измерить реальный расход токенов?
Прежде чем что-то оптимизировать, нужно увидеть картину. Все сессии Claude Code хранятся локально в файлах формата JSONL. Каждая строка с ответом модели содержит поле message.usage, где записан фактический биллинг: сколько токенов (минимальных единиц текста, которыми модель измеряет объём) прочитано из кеша, сколько создано заново, сколько выдано на выходе.
Автор написал скрипт на 30 строк, который обходит все файлы и суммирует расход.
// usage.js — запуск: node usage.js
const fs = require('fs'), path = require('path');
const root = path.join(require('os').homedir(), '.claude', 'projects');
const files = [];
(function walk(d) {
for (const e of fs.readdirSync(d, { withFileTypes: true })) {
const p = path.join(d, e.name);
if (e.isDirectory()) walk(p);
else if (e.name.endsWith('.jsonl')) files.push(p);
}
})(root);
let req = 0, read = 0, write = 0, out = 0, sessions = 0;
for (const f of files) {
let n = 0;
for (const line of fs.readFileSync(f, 'utf8').split('\n')) {
if (!line.includes('"cache_read_input_tokens"')) continue;
if (line.includes('"isSidechain":true')) continue;
let u;
try { u = JSON.parse(line).message.usage; } catch (e) { continue; }
if (!u) continue;
n++;
read += u.cache_read_input_tokens || 0;
write += u.cache_creation_input_tokens || 0;
out += u.output_tokens || 0;
}
if (n) { sessions++; req += n; }
}
console.log('сессий:', sessions, '| запросов:', req);
console.log('кеш-чтение:', (read / 1e9).toFixed(2) + 'B');
console.log('вывод:', (out / 1e9).toFixed(2) + 'B');
console.log('средний контекст запроса:', Math.round(read / req / 1000) + 'k');
Результат автора за полгода: 5,75 миллиарда токенов на входе и всего 0,03 миллиарда на выходе. Выход составил полпроцента расхода.
Почему длинная сессия обходится в разы дороже нескольких коротких?
Каждый запрос к модели отправляет весь накопленный диалог заново: системный промпт (базовая инструкция модели), файл CLAUDE.md (ваши проектные правила), все прочитанные файлы, все результаты команд, всю переписку. Механизм prompt caching (кеширование промпта, когда повторный текст читается дешевле, чем создаётся заново) снижает цену, но не обнуляет её.
Контекст при этом только растёт. Автор приводит формулу стоимости сессии из N запросов со стартовым контекстом S и приростом d токенов на каждом шаге:
Стоимость = N умножить на S + d умножить на N в квадрате, делённое на 2
Ключевое слово здесь: «в квадрате». Сессия на 800 запросов стоит не вдвое, а вчетверо дороже четырёх сессий по 200 при том же объёме работы. У автора 22 длинных сессии (более 300 запросов каждая) сожрали две трети всего бюджета.
Второе следствие: стартовый контекст S умножается на число запросов. Каждая лишняя тысяча токенов в CLAUDE.md множится на 150 запросов сессии, а потом на все сессии за месяц.
Куда именно утекал контекст?
Автор разложил накопленный контекст по источникам и нашёл три главных «пожирателя».
- Повторное чтение файлов: 32% всего объёма. Файл style.css (647 КБ, 16 123 строки) был прочитан 266 раз в рамках одной сессии. Модель читает файл, работает, через двадцать шагов читает снова «на всякий случай». Первое чтение никуда не делось из контекста, но второе добавляет дубликат, и оба оплачиваются на каждом следующем запросе.
- Скриншоты: 459 штук, около 130 миллионов токенов. Автор проверял вёрстку через браузерное превью прямо в основном чате. Один скриншот обходится в единицы тысяч токенов, но остаётся в контексте до конца сессии и «едет» в каждый следующий запрос.
- Команды оболочки: 25% контекста. Результаты выполненных команд тоже остаются в истории навсегда.
Пошаговая инструкция: как сократить расход
-
Запустите скрипт аудита (код выше). Посмотрите, сколько токенов уходит на вход, а сколько на выход. Если соотношение похоже на 99% ко входу, ваша проблема не в длине промптов.
-
Найдите длинные сессии. Отсортируйте сессии по числу запросов. Сессии свыше 300 запросов почти наверняка составляют основной расход.
-
Установите жёсткий лимит: 150 запросов или 200 000 токенов контекста на сессию. Даже посреди задачи. Автор повесил контроль на Stop-хук (скрипт, который срабатывает, когда модель закончила ход):
// tools/check-session-size-hook.js (сокращённо)
const WARN_REQ = 120, HARD_REQ = 150;
const WARN_CTX = 150000, HARD_CTX = 200000;
const lines = fs.readFileSync(input.transcript_path, 'utf8').split('\n');
let req = 0;
for (const l of lines) {
if (!l.includes('"cache_read_input_tokens"')) continue;
if (l.includes('"isSidechain":true')) continue;
req++;
}
const u = JSON.parse(last).message.usage;
const ctx = (u.input_tokens || 0)
+ (u.cache_read_input_tokens || 0)
+ (u.cache_creation_input_tokens || 0);
if (req >= HARD_REQ || ctx >= HARD_CTX)
console.error('Сессия разрослась: ' + req + ' запросов, контекст '
+ Math.round(ctx / 1000) + 'k. Пора закрыть.');
Хук ничего не блокирует, просто печатает предупреждение. Этого достаточно: раньше автор не замечал, что сидит в 600-запросной сессии.
-
Ужмите CLAUDE.md до минимума. У автора файл занимает 74 строки и написан по-английски (на 15 до 20% короче, чем тот же текст по-русски), хотя весь проект, интерфейс и чат ведутся на русском. Каждая лишняя строка умножается на все запросы всех сессий.
-
Не проверяйте визуал скриншотами в основном чате. Выносите превью в отдельную короткую сессию или пользуйтесь внешними инструментами. Один скриншот безобиден, но 459 за полгода в длинных сессиях обошлись в 130 миллионов токенов.
-
Следите за повторным чтением файлов. Если модель перечитывает крупный файл, который уже есть в контексте, это двойная оплата. Разбивайте крупные файлы на модули, чтобы модель читала только нужный фрагмент.
Автор запустил node usage.js и увидел: 5,75 миллиарда токенов на входе, 0,03 миллиарда на выходе. Отсортировал сессии по расходу. 22 сессии длиннее 300 запросов съели две трети бюджета. Один файл style.css был прочитан 266 раз в одной сессии. После установки Stop-хука с лимитом в 150 запросов и сокращения CLAUDE.md до 74 строк длинные сессии перестали возникать, а лимиты подписки начали хватать на полный рабочий день.
Укорачивать промпты вместо сессий. Выходные токены (ваши промпты и ответы модели) составляют полпроцента расхода. Экономия на краткости формулировок даёт 0,03% эффекта. Это не то место, где лежат деньги.
Игнорировать квадратичный рост. Интуиция подсказывает: сессия вдвое длиннее стоит вдвое больше. На деле стоимость растёт как квадрат числа запросов. Сессия из 800 шагов обходится в четыре раза дороже четырёх по 200.
Проверять вёрстку скриншотами в рабочей сессии. Каждый скриншот добавляет тысячи токенов, которые остаются в контексте до конца и оплачиваются на каждом шаге.
Писать CLAUDE.md на русском, если задачи позволяют английский. Русский текст длиннее на 15 до 20% в токенах. На дистанции в сотни сессий разница заметна.
Что делать с этим прямо сейчас, по ролям
Автору Дзена, который использует Claude Code для контент-проектов. Запустите скрипт аудита и посмотрите, сколько сессий перевалили за 150 запросов. Скорее всего, именно там уходит большая часть лимита. Поставьте Stop-хук и начинайте новую сессию, когда счётчик предупреждает.
Разработчику или техническому специалисту. Разбейте крупные файлы (CSS, конфиги, длинные модули) на части, чтобы модель не перечитывала гигантский файл целиком. Переведите CLAUDE.md на английский, если проект это позволяет.
Предпринимателю, который платит за подписки команды. Попросите разработчиков запустить аудит и показать распределение по сессиям. Если 20 длинных сессий съедают 70% бюджета, лимит на длину сессии окупится за первую неделю. Инструмент доступен всем, у кого есть Claude Code, регион не ограничивает.
Этот разбор ценен не лайфхаками, а методом. Автор не гадал, а измерил, и результат оказался контринтуитивным: короткие ответы экономят доли процента, а настоящий расход сидит в архитектуре сессий. По моим наблюдениям, большинство пользователей Claude Code (и других агентных инструментов для кода) даже не подозревают, что каждый запрос пересылает весь накопленный диалог. Скрипт аудита занимает 30 строк и работает за секунды. Честная оговорка: конкретные цифры (5,75 миллиарда токенов, 266 перечитываний файла) относятся к одному проекту с 70 000 строк кода. На небольшом проекте масштаб будет другим, но квадратичная зависимость работает для всех.
Попробуйте AI-ассистент dzen.guru
Если вы хотите разобраться, как нейросети помогают авторам работать быстрее и дешевле, протестируйте наши инструменты на практике.
ПопробоватьФормула «стоимость растёт как квадрат числа запросов» звучит как учебник, но на практике это единственное, что нужно запомнить. Ставьте лимит на сессию, измеряйте расход скриптом и перестаньте экономить на длине промптов: деньги лежат не там.

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Qwen нейросеть возглавила Code Arena WebDev, но при 7-кратном разрыве в голосах лидерство не доказано
Qwen нейросеть второго сентября заняла первую строку рейтинга Code Arena WebDev с результатом 1691 очко, опередив Claude Opus 5 Max на три пункта, но…

Беспилотный транспорт вышел на конвейер: 350 трамваев Петербурга уже на линии
Четвёртого июня 2025 года петербургская система Cognitive Tram Pilot перешла от экспериментов к серийной эксплуатации: ею оснащены уже более 350 трамваев, а…
Финансирование стартапов в агентном ИИ: Wonderful привлёк $550 млн и удвоил оценку до $5 млрд
Израильско-нидерландский стартап Wonderful привлёк 550 млн долларов в раунде Series C, удвоив свою оценку до 5 млрд долларов всего за полгода, и теперь…
Комментарии