Skip to Content
БлогQwen Code: автоматическое переключение при перегрузке модели, вложенные субагенты, интеграция с WeCom
Назад в блог

Qwen Code: автоматическое переключение при перегрузке модели, вложенные субагенты, интеграция с WeCom

Qwen Team
2026-07-09

На этой неделе Qwen Code выпустил 3 стабильные версии v0.19.6–v0.19.8, принято более 150 PR. Работа велась по четырём направлениям:

Перегрузка модели больше не блокирует работу. Раньше при ошибках 429/503/529 диалог прерывался, и приходилось вручную переключать модель и отправлять сообщение заново. Теперь fallback-цепочка автоматически переключается на резервную модель, когда лимит повторов основной модели исчерпан. А /model --project позволяет привязать разные модели к разным проектам, чтобы не переключать их каждый раз.

Субагенты могут порождать субагентов. Раньше субагент был «листовым узлом» — получив задачу, он выполнял её сам и не мог делегировать дальше. Теперь по умолчанию поддерживается вложенность до 5 уровней, и субагент может разбивать подзадачи между следующим уровнем. И TUI, и Web Shell отображают древовидную структуру, где сразу видно, кто кого породил.

Управление сессиями Web Shell стало полноценным. Архивация, удаление, именованные группы, цветовые метки, планировщик задач, обзор сессий на разделённом экране — раньше боковая панель позволяла только переключаться между сессиями, а теперь можно организовать, классифицировать, мониторить и работать параллельно. 7 PR превратили сессии из «плоского списка» в управляемый ресурс.

WeCom и контроль доступа доведены до ума. Интеграция с ботом WeCom через интеллектуальный SDK — достаточно указать Bot ID и Secret, права администратора предприятия не нужны. PreToolUse hook с параметром “ask” теперь действительно показывает диалог подтверждения, а раньше молча отклонял запрос. Правила доступа поддерживают синтаксис Tool(param:value) для контроля на уровне значений параметров.

✨ Новые возможности

Автоматическое переключение при перегрузке модели + настройка моделей на уровне проекта

При ошибках 429/503/529 диалог зависал. В этой версии добавлена opt-in fallback-цепочка: когда лимит повторов основной модели исчерпан, система автоматически переключается на следующую модель из списка fallback. Fallback срабатывает только при проблемах с пропускной способностью и ограничениями. Ошибки аутентификации, квот, конфигурации и клиентские ошибки приводят к немедленному сбою, потому что это не «перегрузка модели», а «проблема в вашей конфигурации».

Fallback продвигается до того, как пользователь увидит какой-либо вывод. Если fallback-модель уже успела вывести часть текста и затем упала, оставшиеся fallback-модели не будут вызваны — вы получите усечённый ответ. Но следующее сообщение пользователя начнётся снова с основной модели, система не застрянет на fallback-модели.

С помощью /model --project можно привязать разные модели к разным проектам. --project записывает настройку в .qwen/settings.json проекта, --global — в пользовательский ~/.qwen/settings.json. Без флага поведение остаётся прежним. Флаги области действия также работают для --fast, --voice, --vision.

Что это даёт:

  • Настройте список fallback-моделей — при перегрузке переключение происходит автоматически, без ручной смены модели
  • Ошибки аутентификации и квот не маскируются fallback, проблемы проявляются раньше
  • /model --project позволяет разным проектам использовать разные модели, конфигурация привязана к проекту
  • /model --global задаёт глобальные настройки по умолчанию, новые проекты наследуют их

Подробнее в PR #6273 , #6060 

Вложенные субагенты + древовидное представление

Субагенты теперь могут порождать собственных субагентов. Лимит глубины по умолчанию — 5 уровней, настраивается через model.maxSubagentDepth. Установите 1, чтобы вернуться к старому поведению — субагенты не смогут порождать потомков.

Два защитных механизма: на этапе подготовки схемы самый глубокий субагент не видит инструмент agent (он просто не знает о его существовании); на этапе выполнения запросы на порождение сверх лимита отклоняются.

