Перейти к тексту

Claude Code: работа с coding-агентом2. Как устроен coding-агент

Сколько стоит сессия

Засчитывается, когда отвечены все вопросы квиза

Зачем это нужно

Вы работали с агентом весь день в одной сессии, а к вечеру лимит подписки внезапно кончился — хотя последние вопросы были короткими, в одну строку. Или в конце месяца пришёл счёт за API, и непонятно, какая привычка его раздула. Счёт растёт, но не видно, за что именно вы платите и что менять.

Цифры при этом существуют: провайдер возвращает их в ответ на каждый запрос к модели. Нужно только знать, какие токены бывают и почему одни и те же действия в начале и в конце сессии стоят по-разному.

Как это устроено

Claude Code тарифицируется по токенам API. Каждый запрос к модели состоит из двух частей:

  • input tokens — всё, что harness отправляет модели: system prompt, описания tools, CLAUDE.md и всю историю разговора, включая результаты tool calls;
  • output tokens — то, что модель производит в ответ: текст, tool call и thinking. Thinking оплачивается, даже когда Claude Code сворачивает его в интерфейсе.

Output обычно короткий: tool call или пара абзацев. Input огромен, потому что это вся сессия на текущий момент. Документация формулирует это прямо: Claude Code отправляет весь разговор с каждым запросом, а каждый раз, когда Claude использует tools, — ещё один запрос с пачкой их результатов. Поэтому однострочный вопрос в сессии, открытой с утра, тянет за собой оплату всей истории.

Это было бы разорительно без prompt caching. Сессия растёт дописыванием в конец: каждый следующий запрос — это предыдущий плюс немного нового. Провайдер помнит недавно обработанный префикс и, если новый запрос начинается так же, перечитывает историю по ставке cached-токенов. Поэтому у модели не две, а четыре ставки за токен: input, output, запись в кэш (cache write) и чтение из кэша (cache read). Первый запрос сессии пишет префикс в кэш, следующие в основном читают его.

У кэша есть срок жизни (TTL). На странице цен Anthropic цены prompt caching указаны для 5-минутного TTL. Если вы ушли на обед дольше, чем живёт кэш, первое сообщение после перерыва промахивается мимо кэша и заново обрабатывает весь контекст по полной ставке.

Отсюда два вывода, которые и составляют «оптимизацию счёта»:

  1. Каждый токен, попавший в контекст, оплачивается снова в каждом следующем запросе сессии. Лишний файл, прочитанный в начале, — это осадок, который вы везёте до конца.
  2. Длинная пауза в длинной сессии стоит дорого, потому что сбрасывает кэш.

/compact тоже не бесплатен: чтобы сжать разговор, модель должна его прочитать, так что сжатие большого контекста — сам по себе большой запрос. /clear начинает новую сессию и не стоит ничего.

Про подписку и API. Планы Pro и Max включают Claude Code, бесплатный план — нет. На подписке вы тратите не доллары, а лимиты плана; на API платите за каждый токен. Для ориентира документация приводит данные по корпоративным внедрениям: в среднем около $13 на разработчика за активный день и $150–250 в месяц, а у 90% пользователей меньше $30 в день. Ваши цифры будут другими: они зависят от модели, размера кодовой базы и привычек.

Практика

Откройте Claude Code в учебном проекте Cadence, задайте два-три вопроса о коде и выполните:

/usage

Посмотрите на блок Session. В строке Usage by model для каждой модели перечислены input, output, cache read и cache write. Сравните input и cache read: в живой сессии из кэша читается в разы больше, чем отправляется заново. Ниже строка Prompt cache (main) показывает долю input tokens из кэша, число промахов и warm или cold — тёплый ли кэш прямо сейчас. Если вы на подписке, долларовая сумма в Session-блоке — оценка по прайс-листу, а не ваш счёт: подписчику важнее полосы лимитов плана на том же экране.

Подводные камни

  • Цифры /usage — оценка. Claude Code считает сумму локально по прайс-листу; с договорными ставками организации она не совпадёт со счётом, пока администратор не задаст modelPricing.
  • Счётчик у спиннера — не цена. Строка вида ↓ 5.5k tokens во время работы показывает только output текущего turn. История и контекст, которые отправляются вместе с запросом, в него не входят.
  • Сессия тратит токены, даже когда вы молчите. Фоновые задачи, subagents и scheduled tasks отправляют свои запросы; scheduled task, например, шлёт весь контекст при каждом срабатывании.

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

Проверь себя

Источники

Текст подготовлен с помощью LLM и может содержать неточности.