Предложения по продолжению
Qwen Code предсказывает ваш следующий ввод и отображает его в виде ghost text в поле ввода. Эта функция использует вызов LLM для анализа контекста диалога и генерации естественной рекомендации по следующему шагу.
Функция полностью работает в CLI. В WebUI доступны хук и базовые механизмы интерфейса, но хост-приложения должны самостоятельно инициировать генерацию предложений и настраивать состояние followup для их отображения.
Как это работает
После завершения ответа Qwen Code в поле ввода с небольшой задержкой (~300 мс) появляется предложение в виде затемнённого текста. Например, после исправления бага вы можете увидеть:
> run the testsПредложение генерируется путём отправки истории диалога модели, которая предсказывает, что вы введёте дальше. Если ответ содержит явную подсказку (например, Tip: type post comments to publish findings), предлагаемое действие извлекается автоматически.
Принятие предложений
| Клавиша | Действие |
|---|---|
Tab | Принять предложение и вставить его в поле ввода |
Enter | Принять предложение и сразу отправить его |
Right Arrow | Принять предложение и вставить его в поле ввода |
| Любой ввод | Отклонить предложение и продолжить обычный ввод |
Когда появляются предложения
Предложения генерируются при соблюдении всех следующих условий:
- Модель завершила ответ (не во время стриминга)
- В диалоге произошло не менее 2 ответов модели
- В последнем ответе отсутствуют ошибки
- Нет ожидающих подтверждения диалогов (например, подтверждение shell, разрешения)
- Режим подтверждения не установлен в
plan - Функция включена в настройках (включена по умолчанию)
Предложения не отображаются в неинтерактивном режиме (например, headless/SDK).
Предложения автоматически отклоняются, когда:
- Вы начинаете вводить текст
- Начинается новый ответ модели
- Предложение принято
Быстрая модель
По умолчанию для предложений используется та же модель, что и для основного диалога. Чтобы предложения генерировались быстрее и дешевле, настройте отдельную быструю модель:
Через команду
/model --fast qwen3-coder-flashИли используйте /model --fast (без указания имени модели), чтобы открыть диалог выбора.
Через settings.json
{
"fastModel": "qwen3-coder-flash"
}Быстрая модель используется для генерации предложений и спекулятивного выполнения. Если она не настроена, в качестве fallback используется модель основного диалога.
Режим мышления/рассуждений автоматически отключается для всех фоновых задач (генерация предложений и спекулятивное выполнение), независимо от конфигурации мышления вашей основной модели. Это позволяет не тратить токены на внутренние рассуждения, которые не требуются для этих задач.
Конфигурация
Эти параметры можно настроить в settings.json:
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
ui.enableFollowupSuggestions | boolean | true | Включить или отключить предложения по продолжению |
ui.enableCacheSharing | boolean | true | Использовать forked-запросы с учётом кэша для снижения затрат (экспериментально) |
ui.enableSpeculation | boolean | false | Спекулятивно выполнять предложения до отправки (экспериментально) |
fastModel | string | "" | Модель для генерации предложений и спекулятивного выполнения |
Пример
{
"fastModel": "qwen3-coder-flash",
"ui": {
"enableFollowupSuggestions": true,
"enableCacheSharing": true
}
}Мониторинг
Использование модели для предложений отображается в выводе /stats, показывая количество токенов, потреблённых быстрой моделью для генерации предложений.
Быстрая модель также отображается в выводе /about в разделе “Fast Model”.
Качество предложений
Предложения проходят через фильтры качества, чтобы гарантировать их полезность:
- Должно содержать от 2 до 12 слов (CJK: от 2 до 30 символов), общая длина менее 100 символов
- Не должно быть оценочным (“looks good”, “thanks”)
- Не должно использовать стиль ИИ (“Let me…”, “I’ll…”)
- Не должно состоять из нескольких предложений или содержать форматирование (markdown, переносы строк)
- Не должно содержать мета-комментарии (“nothing to suggest”, “silence”)
- Не должно быть сообщениями об ошибках или содержать префиксы (“Suggestion: …”)
- Предложения из одного слова разрешены только для распространённых команд (yes, commit, push и т.д.)
- Slash-команды (например,
/commit) всегда разрешены в качестве предложений из одного слова