Репост из: AI Product | Igor Akimov
Сколько на самом деле стоит сессия в Claude Code – разбор от Anthropic
Интересный пост от Anthropic с полезными советами, как экономить токены в Claude Code.
Как устроена цена токена
Запрос проходит через GPU в две фазы. Prefill – модель читает весь контекст (системный промпт, CLAUDE.md, ваше сообщение, все файлы и выводы команд). Decode – модель пишет ответ, по одному токену за раз: ответ на 200 токенов – это 200 прогонов модели подряд. Поэтому output стоит примерно 5x от input.
Дальше кэш. Если запрос начинается с тех же токенов, что и предыдущий, сервер не пересчитывает состояние, а достаёт из кэша – это 0.1x от цены input. Запись в кэш дороже (до 2x), но пишется один раз, а читается на каждом ходу. Claude Code управляет кэшем сам, но его легко сломать:
– /model посреди разговора – у каждой модели свой кэш, весь разговор перечитывается по полной цене (opusplan, кстати, переключает модель при каждом входе-выходе из plan mode)
– /effort – уровень усилий тоже часть ключа кэша, та же история
– Fast mode – включайте в начале сессии, ре-префилл идёт по ценам fast mode; выключение обратно бесплатно
– время – кэш живёт час на подписке и 5 минут на API-ключе (ENABLE_PROMPT_CACHING_1H=1 растягивает до часа); вернулись после обеда – платите за перечитывание всего разговора
Почему длинные сессии дорогие
Ничего не отправляется один раз. Каждый прочитанный файл и вывод каждой команды переотправляются на каждом последующем ходу до конца сессии. Ход №40 тащит с собой все 39 предыдущих. Кэш делает это дешёвым, но дешёвое – не бесплатное, плюс модель вынуждена думать поверх мусора.
Отсюда практика:
– начинайте новую задачу со свежим контекстом, с /clear
– старайтесь всякие команды использовать с минимальным выводом (не просто чтение каждой строчки файла выдавать)
– будьте конкретными. «Тесты падают» вместо «почини тест в @utils.test.ts» – это grep, несколько открытых файлов, и всё это висит в контексте до конца сессии. @упоминание вообще убирает Read-вызов: файл прикрепляется к сообщению до отправки
– вывод больше 30 000 символов Claude Code сам уносит в файл и оставляет превью. Проблема – всё, что меньше: тест-раннер с 400 строками passing tests влезает под лимит и остаётся навсегда.
– /context в свежей сессии показывает, что загружено до того, как вы напечатали хоть слово – CLAUDE.md, определения MCP-инструментов. Можно проверить заранее. Ненужный MCP-сервер отключается через /mcp
– /rewind вместо /compact, если надо отрезать последние неудачные ходы – бесплатно, кэш до них цел. /compact переписывает весь разговор и всегда что-то стоит, причём до перерыва сильно дешевле, чем после (пока старый разговор ещё в кэше), поэтому прежде чем пойдете попить чайку - сделайте /compact.
Сабагенты - отдельный контекст со своим системным промптом, но без вашего разговора. Обратно возвращается только ответ, всё остальное выбрасывается. Для мелких задач – лишние траты (сабагент перечитывает то, что основная сессия уже знала). Окупается на задачах с большим выхлопом – разбор логов, например. Можно дать шумной задаче своё определение сабагента с model: haiku, иначе она крутится на модели основной сессии.
https://claude.com/blog/maximizing-the-value-of-your-claude-code-sessions
Интересный пост от Anthropic с полезными советами, как экономить токены в Claude Code.
Как устроена цена токена
Запрос проходит через GPU в две фазы. Prefill – модель читает весь контекст (системный промпт, CLAUDE.md, ваше сообщение, все файлы и выводы команд). Decode – модель пишет ответ, по одному токену за раз: ответ на 200 токенов – это 200 прогонов модели подряд. Поэтому output стоит примерно 5x от input.
Дальше кэш. Если запрос начинается с тех же токенов, что и предыдущий, сервер не пересчитывает состояние, а достаёт из кэша – это 0.1x от цены input. Запись в кэш дороже (до 2x), но пишется один раз, а читается на каждом ходу. Claude Code управляет кэшем сам, но его легко сломать:
– /model посреди разговора – у каждой модели свой кэш, весь разговор перечитывается по полной цене (opusplan, кстати, переключает модель при каждом входе-выходе из plan mode)
– /effort – уровень усилий тоже часть ключа кэша, та же история
– Fast mode – включайте в начале сессии, ре-префилл идёт по ценам fast mode; выключение обратно бесплатно
– время – кэш живёт час на подписке и 5 минут на API-ключе (ENABLE_PROMPT_CACHING_1H=1 растягивает до часа); вернулись после обеда – платите за перечитывание всего разговора
Почему длинные сессии дорогие
Ничего не отправляется один раз. Каждый прочитанный файл и вывод каждой команды переотправляются на каждом последующем ходу до конца сессии. Ход №40 тащит с собой все 39 предыдущих. Кэш делает это дешёвым, но дешёвое – не бесплатное, плюс модель вынуждена думать поверх мусора.
Отсюда практика:
– начинайте новую задачу со свежим контекстом, с /clear
– старайтесь всякие команды использовать с минимальным выводом (не просто чтение каждой строчки файла выдавать)
– будьте конкретными. «Тесты падают» вместо «почини тест в @utils.test.ts» – это grep, несколько открытых файлов, и всё это висит в контексте до конца сессии. @упоминание вообще убирает Read-вызов: файл прикрепляется к сообщению до отправки
– вывод больше 30 000 символов Claude Code сам уносит в файл и оставляет превью. Проблема – всё, что меньше: тест-раннер с 400 строками passing tests влезает под лимит и остаётся навсегда.
– /context в свежей сессии показывает, что загружено до того, как вы напечатали хоть слово – CLAUDE.md, определения MCP-инструментов. Можно проверить заранее. Ненужный MCP-сервер отключается через /mcp
– /rewind вместо /compact, если надо отрезать последние неудачные ходы – бесплатно, кэш до них цел. /compact переписывает весь разговор и всегда что-то стоит, причём до перерыва сильно дешевле, чем после (пока старый разговор ещё в кэше), поэтому прежде чем пойдете попить чайку - сделайте /compact.
Сабагенты - отдельный контекст со своим системным промптом, но без вашего разговора. Обратно возвращается только ответ, всё остальное выбрасывается. Для мелких задач – лишние траты (сабагент перечитывает то, что основная сессия уже знала). Окупается на задачах с большим выхлопом – разбор логов, например. Можно дать шумной задаче своё определение сабагента с model: haiku, иначе она крутится на модели основной сессии.
https://claude.com/blog/maximizing-the-value-of-your-claude-code-sessions