Skip to Content
Руководство для пользователейВозможностиПоследующие предложения

Предложения продолжения

Qwen Code может предсказывать, что вы хотите напечатать дальше, и отображать это в виде текста-заполнителя в поле ввода. Эта функция использует вызов LLM для анализа контекста разговора и создания естественного предложения следующего шага.

Эта функция работает полностью (end-to-end) как в CLI, так и в Web Shell. Генерация происходит автоматически на стороне сервера: после каждого чисто завершённого хода (причина остановки демона end_turn — ходы с cancelled, refusal, max_tokens или max_turn_requests предложение не получают) демон отправляет предложение в поток сессии (включено по умолчанию; установите ui.enableFollowupSuggestions в false, чтобы отключить), а композер Web Shell уже подключает хук useDaemonFollowupSuggestion, поэтому предложения отображаются и принимаются без дополнительной интеграции на стороне хоста.

Как это работает

После завершения ответа Qwen Code в поле ввода через короткую задержку (~300 мс) появляется предложение в виде затемнённого текста-заполнителя. Например, после исправления ошибки вы можете увидеть:

> run the tests

Предложение генерируется путём отправки истории разговора модели, которая предсказывает, что бы вы естественно напечатали дальше. Если ответ содержит явную подсказку (например, Tip: type post comments to publish findings), предлагаемое действие извлекается автоматически.

Принятие предложений

КлавишаДействие
TabПринять предложение и вставить его в поле ввода
EnterПринять предложение и вставить его в поле ввода
Стрелка вправоПринять предложение и вставить его в поле ввода
Любой вводОтклонить предложение и вводить как обычно

Enter заполняет поле ввода, а не отправляет, поэтому принятие предложенной слеш-команды (например, /clear) никогда не выполняется автоматически — вы отправляете её сами повторным нажатием Enter.

Когда появляются предложения

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

С обеих сторон требуются все следующие условия:

  • В разговоре произошло как минимум 2 хода модели
  • Режим одобрения не установлен в plan
  • Функция включена (по умолчанию включена — установите ui.enableFollowupSuggestions в false, чтобы отключить)

Интерактивный CLI дополнительно требует:

  • Сессия интерактивна — CLI никогда не генерирует предложения в своём неинтерактивном режиме или режиме SDK
  • Модель завершила свой ответ (не во время потоковой передачи)
  • В последнем ответе нет ошибок
  • Нет ожидающих диалогов подтверждения (например, подтверждение shell, разрешения). Один рендерер читает это состояние напрямую; другой управляет генерацией по собственным ожидающим вызовам инструментов и не видит диалог shell, открытый в середине хода, поэтому предложение всё ещё может быть сгенерировано за ним. Ничего не отображается в этом случае — композер размонтирован, пока диалог открыт — поэтому стоимость составляет лишь вызов генерации за этот ход, а не предложение, которое можно случайно выполнить

Демон дополнительно требует:

  • Ход завершился чисто, то есть причина остановки — end_turn — отменённый, отклонённый или обрезанный ход предложение не получает
  • Автоматические ходы не удерживаются стоп-гардом todo, и никакой промпт в очереди не ожидает выполнения
  • Последняя запись в истории разговора — ответ модели

Поскольку генерация на стороне демона происходит для каждого клиента, подключённого к сессии, она происходит и для клиентов, которые не могут отобразить результат. Такой клиент — headless- или SDK-потребитель демоновской сессии, не то же самое, что собственный неинтерактивный режим CLI, описанный выше, — должен установить ui.enableFollowupSuggestions в false, чтобы не платить за ход LLM ради вывода, который он отбрасывает.

Предложения автоматически отклоняются, когда:

  • Вы начинаете печатать
  • Начинается новый оборот модели
  • Предложение принято

Быстрая модель

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

Через команду

/model --fast qwen3-coder-flash

Или используйте /model --fast (без имени модели), чтобы открыть диалог выбора.

Через settings.json

{ "fastModel": "qwen3-coder-flash" }

Быстрая модель используется для предложений подсказок и спекулятивного выполнения. Если не настроена, основная модель разговора используется как фолбэк.

Примечание о стоимости: Быстрая модель снижает задержку, но не всегда снижает стоимость. Генерация предложений использует кэш префиксов вашего разговора (через ui.enableCacheSharing, по умолчанию включён) — но кэш префиксов привязан к модели. Направление fastModel на другую модель создаёт отдельный кэш, поэтому вся история разговора повторно тарифицируется как некэшированный ввод для быстрой модели. В длинных разговорах использование по умолчанию (основная модель + общий кэш) может быть дешевле, чем быстрая модель, поскольку большая часть истории тарифицируется по льготной ставке кэшированного ввода. Устанавливайте fastModel, когда задержка важнее стоимости за ход.

Режим размышлений/рассуждений автоматически отключается для всех фоновых задач (генерация предложений и спекуляция), независимо от настройки размышлений вашей основной модели. Это позволяет не тратить токены на внутренние рассуждения, которые не нужны для этих задач.

Конфигурация

Эти настройки можно задать в settings.json:

НастройкаТипПо умолчаниюОписание
ui.enableFollowupSuggestionsbooleantrueВключить или отключить предложения продолжения
ui.enableCacheSharingbooleantrueИспользовать форкнутые запросы с учётом кэша для снижения затрат (экспериментально)
ui.enableSpeculationbooleanfalseСпекулятивно выполнять предложения перед отправкой (экспериментально)
fastModelstring""Модель для предложений подсказок и спекулятивного выполнения

Пример

{ "fastModel": "qwen3-coder-flash", "ui": { "enableFollowupSuggestions": true, "enableCacheSharing": true } }

Мониторинг

Использование модели для предложений отображается в выводе /stats — показываются токены, потреблённые быстрой моделью для генерации предложений.

Быстрая модель также отображается в выводе /about в строке “Fast Model”.

Качество предложений

Предложения проходят через фильтры качества, чтобы обеспечить их полезность:

  • Должно быть 2–12 слов (для CJK: 2–30 символов), не более 100 символов всего
  • Не может быть оценочным (“выглядит хорошо”, “спасибо”)
  • Не может использовать голос ИИ (“Позвольте мне…”, “Я…”)
  • Не может быть несколькими предложениями или содержать форматирование (markdown, переносы строк)
  • Не может быть мета-комментарием (“нечего предложить”, “тишина”)
  • Не может быть сообщениями об ошибках или префиксами (“Предложение: …”)
  • Однословные предложения разрешены только для распространённых команд (yes, commit, push и т.д.)
  • Команды со слешем (например, /commit) всегда разрешены как однословные предложения
Last updated on