Skip to Content
БлогОбновления функций07-30 Обновление продукта

Qwen Code: @ 引用历史会话上下文 без resume, фоновые Agent остаются после завершения, /learn превращает видео в Skill

Qwen Team
2026-07-30

На этой неделе Qwen Code выпустил 2 стабильные версии v0.21.0 и v0.21.1, принято более 290 PR.

Жизненный цикл сессий и Agent закрыл два пробела. Раньше для переиспользования контекста из ранних диалогов приходилось делать resume или fork — текущий разговор прерывался. Теперь достаточно набрать @, и в списке автодополнения появятся исторические сессии проекта; выбранная сессия инжектит read-only сводку, текущий диалог остаётся независимым. С фоновыми Agent тоже стало лучше: раньше после завершения runtime уничтожался, и для follow-up приходилось пересоздавать всё с нуля. Теперь завершённый Agent остаётся в родительской сессии — send_message продолжает разговор, а после перезапуска процесса roster восстанавливается.

Система skill сделала шаг от «ручного режима». /learn раньше обрабатывал только текст, документы и веб-страницы — обучающие видео приходилось смотреть вручную и писать SKILL.md самому. Теперь можно просто бросить MP4, Agent просмотрит его и автоматически дистиллирует в переиспользуемый Skill. Каталог skill тоже больше не нужно дублировать — укажите путь в settings, и Claude Code, Codex, Qwen Code будут использовать одну общую библиотеку.

Наблюдаемость и интеграции тоже подтянулись. /stats наконец показывает TTFT, время генерации и TPS — сравнение стриминговой производительности моделей больше не на глаз. Адаптер GitHub Channel запущен: @mention бота в Issue или PR запускает Agent, который отвечает в том же треде. Web Shell на этой неделе принял 40+ PR: селектор веток Git, диалог commit, создание PR, страница управления Channel, превью файлов, голосовой ввод — всё сразу.

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

/learn поддерживает видео: обучающий ролик превращается в переиспользуемый Skill

Раньше /learn обрабатывал текст, документы, каталоги и веб-страницы, но не видео. Есть 15-минутная запись экрана с операцией — хотите превратить её в skill для Agent? Приходилось смотреть самому и писать SKILL.md вручную.

Теперь /learn поддерживает локальные файлы MP4, WebM, MOV, M4V и прямые HTTP(S)-ссылки на видео. Команда сначала проверяет, поддерживает ли текущая модель видеовход, затем передаёт видео Agent для дистилляции. На выходе — каталог learned-skill-* с SKILL.md и references/source.md с временными метками. URL страниц YouTube распознаётся и отклоняется с предложением сначала скачать видео локально. Для невидео-входа поведение не изменилось.

Что это даёт:

  • Запись экрана коллеги превращается в командный переиспользуемый skill
  • Посмотрели туториал — /learn tutorial.mp4 извлекает шаги автоматически
  • Запись источника помечена «source-grounded, not execution-verified» — разграничение «увиденного» и «проверенного»

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

@ 引用历史会话: вызов прошлого контекста без resume и fork

Раньше для переиспользования контекста из ранних сессий оставались только resume или fork. Resume уводит из текущего диалога, fork создаёт новую ветку — для задачи «просто сослаться на прошлый вывод» оба варианта слишком тяжёлые.

Теперь наберите @ в поле ввода — выпадающий список автодополнения покажет результаты по категориям: все, файлы, сессии, MCP, расширения; переключение категорий стрелками влево/вправо. При выборе исторической сессии Qwen Code инжектит детерминированно сгенерированную read-only сводку: видимый текст пользователя и ассистента сохраняется, результаты инструментов сжимаются в однострочный статус, общий бюджет — 8k token с приоритетом свежего содержимого. Текущий диалог не затрагивается, старая сессия не восстанавливается и не форкается.

Что это даёт:

  • Сослаться на выводы прошлой отладочной сессии в текущей задаче, не переключаясь
  • Передать фидбек прошлого code review как контекст новой задаче
  • Накапливать знания о проекте между сессиями, не объясняя фон каждый раз

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

