В мае на Reddit появился пост, автор которого утверждает, что прогнал через Claude 1 156 308 524 входных токена. Чуть раньше другой пользователь рассказал, как забыл остановить команду Claude Code, которая каждые 30 минут проверяла открытые pull request, и за 26 часов цикл выполнился 46 раз, а две разросшиеся сессии обошлись примерно в $6000. К этим цифрам стоит относиться осторожно — это рассказы пользователей, а не подтверждённый биллинг Anthropic, но техническая причина, которую обнаружил второй автор, заслуживает внимания: к концу сессии контекст разросся примерно до 800 тысяч токенов, и каждая следующая итерация работала с этой историей.

Токен — это кусочек текста, с которым работает языковая модель. Он не обязательно совпадает с целым словом: для английского Anthropic даёт ориентир, что один токен соответствует примерно четырём символам или 0,75 слова. При работе через API отдельно учитываются входные токены (то, что модель получает) и выходные (то, что она генерирует). Вход состоит не только из последней реплики пользователя: в стандартном многоходовом запросе Claude в контекст попадают предыдущие сообщения, системный промпт, результаты вызова инструментов, изображения, документы и описания tools. Чат-интерфейсы могут дополнительно управлять историей, поэтому механика не универсальна для всех ИИ-сервисов.

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

Входные токены включают не только последнее сообщение, но и всю историю, системный промпт, результаты инструментов и документы.

Контекстное окно — это рабочая память LLM, объём информации, на которую модель может опираться при ответе. У ряда актуальных моделей Claude контекстное окно в API достигает 1 млн токенов, что создаёт иллюзию, что можно загрузить всю документацию и кодовую базу. Но способность вместить информацию и способность одинаково хорошо ею воспользоваться — разные вещи. В 2025 году команда Chroma опубликовала исследование Context Rot: How Increasing Input Tokens Impacts LLM Performance, в котором проверила модели на задачах с разной длиной входного контекста. Вывод: во всех сериях экспериментов производительность ухудшалась с ростом входа, хотя масштаб деградации различался. Особенно вредны так называемые distractors — информация, тематически похожая на нужную, но не содержащая правильного ответа. Они сбивают модель, заставляя её тратить внимание на нерелевантные фрагменты.

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