Контекстное окно: почему Claude тупит

Замечал, что в конце длинного разговора с Claude Code он начинает давать странные ответы? Как будто забыл что делали раньше, повторяет уже сделанное, или делает что-то противоположное договорённостям?

Это контекстное окно заполняется. Не баг, не сбой — так работают все языковые модели без исключения. Разобравшись с этим один раз, ты перестанешь злиться и начнёшь работать так, чтобы этой проблемы почти не возникало.

Что такое контекстное окно

Хороший способ понять это — оперативная память компьютера против жёсткого диска. RAM хранит то, с чем компьютер работает прямо сейчас: открытые вкладки, запущенные программы. Жёсткий диск хранит всё остальное — терабайты файлов, к которым ты обратишься когда-нибудь потом.

Контекстное окно — это RAM Claude. Всё, что он может «видеть» прямо сейчас: вся переписка с начала сессии, все файлы, которые он читал, все свои ответы. За пределами этого окна для него не существует ничего.

У Claude Code окно — 200 000 токенов. Примерно 150 000 слов, или около 500 страниц текста. Звучит как много. Но длинный разговор с чтением десятков файлов съедает это пространство быстрее, чем кажется.

Что такое токен

Токен — единица текста для AI-модели. Грубо: одно слово = 1 токен (короткое) или 2 токена (длинное). Знак препинания, пробел, перенос строки — отдельные токены. На русском токенов больше чем на английском при одинаковом смысле — потому что у моделей словарь сильнее заточен под английский. Подсчёт реальный: «Привет, Claude» — это около 5–6 токенов.

Три зоны заполненности

0–50%
Зелёная зона
Работает отлично. Помнит всё, отвечает точно. Можно работать спокойно.
50–70%
Оранжевая зона
Начинает упрощать. Ответы становятся более общими. Хорошее время для /compact.
70–85%
Красная зона
Заметно хуже. Может забывать детали задачи. После 85% — автоматическое сжатие.

Процент заполненности можно видеть прямо в терминале — через плагин statusline. Как его поставить, разберём ниже в этой же статье.

Проблема «потеря середины»

Есть ещё одна особенность, о которой важно знать. Исследования показывают: языковые модели хорошо помнят начало и конец контекста, но плохо воспроизводят то, что было в середине.

На практике это выглядит так: вы обсуждали важный архитектурный выбор в середине длинного разговора — и Claude в конце сессии действует так, как будто этого разговора не было. Технически он его «видит», но практически — не учитывает.

Решение простое: важный контекст держи либо в начале (CLAUDE.md делает это автоматически), либо повторяй в свежих сообщениях ближе к концу переписки.

Автокомпакт — что происходит автоматически

Когда контекст достигает примерно 85%, Claude Code автоматически сжимает историю разговора. Это называется autocompact.

Что он сохраняет: текущую задачу, последние сообщения, важные решения. Что выбрасывает: подробные объяснения, повторяющиеся обмены репликами, детальные промежуточные шаги.

После автокомпакта Claude продолжает работу — но ты можешь заметить, что он «забыл» какую-то специфику. В интерфейсе появится сообщение о том, что сжатие произошло.

Важно

Автокомпакт лучше, чем ничего, но хуже, чем ручной /compact с инструкциями. Потому что Claude сам решает что важно, а что нет — и не всегда угадывает правильно.

/compact — ручное сжатие

Лучше не ждать автокомпакта — запускать /compact самому, когда видишь что разговор затянулся. Команда сжимает историю и освобождает место в контексте.

Умный способ — явно сказать что сохранить:

▸ В чате Claude Code
/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%] — понимаешь где находишься.

Установка:

▸ В чате Claude Code
/plugins
# найти "statusline" и установить

После установки в строке терминала появится индикатор. Теперь ты замечаешь оранжевую зону раньше, чем Claude начинает деградировать — и успеваешь сделать /compact вовремя.

[Скриншот: строка терминала с индикатором statusline — например [58%] рядом с промптом]

Правила которые помогают

Три правила которые работают на практике. Не требуют ничего сложного — только привычки.

▸ Рабочие правила
Правило 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 будет работать стабильно весь день.