И TUI, и Web Shell отображают вложенную древовидную структуру. Субагенты показываются под родительским агентом с маркером ↳ и отступом. Когда родительский агент завершает работу, субагент становится корневым узлом с пометкой «from <parent>». В детальном виде отображается «Level N · from <parent type>». Метки блокировки и подтверждения остановки тоже учитывают цепочку — подтверждение появляется только если отмена приведёт к завершению хода.

Эта функция включена по умолчанию — после обновления все существующие окружения получают возможность вложенного порождения. Fork-подпроцессы, teammates и workflow agents по-прежнему исключены. Arena-сессии теперь поддерживают вложенность. При восстановлении фоновых агентов восстанавливается исходная глубина и лимит на момент запуска.

Что это даёт:

  • Субагент, обрабатывая сложную задачу, может сам порождать субагентов для подзадач
  • Полное древовидное представление агентов в TUI и Web Shell
  • Настройка лимита глубины вложенности через model.maxSubagentDepth

Подробнее в PR #6189 , #6239 

Управление сессиями Web Shell: архивация, группировка, планировщик, разделённый экран

7 PR превратили боковую панель сессий Web Shell из «плоского списка» в полноценную панель управления с возможностями организации, классификации, мониторинга и параллельной работы.

Архивация и удаление. Каждая строка сессии получила быстрые действия и меню «…» (переименовать/архивировать/удалить). Архивированные сессии собираются в сворачиваемой области «Archived», их можно восстановить или окончательно удалить. Текущую активную сессию архивировать или удалить нельзя, архивированную сессию открыть невозможно (409 session_archived), удаление — жёсткое, с повторным подтверждением. Под капотом используются archiveState демона и эндпоинты /sessions/archive, /sessions/unarchive.

Именованные группы и цветовые метки. Можно создавать, переименовывать, удалять группы, перетаскивать в них сессии, назначать группам цветовые метки и статусы закрепления/архивации. Данные групп проходят от уровня демона до UI — на стороне демона метаданные групп хранятся в sidecar-файлах уровня проекта, REST/ACP маршруты предоставляют CRUD-операции, доступность контролируется через capability gates.

Обзор сессий и разделённый экран. На больших экранах в боковой панели появляется панель обзора сессий — все сессии отображаются в виде карточек в реальном времени, отсортированных по приоритету: сначала требующие подтверждения, затем активные, затем простаивающие. Каждая карточка показывает текущую модель и количество клиентов. После множественного выбора можно разделить экран для просмотра — в рамках текущей вкладки или в новой вкладке браузера (URL-параметр ?split=a,b). N независимых чат-панелей отображаются рядом, каждая со своим контекстом сессии, фокус клавиатуры действует только на ту панель, по которой кликнули.

Что это даёт:

  • Архивация и организация накопившихся сессий, группировка по проектам с цветовыми метками
  • Визуальное создание и управление запланированными задачами, без ручного написания cron-выражений
  • Каждая запланированная задача имеет собственную сессию, историю запусков и транскрипты доступны в любой момент
  • Разделённый экран для параллельного мониторинга нескольких сессий в реальном времени на больших дисплеях

Подробнее в PR #6293 , #6350 , #6305 , #6348 , #6389 , #6453 , #6400 

Интеграция с WeCom

Подключение интеллектуального бота WeCom через @wecom/aibot-node-sdk. Для настройки нужны только Bot ID и Secret — не требуются Corp ID, Agent ID, callback Token, EncodingAESKey или публичный callback-адрес.

Приём сообщений через WebSocket-соединение, поддерживаются текст, транскрипция голоса, смешанные текстово-графические сообщения, изображения, файлы, видео и цитаты. Ответы Assistant отправляются в формате WeCom markdown. Исходящие сообщения поддерживают только локальные изображения (из временного каталога канала), метки файлов/видео/голоса игнорируются.

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

{ "type": "wecom", "botId": "your-bot-id", "secret": "your-secret", "cwd": "/path/to/project" }

Команда запуска: qwen channel start my-wecom

Что это даёт:

  • Подключение WeCom через Bot ID + Secret, без прав администратора предприятия
  • Приём текстовых, голосовых сообщений, изображений, файлов, видео и цитат
  • Qwen Code отвечает в группах WeCom сообщениями в формате markdown

