Контекст в Claude Code: что это и когда кончается

15 минут чтения

Контекст в Claude Code это рабочая память агента на одну сессию: всё, что он держит перед глазами, пока решает вашу задачу. Туда входят ваши реплики, правила проекта из CLAUDE.md, прочитанные файлы, выводы команд и тестов, ответы поисковика и собственные рассуждения модели. У этой памяти есть предел, и меряется он в токенах: токен это кусочек текста, обычно часть слова. Окно у новых моделей Anthropic вмещает миллион токенов; у моделей прошлого поколения по умолчанию 200 тысяч, миллион включается отдельно и на подписке оплачивается сверх плана, таблица ниже.

Когда место кончается, Claude Code не падает и ничего не стирает целиком. Сначала он выбрасывает старые выводы команд, потом сжимает историю разговора в короткую сводку и продолжает работу. Сводка это пересказ, который пишет сама модель: ваши задачи и ключевые куски кода она старается сохранить, подробные инструкции из начала разговора могут пропасть. Корневой CLAUDE.md перечитывается с диска и никуда не девается.

Если проект оборвался посреди задачи, ниже есть раздел про то, что делать прямо сейчас, и три способа не терять работу дальше. Самый надёжный из них: заметка-передача в файле проекта. Цифры в статье сверены с документацией Claude Code 19 сентября 2026; сами константы меняются от версии к версии, порядок величин держится.

Из чего складывается окно

Окно заполняется в два приёма: часть грузится сразу при старте сессии, часть добавляется по ходу работы.

При старте агент получает системный промпт, который вы не видите, и правила проекта из CLAUDE.md. Туда же попадает автопамять: заметки, которые агент сам оставил в прошлых сессиях. Наконец, короткие описания скилов (отдельных инструкций под конкретные задачи, агент подгружает их только по вызову) и имена подключённых внешних инструментов. В примере из документации Claude Code разобрана сессия с окном на 200 тысяч: там это порядка четырёх тысяч токенов на системный промпт, около двух тысяч на CLAUDE.md среднего проекта и по несколько сотен на остальное. Цифры примерные, у вас будут свои, но порядок такой: до первой реплики занято несколько процентов окна.

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

Посмотреть, что и сколько занимает прямо сейчас, можно командой /context внутри сессии. Заглянуть туда стоит, как только агент начал путать имена файлов или переспрашивать то, что вы уже объясняли: обычно место съели старые логи, которые уже не нужны.

Сколько текста влезает в окно и почему агент путается раньше

Миллион токенов звучит как «весь проект влезет», и в токенах это часто так: по оценке Anthropic миллион токенов это примерно 555 тысяч слов. Русский текст режется мельче: по моему опыту слово тянет на два-четыре токена, так что для переписки на русском запас меньше, чем обещает цифра.

Но заполненное окно и рабочее окно разные вещи. Anthropic прямо пишет в документации: чем полнее окно, тем хуже модель находит в нём нужное и тем больше пропускает. У явления есть имя: context rot, что-то вроде «протухания контекста». То есть агент начинает путаться задолго до того, как окно кончается физически. У меня сессия плотной работы над одним проектом держится несколько часов, и закрывать её стоит по первому признаку, не дожидаясь счётчика: агент переспрашивает то, что вы уже объясняли, или правит соседний файл вместо нужного.

Что происходит, когда окно заполняется

Порядок у Claude Code фиксированный. Сначала он очищает старые выводы команд: те самые логи и результаты поиска, которые давно не нужны. Если места всё ещё мало, история разговора сжимается в сводку: агент сам пересказывает, что вы делали, что решили и на чём остановились, и дальше работает уже со сводкой вместо полной переписки. На экране появляется сообщение, что разговор сжат; сам пересказ вам не показывают.

Срабатывает это автоматически на пороге, который зависит от модели и плана. Узнать, какая модель у вас, можно командой /model: она же показывает, включено ли расширенное окно.

Какое окно у какой модели и когда история сжимается сама

Размер окна
Когда Claude Code сжимает историю сам

Fable 5.1, Opus 5, Sonnet 5, Opus 4.7 и 4.8

Размер окна

