По этой теме у нас регулярно выходят новые разборы и шаблоны. Подпишитесь, чтобы не пропустить: https://vibeceh.ru/?utm_source=article&utm_campaign=kontekst-v-claude-code-zabyvaet-proekt&utm_content=subscribe-cta#buy
Он забыл - он пересказал сам себе: что случилось на третьем часе
Официальная формулировка Anthropic звучит буднично: при сжатии длинной сессии Claude Code суммирует историю разговора, чтобы она влезла в окно (Explore the context window). Модель сама решает, что из вашей трёхчасовой работы «важно», а что можно выбросить. Ты в этом решении не участвуешь.
Вот как это выглядит изнутри. Инженер Ian Paterson описал свой случай: три часа многофайлового рефакторинга, он только что объяснил, каким модулям нужны правки интерфейсов, а какие уже готовы, - и на 80% заполнения сработало автосжатие.
When Claude came back, it had no idea which files had been edited and which still needed changes
После этого агент предложил править файл, законченный часом раньше, и потерял ограничение, которое ему повторили дважды. Задачу пришлось объяснять с нуля.
С такой ситуацией сталкиваешься не только ты. В официальном баг-трекере Anthropic лежит жалоба ровно про это ощущение:
auto compact is the worst. every time it happens i feel like claude code has forgotten everything
Пожалуй, самое неприятное - момент поломки никак не отмечен. Alexander Golev в разборе «Claude Saves Tokens, Forgets Everything» указывает: сильнее всех страдают те, кто ведёт длинные совместные сессии и накапливает общее понимание, и они же чаще всего застигнуты врасплох, потому что разговор внешне продолжается нормально. Сообщения об ошибке не будет. Красного экрана тоже. Есть уверенный тон и предложение сделать уже выполненную работу.
Поэтому первым делом перестань искать свою ошибку в формулировках. Ты сформулировал нормально. Сработала штатная процедура сжатия, и результат оказывается не в твою пользу.
Контекст простыми словами: почему каждый новый запуск начинается с чистого листа
Так прямо написано в документации:
Each Claude Code session begins with a fresh context window.
Знание через сессии переносят два механизма: файл CLAUDE.md и автоматическая память. Anthropic отдельно оговаривает: система воспринимает их как контекст и использует в роли подсказки. Проще говоря - читает как подсказку.
Размер окна упирается в число. У обычных моделей это 200 000 токенов, у Sonnet 5, Opus 4.6 и Sonnet 4.6 - 1 000 000; в Claude Code 4.8 и новее окно также расширено до 1 000 000. Токен - это кусочек текста. Главное тут одно: окно конечно и заполняется всем подряд - твоими сообщениями, его ответами, прочитанными файлами, выводом команд.
Когда окно заполняется, срабатывает сжатие. И вот тут ключевой момент, который меняет отношение к работе: после сжатия от разговора остаётся резюме, которое модель написала сама для себя будущей. В документации по компактизации так и сказано - модель пишет сводку с той информацией, которая нужна, чтобы продолжить задачу (Compaction). Всё, чего нет в сводке, исчезает из текущего контекста.
Транскрипты сессий пишутся на диск непрерывно, поэтому к прошлому разговору можно вернуться после выхода или после /clear. Для этого есть /resume, --continue и --resume. Команда /clear закрывает вкладку, проект при этом остаётся на месте.
Вывод для ежедневной работы простой. Всё, что должно пережить сегодняшний вечер, держи в файле в проекте. Переписка - расходник, её сотрут.
Что съедает контекст: чтение файлов, поиск, длинный вывод команд

