Когда ИИ-агент пишет код, почти все деньги уходят не на его «мысли» и не на ваш диалог с ним, а на многократную пересылку уже отправленного. Я измерил это на 40 реальных сессиях разработки в Claude Code и Codex — вот из чего на самом деле складывается счёт.

Были разобраны логи 40 завершённых сессий агентной разработки — 20 в Claude Code и 20 в Codex, на двух коммерческих веб-проектах, — и посчитано, из чего складывается расход токенов: сколько стоит каждый шаг, какая доля расхода приходится на повторную пересылку одного и того же, и что из этого поддаётся управлению. Суммарный оборот выборки — 777 млн токенов: 298 млн у Claude Code и 479 млн у Codex.

Главный результат: расход агентной сессии — это почти целиком повторная пересылка уже отправленного. На каждый токен, впервые попавший в контекст, медианная сессия повторно пересылает 47 (Claude Code) или 36 (Codex) старых. Свежий, никогда не отправлявшийся ввод — 0.003 % объёма у Claude и 5.7 % у Codex; собственно ответ модели — меньше 1 %. Всё остальное — круговорот одного и того же текста.

Из этого следуют два практических вывода, разобранных в конце: стоимость сессии растёт быстрее её длины (у Claude Code удвоение числа шагов даёт примерно ×2.4 по токенам), а главные статьи расхода — не «болтливость» модели и не ваши инструкции, а вывод инструментов, который агент читает и потом таскает с собой до конца сессии.

Почему агент платит за одно и то же много раз

Языковая модель не хранит состояние между вызовами. У неё нет «памяти о разговоре»: каждый раз, когда агент делает шаг — думает, вызывает инструмент, читает результат — он отправляет модели всю историю сессии заново: системные инструкции, ваш запрос, каждый прочитанный файл, каждый вывод команды. Модель перечитывает всё это и дописывает следующую реплику.

Поэтому у любого куска текста в сессии есть «хвост»: попав в контекст на шаге k, он будет переслан на каждом из оставшихся шагов. Чем раньше и чем крупнее вставка, тем дороже она обходится к концу сессии.

Каждый шаг пересылает всю историю заново

Схема: столбец — то, что уходит в модель на данном шаге. Серое — базовый контекст (инструкции и обвязка), цветное — накопленная история работы. Суммарная пересылка за сессию из n шагов ≈ n·S + g·n²/2, где S — базовый контекст, g — средний прирост на шаг. С
Схема: столбец — то, что уходит в модель на данном шаге. Серое — базовый контекст (инструкции и обвязка), цветное — накопленная история работы. Суммарная пересылка за сессию из n шагов ≈ n·S + g·n²/2, где S — базовый контекст, g — средний прирост на шаг. С

Провайдеры смягчают это кэшем промпта: уже отправленный неизменный префикс сохраняется на сервере, и его повторная пересылка тарифицируется примерно в 10 раз дешевле обычного входа. Но кэш не бесплатен: запись в него стоит дороже обычного входа (в 1.25–2 раза), а живёт запись обычно час — при паузе в работе кэш «сгорает» и строится заново, за деньги.

Термины, чтобы не запутаться дальше

Токен — Единица, которой модель считает текст: короткое слово или 3–4 символа. Тарифы задаются в долларах за миллион токенов.
Контекстное окно — Всё, что модель получает на входе одного вызова: инструкции, диалог, прочитанные файлы, выводы команд.
Шаг — Один запрос к модели. Типичная сессия разработки из выборки — 70–100 шагов.
Базовый контекст — То, что лежит в окне ещё до первого слова пользователя: системный промпт, описания инструментов, ваши инструкции.
Компакция — Когда окно переполняется, агент сжимает историю в краткое резюме и продолжает почти с чистого листа — теряя детали.
Сабагент — Вспомогательный агент со своим отдельным контекстом, запущенный из основного; в отчёт возвращает только итог.
Харнесс — Несменяемая обвязка рантайма: системный промпт, схемы встроенных инструментов, правила поведения.
Коэффициент повторов — Сколько раз в среднем каждый токен контекста был переслан повторно: измеренные чтения из кэша ÷ прирост контекста.

Сорок сессий, один инструмент

Выборка

40 сессий агентной разработки на одной машине и двух коммерческих веб-проектах (бэкенд + фронтенд; названия и предметная область для публикации анонимизированы): 20 сессий Claude Code (модели семейств Opus и Fable) и 20 сессий Codex (модели семейства GPT-5.6). Критерий отбора: сессии, где агент редактировал код, запускал тесты или команды; короткие справочные диалоги не включались. Все 40 сессий обработаны успешно, исключённых нет. Сессии помечены C01–C20 и X01–X20.

