Длинная сессия Qwen Code: сжатие, автокомпактация и окно контекста
Когда сессия Qwen Code приближается к пределу контекста, не стоит сразу очищать историю или завышать размер окна. Сначала сохраните код и состояние задачи, выберите обычное или быстрое сжатие, проверьте продолжение работы, а затем разместите autoCompactThreshold и contextWindowSize на уровне конфигурации, который действительно применяется.
Содержание

Если длинная сессия Qwen Code почти заполнила контекст, не начинайте с /clear и не увеличивайте contextWindowSize наугад. Надёжный порядок другой: сначала выяснить, упёрлись ли вы в контекст или в квоту аккаунта, затем сохранить код и состояние задачи, выбрать способ сжатия, проверить результат и только после этого исправлять порог автокомпактации и размер окна модели.
Команды и параметры ниже сверены 11 октября 2026 года с документацией команд Qwen Code, справочником настроек и описанием Model Providers. Возможности зависят от установленной версии, поэтому сначала проверьте свой клиент.
Сначала отделите переполненный контекст от исчерпанной квоты
Обе ситуации прерывают работу, но лечатся по-разному.
| Признак | Вероятная причина | Что делать |
|---|---|---|
/context показывает высокую загрузку, либо запрос не помещается в контекст | Заполнено окно текущей сессии | Сохранить состояние и выполнить сжатие |
| Провайдер сообщает о балансе, тарифе, квоте, частоте запросов или ограничении аккаунта | Квота сервиса или API | Проверить кабинет провайдера; сжатие квоту не увеличит |
Общий размер окна в /context явно не совпадает с реальным лимитом сервиса | Qwen Code использует неверное предположение об окне | Исправить значение и уровень contextWindowSize |
| После сжатия контекст уменьшился, но ошибка квоты осталась | Проблема не в контексте | Проверить ключ, баланс, тариф и rate limit |
contextWindowSize влияет на расчёты Qwen Code и момент запуска сжатия. Он не расширяет реальный лимит модели или API и не восстанавливает лимиты подписки.
Проверьте версию и текущую загрузку
До любых изменений выполните:
/status
/help
/model
/doctor
/context detail
Дождитесь завершения каждой команды. Версию проверьте через /status, текущий выбор модели — через /model, авторизацию и окружение — через /doctor, а разбивку контекста — через /context detail.
Если в вашей версии нет /summary, /compress-fast или нужного ключа, сначала сверьтесь с официальной инструкцией установки Qwen Code. Настройка, которой ещё нет в установленном клиенте, не заработает от повторного редактирования JSON.
Перед сжатием сохраните код и смысл задачи
Сжатие меняет историю диалога. Оно не сохраняет за вас незакоммиченный код и не гарантирует, что в итоговый конспект попадёт каждое неявное ограничение.
Зафиксируйте состояние кода
Для Git-проекта выполните:
!git status --short
!git diff --stat
При необходимости просмотрите полный diff или сделайте контрольный коммит. Вы должны точно знать, какие файлы изменены, какие не отслеживаются и какие проверки ещё не запускались.
Зафиксируйте состояние задачи
Попросите текущую сессию подготовить явную передачу контекста, не меняя файлы:
Не изменяя файлы, составь контрольную запись задачи:
- конечная цель
- что уже сделано
- изменённые файлы и ключевые правки
- ограничения, которые нельзя нарушить
- запущенные проверки и их результаты
- нерешённые вопросы
- единственный следующий шаг и команда проверки
После ручной проверки выполните:
/summary
Без указания собственного пути результат сохраняется в:
.qwen/PROJECT_SUMMARY.md
/summary не заменяет историю чата. Это отдельный, неразрушающий файл состояния. Его можно повторно подать в сессию для проверки:
@.qwen/PROJECT_SUMMARY.md Проверь цель, ограничения, изменённые файлы, результаты проверок и следующий шаг. Только перечисли пропуски, код не меняй.
Если вы рассчитываете на welcome-back, оставьте путь по умолчанию: документация предупреждает, что файл в произвольном месте этот механизм не обнаружит.
Как выбрать между /compress, /compress-fast, /summary и /clear
| Команда | Что происходит | Когда выбирать | Риск |
|---|---|---|---|
/summary | Состояние проекта записывается в файл, история не заменяется | Перед сжатием, перерывом или новой сессией | Конспект нужно проверить вручную |
/compress | История заменяется сгенерированным резюме | Много решений, ограничений и зависимостей | Операция разрушительна для старой истории; детали могут потеряться |
/compress-fast | Без AI удаляются старые tool output и thinking-фрагменты | Сессию раздули логи и результаты инструментов, а цель уже записана | В удаляемых старых tool output могут быть сведения, нужные позже; сначала внесите их в checkpoint и проверьте |
/clear | История полностью очищается | Вы сознательно начинаете заново из внешнего чекпойнта | Старый контекст исчезает |
Для сложной разработки используйте последовательность: /summary → ручная проверка → /compress. /compress-fast разумен, когда обычное сжатие не завершается, модельный запрос временно недоступен или большую часть окна занимают устаревшие результаты инструментов.
Не путайте /summarize с сохранением файла. В актуальной документации это псевдоним /compress, то есть история также заменяется.
Полный процесс, который можно проверить
1. Подготовьте входные данные
До сжатия у вас должны быть:
- цель и неизменяемые ограничения;
- список изменённых файлов и Git-состояние;
- выполненные и отложенные проверки;
- следующий шаг и критерий успеха;
- проверенный
.qwen/PROJECT_SUMMARY.md.
2. Запустите сжатие
Для сложной задачи:
/compress
Для сессии, переполненной результатами инструментов, при наличии хорошего чекпойнта:
/compress-fast
Дождитесь окончания операции и возврата приглашения ввода. Не отправляйте новую команду на изменение кода, пока сжатие продолжается.
3. Сохраните результат
Нужно сохранить два независимых результата:
.qwen/PROJECT_SUMMARY.md— состояние задачи;- рабочее дерево и Git diff — реальные изменения кода.
Сжатый чат не должен быть единственным источником правды. Файлы, тесты и diff показывают, что действительно произошло.
4. Проверьте успех
Снова выполните:
/context
Загрузка должна заметно снизиться. Затем задайте контрольные вопросы без разрешения менять файлы:
Пока не изменяй файлы. Ответь:
1. Какова единственная текущая цель?
2. Какие ограничения нельзя менять?
3. Какие файлы уже изменены?
4. Какие проверки пройдены, а какие ещё не запускались?
5. Каков следующий шаг и его признак успеха?
Сравните ответ с PROJECT_SUMMARY.md, git status и журналом тестов. После совпадения выполните только один небольшой следующий шаг и запустите самую близкую проверку.
5. Не теряйте задачу при ошибке
/compressзавершился ошибкой, но чекпойнт есть: попробуйте/compress-fast; если и он не помог, откройте новую сессию и подключите@.qwen/PROJECT_SUMMARY.md.- После сжатия пропало ограничение: немедленно подайте файл резюме, исправьте пропуск и попросите повторить контрольную запись до новых правок.
- Контекст уменьшился, а запрос всё ещё отклонён: проверьте, не относится ли сообщение к балансу, подписке, rate limit или авторизации.
- Сервер по-прежнему сообщает о переполнении: возможно,
contextWindowSizeбольше реального лимита провайдера.
Исправьте порог автокомпактации: старый ключ больше не действует
Текущий ключ выглядит так:
{
"context": {
"autoCompactThreshold": 0.85
}
}
Допустимо значение больше 0 и не больше 1; значение по умолчанию — 0.85. Это верхняя граница срабатывания, а не обещание точного запуска на 85%: при небольшом окне сжатие может начаться раньше, чтобы осталось место для резюме.
Удалённый и молча игнорируемый путь — model.chatCompression.contextPercentageThreshold:
{
"model": {
"chatCompression": {
"contextPercentageThreshold": 0.7
}
}
}
При миграции перенесите настройку в context.autoCompactThreshold и сначала понаблюдайте за стандартным 0.85. Снижайте порог только если сжатие систематически запускается слишком поздно. Не повышайте его лишь ради более долгой истории.
Выберите правильный scope настройки
Два основных файла:
~/.qwen/settings.json— для всех проектов текущего пользователя;.qwen/settings.jsonв корне репозитория — только для этого проекта, с приоритетом над пользовательским файлом.
Общую модель и одинаковую политику храните на пользовательском уровне. Особый лимит конкретного репозитория или более раннюю автокомпактацию — на уровне проекта.
Документированный порядок приоритета: значения по умолчанию, системные defaults, пользовательский файл, проектный файл, системные overrides, переменные окружения и аргументы командной строки. Если пользовательский файл «не работает», ищите более высокий слой.
Команда /config меняет простые значения, например:
/config context.autoCompactThreshold=0.85
Но она записывает изменения в ~/.qwen/settings.json. Для проектного значения редактируйте .qwen/settings.json напрямую.
Проверить синтаксис можно так:
!python3 -m json.tool ~/.qwen/settings.json >/dev/null
!python3 -m json.tool .qwen/settings.json >/dev/null
Вторая команда нужна только при наличии проектного файла.
Разместите contextWindowSize на реально используемом уровне
Указывайте фактический лимит выбранной модели у конкретного провайдера, а не рекламный максимум и не желаемое число. Завышенное значение задерживает сжатие; заниженное вызывает преждевременные предупреждения.
Модель выбрана из modelProviders
Тогда значение должно находиться в соответствующей записи провайдера. 128000 ниже — только пример структуры:
{
"modelProviders": {
"openai": [
{
"id": "your-model-id",
"name": "Your model",
"baseUrl": "https://provider.example/v1",
"envKey": "OPENAI_API_KEY",
"generationConfig": {
"contextWindowSize": 128000
}
}
]
},
"security": {
"auth": {
"selectedType": "openai"
}
},
"model": {
"name": "your-model-id"
}
}
Запись provider-модели изолирована: верхний model.generationConfig не дополняет её отсутствующие поля. То же правило действует для любого пользовательского OpenAI-compatible endpoint — например, для BetterToken как одного из возможных API-сервисов — после проверки поддержки клиента, ресурса и выбранной модели.
Модель не выбрана из modelProviders
Только для runtime-модели без provider-записи используйте верхний уровень:
{
"model": {
"generationConfig": {
"contextWindowSize": 128000
}
}
}
Не записывайте разные значения в оба места. Проверьте текущую модель через /model, авторизацию — через /doctor, определите источник модели и оставьте один правильный вариант.
Типичные сбои и порядок проверки
| Симптом | Причина | Исправление и проверка |
|---|---|---|
/compress-fast неизвестна | Старая версия | /status, обновление по официальной инструкции, затем /help |
| Старый порог ничего не меняет | Устаревший ключ игнорируется | Перенести в context.autoCompactThreshold |
| Пользовательская настройка не действует | Её перекрывает проектный или системный слой | Проверить .qwen/settings.json, системную политику и параметры запуска |
| При 0.85 сжатие начинается раньше | Малому окну нужен резерв под резюме | Проверить реальное окно и нагрузку через /context |
/context показывает слишком большое окно | Неверный contextWindowSize или уровень | Записать эффективный лимит в generationConfig выбранного provider |
| Сервер всё равно отклоняет длинный запрос | Настройка выше реального серверного лимита | Уменьшить до эффективного значения и повторить проверку |
| После сжатия остаётся ошибка квоты | Баланс, тариф или rate limit | Проверить кабинет провайдера, не менять контекст |
| Модель не помнит следующий шаг | Чекпойнт неполон или резюме потеряло детали | Подключить PROJECT_SUMMARY.md, сверить Git и тесты |
Четыре правила для длинных сессий
- Не путайте контекст с квотой. Сжатие уменьшает историю, но не добавляет лимит аккаунта.
- Сохраняйте до сжатия. Git фиксирует код,
/summary— состояние задачи. - Для сложной преемственности выбирайте
/compress, для раздутых tool output —/compress-fast. После обоих вариантов нужна проверка. - Настройки должны лежать на действующем уровне. Используйте
context.autoCompactThreshold, а окно provider-модели задавайте внутри её записиmodelProviders.
Начните с /status, /model, /doctor, /context detail и /summary, проверьте файл состояния и лишь затем запускайте сжатие. Даже если резюме окажется несовершенным, у вас останутся проверяемые код и план продолжения.