Разбор claude code возможностей на Medium называет результаты инструментов «самым незаметным источником раздувания», а Damian Galarza формулирует ещё точнее: легко упустить, насколько быстро чтения файлов съедают контекст. Один просмотр большого файла целиком - и приличный кусок окна ушёл, а ты этого нигде не увидел.
Куда уходит память:
- Стартовый налог. В замере Systima Claude Code отправляет около 33 000 токенов ещё до того, как прочитает первую просьбу.
- Подключённые внешние сервисы. Один MCP-сервер GitHub добавляет примерно 42 000 токенов описаний инструментов - около 21% окна на 200K, ещё до первого твоего сообщения.
- Чтение файлов. Каждый открытый файл целиком остаётся в окне.
- Вывод команд. Длинные логи, простыни ошибок, результаты поиска по проекту.
Что с этим делать, если ты не инженер. Сначала отключи всё, чем сегодня не пользуешься: каждый лишний сервер - это оплаченный кусок окна. Затем проси смотреть конкретные места вместо «прочитай проект»: Galarza пишет, что указывает на конкретные диапазоны строк вместо чтения файлов целиком. Разведку можно отдавать вбок: у Claude Code есть встроенный субагент Explore, и официально про него сказано, что он держит результаты разведки вне основного разговора и возвращает только выжимку (Subagents).
Практикум ровно про это и построен: как за вечер настроить себе рабочий процесс, в котором агент не жрёт память впустую и не переписывает работающее. Руками заводим файлы проекта, режем задачи и проверяем, что он реально читает то, что ему подложили. https://vibeceh.ru/?utm_source=article&utm_campaign=kontekst-v-claude-code-zabyvaet-proekt&utm_content=mid-cta#buy
Полоска «до автосжатия» внизу экрана: почему на неё нельзя ориентироваться
Начнём с неприятного. Часть окна занята заранее - резервом под само сжатие. В отдельных отчётах этот буфер занимал 45 000 токенов, то есть 22,5% окна до написания первой строки кода. В фиче-реквесте пишут, что VSCode-расширение сжимает примерно при 75% использования, резервируя около 20% на сам процесс. А автор разбора HyperDev наблюдал, как реальные 64% использования показывались как «10% до автокомпакта».
Дальше - порог. По разным источникам пороги такие:
| Источник / клиент | Порог сжатия |
|---|---|
| VSCode-расширение | ~75% |
| Терминал (ранние версии) | ~80% |
| Терминал (поздние версии) | ~83% |
| Окно 1M (по умолчанию) | ~95% (950K) |
Свести их в одну цифру нельзя: порог менялся и зависит от версии и клиента. Значит опираться на него тем более не стоит.
Типовая ошибка новичка выглядит так: человек ждёт предупреждения и жмёт /compact на 90%. К этому моменту он уже начал терять инструкции и качество ответов просело. Практики советуют сжимать раньше: источники расходятся между 60% и 75%, но сходятся в одном - не на 90%. Некоторые ещё советуют периодически смотреть расход командой /context во время долгих сессий; официального описания этой команды у Anthropic я не нашёл, так что бери её как приём из блогов, гарантии тут никакой.
Теперь про то, что работает надёжнее любой полоски. Автор разбора okhlopkov.com держит агента круглосуточно и описывает диагностический признак: агент начинает переспрашивать то, что уже обсуждали - «в каком файле конфиг?» про файл, который правили 20 минут назад.
Переспросил про то, что вы делали 20 минут назад - контекст ушёл. Не отвечай ему в чате и не объясняй заново: обнови файл-заметку о состоянии проекта и начни новую сессию. Ответ в чате только раздует окно ещё сильнее.
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК
CLAUDE.md: постоянная памятка о проекте, которую он читает каждый раз
Официально: все файлы памяти автоматически загружаются в контекст при запуске. Уровней три: проектный ./CLAUDE.md в корне, пользовательский ~/.claude/CLAUDE.md для личных привычек и корпоративная политика. Файлы склеиваются в один общий текст - поэтому «мой файл не сработал» обычно означает «он добавился к остальным, а не заменил их».
Есть ловушка с подпапками. По документации вложенные CLAUDE.md подключаются только когда он полез читать файлы в этих подпапках. На практике всё хуже: с июня 2025 по февраль 2026 в трекере накопилось четыре отдельных issue про то, что файл в подпапке просто не подхватывается. Вывод для первого месяца - один файл в корне, вложенных не заводить.
Что писать. Цель по объёму официальная: меньше 200 строк, потому что длинные файлы съедают больше контекста и хуже соблюдаются. И не превращать файл в помойку: строка вида @docs/architecture.md втягивает весь этот документ в каждую сессию. Правило простое - удаляй каждую строку, которая не даёт конкретной информации о проекте.
Вот рабочая заготовка, которую можно скопировать и поправить под себя:
# Проект: интернет-магазин на Next.js
## Что это
Витрина + корзина. Оплата через ЮKassa. Деплой на Vercel.
## Где что лежит
- Страницы: app/
- Компоненты: components/
- Цены и тексты витрины: content/prices.json
- Переменные окружения: .env.local (в git не коммитим)
## Соглашения
- Стили только через Tailwind, отдельных css-файлов не заводим.
- Правки цен идут только в content/prices.json, в компонентах цифр нет.
- Перед коммитом запускать npm run build.
## Подводные камни
- Сборка падает, если в prices.json остался хвостовой запятой.
- Файлы в public/ кешируются на Vercel, менять имя при замене картинки.
## Заметка о состоянии проекта
@.claude/HANDOFF.md
Чтобы я видел, что этот файл прочитан, обращайся ко мне по имени Антон.Последняя строка стоит там ради проверки. Приём взят из готового примера CLAUDE.md: автор просит всегда обращаться к нему по имени, чтобы понимать, читается ли файл вообще. Если в ответ имени нет, файл не доехал.
Практики советуют смотреть загруженную память командой /memory прямо в том каталоге, где работаешь. Официального описания команды я не нашёл, так что это совет из блогов - но проверка через обращение по имени работает всегда и ничего не стоит.
Заметка о проекте на завтра: что записать в конце сессии

