Рано или поздно каждый, кто работает с Claude Code, сталкивается с одним и тем же: агент, который час назад безошибочно правил код, начинает забывать договорённости, повторно читает уже прочитанные файлы и предлагает решения, противоречащие обсуждённому в начале сессии. Инструмент не сломался — переполнился контекст.
Контекст — главный ограниченный ресурс в работе с агентом. Не скорость и не лимиты подписки, а объём информации, который модель удерживает одновременно. Почти все практические приёмы работы с Claude Code сводятся к вопросу: что должно быть в контексте прямо сейчас, а что только мешает. После этого урока вы будете понимать, как устроено контекстное окно, что его заполняет и почему деградация качества предсказуема.
Что уже умеем / что добавим
К этому моменту вы установили Claude Code, разобрались с интерфейсом, режимами разрешений и slash-командами, научились откатывать изменения через /rewind. Всё это — управление действиями агента. Теперь мы переходим к управлению его памятью: разберём, что модель вообще «знает» в момент ответа и откуда это знание берётся.
Что вы узнаете в рамках статьи
- Что такое контекстное окно и почему модель ничего не помнит между запросами
- Из чего складывается контекст: что загружается до вашего первого сообщения и что добавляется по ходу работы
- Почему качество ответов падает по мере заполнения окна
- Что такое токены и как оценивать расход контекста
- Почему сессии независимы друг от друга и что это меняет в работе
Ключевые термины
- Токен — единица, в которой измеряется текст для модели. Примерно соответствует куску слова: одно английское слово — это 1–2 токена, русское — обычно больше.
- Контекстное окно — максимальный объём в токенах, который модель может обработать за один запрос. Для большинства моделей Claude — 200 000 токенов; отдельные модели поддерживают окно в 1 миллион.
- Контекст — всё, что фактически находится в окне прямо сейчас: системный промпт, инструкции проекта, ваши сообщения, ответы Claude, содержимое прочитанных файлов и вывод выполненных команд.
- Стартовый контекст — то, что загружается автоматически при запуске сессии, до того как вы что-либо написали.
- Сессия — сохранённый локально диалог, привязанный к рабочей директории. Каждая новая сессия стартует с чистым контекстным окном.
- Кэширование промпта — механизм, при котором API переиспользует уже обработанное начало запроса вместо повторного счёта.
Модель не помнит ничего между запросами
Первое, что нужно принять: модель не обладает памятью. Каждый ваш вопрос — отдельный сетевой запрос, и модель не имеет доступа к предыдущим. Иллюзию непрерывного диалога создаёт Claude Code, а не модель.
Работает это так: при каждом сообщении Claude Code заново отправляет весь накопленный контекст — системный промпт, инструкции проекта, все предыдущие сообщения и результаты вызова инструментов — и дописывает в конец ваше новое сообщение.
Отсюда следует практическое наблюдение: с каждым шагом запрос становится длиннее. Двадцатое сообщение несёт с собой девятнадцать предыдущих плюс всё, что Claude успел прочитать. Именно поэтому длинная сессия работает медленнее и обходится дороже короткой при тех же задачах.
Чтобы это не выливалось в полную переобработку каждый раз, работает кэширование промпта: API сопоставляет начало нового запроса с уже обработанным и переиспользует совпавшую часть. Чтение из кэша стоит примерно 10 процентов от обычной цены входных токенов. Но кэш работает только на неизменившемся начале: если поменялось что-то в начале, всё последующее пересчитывается заново.
Что лежит в контексте до вашего первого слова
Заблуждение новичка: «пока я ничего не написал, контекст пуст». На деле к моменту появления приглашения ввода в окно загружено уже довольно много:
- Системный промпт — базовые инструкции о поведении, инструментах и формате ответов. Вы его не видите.
- Автопамять — заметки, которые Claude сохранил себе в прошлых сессиях по этому репозиторию. Загружаются первые 200 строк или 25 КБ файла
MEMORY.md, что наступит раньше. - Информация об окружении — рабочая директория, платформа, оболочка, версия ОС, признак git-репозитория, текущая ветка и последние коммиты.
- Имена доступных инструментов — чтобы Claude знал, что может вызвать.
- Пользовательский
~/.claude/CLAUDE.md— ваши личные инструкции для всех проектов. - Проектный
CLAUDE.md— инструкции конкретного репозитория. К этому файлу мы вернёмся в уроке 3.5.
В типичном проекте всё вместе занимает порядка нескольких тысяч токенов. На фоне окна в 200 000 это немного, но это уже не ноль — и это то, за что вы платите на каждом запросе.
Как контекст растёт во время работы
Дальше окно заполняется тем, что делает агент. Каждое действие оставляет след:
# Ваш промпт — обычно десятки токенов
> Разберись, почему падает тест авторизации
# Дальше в контекст добавляется:
# Read src/auth/session.ts ~2400 токенов
# Read src/auth/session.test.ts ~1600 токенов
# Grep "refreshToken" ~600 токенов
# Вывод npm test ~1200 токенов
# Рассуждения и ответ Claude ~800 токенов
Обратите внимание на пропорцию: ваш промпт — самая маленькая часть. Основной объём создают чтения файлов и вывод команд. Один вызов npm test с подробным логом может стоить дороже, чем вся ваша переписка за сессию.
Отсюда два практических правила. Первое: задача вроде «разберись, как устроен проект» может съесть десятки тысяч токенов на чтении ненужных файлов. Второе: вывод команд стоит ограничивать — запуск одного конкретного теста вместо всего набора экономит и время, и контекст.
Почему переполненное окно ухудшает результат
Когда окно заполняется, качество падает — и падает раньше, чем упирается в жёсткий предел. Модель распределяет внимание по всему содержимому окна. Чем больше в нём материала, не относящегося к задаче, тем выше шанс, что важная инструкция из начала диалога потеряется среди тысяч токенов логов и старых версий файлов.
Проявляется это узнаваемо: Claude перечитывает уже прочитанный файл, забывает соглашение из начала сессии, возвращается к отвергнутому подходу. Каждый такой симптом — сигнал вмешаться в состояние контекста.
Отсюда важное следствие: инструкции, данные только в переписке, ненадёжны. Они живут в истории сообщений и исчезают вместе с ней при сжатии контекста. Правилам, которые должны действовать всегда, место не в чате, а в файле проекта.
# Ненадёжно: живёт только в истории этой сессии
> Всегда используй двойные кавычки в JS-файлах
# Надёжно: загружается заново в каждой сессии
# записать в CLAUDE.md проекта
Каждая сессия начинается с нуля
Сессии независимы. Открывая новую, вы получаете чистое окно: истории вчерашнего диалога в нём нет. Claude Code сохраняет диалоги на диск, к ним можно вернуться, но по умолчанию новая сессия о них не знает.
Отсюда основной способ переносить знания между сессиями: то, что должно быть известно всегда, записывается в файлы, загружаемые при старте. Всё остальное — одноразовый рабочий контекст, который не жалко потерять.
Частые ошибки
- Считать, что Claude «помнит» прошлые разговоры. Модель не помнит ничего между запросами, а новая сессия стартует с пустым окном. Знание, которое должно пережить перезапуск, надо записать в файл, а не проговорить в чате.
- Вести всю работу в одной бесконечной сессии. Контекст накапливает содержимое всех задач подряд, включая неудачные попытки, и смешанный контекст ухудшает результат по любой из них.
- Просить агента «изучить проект» без границ. Ненаправленное исследование читает сотни файлов и заполняет окно ненужным материалом. Ограничивайте область поиска директорией или файлом.
- Запускать полный набор тестов ради одного случая. Многотысячный лог попадает в контекст целиком, тогда как один нужный тест даёт тот же сигнал за долю стоимости.
Наиболее частые вопросы
- Сколько текста помещается в 200 000 токенов? — Ориентировочно это несколько сотен страниц обычного текста или средняя кодовая база небольшого сервиса. Точное соотношение зависит от языка: русский текст расходует токены заметнее английского.
- Контекст расходуется только когда Claude читает файлы? — Нет. Расходуется всё: ваши сообщения, ответы Claude, вывод команд, стартовые инструкции. Чтения файлов и вывод команд просто обычно самые объёмные.
- Влияет ли размер контекста на скорость ответа? — Да. Чем длиннее запрос, тем дольше он обрабатывается. Кэширование промпта заметно смягчает эффект, но не убирает его полностью.
- Что произойдёт, когда окно всё-таки заполнится? — Claude Code не оборвёт сессию: он автоматически освободит место, сначала убрав старый вывод инструментов, затем сжав историю в сводку. Как это работает и как этим управлять — в уроке 3.3.
- Можно ли посмотреть, сколько контекста занято сейчас? — Да, для этого есть команда
/context. Ей посвящён следующий урок.
Итоги
Вы разобрались с основным ограничением, вокруг которого выстроена вся практика работы с агентами: модель не хранит память между запросами, контекст заполняется ещё до вашего первого сообщения, основной объём создают чтения файлов и вывод команд, а переполненное окно ухудшает результат раньше, чем упирается в предел. Тема не самая эффектная, но именно она объясняет большую часть странного поведения агента, на которое жалуются новички.
Пока это была теория. В следующем уроке мы посмотрим на контекст глазами инструмента: команда /context покажет живую картину вашей сессии — сколько занято, чем именно и сколько осталось. С этого момента управление контекстом перестанет быть догадками и станет измеримым.