Как Claude Code экономит токены

Ночью пришло сообщение от Anthropic, которое быстро взбудоражило всё сообщество — компания официально объявила, что подписка на её сервисы больше не покрывает использование сторонних агентов, в том числе OpenClaw. Понятно, что тут же начались возмущенные твиты “Я отказываюсь от подписки”, “Anthropic ненавидит open source” и так далее, но это всё шум. Реальность такова, что компания наконец-то высказалась ясно на тему использования лимитов подписки в сторонних агентах — это, на мой взгляд, хорошо и давно пора было. При этом публичные лица компании — начиная с Бориса Черни, руководителя Claude Code, — довольно подробно начали объяснять, что подписка оптимизирована под взаимодействие с нативными агентами и в условиях дефицита мощностей компания вынуждена приоритезировать их поддержку. Разумеется, это не мешает критикам возмущаться и дальше.

Сообщение от Anthropic про запрет использования сторонних клиентов в рамках подписки Claude

Вкратце, о чем речь. OpenClaw и некоторые другие агенты реализуют доступ к API Anthropic несколькими способами. Самый простой — это ключ API, конечно. Но кроме этого, для использования подписки Claude Pro/Max можно в Claude Code сгенерировать setup-token — это официальный способ авторизовать родной клиент, то есть тот же Claude Code, — если вы его запускаете так, что OAuth-авторизация невозможна (например, в контейнере или на сервере). Этот токен работает как обычный ключ API, только в рамках подписки.

Пока все возмущенно твитят про жадность Anthropic, я решил попробовать разобраться, о какой оптимизации подписки говорят в компании. Учитывая, что на этой неделе утекли исходники Claude Code, это не очень сложно сделать — я просто дал тому же Claude Code его же исходный код и попросил провести полный анализ того, как агент экономит токены по сравнению с обычными запросами к API.

Результаты исследования впечатляющие. Попросту говоря, у разработчиков Claude Code есть одна священная и вообще неприкасаемая корова — это кэш запросов. При повторных запросах к API, если начало запроса совпадает с предыдущим, сервер переиспользует кэшированные вычисления — это в 10 раз дешевле, чем обработка заново. Это возможность есть и при обычных запросах к API, но в Claude Code это доведено до абсолюта. Практически на каждом уровне обработки контекста система предпочитает не тронуть кэш, пусть и в ущерб качеству сжатия. Например, результат работы tools замораживается навечно, заголовки запросов залипают на всю сессию (даже если режим выключился), если надо заменить результаты tools, то клиент не сбрасывает кэш, а отправляет дополнительный блок серверу, чтобы сервер заменил или удалил фрагмент без инвалидации всего кэша.

Эта техника особенно интересна — вместо стандартного поведения, когда клиент отправляет новую версию, а сервер сравнивает ее по префиксу, тут клиент намеренно не трогает данные, чтобы не сбросить префикс, а добавляет инструкции по преобразованию данных отдельным каналом, в результате чего префикс не меняется, а данные за ним изменились.

Даже компакт делается таким образом, чтобы использовать всю историю, которая уже в кэше, поэтому стоимость компакта равна только стоимости результата сжатия. При этом агрессивно продлевается время жизни кэша до 1 часа вместо стандартных 5 минут, включается глобальный кэш, и отдельный модуль занят только тем, что мониторит состояние, всегда точно зная, находится нужная информация в кэше или нет. Часть этой серверной оптимизации спрятана за feature_flags и доступна только сотрудникам Anthropic, вероятно, постепенно выкатываясь в доступ пользователям подписки.

Разумеется, этого всего нет в OpenClaw — как минимум потому, что у него нет доступа к серверным API для работы с кэшем. Хотя там тоже реализована поддержка кэширования запросов, доступная в публичном API, но, будучи provider-agnostic приложением, оно просто и не может быть так глубоко оптимизировано под одного провайдера.

Я попробовал посчитать возможный результат работы всех оптимизаций на условных данных. Если взять некую условную сессию и посчитать стоимость токенов через обычный API, с помощью Claude Code и с помощью OpenClaw, то вышла вот такая табличка (сессия из 30 запросов, модель Opus 4.6) :

СценарийCache ReadCache WriteFresh InputOutputВсегоЭкономия$/запрос
Обычный API3.0M × $5.00 = $15.00$2.25$17.25$0.575
Ручной cache-control2.46M × $0.50 = $1.230.24M × $6.25 = $1.500.30M × $5.00 = $1.50$2.25$6.4862%$0.216
OpenClaw2.61M × $0.50 = $1.310.18M × $6.25 = $1.130.21M × $5.00 = $1.05$2.25$5.7367%$0.191
Claude Code (public)2.79M × $0.50 = $1.400.09M × $6.25 = $0.560.12M × $5.00 = $0.60$2.25$4.8172%$0.160
Claude Code (сотрудники)2.88M × $0.50 = $1.440.06M × $6.25 = $0.380.06M × $5.00 = $0.30$2.25$4.3675%$0.145

Это заодно показывает, как глупо выглядят некоторые специалисты, которые берут стандартную сессию, умножают количество токенов на стоимость API запросов и бегают по интернету с криками “Подписка Anthropic убыточна, это пузырь, компания сжигает деньги инвесторов, мы все умрем”.

Конечно, расчеты условные, но показывают главное — сторонние агенты действительно тратят больше токенов в рамках сессии даже в идеальных условиях. Если же это не непрерывная сессия и допускаются паузы в 5 минут и более, высока вероятность сброса кэша и тогда разрыв становится еще заметнее. При этом надо отметить, что разница между Claude Code и OpenClaw даже в этой таблице — это не 5%, а 19% и этот разрыв растет по мере роста сессии.

Стоит, конечно, учитывать и то, что стоимость запросов к API — это не себестоимость, а цена с учетом прибыли компании. Но и подписка должна содержать маржу, пусть, возможно, и меньшую, так что в целом расчет можно считать относительно корректным.

Чего мы не можем посчитать — это эффект от того, что сторонние клиенты не используют глобальный кэш. То есть там, где пользователь Claude Code или Claude Desktop использует кэшированный глобально системный промпт, пользователь OpenClaw нагружает всю инфраструктуру хранением своих кастомных параметров, вытесняя остальные. Возможно, эта часть — не неподолученная оптимизация, а дополнительная нагрузка на инфраструктуру кэширования, — является существенным или главным аргументом в пользу прекращения такой практики.

Вот такая интересная экономика получается. Anthropic пытаются сгладить эффект, предлагая всем желающим включить extra usage (из этого бюджета будут теперь обслуживаться запросы сторонних агентов) и давая гранты на него в размере стоимости месячной подписки, но народ, разумеется, все равно ропщет. Впрочем, в условиях галопирующего роста базы подписчиков, которая растет еще быстрее на фоне недавнего публичного конфликта компании с Пентагоном, отказ от подписки нескольких процентов heavy-users, выбиравших все лимиты подписки, даже благоприятен для компании, высвобождая мощности для обслуживания новых пользователей.