1M токенов в Claude хуже 50K - вот что показал Stanford
Anthropic продаёт 1 миллион токенов контекстного окна как премиум-фичу Claude Sonnet 4.6 и Opus 4.7. На моём рабочем проекте начиная с 300 тысяч токенов Claude начинает врать. Не «иногда», а системно: придумывает функции, которых нет, забывает правила из CLAUDE.md, путает версии файлов, переключается между ними как будто впервые их видит.
Я думал это баг моей настройки. Полез разбираться - оказалось, это документированное явление 2024-2025 года. Chroma Research летом 2025-го прогнали 18 топовых моделей через жёсткий стресс-тест длины. Stanford ещё в 2024-м показал «lost in the middle» - модель помнит начало и конец, а середину пропускает. Anthropic в своём инженерном блоге пишет об этом прямым текстом и сам ставит потолок 200 строк на CLAUDE.md.
Дальше - цифры со ссылками, готовый промпт чтобы проверить свой контекст за минуту, мои 3 главные ошибки и рабочий лимит, который я держу сейчас.
Что такое context rot и почему его замерили на 18 моделях
Chroma Research в июле 2025-го взяли 18 моделей. Среди них Claude Opus 4, Sonnet 4, Haiku 3.5, GPT-4.1, GPT-4 Turbo, Gemini 2.5 Pro, Qwen3-235B. Прогнали через 4 типа задач, варьируя длину входа от коротких промптов до сотен тысяч токенов. Главный вывод исследования звучит так:
«Модели не используют свой контекст равномерно. Их качество становится всё менее надёжным по мере роста длины входа.» - Kelly Hong, Anton Troynikov, Jeff Huber, Chroma Research (источник: trychroma.com/research/context-rot)
В переводе: модели читают контекст неравномерно. С ростом длины качество падает с обрывами, не плавно.
Конкретные замеры, от которых неприятно:
- Gemini-модели показывают сбои на задаче Repeated Words уже на 500-750 словах. Подчёркиваю: на пятистах словах, не на пятистах тысячах токенов.
- GPT-4 Turbo даёт локальный пик качества на 500 словах. После этого качество идёт вниз.
- Один отвлекающий фрагмент (distractor) снижает точность ответа. Четыре фрагмента обрушивают её в разы.
Если ты заливаешь Claude README плюс 5 файлов кода в одно сообщение - ты уже за зоной локального пика качества. Каждый дополнительный файл работает как distractor.
Готовый промпт чтобы проверить свой CLAUDE.md за минуту
Без артефакта эту тему не закрыть. Вот рабочий промпт, который я гоняю на любом новом или старом CLAUDE.md. Скопируй, вставь в чистое окно Claude Code (или Claude Desktop). Не давай моделям дополнительный контекст - только CLAUDE.md.
Что я смотрю в ответе:
- Если в rules_in_middle модель тащит правила с верхушки файла или искажает формулировки - твой файл слишком длинный, середину Claude уже не видит.
- Если self_check: false - модель прямо признаётся, что без напоминания правило не соблюдёт. Это сигнал переписывать.
- Если модель пишет «не могу найти 3 правила в середине» - размер файла обвалил способность к ретроспективному скану. Резать.
На моём бывшем CLAUDE.md в 600 строк промпт стабильно проваливался: модель выдавала правила из первых 100 строк и из последних 50. Середина - чёрная дыра. На переписанном файле в 100 строк промпт проходит с первой попытки.
Lost in the middle - Stanford заметил это первым
Параллельно с context rot работает второй эффект. Stanford в 2024 году опубликовал в TACL работу «Lost in the Middle» (Nelson Liu и команда). Замер один: дают модели длинный контекст, в нём прячут ключевой факт, меняют позицию факта - начало, середина, конец - и смотрят, найдёт ли модель ответ.
«Качество обычно выше всего, когда важная информация лежит в начале или конце входного контекста, и заметно падает, когда модели приходится доставать её из середины длинного контекста - даже у моделей, заявленных как long-context.» - Nelson Liu et al., TACL 2024
Странный эффект подтвердился даже у моделей, которые сами Anthropic и OpenAI позиционировали как long-context. Длина окна на бумаге - 200 тысяч, миллион токенов. На практике - модель видит первые ~30 тысяч хорошо, последние ~10 тысяч хорошо, а середина протекает.
Практический вывод для CLAUDE.md и любых файлов памяти: важное стоит в начале и в конце. Середина - зона риска. У меня в новом CLAUDE.md ключевые правила-императивы стоят в первых 20 строках и в последних 15. Описательная часть (что за проект, какой стек) - в середине, потому что её модель и так подхватит из контекста файлов.
Если хочется готовый каркас файла под этот принцип - я разобрал отдельно: Как настроить CLAUDE.md - шаблон и 6 правил. Там шаблон, конкретные правила длины, разбор моего рабочего файла.
Anthropic сам пишет: «конечный ресурс с убывающей отдачей»
Самая честная цитата по теме - из инженерного блога Anthropic от 29 сентября 2025-го. Команда прикладного ИИ Anthropic сама признаёт то, что маркетинг компании делает вид, что не существует.
«Context should be treated as a finite resource with diminishing marginal returns.» - Команда прикладного ИИ Anthropic, инженерный блог, сентябрь 2025
В переводе: «К контексту нужно относиться как к конечному ресурсу с убывающей отдачей.» То есть каждый следующий токен в окне даёт меньше пользы, чем предыдущий. И с какого-то порога - начинает работать в минус.
В той же статье Anthropic зашили рекомендацию по CLAUDE.md - 200 строк потолок. После 200 строк модель начинает игнорировать правила. По моим замерам на трёх реальных проектах с CLAUDE.md в 80, 250 и 600 строк - на коротком файле модель соблюдала правила почти всегда, на 250 пропускала примерно одно из четырёх, на 600 теряла половину.
Boris Cherny, руководитель Claude Code в Anthropic, в интервью Pragmatic Engineer в марте 2026-го сказал об этом ещё прямее:
«Главное даже не глубокая работа, главное - насколько быстро я переключаюсь между разными контекстами.» - Boris Cherny, руководитель Claude Code, Anthropic (интервью Pragmatic Engineer, март 2026)
Cherny говорил про переключение между задачами и людьми в течение дня. Я применил эту же логику к Claude: один контекст - одна задача, и через 30-40 минут окно закрывается, открывается новое. Это не его прямая рекомендация, а моё расширение его принципа на работу с агентом.
Три ошибки, которые сжигают контекст быстрее всего
Я сделал каждую из этих трёх в первый месяц с Claude Code. Сейчас они закрыты на уровне привычки. Без них токены жглись со скоростью 200 тысяч в час, с ними держусь в 50-80 тысячах на задачу.
Ошибка 1: залил весь README плюс 5 файлов кода в один промпт. Окно забивается на 50% за один turn. Дальше любая правка втягивает в этот же контекст ещё файлы - быстро упираешься в лимит. Чинится через just-in-time retrieval: пусть Claude сам читает файлы через read_file и glob, как живой инженер ищет в коде. Boris Cherny рассказывал, что эта архитектура Claude Code родилась из наблюдения, как инженеры искали в коде когда у них падал IDE.
Ошибка 2: CLAUDE.md на 500-600 строк, в надежде что «чем больше правил, тем лучше». На деле модель пропускает середину файла, правила из этой зоны не работают. Лимит из практики - 80-120 строк живого CLAUDE.md. Каждое правило свыше начинает конкурировать с теми, которые реально важны. Anthropic ставит 200 строк как жёсткий потолок, но 120 - тот предел, после которого качество соблюдения падает заметно.
Ошибка 3: не запускал /compact на длинных сессиях. Сессия на 180 тысяч токенов, Claude забывает первые сообщения, ты повторяешь контекст руками каждые 20 минут. Чинится двумя способами: либо /compact вызываешь сам когда чувствуешь, что сессия пошла по второму кругу, либо включаешь авто-компакцию на 80% от лимита. У меня - и то и другое.
Если задача большая (исследование, разбор архитектуры, рефакторинг 5+ файлов) - ставлю субагентов вместо одного Claude. Anthropic в своих внутренних замерах показал что лидирующий агент Claude Opus 4 плюс субагенты Claude Sonnet 4 дают +90,2% качества против одного Opus 4. Цена - 15-кратный расход токенов, но на дорогих задачах это окупается. Полная инструкция как ставить субагентов: Пошаговая настройка Claude Code Subagents.
Мой рабочий лимит контекста на каждый день
Что осталось после всех экспериментов с миллионными окнами и длинными CLAUDE.md:
- CLAUDE.md держу в 100 строк. Жёсткий потолок. Каждая строка - императив с глаголом и без воды: «всегда запускай тесты после правки», «никогда не правь миграции в production». Описательные строки типа «мы используем подход X для Y» вычищаю первыми - они занимают токены и не меняют поведение модели.
- Открываю новое окно под каждую отдельную задачу. Не «дочиню баг и сразу займусь рефакторингом в этом же чате». Закончил баг - закрыл вкладку. Открыл новую под рефакторинг. История двух задач в одном окне = модель путает контексты.
- Когда счётчик контекста показывает 55-60% - принудительно мигрирую в новое окно. Промежуточный шаг: прошу Claude составить summary текущей задачи в формате «продолжи с N-го шага», вставляю в свежее окно вместо всей истории. Старое окно закрываю.
- На старте нового окна - один и тот же short-prompt. Лежит у меня в TextExpander под клавишу. Содержит порядок чтения файлов проекта, формат подтверждения в 1 строку, запрет начинать задачу до отдельного сигнала. Без него Claude часто стартует на догадках.
- Правило в CLAUDE.md появляется не из размышлений, а из ошибки. Когда модель промахивается - формулирую претензию голосом («сделал X, надо было Y, потому что Z») и прошу Claude самому добавить правило в нужный раздел файла. Так список растёт от реальных промахов, а не от теоретических опасений.
Это не идеализированная схема. Это лимит, который я держу на проекте, где Claude Code в одиночку разрабатывает платформу с базой, биллингом, ботом и админкой. На длинных сессиях без этой дисциплины проект разваливается за 2-3 дня - проверял лично.
Выводы
- Контекст - конечный ресурс. Каждый дополнительный токен в окне даёт меньше пользы, чем предыдущий. С какого-то порога начинает работать против тебя.
- 1 миллион токенов в окне - маркетинговый рекорд, не рабочий инструмент. Эффективная зона по замерам Chroma и Stanford - 30-50 тысяч токенов на задачу.
- CLAUDE.md свыше 200 строк - правила из середины модель не видит. Чинится через жёсткий лимит длины и расположение важного в начале и конце.
- Распределение задач между субагентами даёт +90,2% качества на research-задачах. Цена 15× токенов, но на дорогих задачах окупается.
Прогноз на конец 2026-го: сдвиг от Markdown к HTML-артефактам как способу подачи контекста ИИ. Thariq Shihipar из команды Claude Code уже сказал «HTML - новый markdown» в подкасте Lenny. Идея простая: вместо плоского списка на 200 строк дать агенту визуальный макет, который можно править кусками. Вычислительный ресурс уходит на коммуникацию контекста, написание кода становится побочной задачей.
А теперь вопрос. Сколько строк в твоём CLAUDE.md прямо сейчас? Прогони мой промпт из второго раздела на своём файле - и напиши в комменты результат. Особенно интересно узнать тех, у кого больше 300 строк - там самые любопытные сценарии деградации.