Подробнее в PR #6436 

Нативный диалог подтверждения для PreToolUse hook

Раньше PreToolUse hook с возвратом permissionDecision: "ask" был равносилен “deny” — диалог подтверждения вообще не появлялся, разработчик hook думал, что пользователь увидит выбор, а на самом деле запрос молча отклонялся.

Теперь “ask” показывает нативный TUI-диалог подтверждения. Варианты: «Yes, allow once» и «No, suggest changes» — без «always allow», потому что hook переоценивается при каждом вызове. При одобрении инструмент выполняется заново, при отказе — отменяется.

В неинтерактивном CLI и фоновых агентах “ask” откатывается к deny — система не зависает в ожидании. Используется существующий механизм awaiting_approval, отдельный путь не создавался. Поведение “denied” и “stop” не изменилось, PermissionRequest hook не затронут.

Что это даёт:

  • Используйте “ask” в PreToolUse hook, чтобы пользователь решал, выполнять инструмент или нет
  • Нет риска зависания в неинтерактивных сценариях
  • Hook переоценивается при каждом вызове, не даёт постоянного разрешения

Подробнее в PR #5629 

Предварительный просмотр автоматически сгенерированных Skills

Раньше при автоматической генерации skill агентом было видно только имя файла, а содержимое становилось доступным лишь после подтверждения. Теперь в диалоге проверки отображается полное содержимое, включая frontmatter.

Сгенерированный моделью контент санитизируется: управляющие последовательности ANSI/VT превращаются в безопасные экранированные символы, CRLF — в обычные переносы строк. Лимит чтения — 64 КиБ, лимит отображения — 12 строк (с учётом автоматического переноса), остаток помечается как «lines hidden» / «truncated».

Нажатие o открывает файл skill в настроенном редакторе, не пропуская текущую проверку. После сохранения файла предпросмотр автоматически обновляется — в связке с GUI-редактором (поведение macOS по умолчанию) можно отредактировать и сразу увидеть результат.

Опция «Turn off auto-generated skills» находится в конце списка, вступает в силу немедленно (перезапуск не требуется), сохраняется на уровне workspace. Текущая партия откладывается (не удаляется), после повторного включения через /memory партия возвращается.

Что это даёт:

  • Просмотр полного содержимого skill перед подтверждением — не нужно сначала принимать, а потом искать файл
  • Нажатие o открывает skill в редакторе для правки, предпросмотр обновляется после сохранения
  • Одной кнопкой отключить автогенерацию skills, текущая партия не удаляется и восстанавливается через /memory в любой момент

Подробнее в PR #6393 

До (global qwen 0.19.6) — только имя + описаниеПосле — проверка одного skill с встроенным предпросмотром и опцией отключения
До — global qwen 0.19.6: только имя и описание, без предпросмотраПосле — проверка одного skill с встроенным предпросмотром SKILL.md и опцией отключения
После — последний элемент партии, массовые опции скрытыПосле — выбрана опция «Turn off auto-generated skills»
После — последний элемент партии: массовые опции скрытыПосле — выбрана опция отключения: партия закрыта с подсказкой о повторном включении

📊 Другие новые возможности

