Контекстное окно: почему Claude тупит
Замечал, что в конце длинного разговора с Claude Code он начинает давать странные ответы? Как будто забыл что делали раньше, повторяет уже сделанное, или делает что-то противоположное договорённостям?
Это контекстное окно заполняется. Не баг, не сбой — так работают все языковые модели без исключения. Разобравшись с этим один раз, ты перестанешь злиться и начнёшь работать так, чтобы этой проблемы почти не возникало.
Что такое контекстное окно
Хороший способ понять это — оперативная память компьютера против жёсткого диска. RAM хранит то, с чем компьютер работает прямо сейчас: открытые вкладки, запущенные программы. Жёсткий диск хранит всё остальное — терабайты файлов, к которым ты обратишься когда-нибудь потом.
Контекстное окно — это RAM Claude. Всё, что он может «видеть» прямо сейчас: вся переписка с начала сессии, все файлы, которые он читал, все свои ответы. За пределами этого окна для него не существует ничего.
У Claude Code окно — 200 000 токенов. Примерно 150 000 слов, или около 500 страниц текста. Звучит как много. Но длинный разговор с чтением десятков файлов съедает это пространство быстрее, чем кажется.
Токен — единица текста для AI-модели. Грубо: одно слово = 1 токен (короткое) или 2 токена (длинное). Знак препинания, пробел, перенос строки — отдельные токены. На русском токенов больше чем на английском при одинаковом смысле — потому что у моделей словарь сильнее заточен под английский. Подсчёт реальный: «Привет, Claude» — это около 5–6 токенов.
Три зоны заполненности
Процент заполненности можно видеть прямо в терминале — через плагин statusline. Как его поставить, разберём ниже в этой же статье.
Проблема «потеря середины»
Есть ещё одна особенность, о которой важно знать. Исследования показывают: языковые модели хорошо помнят начало и конец контекста, но плохо воспроизводят то, что было в середине.
На практике это выглядит так: вы обсуждали важный архитектурный выбор в середине длинного разговора — и Claude в конце сессии действует так, как будто этого разговора не было. Технически он его «видит», но практически — не учитывает.
Решение простое: важный контекст держи либо в начале (CLAUDE.md делает это автоматически), либо повторяй в свежих сообщениях ближе к концу переписки.
Автокомпакт — что происходит автоматически
Когда контекст достигает примерно 85%, Claude Code автоматически сжимает историю разговора. Это называется autocompact.
Что он сохраняет: текущую задачу, последние сообщения, важные решения. Что выбрасывает: подробные объяснения, повторяющиеся обмены репликами, детальные промежуточные шаги.
После автокомпакта Claude продолжает работу — но ты можешь заметить, что он «забыл» какую-то специфику. В интерфейсе появится сообщение о том, что сжатие произошло.
Автокомпакт лучше, чем ничего, но хуже, чем ручной /compact с инструкциями. Потому что Claude сам решает что важно, а что нет — и не всегда угадывает правильно.
/compact — ручное сжатие
Лучше не ждать автокомпакта — запускать /compact самому, когда видишь что разговор затянулся. Команда сжимает историю и освобождает место в контексте.
Умный способ — явно сказать что сохранить:
/compact Сохрани: текущую задачу — добавить форму регистрации. Мы используем React, форма отправляет на /api/register. Уже сделали: валидацию email. Осталось: обработка ошибок.
Если написать просто /compact без аргументов — Claude сожмёт сам по своему усмотрению. Иногда этого достаточно, но с инструкцией результат надёжнее.
Что делать в оранжевой зоне
Если видишь что statusline показывает 50%+ и Claude начал хуже понимать — не жди пока станет хуже. Промпт в одну строку:
Контекст уже на 60%, давай сожмём через /compact и продолжим. Сохрани: текущую задачу, важные решения, архитектуру. Можешь убрать: подробные обмены про CSS и черновики которые уже переделаны.
Сразу после сжатия — продолжаешь работу. Свежий контекст, та же задача, никаких потерь.
/clear — чистый старт
Команда /clear очищает всю историю разговора полностью. Файлы при этом не трогаются — исчезает только переписка.
Когда использовать: задача закончена и ты берёшься за что-то принципиально другое. Новая задача — новый чат.
Это как закрыть вкладку в браузере и открыть новую. Сайты (файлы) остаются, история браузера (переписка) — нет.
/rewind — откатить всё назад
Команда /rewind — это двойной Escape. Она откатывает назад и историю чата, и реальные изменения в файлах, которые Claude сделал.
Это редкая возможность: большинство «отмен» убирают только текст в интерфейсе, но не трогают уже изменённые файлы. /rewind откатывает и то и другое.
Когда использовать: Claude сделал что-то не то, и ты хочешь вернуться к состоянию до этого. Важное ограничение: работает только в рамках текущей сессии. Для более старых точек возврата — git.
Именно поэтому полезно делать git commit после каждой завершённой задачи — это твои точки сохранения. /rewind закрывает последние несколько шагов, git закрывает всё остальное.
Statusline — видеть заполненность в терминале
Statusline — это плагин, который показывает процент заполненности контекста прямо в строке терминала. Видишь [42%] — понимаешь где находишься.
Установка:
/plugins # найти "statusline" и установить
После установки в строке терминала появится индикатор. Теперь ты замечаешь оранжевую зону раньше, чем Claude начинает деградировать — и успеваешь сделать /compact вовремя.
Правила которые помогают
Три правила которые работают на практике. Не требуют ничего сложного — только привычки.
Правило 1: одна задача = одна сессия Закончил задачу → /clear → новый чат для следующей. Правило 2: большие задачи — декомпозируй "Сделай мне e-commerce" → разбей на 10 задач по одной за раз. Правило 3: не раздувай инструменты Каждый подключённый MCP постоянно занимает ~2000 токенов. Подключай только те, что реально используешь.
Первое правило — самое важное. Привычка делать /clear после каждой завершённой задачи меняет качество работы радикально. Новая задача в свежем контексте всегда даёт лучший результат, чем продолжение длинного хвоста переписки.
Opus, Sonnet, Haiku — когда что выбрать
Контекстное окно одинаковое у всех моделей Claude. Но скорость, глубина рассуждений и цена — разные. Вот когда что использовать:
| Модель | Характер | Когда использовать |
|---|---|---|
Claude Opus |
Умнее, медленнее, дороже | Сложные задачи: архитектура, сложная отладка, стратегические решения |
Claude Sonnet |
Баланс скорости и качества | Большинство задач: написание кода, рефакторинг, создание контента |
Claude Haiku |
Быстро, дёшево | Простые запросы: поиск, краткие ответы, задачи с большим объёмом |
По умолчанию Claude Code использует Sonnet — оптимальный вариант для повседневной работы. Переключить модель можно через команду или просто словами:
# Через команду: /model opus # переключиться на Opus /model sonnet # вернуться на Sonnet /model haiku # на Haiku для простых задач # Или просто словами: Эта задача сложная — переключись на Opus. Достаточно Haiku, нужно быстро прогнать поиск по документации.
Подписка Pro даёт доступ ко всем моделям — выбираешь свободно под задачу. Лайфхак: для архитектурного брейншторма или сложной отладки явно проси Opus, остальное делай на Sonnet — экономишь токены без потери качества.
Контекстное окно — не враг, а инструмент. Следи за заполненностью через statusline, делай /compact когда доходишь до оранжевой зоны, /clear между задачами — и Claude будет работать стабильно весь день.