Qwen Code: @ 引用历史会话上下文 без resume, фоновые Agent остаются после завершения, /learn превращает видео в Skill
На этой неделе 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 сохраняет модель запуска, не зависит от смены модели в родительской сессии
Пользовательские каталоги 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 !