Фоновые Agent остаются и восстанавливаются между сессиями: follow-up без пересоздания

Раньше фоновый Agent после завершения уничтожал runtime. Хотите задать уточняющий вопрос? Приходилось полностью перестраивать chat, инструменты, registry и кэш провайдера из JSONL transcript — медленно, и всё внутрипроцессное состояние теряется. Хуже того: после перезапуска процесса при восстановлении родительской сессии завершённый Agent превращался в Task not found.

На этой неделе два PR решили проблему. Первый: завершённый фоновый Agent остаётся в родительской сессии — send_message на тот же task_id переиспользует живой chat, подготовленные инструменты, кэш провайдера и модель запуска, без перестроения из transcript. Второй: при перезапуске процесса и восстановлении родительской сессии прерванные Agent возвращаются в статусе paused, завершённые — в статусе completed, ID задач не меняются. Новый инструмент list_agents показывает все адресуемые фоновые Agent текущей сессии.

Что это даёт:

  • Фоновый Agent закончил code review — спросите «раскрой третий пункт подробнее», без пересоздания
  • Закрыли терминал, вернулись на следующий день — list_agents показывает вчерашних Agent, продолжаете работу
  • При итерациях Agent сохраняет модель запуска, не зависит от смены модели в родительской сессии

Подробнее в PR #7426 , #7459 

Пользовательские каталоги skill: одна библиотека на несколько Agent

Раньше skill можно было хранить только в ~/.qwen/skills/. Если вы используете Claude Code и Qwen Code одновременно, один и тот же набор skill приходилось копировать — изменили в одном, забыли в другом.

Теперь в settings.json можно добавить массив skills.directories с дополнительными путями сканирования. Пути поддерживают раскрытие ~, рекурсивный поиск файлов SKILL.md. Каталог по умолчанию имеет более высокий приоритет — при совпадении имён побеждает skill из каталога по умолчанию.

Что это даёт:

  • ~/.agent/skills — один набор skill для Claude Code, Codex и Qwen Code
  • Общая командная библиотека в /shared/team-skills — синхронизация автоматически
  • Организация skill по проектам, не сваливая всё в один каталог

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

/stats показывает метрики генерации: TTFT и TPS на виду

Раньше /stats показывал длительность сессии, общее число запросов, вызовы инструментов и изменения файлов. Хотели сравнить скорость стриминга двух моделей? Ни TTFT, ни TPS — только ощущения.

Теперь /stats и вкладка Session содержат раздел Generation Metrics: модель последнего запроса, TTFT (задержка первого Token), время генерации, число выходных Token и TPS, а также на уровне сессии — число таймированных запросов, средний TTFT и взвешенный Session TPS. Время генерации считается как api_duration - ttft, знаменатель TPS — интервал от первого видимого Token до завершения генерации. Внутренние вспомогательные prompt не учитываются, ежедневная/месячная статистика использования не изменилась.

Что это даёт:

  • Сменили модель — запустили /stats, сразу видно разницу в TTFT и TPS
  • Сравнение стриминговой производительности локального бэкенда и облачного API
  • Взвешенный TPS на уровне сессии отражает реальную пропускную способность диалога

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

Адаптер GitHub Channel: @mention бота в Issue и PR запускает Agent

Раньше Channel в Qwen Code поддерживал Feishu, WeChat, QQ, Telegram, но не GitHub. Хотели @mention бота в Issue, чтобы он помог разобраться? Не получалось.

Теперь адаптер GitHub Channel запущен. Настройте classic PAT, запустите Channel — он будет опрашивать GitHub Notifications API. @mention бота в комментарии Issue или PR — Agent читает содержимое и отвечает в том же треде. @mention в теле нового Issue тоже срабатывает (первый контакт). Дедупликация основана на окне комментариев по cursor, а не на асинхронном markNotificationsAsRead GitHub; собственные комментарии бота фильтруются для предотвращения цикла. Поддерживается GitHub Enterprise (через baseUrl) и прокси.

Что это даёт:

  • @mention бота в Issue: «посмотри эту ошибку» — Agent отвечает комментарием
  • @mention бота при review PR для дополнительного контекста, не переключаясь в терминал
  • Интервал опроса настраивается (по умолчанию 60 с) — регулируйте скорость отклика

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