1 000 000 токенов по умолчанию; на плане Pro миллион у Opus идёт за отдельную оплату сверх подписки

Когда Claude Code сжимает историю сам

Около 967 тысяч токенов; на плане Pro без доплаты за миллион у Opus на границе 200 тысяч

Sonnet 4.6, Opus 4.6

Размер окна

200 000 токенов по умолчанию; миллион включается в меню /model, вариант помечен [1m], на подписке за отдельную оплату сверх плана

Когда Claude Code сжимает историю сам

На границе 200 тысяч; с расширенным окном около 967 тысяч

Sonnet 4.5, Haiku 4.5

Размер окна

200 000 токенов

Когда Claude Code сжимает историю сам

На границе 200 тысяч

Порог можно опустить командой /autocompact 500k, чтобы сжатие срабатывало раньше, пока агент ещё не путается в длинной истории. Цена у этого есть: сжатий за день становится больше, каждое это отдельный большой запрос и отдельная потеря деталей, а на окне в 200 тысяч команда с числом больше окна вообще ничего не меняет. Я порог не трогаю и сжимаю руками, об этом ниже; настройка полезна для прогонов, где человека у клавиатуры нет.

Есть случай, когда автоматика сдаётся: один файл или один вывод команды настолько большой, что окно заполняется сразу после каждой сводки. Тогда Claude Code после нескольких попыток останавливает сжатие и показывает ошибку вместо бесконечного цикла. Документация даёт четыре выхода: попросить агента читать файл кусками (диапазон строк или одна функция), сделать /compact с фокусом, который выбрасывает большой вывод, отдать работу с этим файлом субагенту или, если прежний разговор уже не нужен, /clear. Найти виновника помогает /context в новой сессии: если окно заполнено сразу после старта, дело в том, что грузится при запуске.

Что переживает сжатие, а что нет

Возвращается
Теряется или урезается

Правила проекта

Возвращается

Корневой CLAUDE.md и правила без привязки к папкам перечитываются с диска

Теряется или урезается

Правила, которые действуют только для отдельных папок или файлов, и CLAUDE.md во вложенных папках вернутся, только когда агент снова прочтёт подходящий файл

Память и план

Возвращается

Автопамять и план, который агент составил в режиме планирования, перечитываются с диска

Теряется или урезается

Подробные инструкции, которые вы дали в начале разговора словами, могут не попасть в сводку

Файлы

Возвращается

До пяти последних прочитанных или изменённых файлов загружаются заново

Теряется или урезается

Файл больше пяти тысяч токенов возвращается как ссылка на путь, без содержимого

Скилы

Возвращается

Текст скилов, которые вызывались в сессии, вставляется заново, с ограничением по объёму

Теряется или урезается

Самые старые скилы выбрасываются первыми, длинные обрезаются с конца

Разговор

Возвращается

Ваши задачи и ключевые фрагменты кода остаются в сводке

Теряется или урезается

Выводы команд, логи и результаты поиска сжимаются вместе с остальным

Вывод из таблицы один, и он же главное правило работы с агентом: всё, что должно пережить сессию, живёт в файлах. Правило, которое вы сказали агенту словами в начале дня, после сжатия может исчезнуть. То же правило в CLAUDE.md вернётся само. Как завести этот файл и что в него писать, я разбирал в статье «Claude Code: что это и как им пользоваться».

Распечатанные правила в открытой папке под латунным кубом, рядом папки-регистраторы и закрытый ноутбук

Закончился контекст посреди задачи: как продолжить проект

Типичная ситуация: агент делал большую задачу, окно кончилось, сводка что-то потеряла, и непонятно, как ехать дальше.

Если это уже случилось. Сжимать сжатое бесполезно, вернуть пропавшее из сводки нельзя. Зато есть код: попросите агента посмотреть git status и git diff, восстановить по ним картину и рассказать, что уже сделано и что осталось. Проект под git окупается ровно в такой момент: код помнит то, что сводка потеряла. Если сессия оборвалась до сжатия (закрылся терминал, вы вышли), история цела: claude --continue из терминала в той же папке откроет последний разговор целиком.

Чтобы больше не терять. Три пути, от самого мягкого к самому надёжному.