Инструмент

Скрипт agent-usage версии 3.0.0 из моего открытого набора abssoft/dreamteam — один файл без зависимостей, который читает локальные логи рантаймов (транскрипты Claude Code, роллауты Codex). Режим analyze восстанавливает по логам размер контекста на каждом шаге, привязывает прирост к вызовам инструментов и считает повторную пересылку; отдельно учитывает чтение и запись кэша и оценивает переплату за его перестройку. Тарифы — по встроенному каталогу официальных цен от 2026-08-29.

Честность метода

Не весь прирост контекста удаётся привязать к источникам: часть — сообщения человека и текст самой модели. Доля надежно привязанного ~80%.

Счёт растёт быстрее, чем сессия

Полный входной трафик против длины сессии

Каждая точка — сессия; обе оси логарифмические. Пунктир — степенной тренд по рантайму.
Каждая точка — сессия; обе оси логарифмические. Пунктир — степенной тренд по рантайму.

Наклон тренда в лог-координатах: 1.27 у Claude Code, 1.07 у Codex. Наклон 1 означал бы «в два раза дольше — в два раза дороже»; 1.27 означает, что удвоение числа шагов даёт ×2.4 по токенам. У Codex рост ближе к линейному потому, что его длинные сессии упирались в компакции: половина сессий Codex (10 из 20) сжимала историю по пути, теряя контекст, против 1 из 20 у Claude Code.

Коэффициент повторов: сколько раз агент перечитывает одно и то же

Центральная метрика исследования — отношение измеренных чтений из кэша к приросту контекста: во сколько раз пересылка превышает новизну. Медиана — 47:1 у Claude Code и 36:1 у Codex, но разброс велик: от 14:1 до 101:1.

Интуиция «чем длиннее сессия, тем выше коэффициент» работает лишь отчасти: связь с числом шагов умеренная. Не менее важен второй фактор — тяжёлый стартовый контекст: короткая сессия, которая мало читает, получает огромный коэффициент именно потому, что на каждом шаге заново пересылается крупная база.

Деньги: за что именно платим (Claude Code, 16 сессий с точной ценой)

Структура $270.78 суммарного счёта

Разбивка по тарифным категориям, суммарно по 16 сессиям.
Разбивка по тарифным категориям, суммарно по 16 сессиям.

«Чтение из кэша» — та самая повторная пересылка по льготному тарифу. «Запись в кэш» — плата за само кэширование: тариф выше обычного входа. Свежий некэшированный вход — $0.08 из $270.78: практически весь вход идёт через кэш. Ответ модели — 14.6 % денег при <1 % объёма: выходные токены в ~5 раз дороже входных, но их мало.

Кэш приходится покупать повторно. Запись в кэш живет от 5 минут до часа. В 17 из 20 сессий Claude Code объём записей превысил прирост контекста — то есть одни и те же куски кэшировались повторно после пауз. Нижняя оценка переплаты — $30 из $271 (11% счёта); медианная сессия перестраивала 45% своих записей в кэш.

Инструменты: кто набивает контекст

Повторную пересылку, привязанную к инструментам, почти целиком создают массовые мелкие вызовы, а не разовые крупные вставки. У Claude Code чтение файлов (Read, 384 вызова) и команды оболочки (Bash, 1 360 вызовов) дают 33 % и 30 % всего атрибутированного объёма. У Codex команды (exec + Shell) дают 90 % объёма. По деньгам решает совокупность обыденных чтений, а не отдельные крупные вставки.

Отдельная статья — неудачные вызовы: ошибка тоже остаётся в истории и пересылается до конца сессии. У Codex 90 неудачных вызовов утащили за собой 5.5 млн токенов повторной пересылки; у Claude Code — 50 вызовов и 0.5 млн.

Что агент несёт с собой ещё до вашего первого слова

Стартовый контекст пересылается на каждом шаге и потому даёт заметную долю всех повторов: медианно 54 % у Claude Code и 28 % у Codex. Состав был разобран для моей конфигурации машины (поскольку состав принадлежит окружению, а не сессии, то измеряется один раз). Части, которые можно измерить напрямую, — файлы инструкций, вывод стартовых хуков, описания скилов и плагинов, имена MCP-инструментов; остаток — системный промпт рантайма со схемами встроенных инструментов — получен вычитанием, а не измерением: собственный системный промпт агенту недоступен для выгрузки.