Заведи один файл HANDOFF.md.
Путь
.claude/HANDOFF.mdв корне проекта. Схема из готового набора правил: один файл, каждая сессия перезаписывает предыдущую. Никаких папок с историей на старте - иначе через неделю там будет архив, который никто не читает.Заполни четыре пункта.
Что сделано - с конкретными изменёнными файлами. В процессе - над чем сидишь прямо сейчас. Заблокировано - что упёрлось во внешнее. Следующий шаг - одно точное действие, с которого завтра начинаешь.
markdown# Состояние проекта на 12 марта ## Сделано - Правки цен вынесены в content/prices.json - Компонент ProductCard читает цену оттуда, хардкода больше нет ## В процессе - Корзина: components/Cart.tsx, считает сумму, но не учитывает скидку ## Заблокировано - Оплата: нет тестового ключа ЮKassa, жду от бухгалтера ## Следующий шаг - Открыть components/Cart.tsx и добавить учёт поля discount из prices.json, затем запустить npm run buildДобавь секцию с тупиками.
Обычный markdown, заголовок «Failed Approaches» или «Куда не лезть». Туда идёт то, что уже пробовали и что не сработало, чтобы завтра он не пошёл по этому кругу второй раз.
Пиши факты, приказы тут не работают.
«Цены лежат в content/prices.json» работает. «Всегда следуй моим инструкциям» не работает - модель читает этот файл как справку о проекте.
Держи заметку в пределах страницы.
Автоматические заметки самого инструмента режутся на 200 строк молча, без предупреждения и без ошибки. Длинный файл даёт иллюзию контроля.
Подцепи заметку к CLAUDE.md.
Строкой
@.claude/HANDOFF.md- официальный синтаксис импорта. СтарыйCLAUDE.local.mdобъявлен устаревшим в пользу импортов, на него не завязывайся.Начинай новую сессию с чтения.
Первым сообщением проси прочитать заметку и пересказать своими словами в 3-5 строк: цель, текущее состояние, следующий шаг. Пересказ показывает, понял он или сделал вид.
promptПрочитай файл .claude/HANDOFF.md и ничего пока не меняй в коде. Перескажи мне в 3-5 строках: какая цель, в каком состоянии проект сейчас и какой следующий шаг записан. Отдельно назови, что в заметке помечено как заблокированное. Потом спроси меня, продолжаем с записанного следующего шага или беру другую задачу.Закрывай сессию, пока окно не забито под завязку.
Одна строка в CLAUDE.md вида «в конце сессии обнови .claude/HANDOFF.md» заставляет его писать заметку самому, но просить об этом надо до того, как окно заполнено, - иначе писать будет уже нечем.
Дробим работу на задачи: почему одна большая просьба сжигает всю память
Официальные best practices Anthropic формулируют принцип так: отделяй исследование и планирование от исполнения, чтобы не решать не ту задачу. Рабочий порядок из тех же рекомендаций - Explore, Plan, Implement, Commit. Правку, которую можно описать одним предложением, выполняй без отдельного плана: планирование только съест окно.
Что делать, когда сессия распухла:
- Новая, несвязанная задача -
/clear. Разговор обнуляется, CLAUDE.md никуда не девается, он загружается при старте сессии заново. - Та же задача затянулась -
/compact, и лучше с фокусом: попроси сохранить то, что относится к конкретному багу, над которым сидишь.
В середине большой просьбы может стать видно, что он ушёл не туда. Жми Escape и режь задачу на части до того, как он напишет гору кода в неверном направлении.
Context7: как подсунуть свежую документацию вместо угадывания по памяти
Что известно точно. MCP - это способ подключить к Claude Code внешние источники: документацию, базы, сервисы, - чтобы он тянул факты оттуда и не полагался на свою память. Смысл приёма понятен: библиотеки меняются, а модель отвечает по тому, что запомнила на обучении, и уверенно выдаёт устаревший синтаксис.
Спрос тоже подтверждён. В русской выдаче по запросу «claude code контекст» стоят и context7.com, и разбор pimenov.ai, а подсказки поисковика ведут к «context 7 claude code» и «mcp context 7 claude code». То есть люди ищут именно это.
А вот чего у меня нет: проверенной инструкции подключения, официального описания, чем именно Context7 отличается от обычного контекста, и подтверждения его поведения на реальном проекте. Выдумывать шаги установки я не стану: неверная команда в терминале стоит дороже, чем ненаписанный абзац. Первоисточник для самостоятельной проверки: context7.com/docs/clients/claude-code.
Любой подключённый MCP-сервер платит за себя контекстом: один только сервер GitHub добавляет около 42 000 токенов описаний инструментов, примерно 21% окна на 200K. Подключай то, чем реально пользуешься сегодня, остальное отключай - иначе окно кончится раньше, чем ты дойдёшь до задачи.
Почему памятка перестаёт работать к середине дня
Issue #19471 описывает воспроизводимый паттерн: до сжатия инструкции из CLAUDE.md выполняются корректно, после - игнорируются. Самое показательное там - ответ самой модели пользователю:
«I didn't read the CLAUDE.md content included in the system prompt. I skipped it and ran the Glob command directly.»
- Ответ модели, приведённый в issue #19471, anthropics/claude-code
Issue #26160 добавляет к этому цену вопроса: после автосжатия правила терялись, агенты меняли файлы настроек и делали прямо запрещённое, включая нарушение запрета на git add -A.
И масштаб. В отдельном репорте посчитали: явные инструкции из CLAUDE.md не соблюдаются примерно в половине сессий. Часть таких тикетов закрыта как stale или not planned - то есть быстрого исправления ждать не приходится.
Причина у поведения простая и озвучена официально: файл идёт как контекст, силы настройки у него нет. Автор разбора на DEV.to утверждает, что содержимое файла ещё и подаётся модели с оговоркой «может относиться к задаче, а может нет»; первоисточники этой обёртки я не проверял, так что это версия автора, проверкой она не подтверждена.
Строчка «никогда не запускай git add -A» не служит надёжным предохранителем: после сжатия она может просто перестать существовать для агента. Гарантированного места для жёстких правил на сегодня нет - CLAUDE.local.md, которым это лечили раньше, объявлен устаревшим. Наиболее надёжная защита на сегодня - коммит после каждого рабочего шага, чтобы было куда откатиться.
Практический сдвиг в голове: файл - это справка о проекте. Факты работают, приказы нет.
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК
Опасный край: момент, когда сжать уже нельзя

