Контекст и компактация
У каждой модели есть контекстное окно — фиксированный бюджет токенов, в который должны поместиться системный промпт, ваши файлы памяти, определения инструментов, навыки и вся беседа до текущего момента. Долгие сессии его заполняют. Command Code управляет этим бюджетом за вас: показывает, куда именно уходят токены (/context), автоматически сжимает беседу прогрессивными уровнями до переполнения окна, восстанавливается сам, когда запрос возвращается с ошибкой «prompt too long», и отслеживает, сколько токенов компактация вернула за сессию.
Эта страница — полный справочник: окно, разбивка /context, уровни автокомпактации, /compact и /compact-mode, учёт экономии, автоматическое восстановление, переключение моделей и привычки, которые держат контекст компактным с самого начала.
Контекстное окно
Всё, что модель видит в одном запросе, списывается с одного бюджета:
- Системный промпт — идентичность Command Code, поведение и инструкции по безопасности.
- Память — ваши файлы
AGENTS.mdво всех уровнях памяти, которые существуют. - Вкус (taste) — ваш
taste.md, когда изучение вкуса включено. - Определения инструментов — схема каждого встроенного инструмента плюс по одной схеме на каждый подключённый MCP-инструмент.
- Навыки и субагенты — загруженный каталог навыков и определения агентов.
- Сообщения — сама беседа: ваши ходы, ходы модели и каждый результат инструмента (чтение файлов, вывод shell, результаты поиска). Именно это и растёт.
Размер окна зависит от модели: переключитесь через /model, и бюджет изменится вместе с ней. Command Code читает лимит активной модели заново при каждой проверке, поэтому переключение посреди сессии сразу пересчитывает всё описанное ниже.
Индикатор в строке статуса
Чтобы понять, где вы находитесь, не нужно запускать команду. Маленький индикатор контекста рядом с полем ввода скрыт, пока места много, и появляется, когда до порога автокомпактации остаётся 20 процентных пунктов (сам порог срабатывает на 90% окна — см. ниже), в виде небольшой полосы с обратным отсчётом оставшихся процентов. На моделях с очень большим окном он раньше показывает простой текстовый счётчик токенов, как только использование переходит за ~180k токенов — намёк на то, что /compact стоит запустить ради качества ответов задолго до того, как окну в 1M начнёт что-то угрожать.
/context: куда уходят токены
Запустите /context в любой момент, чтобы получить полный отчёт по окну:
- Полоса прогресса — использованные токены, лимит модели, оставшиеся токены и процент, окрашенный по степени давления (норма → предупреждение на 50% → опасность на 80%). Цифры опираются на данные, сообщённые API в последнем запросе, когда они доступны; до первого запроса (или сразу после возобновления сессии) это локальные оценки, и представление об этом сообщает.
- Расстояние до автокомпактации — как только использование превышает 40%, появляется строка с примерной оценкой, сколько токенов осталось до срабатывания уровня суммаризации («~52k until auto-compact»), и её тон становится тревожнее по мере приближения.
- Разбивка по разделам — по строке на каждый сегмент, от большего к меньшему:
| Строка | Что измеряет |
|---|---|
| System prompt | Собранный системный промпт, измеренный по разделам сервером в момент сборки промпта (на первом ходу используется вычисленный остаток). |
| Memory | Ваши файлы памяти. Если вы правили AGENTS.md после последнего запроса, строка помечается (modified, refreshes next request). |
| Taste | taste.md, если он есть. |
| System tools | Все схемы встроенных инструментов с их количеством. |
| MCP | Каждая схема подключённого MCP-инструмента, с именами серверов. |
| Skills | Загруженные записи каталога навыков. |
| Subagents | Загруженные определения агентов. |
| Messages | Сама беседа — с количеством сообщений пользователя и ассистента. |
- Подсказки — зависящие от контекста советы, построенные по реальным цифрам:
/compactдо срабатывания уровня суммаризации, предупреждение, когда беседа занимает большую часть окна, замечание, когда схемы MCP-инструментов становятся большой постоянной нагрузкой, количество изображений (~1.5k токенов каждое) или совет начать свежую сессию после очень долгой.
Автокомпактация
Command Code сжимает реактивно, прогрессивными уровнями, привязываясь к тому, насколько прямо сейчас заполнено окно активной модели: число токенов, которое провайдер сообщил за последний завершённый ход, плюс оценка всего, что добавилось после (результаты инструментов, steering, ваш следующий промпт, причём изображения считаются по ~1.5k токенов каждое). Когда достоверного сообщённого числа нет — свежая или возобновлённая сессия, модель, чьи запросы постоянно падают, или провайдер, который не сообщает usage — вместо этого оценивается весь ожидающий транскрипт. Поэтому компактация срабатывает и для моделей, которые никогда не дают пригодного сигнала об использовании. Проверка выполняется перед каждым вызовом модели; каждый уровень включается, только когда давление перешло его порог.
window used fires
──────────────────────────────────────────────
0% ┤ quiet
┆
40% ┤ /context starts warning
┆
50% ┤━ TIER 1: keep last 20 tool calls fast only
┆
80% ┤━ TIER 2: keep last 10 tool calls fast only
┆
90% ┤━ TIER 3: summarize older turns always
┆
100% ┤ overflow (never reached)Уровни 1 и 2 выполняются, только когда /compact-mode установлен в fast. В режиме по умолчанию ничего не происходит до 90%, затем уровень 3 суммирует.
| Уровень | Срабатывает при | Что делает | Когда работает |
|---|---|---|---|
| 1 | ≥ 50% окна | Обрезает транскрипт до последних 20 вызовов инструментов (только если их больше 20) | Только при режиме компактации fast |
| 2 | ≥ 80% | Обрезает до последних 10 вызовов инструментов | Только при режиме компактации fast |
| 3 | ≥ 90% | Суммирует старые сообщения в передаточный бриф | Всегда, в любом режиме компактации |
Уровни 1–2: обрезка вызовов инструментов
Уровни обрезки чистые и не используют модель: они удаляют целые пары tool_use/tool_result — начиная с самых старых — и ничего больше. Ваши сообщения и текст модели выживают; отбрасывается только устаревший вывод инструментов (старые чтения файлов, старый вывод команд). Эти уровни работают, только если /compact-mode установлен в fast; в режиме по умолчанию Command Code сразу переходит к суммаризации на 90%.
Уровень 3: суммаризация
На 90% Command Code делает настоящий вызов модели, который сжимает старую часть беседы в структурированный передаточный бриф — цель, проход по вашим ходам, работа в процессе, ожидающие задачи, затронутые файлы, принятые решения, встреченные ошибки и точная точка возобновления. Бриф заменяет старые сообщения; в транскрипте вы увидите его с префиксом «This is an auto-compacted summary of the earlier conversation…».
Суммаризация намеренно консервативна:
- Недавний хвост выживает дословно: примерно последние 30k токенов беседы никогда не суммируются (и никогда не меньше последних 3 сообщений), разрез идёт по чистой границе хода — активный обмен всегда выживает целиком.
- Содержимое навыков исключено из любого уровня: инструкции загруженного навыка вставляются заново намеренно и должны продолжать управлять сессией, поэтому сообщения навыков переносятся через компактацию дословно — их никогда не обрезают и не сворачивают в сводку.
- Изображения сохраняются дословно: сводка не может воспроизвести пиксели, поэтому граница сохранения сдвигается к первому изображению, и всё после него остаётся как есть.
- Старые сводки никогда не питают новые: предыдущий бриф компактации отбрасывается и заменяется, а не суммируется повторно.
- Сбой не ломает работу, есть запасные варианты: меньше 5 старых сообщений → суммировать нечего, транскрипт остаётся нетронутым. Вызов суммаризатора повторяется при временных ошибках и один раз переключается на вторую модель, если upstream модели компактации недоступен; если сводку всё равно получить не удалось, Command Code откатывается к обрезке вызовов инструментов уровня 2, а не оставляет окно полным. Сбой никогда не теряет беседу.
- Неэффективные проходы берут паузу: когда проход почти ничего не возвращает (очень плотная беседа или слишком мало старого содержимого для суммирования), Command Code ждёт, пока беседа вырастет, вместо повторного суммирования на каждом ходу. Сбой суммаризатора — другое дело: его повторяют на следующем ходу.
- Файлы скретчпада индексируются, а не теряются: бриф несёт небольшой манифест файлов скретчпада сессии, которые остаются на диске (только имена и метаданные), так что после компактации модель всё ещё знает, что там есть.
Ваш исходный журнал никогда не перезаписывается
Компакция меняет то, что отправляется модели, а не то, что хранится. Журнал сессии работает только на добавление: компактация записывается отдельной записью в дереве сессии, которая указывает на сводку и на первое сохранённое сообщение. Полная история остаётся на диске — восстановление чекпоинта, /rewind и форк сессии по-прежнему видят всё.
Когда это срабатывает
Когда включается уровень суммаризации, вы увидите строку статуса во время его работы, а затем запись в ленте с результатом:
Compacted conversation. Saved ~41,300 tokens (total ~112,000 this session).Каждое событие компактации — автоматическое, ручное или при смене модели — сообщает свою экономию и накопленный итог сессии. Итоги сохраняются в метаданных сессии по мере накопления, поэтому переживают перезапуск: возобновите через --resume, и цифра «total ~N this session» продолжит считаться с того места, где остановилась.
/compact: компактация по вашему выбору
/compact запускает ту же суммаризацию уровня 3 немедленно, не дожидаясь порога 90%. Лучшее время для запуска — до срабатывания автокомпактации: подсказки /context начинают предлагать её на 50% и настойчиво — после 80%, потому что компактация в выбранный вами момент (граница задачи, сразу после достижения вывода) даёт суммаризатору чистую историю для сжатия, а не то состояние середины задачи, в котором её застанет порог.
После компактации сообщаемое использование контекста начинается заново относительно окна модели; если сжимать было нечего, вы увидите «Conversation is already compact.» Сбой сообщает об ошибке и оставляет беседу нетронутой.
/compact-mode: насколько агрессивна автокомпактация
/compact-mode выбирает одну из двух стратегий автокомпактации (доступна также в /config; выбор сохраняется в вашей пользовательской конфигурации):
| Режим | Поведение |
|---|---|
default | Только суммаризация. Ничего не происходит до 90%, затем уровень 3 суммирует. Максимальная точность контекста — каждый результат инструмента остаётся доступным, пока окно действительно не кончится. |
fast | Все три уровня. Старые результаты инструментов начинают обрезаться на 50% (оставить последние 20) и 80% (оставить последние 10) ещё до суммаризации на 90%. Более компактные запросы и более дешёвые ходы в долгих сессиях с обилием инструментов — ценой того, что старый вывод инструментов раньше уходит из контекста. |
Настройка читается на лету — переключение посреди сессии применяется со следующей проверки.
Автоматическое восстановление и переключение моделей
«Prompt too long» больше не проваливает ход
Если провайдер отклоняет запрос как слишком длинный — оценки использования разошлись или один гигантский результат инструмента вылетел за окно — Command Code не показывает ошибку и не останавливается. Ошибка классифицируется, окно сжимается (суммируется) на месте, и запрос повторяется один раз с уже компактным транскриптом. Наружу выходит только второй подряд сбой. На практике сначала срабатывают реактивные уровни, и этот путь остаётся редким; он существует, чтобы крайний случай стоил вам одного повтора, а не целого хода.
/model пересчитывает — и может заранее обрезать
Пороги уровней — это доли окна текущей модели, перечитываемые при каждой проверке, поэтому смена модели мгновенно сдвигает ориентиры:
- Переключение на большее окно просто даёт больше запаса; ничего не трогается.
- Переключение на строго меньшее окно, когда использование уже выше 90% от нового окна, немедленно запускает проактивную суммаризацию, ещё до вашего следующего сообщения, — чтобы первый запрос к меньшей модели не мог её переполнить. Уведомление о переключении сообщает, сколько вернула обрезка, и это учитывается в накопленной экономии сессии, как любая другая компактация.
Как держать контекст компактным
Компакция — это страховка, а не стратегия. Самый дешёвый токен — тот, который никогда не попал в окно:
- Делегируйте исследование субагентам: субагент, запущенный инструментом
agent(например, встроенный агент Explore), сжигает своё контекстное окно на чтение файлов и поиск, а в ваше попадает только его финальный отчёт. Проход по кодовой базе в основной сессии может втянуть в окно десятки тысяч токенов содержимого файлов; тот же проход, делегированный, стоит несколько сотен. /clearмежду несвязанными задачами: закончили один кусок работы и начинаете другой? Свежая беседа лучше, чем волочить за собой результаты инструментов старой задачи, — и лучше, чем заставлять будущую сводку двух несвязанных задач конкурировать за место. Используйте/clearна настоящих границах (файлы памяти и навыки перезагружаются, беседа начинается заново).- Указывайте путь к файлу вместо вставки: вставленный в промпт большой файл остаётся в окне навсегда — он часть вашего сообщения и переживает любой уровень обрезки. Путь позволяет Command Code прочитать файл как результат инструмента, который потом могут вернуть обрезка уровней 1–2 и сводки уровня 3. То же касается вывода модели: попросите её писать большие промежуточные результаты в скретчпад (или файлы проекта) и передавать пути — манифест скретчпада при компактации хранит индекс того, что лежит на диске, а сами данные никогда не занимают окно.
- Отключайте MCP-серверы, которыми не пользуетесь: схемы инструментов каждого подключённого сервера — постоянная нагрузка на каждый запрос.
/contextпоказывает, сколько стоит каждый из них;/mcpими управляет. - Следите за изображениями: каждое изображение в контексте стоит ~1.5k токенов и намеренно никогда не выпадает из сводки.
- Сжимайте на границах, а не под давлением:
/compactсразу после завершения подзадачи даёт лучший бриф, чем автокомпактация в середине следующей.
См. также
- Слэш-команды — полный справочник команд, включая
/context,/compact,/compact-mode,/clearи/model. - Пользовательские агенты — субагенты с собственными контекстными окнами.
- Чекпоинты — история сессии только на добавление, которую компактация никогда не перезаписывает.
- Память — файлы памяти, учитываемые в разбивке
/context.
Источник
Сверено с оригиналом 13 ноября 2026.