Состав стартового контекста

Медианный старт сессии; закрашено — управляемая пользователем часть
Медианный старт сессии; закрашено — управляемая пользователем часть

Управляемое: инструкции (CLAUDE.md/AGENTS.md, индекс памяти), вывод стартовых хуков, описания установленных скилов и плагинов, имена MCP-инструментов. Остальное — харнесс рантайма, оценён вычитанием. У Codex примечательна динамика: между мартом и августом 2026 его стартовый контекст вырос с ~15 до ~31–41 тыс токенов — база тяжелеет от версии к версии.

Написанный человеком текст — копейки. Собственно инструкции (CLAUDE.md + память, без AGENTS.md) занимают у Claude Code ~1 тыс токенов — 1.5 % базы. Даже со всеми AGENTS.md — ~5 % у Claude и ~9 % у Codex. Ужимать свои инструкции ради экономии бессмысленно: их не видно на фоне харнесса. А вот хуки, плагины и скилы — уже заметные статьи, и они целиком в руках пользователя.

Что здесь оценка, а не измерение

  • TTL кэша ненаблюдаем. Логи не различают 5-минутную и часовую запись; перестройка кэша вычислена косвенно — как превышение записей над приростом контекста — и является нижней оценкой.

  • Состав харнесса получен вычитанием. Системный промпт рантайма недоступен для прямой выгрузки.

  • Тарифы — снимок каталога от 2026-08-29. Выборка не случайна. Один пользователь, одна машина, один набор инструментов и плагинов, два проекта. Результаты описательные и на популяцию не переносятся.

Насколько это переносится на другие сессии

В выборке — только сессии разработки. Для других типов (диалоговые, ревью, документирование) сама природа расхода должна быть той же: модель не хранит состояние, и весь контекст пересылается заново на каждом шаге независимо от содержания задачи. Величина коэффициента повторов и эффект позиции следуют из механики, а не из содержимого.

Два отличия ожидаются, и оба — прогноз, а не результат: покрытие атрибуции будет ниже (больше доля человеческого текста и вывода модели), а состав инструментов сместится от файлов и оболочки к поиску и справкам. Проверка потребует отдельной выборки и в задачу не входила.

Что делать — и на чём не экономить

1. Дробите работу на короткие сессии

Стоимость растёт быстрее длины: удвоение шагов — примерно ×2.4 по токенам. Две сессии по 50 шагов дешевле одной на 100 — новая задача заслуживает нового чистого контекста, а не продолжения старого.

2. Режьте вывод инструментов — это главная статья

60–90 % привязанной пересылки создают обычные чтения файлов и команды. Всё, что попало в контекст, оплачивается на каждом следующем шаге: просите агента читать диапазоны, а не файлы целиком, фильтровать вывод команд (head, grep, тихие флаги) и не вываливать полные логи.

3. Не экономьте на собственных инструкциях

Ваш текст — 1.5–5 % базового контекста, его не видно на фоне харнесса. Ужимать CLAUDE.md ради токенов бессмысленно; ясные инструкции экономят шаги, а шаги стоят по $0.13.

4. Ревизуйте плагины, скилы и хуки

Управляемая часть базы — до 17 %: описания каждого установленного плагина и вывод каждого стартового хука едут в каждый шаг каждой сессии. Хук одного из моих плагинов добавлял ~4 тыс токенов на старте — это сотни тысяч токенов пересылки за длинную сессию. Естественно, он пошел под нож сразу.

5. Работайте плотно: паузы стоят денег

Кэш живёт обычно 1 час для основной сессии и 5 минут для сабагентов. Длинная пауза посреди сессии — и контекст кэшируется заново по повышенному тарифу: в анализируемых данных такая перестройка — не менее 11 % счёта. Отошли надолго — лучше вернуться в новую сессию, чем «будить» старую.

6. Ошибки инструментов не бесплатны

Каждый неудачный вызов остаётся в истории и пересылается до конца сессии — у Codex ошибки утащили 5.5 млн токенов. Если агент упёрся в повторяющуюся ошибку, дешевле остановить и переформулировать, чем позволить долбиться.

7. Не воюйте с «болтливостью» модели

Ответ модели — меньше 1 % объёма и ~15 % денег. Экономить на длине ответов почти нечего; решает то, что агент читает, а не то, что пишет.