Управление контекстом: не дайте ему «потерять память» и не сожгите все token
📚 Навигация по серии: Предыдущая статья 18 · Руководство по использованию CLAUDE.md научила вас записывать стандарты проекта в такое «руководство для новых сотрудников». В этой статье мы поднимемся на уровень выше и поговорим о том, как это руководство вместе с вашими диалогами и прочитанными файлами собирается на одном рабочем столе, который называется «контекстное окно» (context window). Как правильно управлять этим рабочим столом и не переполнить его — вот наша сегодняшняя тема.
Когда только начинаешь работать с Claude Code, очень легко совершить одну довольно глупую ошибку.
Взявшись за незнакомый проект среднего размера и думая: «пусть он сначала прочитает весь репозиторий, чтобы лучше понимать общую картину», я бросил ему: «Прочитай все файлы этого проекта, а затем расскажи мне архитектуру».
И каков же был результат? Он действительно начал читать один файл за другим, терминал безостановочно прокручивался, и после прочтения более двадцати файлов он заметно замедлился и стал тупить. Когда я попросил его исправить баг входа в систему, он в ответ спросил: «В каком файле находится модуль auth, о котором вы говорите?» — а ведь он читал этот файл всего десять минут назад. Работа еще не была закончена, а он уже «потерял память», и при этом сгорела куча token.
Разобравшись в ситуации, я понял: контекстное окно — это не тот случай, когда чем больше, тем лучше; если оно переполнено, модель становится глупее. Сегодня мы подробно разберем этот «рабочий стол»: что это такое, что происходит при его переполнении, как использовать /compact и /clear для наведения порядка, как в реальном времени отслеживать использование, и как экономить token с самого начала.
Прочитав эту статью, вы получите:
- Аналогию, которая позволит вам полностью понять суть «контекстного окна» и то, что на самом деле происходит, когда оно переполняется.
- Четкое понимание (в виде таблицы), когда использовать
/compact(сжатие), когда/clear(очистка), а когда просто открывать новую сессию. - Способ использования
/contextи/usageдля отслеживания конкретных действий и ожидаемых результатов. - Пять привычек для экономии token, которые пригодятся каждый день (все они основаны на реальном опыте ошибок).
- Понимание того, что на самом деле делает «автоматическое сжатие» (auto-compact) в фоновом режиме, чтобы вы больше не пугались его внезапных прерываний.
01 Контекстное окно: Насколько велик «рабочий стол» Claude
Сперва зафиксируем это самое важное понятие.
Контекстное окно (context window) — это общий объем всего контента, который Claude может одновременно «видеть» в рамках одной сессии. Оно измеряется в token (минимальная единица тарификации обработки текста моделью).
В нем хранятся не только напечатанные вами слова, а целая куча вещей. В официальном context-window.md все это четко расписано, а я переведу это на человеческий язык:
| Что находится на рабочем столе | Когда попадает | Сколько занимает |
|---|---|---|
| Системный промпт (правила поведения Claude) | При каждом запуске, вы этого не видите | Фиксированный объем |
| Ваш CLAUDE.md (глобальный + проектный) | Полностью загружается при запуске | Зависит от размера файла |
| Автоматическая память (auto memory) | Загружается при запуске (есть лимит) | Средне |
| Каждая написанная вами фраза | Добавляется по мере того, как вы отправляете сообщения | Обычно очень мало |
| Каждый прочитанный им файл | Добавляется после каждого прочтения | Самая большая часть, сгорает быстрее всего |
| Вывод команд, результаты работы инструментов | Добавляется после каждого вызова инструмента | Журналы / большие файлы очень быстро заполняют место |
Видите? Вы думали, что диалог состоит в основном из «того, что вы говорите», но на самом деле львиную долю занимают прочитанные им файлы и вывод команд. Когда я в начале попросил его прочитать больше двадцати файлов, это было равносильно тому, что рабочий стол внезапно завалили другими инженерными чертежами, и для «работы» осталось совсем мало свободного места.
Аналогия: размер рабочего стола. Представьте, что Claude — это плотник, работающий за столом. Стол имеет определенный размер, и чертежи, инструменты, полуфабрикаты, заметки, которые вы ему передаете, — все это должно быть разложено на этом столе. Если стол большой, он может одновременно держать в поле зрения много вещей; если стол завален, ему придется отодвинуть старые чертежи в сторону — и информацию с этих чертежей он «забудет».
Насколько велик этот стол? Зависит от используемой модели. У большинства моделей это порядка 200 тысяч token, у некоторых (например, с пометкой [1m]) — до 1 миллиона. Но запомнить одно правило полезнее, чем помнить цифры:
Каким бы большим ни был стол, у него есть границы, и чем сильнее он забит, тем глупее становится модель.
💡 Краткий итог: Контекстное окно — это рабочий стол Claude, и основную часть на нем занимают прочитанные им файлы, а не ваши слова; у стола есть границы, и когда он переполняется, из него начинает «выпадать» ранняя информация.
02 Что произойдет, если рабочий стол будет переполнен: Он станет медленнее, глупее и даже «потеряет память»
Это самое важное утверждение, которое нужно запомнить из этой статьи: контекст не означает, что чем больше, тем лучше; при переполнении до определенной степени производительность Claude заметно снизится.
Почему? Чем больше вещей на столе, тем сильнее распыляется «внимание» модели, и ранее добавленный нерелевантный контент начинает мешать текущей задаче. В индустрии это явление называют «деградацией контекста» (context rot).
Как узнать, что произошла «деградация»? Я обобщил несколько типичных симптомов на практике, и при совпадении с любым из них следует быть начеку:
- Он начинает противоречить сам себе, забывая решения, которые вы уже согласовали ранее.
- Ответы становятся расплывчатыми и общими, деталей становится все меньше, он начинает говорить правильные, но бесполезные вещи.
- Он বারবার спрашивает о том, на что вы уже ответили (как тот вопрос «в каком файле находится auth» из начала).
- Вы дважды исправляете его на один и тот же вопрос, а он продолжает топтаться на месте.
Например, при написании скрипта для миграции данных мы общались и отлаживали его больше часа, и ближе к концу он снова предложил ошибочный вариант решения, который мы вместе отклонили в первой половине беседы. Дело не в том, что его способности ухудшились, а в том, что контекст был загрязнен мусором, накопившимся за час отладки.
Так что же будет делать Claude, если стол действительно переполнится? Он запустит автоматическое сжатие (auto-compact) — об этом подробно в разделе 05. Пока просто знайте: это пассивное действие для спасения, время которого выбираете не вы, и оно может внезапно прервать вас в разгар выполнения критической задачи.
Поэтому правильный подход такой: не ждите автоматического сжатия, управляйте этим проактивно. Как управлять? Читайте дальше.
💡 Краткий итог: Переполнение контекста вызывает «деградацию контекста» — противоречия, расплывчатость, повторяющиеся вопросы; вместо того чтобы постоянно исправлять ошибки на загрязненном столе, лучше проактивно его очистить.
03 Две метлы: сжатие /compact против очистки /clear
Для наведения порядка на рабочем столе Claude Code дает вам две метлы, которые служат совершенно разным целям, и их ни в коем случае нельзя путать.
/compact: «упаковывает и сжимает» вещи на столе, но оставляет их
/compact (сжатие) делает следующее: собирает текущую длинную историю диалога в краткую выжимку, затем заменяет исходную дословную запись этой выжимкой, чтобы можно было продолжить работу над той же задачей.
Аналогия: собрать кучу черновиков со стола в одну страницу с основными пунктами. Вы обсуждали с коллегами два часа, и стол завален забракованными эскизами. /compact — это как обобщить эту кучу эскизов в один лист с тезисами «В итоге мы приняли А, отклонили Б, следующий шаг — В», освободив стол, но сохранив выводы.
Важный момент — он поддерживает инструкции, указывающие, что именно следует сохранить:
/compact 保留认证流程的架构决策和已确认的 API 格式,丢掉调试中的无效尝试Официальный пример на английском из costs.md: /compact Focus on code samples and API usage (сосредоточься на примерах кода и использовании API) — смысл тот же.
Когда использовать /compact: Задача еще не закончена, но контекст почти переполнен, и при этом то, что обсуждалось ранее, еще понадобится. Например, когда функционал сделан наполовину, архитектурные решения, принятые на ранней стадии, нельзя потерять, но кучу выводов команд из промежуточных попыток методом проб и ошибок можно выбросить.
/clear: полная очистка, начать все сначала
/clear (очистка) действует жестче: полностью удаляет всю историю диалога, что равносильно началу совершенно новой сессии.
Но не пугайтесь — /clear не затронет ваши CLAUDE.md и автоматическую память, они так же автоматически загрузятся в новой сессии. Вы теряете только «содержание, обсуждавшееся в этом разговоре», стандарты проекта и долгосрочная память остаются.
Аналогия: переключиться на новую задачу и просто убрать все со стола перед началом работы. Предыдущая задача завершена, следующая задача с ней никак не связана, так что полная очистка стола эффективнее, чем оставление старого мусора, который будет мешать.
Официальная документация costs.md прямо рекомендует: при переключении на не связанную работу используйте /clear, чтобы начать заново, потому что «устаревший контекст будет тратить token на каждое последующее сообщение».
Здесь стоит установить для себя железное правило: если вы дважды исправили модель на один и тот же вопрос, а она все равно делает неправильно, не тратьте время в этой сессии, просто сделайте /clear, и с учетом уроков, извлеченных из этих двух попыток, напишите новый, более точный промпт и спросите заново. Чистый стол + лучший промпт почти всегда выигрывают у продолжения возни в загрязненном контексте — это самый ценный опыт, подтвержденный на практике.
💡 Краткий итог:
/compact— это «упаковать, сжать и оставить для дальнейшего использования»,/clear— это «полностью очистить, сменить задачу и начать заново»; если исправили дважды, а результата нет — не сомневайтесь, используйте/clear.
04 Мониторинг использования: используйте /context и /usage, чтобы видеть, сколько осталось места на столе
Оценивать на глаз, «почти ли заполнилось», слишком ненадежно. Claude Code предоставляет две команды, чтобы вы могли посмотреть точные цифры, не путайте их.
/context: посмотреть, чем заполнен стол
/context/context использует цветную диаграмму для визуализации текущего использования контекста в реальном времени и распределяет его по категориям: сколько занимает системный промпт, сколько CLAUDE.md, сколько различные сервисы MCP, сколько история диалога, а также дает советы по оптимизации. Официальный context-window.md ясно указывает: если хотите узнать реальное использование вашего контекста в любой момент времени, запустите /context.
Полезная привычка: перед началом большой задачи сначала проверьте «основу» с помощью /context. Если вы обнаружите, что какой-то сервис MCP занимает большой кусок впустую или CLAUDE.md раздут до немыслимых размеров, сначала приберитесь, а затем приступайте к работе.
В комплекте также есть команда
/memory, которая используется для проверки того, какие именно файлы CLAUDE.md и автоматической памяти были загружены при запуске — используйте её, когда подозреваете, что модель что-то «запомнила неправильно».
/usage: посмотреть, сколько token / денег сгорело за эту сессию
/usageБлок Session в верхней части /usage показывает статистику использования token в текущей сессии, а также пересчитывает её в доллары на основе локальных оценок. В официальном costs.md пример выглядит примерно так:
Total cost: $0.55
Total duration (API): 6m 19.7s
Total duration (wall): 6h 33m 10.2s
Total code changes: 0 lines added, 0 lines removedОбъяснение ожидаемого вывода: Total cost — это ориентировочная стоимость данной сессии (рассчитанная локально, может отличаться от реального счета; за авторитетными цифрами обращайтесь в Claude Console); Total duration (API) — это фактическое время, потраченное на вызовы модели; Total duration (wall) — это общее время, в течение которого вы держали эту сессию открытой.
⚠️ Напоминание: Стоимость сессий для пользователей с подписками Pro / Max включена в подписку, эта сумма в долларах не имеет прямого отношения к вашему счету, просто воспринимайте её как относительный показатель масштаба. Конкретные тарифные планы и биллинг мы уже обсуждали в статье 06, в этой статье мы смотрим на token только с точки зрения «контекста».
Лень каждый раз набирать вручную? Официальная версия также поддерживает постоянное отображение использования контекста в строке состояния (statusline), чтобы оно всегда было на экране. Конкретный метод настройки см. в официальной документации statusline, в этой статье мы не будем на этом останавливаться.
💡 Краткий итог:
/contextпоказывает, «чем занят стол»,/usageпоказывает, «сколько token / денег сгорело в этот раз»; перед началом большой задачи сначала взгляните на основу с помощью/context.
05 Автоматическое сжатие (auto-compact): оно спасает ситуацию, но не стоит на него полагаться
Ранее мы несколько раз упоминали «автоматическое сжатие», в этом разделе мы объясним, что это такое.
auto-compact (автоматическое сжатие) — это встроенный механизм спасения в Claude Code: когда контекст близок к достижению верхнего предела окна, он автоматически обобщает историю диалога в выжимку, освобождая место для продолжения работы и избавляя вас от прямой ошибки переполнения. В официальном costs.md оно ставится в один ряд с prompt caching как один из двух способов «автоматической оптимизации затрат» в Claude Code.
Аналогия: автоматическая выгрузка на конвейере. Если конвейерная лента вот-вот переполнится, система сама сгребает и уплотняет старый материал, чтобы не заклинило всю линию. Вам не нужно ничего делать, это срабатывает автоматически.
Звучит очень заботливо, но я советую вам не полагаться на это по двум причинам:
Во-первых, время срабатывания выбираете не вы. Вполне возможно, что вы просите модель выполнить какой-то важный шаг, и в этот момент стол оказывается заполненным, она «хлоп» и останавливается, чтобы сначала выполнить сжатие — весь ритм работы сбивается.
Во-вторых, автоматическое сжатие — это сжатие «без инструкций». В момент его срабатывания контекст максимально переполнен, а модель реагирует медленнее всего. В этот момент она сама решает, что выбросить, а что оставить, и очень вероятно, что она сожмет и удалит то, что вы считаете важным.
Поэтому правильный подход — действовать проактивно: когда вы чувствуете, что диалог становится длинным, а /context показывает высокую загрузку, сначала самостоятельно сделайте /compact и добавьте инструкцию, чтобы указать, что важно сохранить. У проактивного сжатия есть два преимущества: вы сами выбираете время, и вы сами решаете, что сохранить.
Есть еще один, более простой способ: записать предпочтения сжатия прямо в CLAUDE.md. Официальный costs.md предлагает добавить такой фрагмент в CLAUDE.md:
# Compact instructions
When you are using compact, please focus on test output and code changesТаким образом, при каждом сжатии (будь то ручное или автоматическое) модель будет в приоритетном порядке сохранять указанный вами контент, что является своеобразной страховкой для автоматического сжатия. Например, если в CLAUDE.md часто используемого проекта написать «при сжатии сохраняй утвержденные архитектурные решения и соглашения по интерфейсам», то вам не придется каждый раз напоминать об этом вручную.
💡 Краткий итог: Автоматическое сжатие нужно для спасения в крайнем случае, но оно прерывает вас и может удалить важную информацию; вместо того чтобы ждать его, лучше проактивно делать
/compactс инструкциями или жестко прописать предпочтения сохранения в CLAUDE.md.
06 Пять приемов экономии token: с самого начала не давайте столу так быстро заполняться
Наводить порядок на столе — это исправление ситуации, но лучшая стратегия — не давать ему так быстро переполняться. Следующие пять приемов пригодятся вам каждый день, каждый из них основан на концепции «контекста» и не зависит от стоимости тарифа.
Прием первый: не тренируйтесь на больших проектах. Как уже говорилось в статье 07 — на этапе обучения и экспериментов создайте игрушечный проект из трех-пяти файлов. Файлов мало, он читает мало, стол чистый, и вы четко видите, что он сделал. Проблема с «потерей памяти после прочтения двадцати файлов» в начале статьи была вызвана тем, что мы сразу взялись за незнакомый репозиторий среднего размера.
Прием второй: используйте @ для точного указания файлов, не заставляйте его искать по всему репозиторию. Вместо того чтобы сказать «исправь баг входа» и заставлять его перерывать файлы один за другим, лучше сказать прямо: @src/api/auth.ts 修复 401 的问题. Официальный costs.md говорит очень прямо: расплывчатые запросы вызывают обширное сканирование, конкретные запросы позволяют работать эффективно с минимальным чтением файлов. Символ @ приковывает его взгляд прямо к нужному файлу.
Прием третий: не наваливайте слишком много требований за один раз. Если разом вывалить пять не связанных между собой задач, прочитанные файлы и сгенерированный вывод быстро переполнят стол. Разбейте их на пять небольших вопросов и делайте их по одному, тогда стол всегда будет оставаться чистым.
Прием четвертый: разбивайте длинные задачи и очищайте контекст после завершения этапа. Не надейтесь, что большую функцию можно от начала до конца сделать в одной сессии. Сделали относительно независимый этап — используйте /compact для сжатия; переключились на совершенно другую часть — используйте /clear для перезапуска.
Прием пятый: перекладывайте длительные операции на субагентов (subagents). Запуск тестов, просмотр огромных журналов, чтение документации — работу, которая порождает огромное количество вывода, поручайте субагентам: они будут возиться на своих независимых рабочих столах и вернут в ваш основной диалог только краткое изложение выводов. В примере из официального context-window.md субагент прочитал файлы на 6100 token, а вернувшись в основной контекст, занял всего 420 token. Субагенты — это мощный инструмент для экономии контекста, им будет посвящена отдельная статья. (Ссылка будет добавлена позже)
Если сравнить «исправление» и «профилактику», вы поймете, на что стоит направить усилия:
| Действие | Характер | Когда использовать |
|---|---|---|
/compact | Исправление · Сжатие и сохранение | Задача не завершена, контекст загружен, предыдущая информация еще нужна |
/clear | Исправление · Очистка и перезапуск | Переключение на не связанную работу или слишком сильное загрязнение контекста |
Просто открыть новую сессию (выйти и запустить claude) | Профилактика · Полная чистота | Нужен абсолютно чистый стол, даже без следов памяти текущей сессии |
@ для точного указания файлов | Профилактика · Меньше читать файлы | Это нужно делать при каждой постановке задачи |
| Игрушечные проекты для тренировки | Профилактика · Меньше с самого начала | На этапе обучения и экспериментов |
| Субагент для длинных задач | Профилактика · Изоляция вывода | Запуск тестов / просмотр журналов / чтение документации |
💡 Краткий итог: Наведение порядка на столе — это исправление, а вот читать меньше файлов, разбивать задачи на мелкие и отдавать их субагентам — это профилактика; мышечная память, которую нужно выработать в первую очередь, — это использовать
@для точного указания файлов при постановке требований.
07 Практика: пройдем процесс управления контекстом за три шага
Если только читать и не пробовать, ничего не запомнишь. Ниже приведен минимальный процесс, который позволит вам своими глазами увидеть, как контекст растет и как /compact его сжимает. Запустите claude в директории любого проекта и следуйте инструкциям.
Шаг первый: сначала посмотрите на основу
После запуска Claude первым делом введите:
/contextОжидание: В терминале будет выведен список текущего использования контекста по категориям — вы увидите, что системный промпт, CLAUDE.md и т.д. уже занимают часть места (наличие занятого места до начала диалога — это нормально), а внизу будет указано общее использование и советы по оптимизации. Запишите это начальное число.
Шаг второй: специально «скормите» ему немного контента и посмотрите на изменения
Попросите его прочитать несколько файлов и проведите несколько раундов общения, например:
读一下这个项目的主要源码文件,给我讲讲整体结构Когда он закончит читать и ответит, введите еще раз:
/contextОжидание: Занятое место заметно увеличится, цифры в колонках истории диалога и файлов станут больше. Это и есть процесс «заполнения рабочего стола», который вы увидели своими глазами.
Шаг третий: используйте /compact, чтобы сжать его обратно
/compact 保留这个项目的整体结构结论,丢掉逐个文件的原始内容Ожидание: В терминале появится сообщение вроде «Conversation compacted» (Диалог сжат), сжатие происходит в фоновом режиме, и выжимка не будет выводиться на весь экран. После сжатия введите /context, чтобы посмотреть еще раз: занятое место в колонке истории диалога должно уменьшиться — выводы о структуре он еще помнит, но исходные байты каждого отдельного файла были сжаты в резюме.
Проверка: Запустите /context до и после сжатия, и если количество token в истории диалога сначала высокое, а потом низкое, значит, /compact сработало. Если хотите проверить, что он «не потерял память», спросите: «Какую структуру проекта ты только что резюмировал?», и он должен быть в состоянии ответить.
⚠️ Важная деталь: Сжатие — это операция с потерями. Оно сохраняет указанные вами ключевые моменты и общий ход мыслей, но дословный вывод инструментов из более ранних этапов будет удален. Поэтому для действительно важных выводов возьмите за правило записывать их в CLAUDE.md, как описано в статье 18 — либо попросите Claude «добавить это в CLAUDE.md», либо отредактируйте сами с помощью
/memory. Это надежнее, чем держать все это сжатым в диалоге.
💡 Краткий итог: Выполнив
/context→ скормив контент →/compact→ и снова/context, вы своими глазами увидите, как контекст растет и как сжатие его уменьшает; сравнив количество token в истории диалога до и после, вы поймете, сработало ли это.
08 Резюме
В этой статье мы рассмотрели «контекстное окно» (этот рабочий стол) от начала до конца:
| Что вы узнали | Краткая суть |
|---|---|
| Что такое контекстное окно | Рабочий стол Claude, основную часть которого занимают прочитанные им файлы, а не ваши слова |
| Что будет, если оно переполнится | Вызовет деградацию контекста — замедление, расплывчатость, противоречия, потерю памяти |
/compact | Упаковать и сжать для дальнейшего использования, можно добавить инструкцию, что именно сохранить |
/clear | Полная очистка, смена задачи и перезапуск, не затрагивает CLAUDE.md и память |
/context · /usage | Одно показывает, «чем занято», другое — «сколько сгорело» |
| Автоматическое сжатие | Механизм спасения, но прерывает работу и может удалить важное, лучше действовать проактивно |
| Экономия token | Игрушечные проекты, указание файлов через @, не давать слишком много задач сразу, разбивать задачи, поручать субагентам |
Теперь вы должны уметь: Понимать, что находится в контекстном окне и почему при его переполнении Claude становится глупее; использовать /compact, когда нужно сжатие, и /clear, когда нужно начать заново; отслеживать использование в реальном времени с помощью /context и /usage; и с самого начала применять привычки экономии token при постановке задач, чтобы на столе всегда оставалось свободное место для работы.
В конечном счете, суть управления контекстом сводится к одному: экономно расходовать ограниченное внимание Claude на действительно важные вещи.

На этой картинке контекстное окно сравнивается с рабочим столом: когда он завален файлами и диалогами (на рисунке примерно до 92%), мы используем /compact, чтобы сжать стопку диалогов в одну страницу с основными пунктами (чтобы оставить её для дальнейшей работы), или /clear, чтобы полностью очистить стол (и начать с нуля) — первое сохраняет информацию, второе обеспечивает чистоту.
Следующая статья 20 · Настройка прав доступа — в этой статье мы контролировали, «сколько Claude может запомнить», а в следующей будем контролировать, «сколько он может сделать сам». Чтение файлов, изменение кода, выполнение команд: о чем он должен сначала спросить вас, а что можно разрешить? Как настроить правила доступа, чтобы было и безопасно, и удобно? Оставлю вам вопрос на подумать: согласились бы вы, чтобы он напрямую запускал git push без вашего согласия?