Сжать с фокусом. Команда /compact с инструкцией, что именно сохранить: /compact сохрани список изменённых файлов, текущую ошибку и план оставшихся шагов. Агент пересказывает историю с упором на названное. По моему опыту это лучше автоматики, потому что сжатие происходит на ваших условиях и в удобный момент, пока агент ещё ориентируется в разговоре. Ту же инструкцию можно закрепить в CLAUDE.md, раздел «Compact instructions». Тогда она действует и на автосжатие. Помните, что сам /compact тоже большой запрос: агент перечитывает весь разговор. Минус тот же, что у любой сводки: чего в ней нет, того агент больше не знает.

Начать чистую сессию, старую оставить под рукой. /clear даёт пустое окно и ничего не стоит, старый разговор при этом не удаляется: его можно открыть командой /resume внутри Claude Code или claude --resume из терминала в той же папке. Перед очисткой стоит дать сессии имя командой /rename, иначе через день её не найти среди десятка похожих. По документации, если вернуться к старой сессии после часа простоя и в ней больше ста тысяч токенов, Claude Code на планах Pro и Max предложит выбор: продолжить из сводки или загрузить всю историю как есть. Из сводки дешевле и чище; полная история сохраняет всё, но вместе с тем мусором, из-за которого вы её закрыли.

Оставить заметку-передачу в файле проекта. Это самый надёжный путь и единственный, который переживает и сжатие, и /clear, и перерыв до завтра. Перед тем как закрыть сессию, попросите агента записать в файл проекта, что сделано, что осталось, какие решения приняты и где именно остановились. Запрос ниже можно скопировать целиком: у меня перед очисткой сессии работает такой же файл-передача.

Запрос на заметку-передачу
Перед закрытием сессии запиши в файл HANDOFF.md в корне проекта:
0. Дату и время обновления первой строкой.
1. Что сделано в этой сессии: список файлов и что в них изменилось.
2. Что осталось: оставшиеся шаги по порядку, первым тот, на котором остановились.
3. Принятые решения и почему.
4. Открытые вопросы и что проверить перед продолжением.
Пиши коротко, только факты, без пересказа переписки. Ключи, пароли и адреса серверов в файл не записывай.

Три условия, без которых заметка не работает. Новая сессия сама этот файл не откроет: добавьте в CLAUDE.md одну строку «в начале сессии прочитай HANDOFF.md, в конце перепиши его». Файл старше двух дней не считайте правдой без сверки с кодом: устаревшая заметка вреднее отсутствующей: агент верит файлу больше, чем коду. И если в проекте есть публичный репозиторий, держите файл в .gitignore: агент, описывая открытые вопросы, легко вписывает туда то, что видел в выводе команд.

Если вести такой файл постоянно, не только перед обрывом, он превращается в доску задач проекта, и агент читает её первой в каждой сессии. Готовый шаблон с полями и правилами ведения лежит в материале «Доска задач для ИИ-агента».

Раскрытый блокнот с рукописным списком из трёх пунктов рядом с закрытым ноутбуком и пустой чашкой

Как не доводить окно до предела

Пять привычек, которые в документации и в моей практике дают больше всего пользы.

  1. Чистить окно между несвязанными задачами. Починили письмо о заказе, переходите к отчёту: /clear. Хвост от предыдущей задачи новой не помогает, при этом агент отправляет весь разговор с каждым запросом. Большая часть идёт из кэша и стоит дёшево, но кэш живёт час: вернулись после обеда, и первый вопрос оплачивает всю историю заново. На подписке вы платите за это не деньгами: длинный хвост быстрее съедает лимит.

  2. Не ждать предела. Я стараюсь чистить или сжимать окно на половине: сводка из половины истории точнее, чем сводка из окна, в котором агент уже путался. Работать так, чтобы в любой момент закрыть вкладку, открыть чистую и ничего не потерять.

  3. Держать CLAUDE.md коротким. Документация советует держать его до 200 строк, и причина простая: файл грузится в каждую сессию целиком, поэтому подробные инструкции под отдельные задачи лучше вынести в скилы, которые подгружаются только при вызове. У меня так и вышло: корневой файл держит ссылки на папки с правилами, сами правила лежат по папкам.

  4. Шумные операции отдавать субагентам, отдельным помощникам со своим чистым окном. Прогон тестов, чтение логов, поиск по большому проекту: субагент делает это у себя и возвращает в основное окно только сводку. Достаточно попросить словами: «прогони тесты через субагента и верни только упавшие». В примере из документации субагент прочитал шесть тысяч токенов файлов, в основной контекст вернулось четыреста.

  5. Ставить задачу конкретно. «Улучши проект» заставляет агента читать всё подряд. После «Добавь проверку поля телефона в форму заявки в таком-то файле» он читает два файла. Разница в десятки тысяч токенов и в качестве результата. Конкретная постановка вырастает из описания проекта в файле, о формате я писал в статье «Спецификация вместо промптов».