ФункцияPRЧто это даёт
Панель состояния демона: состояние, временные метрики, использование Token в боковой панели#6272 , #6307 , #6388 Здоровье системы и тренды на одном экране, без команд
maxSubAgents: ограничение количества параллельных субагентов#6354 Контроль потребления ресурсов, защита от бесконтрольного порождения
Tool(param:value) доступ: контроль инструментов на уровне значений параметров#6106 Точечный запрет порождения конкретных model/skill
Стековые slash-skill вызовы: /skill1 /skill2 последовательное выполнение#6361 Цепочки навыков без пошаговых действий
tools.visible настройка: выборочное отображение отложенных инструментов#6372 При запуске видны только нужные инструменты
Настраиваемое истечение запланированных задач: время истечения cron/loop задач#6173 Долгосрочные задачи не истекают неожиданно
Инъекция состояния Hook: Stop/SubagentStop hook получает информацию о фоновых задачах#6531 Hook осведомлён о запланированных задачах и состоянии cron
Значок режима доступа: текущие права доступа в нижней панели DEFAULT режима#6498 Текущий режим безопасности виден сразу
Компактные блоки echarts: поддержка графиков в Web Shell#6232 Визуализация данных прямо в терминале
MCP mentions + иконки @ упоминаний: Web Shell#6279 @ упоминания стали нагляднее
Элементы управления Markdown-таблицами: переупорядочивание столбцов/масштабирование/закрепление#6444 Улучшен просмотр больших таблиц
Горячая перезагрузка LSP: языковые серверы поддерживают горячую перезагрузку#5953 Изменение конфигурации без перезапуска LSP
Память каналов по намерениям: естественноязыковая память каналов#6376 Память в контексте каналов стала естественнее
Контроль качества /review: точность issues и определение первопричины#6395 Результаты review стали надёжнее
Оптимизация производительности glob: отсечение игнорируемых каталогов при обходе#6123 Более быстрый поиск файлов в крупных проектах
Обнаружение slash-команд: расширенное меню, группировка, нечёткий поиск#6267 Быстрее находить нужную команду
per-worktree auto-memory: отдельная память для каждого worktree#6462 Память разных веток не смешивается
Agent working_dir: привязка субагента к worktree#6456 Субагент работает в указанном каталоге
Горячая перезагрузка расширений: автозагрузка при изменении плагинов#6347 Изменение плагинов без перезапуска
dmPolicy: запрет личных сообщений#6521 Бот канала отвечает только в групповых чатах
Изоляция окружения serve: изоляция + контроль общего объёма в режиме serve#6416 Несколько проектов в serve не мешают друг другу
Маршрутизация сессий по рабочим пространствам: serve поддерживает несколько рабочих пространств#6511 Один экземпляр serve обслуживает несколько проектов
per-tool-call таймаут: таймаут одного вызова инструмента#6136 Зависание одного инструмента не обрушивает всю сессию
Встроенный skill dataviz: навык визуализации данных#6198 Генерация графиков из коробки

🔧 Важные исправления

ИсправлениеPRЧто это даёт
auth 401: 401 при недействительной аутентификации больше не блокирует#6284 Истёкший token не блокирует сессию
OpenAI не-SSE обнаружение: корректное определение не-потоковых ответов#6466 Совместимые эндпоинты OpenAI больше не дают сбоев
Блокировка прокрутки при потоке: прокрутка не перехватывается при потоковом выводе#6170 , #6421 Свободная прокрутка истории при длинном выводе
Windows pager: pager больше не падает на Windows#6390 Стабильный пользовательский опыт на Windows
qqbot безопасность: усиление безопасности канала#6200 Бот QQ-канала стал безопаснее
Окно контекста по умолчанию 200k: исправлено значение по умолчанию#6387 Более точная настройка окна контекста
ACP settings гонка: устранена гонка при чтении/записи настроек#6292 Параллельные настройки работают без ошибок
/clear разблокирован: /clear больше не зависает#6499 Команда очистки экрана работает нормально

👥 Участники

