Вики · Котёл контекста
Котёл
Котёл (контекстное окно) — это всё, что модель видит в момент ответа. Не «память о разговоре», а один длинный текст, который собирается заново на каждый запрос. Качество падает по мере заполнения, и падает молча: ошибки нет, отказа нет, есть уверенный ответ, игнорирующий правило из первого сообщения.
Что уже загружено до вашей первой реплики
Ещё до того, как вы что-то напечатали, в котле лежит:
- системный промпт — базовые инструкции агента, вы их не видите и не контролируете;
- правила проекта —
CLAUDE.mdвсех уровней и правила из.claude/rules/безpaths(Скрижаль проекта); - автопамять — первые 200 строк или 25 КБ индекса
MEMORY.md, что наступит раньше; - описания скиллов — по одной строке на скилл, полное содержимое грузится только при вызове;
- имена MCP-инструментов — схемы по умолчанию отложены и подтягиваются по требованию;
- сведения об окружении — каталог, платформа, оболочка, состояние git.
Что растёт по ходу работы
Интуиция говорит, что котёл забивает переписка. Обычно это неправда. Растут выводы инструментов: прочитанный файл, результат поиска, дамп команды. Один файл на 2400 токенов перевешивает десяток ваших реплик. Плюс правила с paths: подгружаются автоматически, когда агент читает подходящий файл, а хуки добавляют текст через поле additionalContext.
Отсюда единственно верный первый шаг: /context — раскладка по слоям. Лечение зависит от того, какой слой распух, и для большинства слоёв сжатие переписки не даёт ничего.
Четыре способа освободить место
| Приём | Команда | Что происходит |
|---|---|---|
| Сжать всё с фокусом | /compact <инструкции> | лента заменяется структурной выжимкой; вы говорите, что обязано выжить |
| Сжать половину | /rewind → Summarize from here / up to here | сжимается только часть разговора, вторая остаётся дословной |
| Начать заново | /clear | пустой контекст; знание о проекте поднимается с диска |
| Сжимать раньше | /autocompact 500k | задаёт, до какой заполненности расти перед автоматическим проходом |
/clear не стоит ничего, /compact стоит запроса по всей сжимаемой истории. Если тема закончилась — чистить дешевле, чем конспектировать.
Что переживает сжатие, а что нет
| Механизм | После компакции |
|---|---|
| Системный промпт и стиль вывода | не меняются, они вне истории сообщений |
Корневой CLAUDE.md, автопамять, план из режима плана | перечитываются с диска |
Правила с paths: и вложенные CLAUDE.md | перезагрузятся, когда агент снова прочитает подходящий файл |
| Прочитанные файлы | перечитываются до пяти, начиная с самых свежих по времени изменения |
| Тела вызванных скиллов | вставляются заново: до 5000 токенов на скилл и 25 000 суммарно, старые выпадают первыми |
| Инструкции, сказанные только в разговоре | суммаризуются вместе со всем остальным |
Два следствия, которые стоят целого юнита. Первое: файл тяжелее 5000 токенов возвращается не содержимым, а ссылкой — в ленте он помечен как Referenced file, а не Read. Второе: важные инструкции скилла лучше держать в начале SKILL.md, потому что обрезка при повторной вставке оставляет начало файла (Почему артефакт молчит).
Если контекст обязан выжить — его место не в реплике, а в CLAUDE.md или в хуке SessionStart с матчером compact, который дописывает нужное после каждого сжатия (Стражи).
Делегировать вместо сжатия
Самый сильный приём вообще не про сжатие. Субагент работает в собственном окне: он может прочитать шесть тысяч токенов файлов и вернуть вам выжимку на четыреста. Это не оптимизация на проценты, а другой порядок расхода — см. Тени.
Если места мало не потому, что вы неаккуратны, а потому, что задача действительно большая, — окно можно расширить моделью с миллионным контекстом, и порог автосжатия сдвинется вместе с ним: Ручка усилия.
Сверено по
Прокачаться: юниты