Статья описывает работу в терминале. В расширении для редактора окно ведёт себя так же, меняется только вид кнопок. На своём сервере, где агент работает в фоне и сессии живут сутками, автосжатие срабатывает многократно и без вас, и заметка-передача там важнее всего. В автономных прогонах по расписанию, где некому набрать /compact, работают только файлы и автосжатие: это самый сильный довод за то, чтобы всё важное жило в файлах.

Если после всего этого кажется, что инструмент всё равно не тянет ваш проект, возможно, дело в форме работы: часть задач удобнее делать в редакторе с подсказками, где каждая правка на глазах. Разницу я разбирал в сравнении «Claude Code или Cursor».

Стена почтовых ячеек: три дверцы открыты, конверты из них падают в общий лоток внизу

Частые вопросы

Это рабочая память агента на одну сессию: ваши сообщения, правила из CLAUDE.md, прочитанные файлы, выводы команд и рассуждения модели. Всё это отправляется модели с каждым запросом, и у объёма есть предел: миллион токенов у новых моделей Anthropic, 200 тысяч у моделей прошлого поколения по умолчанию.
Сессия не обрывается. Claude Code сначала удаляет старые выводы команд, затем сжимает историю в сводку и продолжает работу. Корневой CLAUDE.md и автопамять перечитываются с диска, до пяти последних файлов загружаются заново, подробные инструкции, которые вы дали в начале разговора, могут пропасть.
Сразу после обрыва: попросить агента восстановить картину по git status и git diff; если сессия закрылась до сжатия, claude --continue откроет её целиком. Чтобы больше не терять: /compact с указанием, что сохранить; /clear и новая сессия, старая остаётся доступной через /resume; заметка-передача в файле проекта: что сделано, что осталось, где остановились; строка в CLAUDE.md велит новой сессии прочитать её первой.
Каждая новая сессия начинается с чистого окна. Между сессиями знание переносят файлы: CLAUDE.md с правилами, автопамять с заметками агента и ваша заметка-передача. Старый разговор можно открыть заново командой /resume: целиком или, после долгого перерыва, из сводки на выбор.
/clear даёт пустое окно и ничего не стоит, старый разговор сохраняется. /compact заменяет историю сводкой, и сам по себе это большой запрос, потому что агент перечитывает весь разговор. Между несвязанными задачами лучше /clear, посреди одной большой задачи /compact с фокусом.
Столько, сколько в нём текста, и он грузится в каждую сессию целиком. В примере Anthropic файл среднего проекта занимает около двух тысяч токенов. Рекомендация документации: до 200 строк, подробности выносить в скилы, которые подгружаются только при вызове.

Пока окно кончается внезапно, каждый обрыв это авария. Когда вы знаете порядок сжатия и держите заметку-передачу, обрыв становится плановым событием: агент закрыл смену, следующий открыл её с той же строки.

Что сделать сегодня: открыть /context в текущей сессии и посмотреть, что там лежит; проверить, что правила проекта записаны в CLAUDE.md, где они переживут любую сессию; завести заметку-передачу (тот самый HANDOFF.md) и попросить агента заполнить её перед закрытием. Если проект уже есть и хочется, чтобы он не рассыпался между сессиями, разобрать его, завести CLAUDE.md и файл-передачу можно за один вечер вместе с инженером: вайб-кодинг в Минске.

Новые посты на почту

Без спама. Отписка в один клик в любом письме.