Режим Workflow в сессии
Режим Workflow сохраняет предпочтение использовать инструмент Workflow для обычных новых запросов в текущей сессии. По умолчанию он выключен. Модель по-прежнему решает, полезен ли workflow, и все ограничения разрешений, доверия, бюджета и инструментов продолжают действовать. Включение режима не запускает выполнение, не изменяет усилие рассуждений и не меняет ваши настройки по умолчанию.
Инструменты Workflow включаются явно. Включите tools.workflowsEnabled в настройках или установите
QWEN_CODE_ENABLE_WORKFLOWS=1 перед включением режима:
QWEN_CODE_ENABLE_WORKFLOWS=1 qwen --workflow-mode on
qwen --resume <session-id> --workflow-mode offЗапуск с --workflow-mode on, когда инструменты недоступны, приводит к ошибке
инициализации. QWEN_CODE_DISABLE_WORKFLOWS=1 имеет приоритет над их
включением.
В любом терминальном рендерере используйте /workflows mode или
/workflows mode status для чтения состояния, и /workflows mode on или
/workflows mode off для его изменения. Эти элементы управления режимом могут выполняться во время
потокового ответа; они влияют на последующие подходящие запросы. В нижнем колонтитуле отображается
Workflow mode: on или Workflow mode: on (unavailable), если сохраненное предпочтение
не может быть применено в данный момент. Существующие списки запусков /workflows и элементы управления паузой
сохраняют свое исходное поведение.
Состояние разделяет requested (сохраненное предпочтение), available (необходимые
инструменты в данный момент пригодны для использования) и effective (оба условия истинны).
Включение требует доступности инструментов Workflow. Выключение остается
возможным, когда они недоступны. Потеря инструмента не стирает сохраненное предпочтение
включения; восстановление инструмента делает это предпочтение снова действующим.
Режим поддерживается обычными локальными сессиями и обычными сессиями демона, включая вторичных владельцев рабочего пространства. Управляемые, SSH, производные/субагентные и сессии агента сессии, а также сессии с отключенной записью чата, не поддерживают изменение режима. Неподдерживаемые сессии протокола не рекламируют возможность (capability) или опцию. Неудачная запись оставляет опубликованный режим без изменений.
Web Shell и VS Code
Компоновщик в Web Shell, разделенные панели и современный чат VS Code перечисляют Workflow в меню + для поддерживаемых сессий. Галочка показывает сохраненное предпочтение, а не то, может ли режим вступить в силу в данный момент; на более широких экранах вторая строка описывает, что делает режим, или его текущее состояние. Пока предпочтение включено, на панели инструментов отображается чип Workflow; его подсказка содержит детали статуса, а нажатие на него выключает режим. Если предпочтение включено, но инструменты недоступны, элемент остается отмеченным, чип отображается цветом предупреждения, и оба могут выключить режим.
До создания или восстановления сессии элемент управления показывает заполнитель доступности. Он не создает сессию и не сохраняет предпочтение на будущее. Хосты, не рекламирующие поддержку, включая старые серверы, скрывают элемент. Хосты, скрывающие меню +, не показывают ни элемент, ни чип.
Изменения из другого клиента автоматически обновляют элемент управления той же сессии. Во время записи или переподключения последнее подтвержденное значение остается видимым, а элемент и чип отключены до подтверждения состояния. Таймаут — это неподтвержденный результат, а не успешное изменение; клиент читает текущее состояние вместо автоматического повтора записи. Активный ответ не отключает элемент или чип: изменение применяется к следующему новому ходу и не изменяет усилие.
Напоминание и поведение ввода
Первый подходящий запрос получает напоминание только для модели. При отсутствии других изменений, редкие напоминания следуют на запросах 11 и 21, затем каждые десять подходящих запросов. Выключение или потеря возможности (capability) отправляет одно уведомление о выходе на следующем подходящем запросе. Только фактическая отправка модели расходует напоминание или продвигает счетчик; отмена или отклонение до отправки — нет. Повторы и попытки фолбэка используют тот же токен доставки. Если отмена удаляет отправленное напоминание режима из истории модели, следующий подходящий запрос снова объявляет текущее состояние.
Обычные запросы CLI, SDK и ACP могут использовать этот явный режим без объявления происхождения от человека. Продолжения инструментов, повторы, хуки, сгенерированные слеш-командами промпты, режим оболочки, побочные запросы, автоматические ходы Goal/Cron/уведомлений/каналов и субагенты не добавляют новое напоминание режима и не продвигают его счетчик. Спекуляция промпта приостанавливается, пока режиму или недоставленному переходу нужен контекст.
Подсказка с ключевым словом на один ход остается отдельной. Ее требование происхождения от человека и настройка отказа не изменены. Действительное ключевое слово и напоминание режима разделяют один Envelope; выключение постоянного режима не отключает действительное ключевое слово на один ход. Напоминание только режима не активирует индикатор временного ключевого слова или телеметрию ключевых слов.
Жизненный цикл сессии
Возобновление восстанавливает последнюю действительную булеву запись в выбранной ветке транскрипта и объявляет сохраненное состояние включения или выключения один раз. Явное начальное значение CLI или SDK переопределяет это восстановленное значение один раз, после готовности сессии. Конфликтующие начальные значения или начальное значение включения, когда инструменты Workflow недоступны, приводят к ошибке инициализации. Новая или очищенная сессия начинается выключенной. Форк наследует свою выбранную контрольную точку независимо; перемотка сохраняет текущее предпочтение и закрепляет его в восстановленной ветке. Успешное сжатие повторно объявляет состояние на следующем подходящем новом запросе. После неудачного возобновления или переключения ветки, восстанавливающего историю предыдущей сессии, следующий подходящий запрос повторно объявляет свое сохраненное состояние. Сессия без сохраненного предпочтения остается молчаливой.
TypeScript SDK и ACP
const session = query({
prompt: messages(),
options: { workflowMode: true },
});
const state = await session.getWorkflowMode();
await session.setWorkflowMode(false);workflowMode необязателен: пропуск сохраняет восстановленное значение, тогда как false
явно сохраняет выключение. Инициализация согласовывает и подготавливает начальное значение;
Query.initialized — это рукопожатие управления. Операции получения/установки ждут
готовности сессии. Повторные запросы инициализации отклоняются, пока инициализация сессии
находится в процессе. Старый CLI отклоняет явный запрос режима
до первого промпта вместо его молчаливого игнорирования. Пользовательские транспорты используют тот же
протокол управления.
ACP рекламирует стандартную опцию конфигурации workflow_mode со значениями on и
off. Ее currentValue отражает запрошенное состояние, тогда как
_meta['qwen.workflowMode'] содержит available, effective и необязательный
reason. Зафиксированные изменения и обновления возможностей (capability) публикуют полные опции
через config_option_update.
Клиенты демона используют существующую конечную точку опции конфигурации сессии или
setSessionConfigOption(sessionId, 'workflow_mode', 'on', clientId). Опция
не принимает переопределение persist: она всегда постоянна в рамках сессии. Чтение
и обновления контекста принадлежат активному владельцу этой сессии, включая ее
аренду и проверки поколения. Web Shell и современный хост VS Code используют
эти же элементы управления и обновления сессии.