Полное обновление Web Shell: Git-операции, управление Channel, превью файлов, голосовой ввод

Web Shell на этой неделе принял 40+ PR — от git-воркфлоу до управления Channel и опыта ввода, затронуто практически всё.

Git-операции стали полными. Раньше в Web Shell можно было только смотреть ветки — без переключения, commit и создания PR. Теперь при создании сессии есть селектор режима Git (#7471 ), внутри сессии можно переключать ветки, открывать диалог commit, создавать PR напрямую (#7731 ). Сессии Worktree тоже открывают диалоги Changes и History (#7695 ). В боковой панели появилась read-only панель GitHub PR (#7683 ) — статус PR виден без переключения в браузер.

Управление Channel получило страницу. Раньше настройка Channel требовала ручного редактирования settings.json. Теперь в Web Shell есть полноценная страница управления Channel (#7793 ) с мастером настройки (#7893 ) и управлением запросами сопряжения (#7909 ).

Превью файлов и управление Agent. Список файлов поддерживает рендеринг превью (#7467 ) — не нужно открывать файл для просмотра содержимого. Сессии субагентов видны в панели деталей (#7380 ), статус фоновых Agent синхронизируется в реальном времени (#7561 ). Селектор Workspace (#7390 ) и нативный селектор папок (#7849 ) упрощают переключение между проектами.

Опыт ввода. Голосовой ввод ограничен текущим composer workspace (#7754 ), поддерживает режим «нажми и говори» (#7839 ), стабильность на мобильных исправлена (#7806 ). Тач-устройства откатываются на чистый textarea composer (#7587 ). Вставленное содержимое больше не теряется (#7824 ). Терминал поддерживает парсинг 256-цветных и truecolor SGR-последовательностей (#7620 ).

Другие улучшения. Боковую панель можно растянуть до половины окна (#7778 ), имя сессии при наведении показывает полное название (#7662 ), задачи Monitor получили панель деталей (#7817 ), оптимизирован рендеринг длинных сессий (#7408 ). Изоляция Shadow DOM предотвращает загрязнение стилей компонентов CSS хоста (#7551 ). Ввод «BTW» предлагает открыть побочный вопрос (#7935 ).

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

Инструмент масштабирования изображений. Большие изображения уменьшаются перед отправкой модели — мелкий текст и подписи на диаграммах часто размываются. Теперь модели с поддержкой видеовхода могут использовать zoom_image для обрезки области из исходного полноразмерного файла и возврата увеличенного JPEG-вида. Поддержка PNG, JPEG, WebP, автоматическая обработка EXIF-ориентации. Подробнее в PR #7809 

Уровни моделей для субагентов. Разные задачи требуют моделей разной стоимости, но вызывающая сторона не должна знать конкретные ID моделей. Теперь в settings можно сопоставить семантические уровни small, high и т.д. с селектором моделей — schema инструмента Agent показывает только имя уровня. Fork и именованные teammate не принимают этот параметр. Подробнее в PR #7702 

Настраиваемая модель генерации изображений. Генерация изображений больше не привязана к модели по умолчанию — можно указать в конфигурации. Подробнее в PR #7607 

Инструмент поиска по внешнему корпусу. Новый MCP-инструмент context_search для поиска контекста во внешних базах знаний или RAG-сервисах по запросу. Только чтение, без автоматического вызова, без записи; провайдер и корпус фиксируются администратором. Включает адаптеры Mem0 и универсальный HTTP. Подробнее в PR #7586 

Переопределение системной идентичности. Переменная окружения QWEN_SYSTEM_IDENTITY_MD позволяет переопределить основной identity prompt. Подробнее в PR #7478 

Принудительное переподключение MCP. qwen serve поддерживает принудительное переподключение MCP-серверов без перезапуска всего процесса. Подробнее в PR #7488 

Горячая перезагрузка Workspace trust. После изменения конфигурации workspace trust работающий daemon немедленно применяет новую политику, без перезапуска. Подробнее в PR #7268 

Skill с отключением по умолчанию. Skill можно установить как отключённый по умолчанию с возможностью явного включения (soft default); жёсткое отключение не переопределяется. Подробнее в PR #7357 

Session-scoped runtime MCP. Сессии ACP поддерживают конфигурацию runtime MCP на уровне сессии. Подробнее в PR #7847 

Отправка изображений в DingTalk. Channel DingTalk поддерживает отправку сообщений с изображениями. Подробнее в PR #7698 

Маршрутизация forum topic Telegram. Ответы Channel Telegram теперь корректно маршрутизируются в forum topic. Подробнее в PR #7612 

Двуязычные комментарии Review. Когда описание PR на китайском, /review публикует комментарии ревью автоматически на китайском и английском. Подробнее в PR #7564 

Оптимизация ссылки OAuth-входа. URL OAuth-входа теперь выводится в формате гиперссылки OSC 8 — в терминале можно кликнуть напрямую. Подробнее в PR #7255 

Копирование в VP сохраняет семантический текст. При выделении и копировании текста в режиме VP сохраняется семантический текст, а не отрендеренный формат. Подробнее в PR #7286 

👏 Улучшения опыта

Shift+Enter наконец делает перенос строки. В терминалах вроде Ghostty без включённого протокола Kitty Shift+Enter ошибочно распознавался как Escape, вызывая prompt отката диалога. Теперь парсинг CSI-u исправлен — Shift/Ctrl/Alt+Enter корректно делает перенос строки и в VP, и в обычном режиме. Высота стриминговых блоков Thinking больше не дёргается — окно только растёт, не дрейфуя за высотой терминала. Подробнее в PR #7397 

Большая вставка больше не зависает. Раньше вставка 260K символов вызывала 260K посимвольных keypress-событий, блокируя на ~1,7 с. Теперь на уровне stdin перехватываются маркеры bracketed paste — содержимое обрабатывается целиком, задержка снижена до ~8 мс. Во время вставки Footer показывает прогресс (Pasting… ████████░░░░░░░░ 42% (128 KB)), Ctrl+C прерывает. Подробнее в PR #6506 

Настраиваемая задержка повтора стриминга. Новые параметры retryInitialDelayMs и retryMaxDelayMs позволяют настроить задержку повтора SSE-стриминга под квотные окна конкретных провайдеров. Подробнее в PR #7674 , #7666 

Выравнивание иконок TUI. Все колонки иконок TUI унифицированы до ширины 2 символа — больше нет неровностей. Подробнее в PR #7633 

Исправление отображения сообщений в очереди. Стиль и сортировка сообщений в очереди исправлены — больше нет смещений. Подробнее в PR #7381 

Исправление команды /copy. /copy с голым индексом и /copy <message> <index> для выбора блока кода теперь работают корректно. Подробнее в PR #7789 , #7883 

Проверка обновлений через npm view. Проверка обновлений версии переключена с update-notifier на npm view — надёжнее. Подробнее в PR #7528 

Выравнивание курсора IME. После обновления Footer курсор метода ввода больше не смещается. Подробнее в PR #7711 

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

ИсправлениеPRЧто это даёт
Нормализация пустого working_dir в изоляции Worktree#7403 Пустой working_dir при isolation: worktree больше не вызывает исключение
Поддержка модальности изображений qwen3.8-max и kimi-k3#7491 Эти модели теперь корректно обрабатывают изображения
Уступка слота фоновым Agent#7258 В однослотовом режиме фоновый Agent корректно уступает место foreground
Обход обязательных инструментов в thinking DashScope#7661 Модели DashScope в режиме thinking больше не падают из-за обязательных инструментов
Обнаружение fork-субагентов#7460 Fork-субагенты теперь корректно обнаруживаются и адресуются
Мост изображений из результатов инструментов для текстовых моделей#7484 Текстовые модели больше не падают при получении изображений в результатах инструментов
Быстрый отказ при исчерпании квоты 429#7842 429 с постоянным исчерпанием квоты больше не повторяется молча — сразу ошибка
Автоповтор при транзиентных сетевых ошибках#7898 Транзиентные сетевые ошибки при вызовах API повторяются автоматически
Обработка паттернов Gitignore#7763 , #7764 , #7765 Правила gitignore с начальными пробелами, конечными слешами и экранированием обратной косой чертой парсятся корректно
Обработка кавычек в splitCommands#7526 , #7870 Обратные слеши в одинарных кавычках и кавычки внутри подстановки команд больше не парсятся ошибочно
Безопасное отклонение паттернов sed#7775 , #7790 Bracket-выражения, начинающиеся с ], и комбинации флагов с -i не в конце безопасно отклоняются
Начальный дефис в Grep#7863 Паттерны поиска, начинающиеся с -, больше не принимаются за опции
Семантика пошагового поля дня в Cron#7464 Пошаговое поле дня теперь соответствует семантике Vixie cron
Защита usage при удалении сессии#7425 Данные использования не теряются при удалении сессии
Отклонение вложенных фоновых запросов#7593 Вложенные запросы фоновых Agent корректно отклоняются
Сохранение отключённого reasoning effort#7541 Отключённая настройка reasoning effort больше не сбрасывается случайно
Откат на системный rg#7203 При недоступности встроенного ripgrep автоматически используется системный rg
Уведомление о выходе из Plan#7682 , #7744 Модель получает уведомление при ручном выходе пользователя из plan mode
Защита Agent расширений от изменения#7245 Agent из расширений больше не перезаписываются случайными обновлениями
Распознавание inline math#7701 , #7741 Односимвольные математические выражения, экранированные знаки доллара и math в code span распознаются корректно

👥 Участники

УчастникВкладСсылки на PR
@wenshao Множественные улучшения autofix (восстановление stale base, повторы инфраструктуры, двуязычные отчёты), улучшения review (mutation test, lens borrowing, script-lint gate), Git-операции Web Shell (селектор веток, диалог commit, панель PR), усиление triage#7482 , #7564 , #7731 , #7683 
@chinesepowered Безопасность daemon (очистка secret, изоляция env), безопасность основных инструментов (исправления sed/grep/gitignore/splitCommands), усиление валидации SDK, исправление конвертации OpenAPI#7256 , #7527 , #7763 , #7863 
@ytahdn Основная разработка Web Shell (превью файлов, изоляция Shadow DOM, панель субагентов, производительность длинных сессий, управление Channel, голосовой ввод, мобильная адаптация)#7467 , #7551 , #7380 , #7408 
@doudouOUC Выравнивание телеметрии с ARMS, оптимизация запуска (ленивая загрузка undici/GenAI SDK, отложенная инициализация ACP), надёжность serve (epoch cursor, усиление SSE), daemon transport SDK-Java#7536 , #7455 , #7458 , #7463 
@yiliang114 Исправления CI/релизов, поддержка модальности изображений моделей, исправление гонок serve, улучшение проверки обновлений, уровни моделей субагентов, усиление скриптов release#7491 , #7556 , #7702 , #7528 
@qqqys Полный набор Goal v3 (протокол состояний, верификация доказательств, рантайм-оркестрация, worker tools, персистентное воспроизведение), инфраструктура Channel (конфигурация workspace, жизненный цикл, API управления, daemon loop), конфигурация модели генерации изображений#7517 , #7664 , #7637 , #7607 
@chiga0 Исправление переноса строки Shift+Enter, исправление мерцания блоков Thinking, семантический текст копирования VP, отображение сообщений в очереди, выравнивание иконок TUI, исправление патча ink, повтор при сетевых ошибках#7397 , #7286 , #7381 , #7898 
@DragonnZhang Постоянное пребывание фоновых Agent, восстановление roster, обнаружение fork-субагентов, персистентность usage, многоуровневое построение системного prompt, cache breakpoint Anthropic#7426 , #7459 , #7460 , #7912 
@qwen-code-dev-bot Пользовательские каталоги skill, исправление mention DingTalk, исправления plan mode, исправления контейнеров CI, опрос веток git#7395 , #7473 , #7682 , #7830 
@ComplexSimply Textarea composer для тач-устройств, sidecar статуса фонового shell, ожидание flush потока вывода, локальное время insight#7587 , #7669 , #7833 , #7670 
@zjunothing Усиление salvage usage, исправление многозадачных сообщений Channel, уведомление о выходе из plan, исправление extension ID плагинов, чтение файлов plan#7425 , #7608 , #7676 , #7678 
@patrick-andstar Инициализация селектора workspace, отклонение вложенных фоновых запросов, исправление отмены простоя ACP, очистка обновлений npm#7518 , #7593 , #7598 , #7539 
@LaZzyMan Видеовход /learn, @ 引用历史会话, оптимизация производительности большой вставки, мост изображений из результатов инструментов#7497 , #7302 , #6506 , #7484 
@hogeheer499-commits Уступка слота фоновым Agent, маршрутизация forum topic Telegram, исправление thinking DashScope, задержка повтора SSE#7258 , #7612 , #7661 , #7666 
@destire-mio Исправление семантики пошагового дня cron, метрики генерации /stats, защита Agent расширений#7464 , #7677 , #7245 
@OrbitZore Адаптер GitHub Channel, исправление senderId#7632 , #7727 
@CubeLander Исправление распознавания inline math, обработка экранированных знаков доллара#7701 , #7741 
@dreamWB Исправление операций сессий locked workspace, рендерер footer composer#7629 , #7856 
@mvanhorn Нормализация working_dir worktree, подавление диагностических логов xterm#7403 , #7663 
@water-in-stone Кнопка селектора workspace, выравнивание курсора IME#7390 , #7711 
@jay666mnj Конфигурация задержки повтора SSE, регрессионные тесты пагинации transcript#7674 , #7657 
@callmeYe Распространение контекста вызова daemon, режим «нажми и говори»#7279 , #7839 
@he-yufeng Исправление маршрутизации tool-call, усиление повторов скриптов release#6981 , #7535 
@BZ-D Принудительное переподключение MCP#7488 
@ZijianZhang989 Телеметрия вызова памяти#7393 
@yuanyuanAli Слот renderChatHeader Web Shell#7553 
@tanzhenxin Переопределение статистики использования через переменные окружения#7579 
@han-dreamer Запись чтения индекса auto-memory#7468 
@BenGuanRan Явная доставка Channel#7388 
🆕 @ovochouovo 🎉 Первый вклад: выравнивание имён параметров JSDoc, отображение описаний инструментов в compact-сводке#7492 , #7589 
🆕 @Truraly 🎉 Первый вклад: игнорирование заполнителя пустого working_dir#7343 
🆕 @zjgzx1988 🎉 Первый вклад: переопределение системной идентичности QWEN_SYSTEM_IDENTITY_MD#7478 
🆕 @dtometzki 🎉 Первый вклад: проверка обновлений через npm view#7528 
🆕 @WladmirJunior 🎉 Первый вклад: сохранение отключённого reasoning effort#7541 
🆕 @nerdalytics 🎉 Первый вклад: исправление ложного срабатывания npm shim#7545 
🆕 @harjothkhara 🎉 Первый вклад: откат на системный rg#7203 
🆕 @PratikWayase 🎉 Первый вклад: персистентность ошибок пагинации истории терминала#7709 
🆕 @Sparkle6979 🎉 Первый вклад: автодополнение slash-команд дублирующихся skill#7720 
🆕 @VitaliBabkin 🎉 Первый вклад: сохранение MCP-серверов вызывающей стороны в safe-mode#7827 
🆕 @VectorPeak 🎉 Первый вклад: строгий парсинг параметра heatmapDays#7218 
🆕 @Eric-GoodBoy-Tech 🎉 Первый вклад: исправление восстановления сессии QQ Bot#7722 
🆕 @carffuca 🎉 Первый вклад: предложение побочного вопроса при вводе BTW#7935 
🆕 @samuelhsin 🎉 Первый вклад: отключение skill по умолчанию#7357 
🆕 @ZevGit 🎉 Первый вклад: виртуализированная история терминала включена по умолчанию#5738 
🆕 @gauravyad86 🎉 Первый вклад: усиление callback MCP OAuth#7510 

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

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

Last updated on