УчастникВкладСсылки на PR
@wenshao Панель состояния демона, временные метрики, анализ Token, архивация/удаление сессий, группировка + цветовые метки, планировщик задач, независимые сессии задач, унифицированные сессии задач, обзор сессий + разделённый экран, обнаружение slash-команд, Agent working_dir, автоповтор порта serve#6272 , #6307 , #6388 , #6293 , #6350 , #6348 , #6389 , #6453 , #6400 , #6267 , #6456 , #6513 
@ytahdn Восстановление сессий, отключение skill, пользовательская панель @mention, callback сессий, виртуальная прокрутка, детали инструментов, обработка ошибок прерывания потока, обновление to-do, сводка вызовов инструментов, внешнее управление разделением экрана#6220 , #6223 , #6242 , #6333 , #6342 , #6352 , #6357 , #6362 , #6399 , #6422 , #6424 , #6425 , #6450 , #6523 
@yiliang114 Fallback-цепочка моделей, maxSubAgents, исправление auth 401#6273 , #6354 , #6284 
@tanzhenxin Вложенные субагенты, древовидное представление Web Shell, предпросмотр автогенерации Skills, исправление значения по умолчанию окна контекста#6189 , #6239 , #6393 , #6387 
@doudouOUC Бэкенд организации сессий демона, изоляция окружения serve, маршрутизация сессий по рабочим пространствам#6305 , #6416 , #6511 
@qqqys Интеграция канала WeCom, память каналов по намерениям, циклические инструменты каналов, встроенный skill dataviz#6436 , #6376 , #6287 , #6198 
@DennisYu07 Tool(param:value) доступ, стековые slash-skill вызовы, значок режима доступа, инъекция состояния Hook#6106 , #6361 , #6498 , #6531 
@LaZzyMan Нативный диалог подтверждения PreToolUse hook#5629 
@DragonnZhang Контроль качества /review#6395 
@Alex-ai-future Настройка моделей на уровне проекта /model —project#6060 
@VectorPeak Исправление обнаружения не-SSE OpenAI#6466 
@han-dreamer Исправление Windows pager#6390 
@MikeWang0316tw Исправление блокировки прокрутки при потоковом выводе#6170 , #6421 
@water-in-stone Горячая перезагрузка LSP#5953 
@ZijianZhang989 Горячая перезагрузка расширений#6347 
@BZ-D MCP mentions + иконки @ упоминаний#6279 
@jifeng Элементы управления Markdown-таблицами (переупорядочивание столбцов/масштабирование/закрепление)#6444 
@zhangxy-zju Компактные блоки echarts#6232 
@Eric-GoodBoy-Tech Исправление безопасности qqbot#6200 
@TianYuan1024 Настраиваемое время истечения запланированных задач#6173 
🆕 @callmeYe 🎉 Первый вклад: забывание/сновидения памяти сессий, UI таймлайна запланированных задач, память управления пользователя#6227 , #6386 , #6432 
🆕 @kagura-agent 🎉 Первый вклад: сохранение префикса tools в prompt-cache, лимит параллельности переднего плана, кэширование сканирования skills#6225 , #6300 , #6155 
🆕 @Aleks-0 🎉 Первый вклад: настройка tools.visible, UTF-8 cmd.exe, KV-cache#6372 , #6216 , #6420 
🆕 @Nas01010101 🎉 Первый вклад: таймаут запросов, @-прикреплённые файлы#6288 , #6295 , #6324 
🆕 @zjunothing 🎉 Первый вклад: per-worktree auto-memory, разблокировка /clear, исправление дрожания статусной строки#6462 , #6499 , #6533 
🆕 @minmax 🎉 Первый вклад: оптимизация производительности glob, per-tool-call таймаут#6123 , #6136 
🆕 @pomelo-nwu 🎉 Первый вклад: усиление контроля качества PR, маршрутизация рекомендаций review#5723 , #5786 
🆕 @chiga0 🎉 Первый вклад: API артефактов сессий, документация daemon side-channel#5895 , #4511 
🆕 @gauravyad86 🎉 Первый вклад: быстрый путь bootstrap, изоляция transform_data#6188 , #6285 
🆕 @mvanhorn 🎉 Первый вклад: пути конфигурации macOS seatbelt, значение таймаута простоя потока по умолчанию#6172 , #6107 
🆕 @AmariahAK 🎉 Первый вклад: выбор визуальной модели#6209 , #6236 
🆕 @barry166 🎉 Первый вклад: аутентификация VSCode, audio prebuild#6274 , #6275 
🆕 @chenghuichen 🎉 Первый вклад: dmPolicy запрет личных сообщений#6521 
🆕 @beantownbytes 🎉 Первый вклад: отключение qwen thinking для не-DashScope окружений#6271 
🆕 @heyparth1 🎉 Первый вклад: исправление вычисления окна контекста#6266 
🆕 @tomsen-ai 🎉 Первый вклад: вызовы инструментов без параметров#6250 

Обновление: выполните npm i @qwen-code/qwen-code@latest -g для обновления до последней версии.

Если у вас есть вопросы или предложения, оставьте их в GitHub Issues !

Last updated on