В трекере это issue #13929:
Claude ran out of context, didn't auto-compact, and now won't let me /compact
Ручной /compact отвечает ошибкой «Conversation too long, press esc twice», а откатиться на шаг назад не выходит: предыдущее сообщение и есть сжатие. После этого человек уже не может вытащить разговор.
Независимое подтверждение есть в разборе Build This Now: полностью заполненное окно может вообще заблокировать запуск /compact, и тогда придётся начинать с нуля. Причина механическая - сжатию самому нужно место в окне. Есть и смежная деталь: если автоматическое сжатие трижды подряд не удалось, оно останавливается.
Отсюда правило, которое стоит дороже любого индикатора: сжимай рано. Ориентир простой - задача пошла вторым часом, значит пора.
Предыдущий разговор остаётся на диске, к нему можно вернуться. Работа цела, потеряна только нить: файлы в проекте на месте, а транскрипт сессии доступен через /resume и --continue. Если файл-заметка обновлялся, потеря вообще сводится к паре минут.
Если взять модель помощнее и окно побольше - само пройдёт?
Большое окно приносит свои проблемы. При загрузке ненужных файлов качество ответов падает по всему окну, включая важные его части. Практик Albert Sikkema сознательно вернул окно к 200K и объясняет почему: на большом окне раньше начинаются забытые инструкции, дрейф цели и непоследовательные решения, причём далеко не на отметке 900K. В его же посте приведены слова Dan Mac из команды Amp:
«You should basically never use compaction.»
- Dan Mac, приведено в Why I Shrunk Claude Code's Context Window Back to 200k
Команда Amp отказалась от сжатия вовсе и построила процесс вокруг коротких сессий с чистой передачей состояния. Официально автосжатие на большом окне срабатывает заранее, примерно на 950K токенов по умолчанию, и есть переменная, которая возвращает сессии к 200K. Даже разработчики не считают, что большое окно снимает вопрос.
Чек-лист на сегодня, 20 минут:
- Создать
CLAUDE.mdв корне проекта, до 200 строк, по заготовке выше. - Вписать в него строку с обращением по имени и проверить, что она сработала.
- Завести
.claude/HANDOFF.mdс четырьмя пунктами и подцепить его строкой@.claude/HANDOFF.md. - Взять правило: одна сессия - одна задача, в конце коммит и обновление заметки.
- Запомнить детектор: переспросил про то, что делали 20 минут назад - обновляем заметку и жмём
/clear.
Вопросы и ответы
Вопросы и ответы
Почему Claude Code забывает, о чём договорились десять минут назад?
Потому что переписка не хранится вечно. Когда она перестаёт помещаться в окно, история заменяется пересказом, который модель написала сама для себя, и часть договорённостей в этот пересказ не попадает. Именно эту проблему описывают запросом «claude code контекст». Сообщения об ошибке при этом не будет: диалог продолжается уверенно.
Что такое Context7 и зачем он, если контекст и так есть?
Проверенных фактов по самому Context7 у меня нет, поэтому честно: подробностей не даю. Общая идея класса таких инструментов - подключить внешний источник документации через MCP, чтобы факты приезжали оттуда, а память модели в дело не шла. Смотреть первоисточник: context7.com/docs/clients/claude-code.
Как подключить Context7 через MCP, если я не программист?
Инструкции подключения в проверенных источниках у меня нет, и выдумывать команды для терминала я не буду. Что важно знать заранее: каждый подключённый MCP-сервер занимает часть окна ещё до первого сообщения - у сервера GitHub это около 42 000 токенов, примерно 21% окна на 200K.
Что настроить один раз, чтобы не переобъяснять проект каждый день?
Два файла. CLAUDE.md в корне с фактами о проекте, короткий. И .claude/HANDOFF.md с четырьмя пунктами: сделано, в процессе, заблокировано, следующий шаг. Второй подцепляется к первому строкой @.claude/HANDOFF.md.
Он помнит что-нибудь после нового запуска или всё начинается с нуля?
Каждая сессия стартует с чистым окном. Знание между сессиями переносят только файлы памяти: они загружаются автоматически при запуске. Читает он их как контекст, обязательной настройкой они для него не работают.
Можно ли открыть вчерашнюю сессию и продолжить с того же места?
Да. Транскрипты пишутся на диск непрерывно, поэтому к прошлому разговору можно вернуться после выхода. Для этого есть /resume, --continue и --resume. Но полагаться на это как на память проекта не стоит: файл-заметка надёжнее.
Где видно, сколько контекста осталось, и что значит полоска внизу?
Полоска показывает приближение к автосжатию, но верить ей нельзя. Часть окна занята резервом под само сжатие, в отдельных отчётах это 45 000 токенов, 22,5% окна. Один практик наблюдал, как реальные 64% использования показывались как «10% до автокомпакта», а сам порог по разным источникам называют то 75%, то 80%, то 83%, то около 95%.
Он умеет сам вспоминать проект или мне каждый раз всё пересказывать?
Сам подтягивает только файлы памяти при запуске. Всё остальное зависит от тебя: запиши состояние проекта в файл в конце сессии и попроси прочитать его в начале следующей. Автор гайда по такому протоколу оценивает экономию как 10-15 минут пересказа против 30 секунд, но это прикидка на глаз.
Если взять модель помощнее, он будет помнить дольше?
Дольше - да, надёжнее - нет. У Sonnet 5, Opus 4.6 и Sonnet 4.6 окно 1 000 000 токенов против 200 000 у остальных, но оно заполняется так же, просто медленнее. Механика сжатия при этом та же самая.
В новых версиях окно контекста больше - проблема решается сама?
Нет. Окно на 1M стало общедоступным 13 марта 2026, и корневую причину это не вылечило: лишние загруженные файлы роняют качество по всему окну. Один практик сознательно вернулся к 200K, потому что на большом окне забытые инструкции и дрейф цели начинались раньше, чем ожидалось.
В браузере и в терминале память разная?
Подтверждённого сравнения у меня нет, поэтому не буду утверждать. О различиях инструментов - в статье «Claude Code или Cursor». Что известно официально: любая сессия стартует с чистым окном, а файлы памяти грузятся при запуске. Косвенно про клиенты известно одно: у VSCode-расширения свой порог сжатия, около 75% использования, - то есть настройки у разных клиентов действительно отличаются.
Источники
- Explore the context window - Claude Code Docs
- How Claude remembers your project - Claude Code Docs
- Memory - docs.anthropic.com
- Compaction - Claude Platform Docs
- Manage sessions - Claude Code Docs
- Slash Commands in the SDK - Claude Code Docs
- Subagents - Claude Code Docs
- Model configuration - Claude Code Docs
- Todo Lists - Claude Code Docs
- Best practices - Claude Code Docs
- Context windows - Claude Platform Docs
- Issue #13112 - Auto-Compact causes context loss
- Issue #13929 - Auto-compact fails, blocking manual compaction
- Issue #19471 - CLAUDE.md instructions ignored after compaction
- Issue #26160 - CLAUDE.md loaded but not reliably followed
- Issue #17530 - Failing to follow explicit CLAUDE.md instructions
- Issue #24987 - Only root CLAUDE.md is loaded
- Ian Paterson - Stop Claude Code from Lobotomizing Itself Mid-Task
- Alexander Golev - Claude Saves Tokens, Forgets Everything
- Albert Sikkema - Why I Shrunk Claude Code's Context Window Back to 200k
- HyperDev - How Claude Code Got Better by Protecting More Context
- Scott Crawford - Why Claude Code Forgets Everything
- okhlopkov.com - Claude Code /compact: What It Does, What Survives
- Claude Code Guide - The Handoff Protocol That Saves 10 Minutes Every Session
- Build This Now - How to Fix Claude Code Running Out of Context
- Albert Nahas - Your CLAUDE.md Instructions Are Being Ignored
- Damian Galarza - Understanding Claude Code's context window
- aipricing.guru - Claude Code token overhead
- getunblocked.com - Claude Code context window
- cc.bruniaux.com - Compact vs Clear
- mindstudio.ai - Claude Code compact command context management
- Evan Dong - 10 Battle-Tested Claude Code Practices
- AnastasiyaW/claude-code-config - session handoff rule
- scpedicini - Full CLAUDE.md Sample File
- luongnv89/claude-howto - memory load order
- Context7 - Claude Code
Практикум «Старт»
Три дня живой практики: от идеи до работающего проекта по ссылке
2 000 ₽старт 5 августа, 18:00 МСК

