Еженедельный дайджест Qwen Code: открытый PR ведёт /autofix-pr, у задач по расписанию появился гейт, фоновую сессию можно продолжить в терминале
На этой неделе Qwen Code выпустил три стабильные версии — v0.26.1, v0.26.2 и v0.26.3 — и принял 357 pull-реквестов.
Отправили PR — дальше за него отвечает /autofix-pr. На вашем компьютере он каждые две минуты следит за PR: упали проверки, коллега оставил замечания, появился конфликт с основной веткой — чинит, проверяет, пушит и в PR отвечает по каждому замечанию.
Задача по расписанию сначала проверяет, есть ли новое. Решает гейт: без перемен раунд не запускается вовсе, и экономия идёт в токены.
Сессию, которая крутится в фоне, возвращают в терминал командой qwen attach. Утром дали ей большой проект, в середине дня вы закрыли то окно; сервис работает, открываете другой терминал, подключаетесь — и диалог продолжается.
✨ Новые возможности
/autofix-pr: сам чинит упавшие проверки и отвечает на замечания ревью
Отправили PR — и дальше нужно самому возвращаться и смотреть: не упали ли проверки CI, что написал коллега, не появился ли конфликт с основной веткой. Теперь запустите /autofix-pr <номер PR>, и Qwen Code ведёт этот PR локально, а неполадки устраняет сам.
Допустим, упал lint: он читает лог этой CI-задачи, правит, прогоняет проверки самого репозитория и только после успеха коммитит и пушит, а в PR оставляет, что именно изменил. Все правки живут в отдельном worktree — каталог, в котором вы пишете, он не трогает. Следит за изменениями он каждые две минуты и берёт только новые. Подробнее: PR #15385 , #15057
Дописали команды для долгой работы: /autofix-pr status показывает состояние, /autofix-pr resume <номер PR> продолжает присмотр за PR в новой сессии. Если вы выбрали надзор с автозапуском, правки выполняются в фоне; обычный запуск так же следует настройкам одобрения. Подробнее: PR #15510 , #15548 , #15578
В Web Shell появилась страница «PR watch»: видно состояние надзора по каждому проекту, число пушей и пункты, где нужно решение человека. Надзор, который ведёт текущая сессия Web Shell, открывается с той же страницы: оттуда возвращаетесь в исходный диалог или останавливаете его. Перед стартом, если в ветке PR остались незакоммиченные правки или не запушенные коммиты, он останавливается и объясняет причину. Подробнее: PR #15668 , #15736
Что это даёт:
- отправили PR вечером — утром видите, что всё падавшее уже починено и запушено
- на каждое замечание из ревью есть ответ, а что правиться не может, вынесено на решение человека
- при конфликте из-за обновлений в основной ветке он сначала подтягивает чужую работу, потом заново прогоняет проверки репозитория
Гейт задачи по расписанию: сначала ваша проверка, модель — только если что-то изменилось
Поручаете ему каждые несколько минут смотреть, есть ли новое: упали ли проверки в PR, не прилетели ли новые issue. Время приходит, но в восьми случаях из десяти нового нет — раунд всё равно прогоняется и заканчивается ответом «ничего нового».
Теперь таким циклическим задачам ставят гейт: небольшую проверку, которую вы описываете сами. При каждом срабатывании сначала идёт она, и это обычная команда. Проверка ничего не нашла — проход на этом заканчивается; нашла — задача продолжает работу и получает то, что увидела проверка. Например, вы следите за сборкой каждые две минуты и настроили скрипт, который печатает только её статус: сборка в порядке — в этот проход ничего не происходит; упала — строка со статусом достаётся модели, и она читает лог и правит. Подробнее: PR #15069
Команду для гейта пишете вы, и правило у неё простое: молчать, когда всё спокойно, печатать, когда есть что показать, — обычно это небольшой скрипт. Сначала можно попросить Qwen Code написать этот скрипт, а потом прикрепить его к задаче.
В форме задачи по расписанию в Web Shell заполняется именно гейт, а на карточке задачи видно его последние результаты. «Run now» тоже сначала прогоняет гейт и только по выводу запускает задачу. Тот самый надзор за PR выше держится как раз на гейте. Подробнее: PR #15211
Что это даёт:
- раз в десять минут смотреть на статус сборки и просить модель править только тот проход, где сборка упала
- следить за новыми issue: пришли — тогда читать и раскладывать по категориям
- поставить на гейт работу, которая в восьми случаях из десяти пуста, — экономия целиком в токенах

qwen attach: сессию из фона продолжаем в терминале
На прошлой неделе добавили группу команд qwen daemon, и локальный сервис крутится в фоне. Сессии внутри сервиса живут так же: закрыли терминальное окно, которое их создало, ушли в другое дело, — сессия остаётся на месте. Вернуться в неё можно было только через Web Shell в браузере.
Теперь в терминале достаточно запустить qwen attach --session <номер сессии> — и вы снова в той сессии: прежние ваши реплики и ответы показываются как обычно, каждая новая строка, набранная здесь, уходит как следующее сообщение, а после ответа появляется новое поле ввода. Подняли сервис утром — после обеда открыли другой терминал и продолжили с того же места. Подробнее: PR #15209
Номер сессии — в адресе этой сессии в Web Shell, строка после /session/. Внутри вы видите поток вывода и поле ввода; автодополнение, история и карточки одобрения из обычного терминала здесь не появляются.
Что это даёт:
- дали правку большого проекта, закрыли то терминальное окно — вернулись через attach и спросили, на чём остановились
- длинную задачу из Web Shell можно догрузить репликой вроде «не забудь обновить документацию», для этого достаточно вернуться в терминал
- сервис запущен на сервере разработки: заходите по SSH и в его терминале возвращайтесь в сессию — смотрите прогресс и дописывайте реплики

Web Shell: сессии и workspace стало проще находить и наводить
В боковой панели появилась вкладка «Recent sessions». Диалоги внутри проекта и диалоги без workspace собраны в один список по времени последней активности. Когда открыто несколько проектов, все сессии видны в одном месте — в Recent sessions. Подробнее: PR #14904
Задания, которые сессия отдала агентам, сворачиваются под ней. Фоновые агенты, форки на ходу и задачи по расписанию со своей сессией висят под той сессией, что их отправила. Ветки одного дела лежат рядом, и основную сессию с её дочерними агентами видно сразу. Подробнее: PR #15714
Workspace можно упорядочить, а новый — создать по Git-адресу. В меню workspace добавили «Move up» и «Move down», так что рабочие проекты держатся наверху и находятся быстрее. При добавлении проекта выберите Git-репозиторий и вставьте адрес — код скачается, и вы сразу в этом workspace. Подробнее: PR #15360 , #15361
В workspace можно добавить ещё каталоги — прямо в настройках. В настройках появилась секция «Workspace directories»: список, добавление и удаление путей. Новый путь сразу открывается для всех активных сессий этого workspace. Подробнее: PR #15393
Прочие улучшения. Имя новой сессии — первая реплика, с которой вы обратились к модели (#15689 ); архив диалогов переехал в отдельный раздел настроек, с группировкой по workspace и фильтром по источнику (#15557 ); ответ можно скопировать целиком в двух видах — «Copy content» даёт текст, «Copy Markdown» исходник (#15345 ); язык ответов виден и выбирается в панели настроек рядом с языком интерфейса (#15363 ).

📊 Прочие новинки
Параметры из интерактивной карточки уходят обратно в диалог. Карточка считала и останавливалась: чтобы продолжить работу с этими числами, их приходилось перепечатывать и отправлять заново. На карточке появилось действие, которое отдаёт применённый набор параметров той же сессии; перед отправкой видно зафиксированный список, подтверждаете — и он уходит. Подробнее: PR #15333
Память, накопленную в Codex, можно перенести к себе. Сначала показывается предпросмотр: выбираете, какие куски переносить и в какой объём; порядок в них наводит модель, настроенная для этого workspace, после чего записи попадают в память Qwen Code — дальше они так же ищутся, используются и забываются. В командной строке запускайте qwen memory import codex, отдельно можно добавить --dry-run. Подробнее: PR #14281
Одной команды на своём компьютере хватает, чтобы поднять и локальный сервис, и Managed Agent. Запустите qwen serve --managed --open — обычные и управляемые сессии окажутся в одном интерфейсе, база данных идёт в комплекте. Нужны Node.js 22 или выше и Java 21; функция экспериментальная и рассчитана на ваш собственный компьютер. Подробнее: PR #14928
В управляемой сессии можно перебить агента и настроить права под неё. Пока агент занят, ваши реплики и приложенные файлы встают в очередь и уходят модели в безопасной точке; очередь правится и отменяется. В простое для этой сессии задают свои правила «разрешить», «спросить», «отклонить» или выбирают одобрение Auto. Подробнее: PR #15449 , #15448
Управляемые сессии передают файлы, берут страницы веба и держат свой список задач, а новые по умолчанию поручают работу дочерним агентам. Файл из браузера уходит в выбранный workspace (до 8 МБ), путь подставляется прямо в сессию; сессия также берёт открытые веб-страницы и держит у себя список задач. Подробнее: PR #15586 , #15313 , #15089 , #15171
Веб-поиск понимает домен вашего собственного шлюза. Команды, которые гонят весь трафик моделей через свой шлюз, раньше не могли включить поиск: собственный домен не распознавался, и без правки исходников обходного пути не было. Теперь достаточно одной настройки — домен и все его поддомены распознаются. Подробнее: PR #15638
👏 Улучшения UX
Режим Workflow теперь живёт в сессии. Включите его через --workflow-mode on или /workflows mode on — и остальные раунды этой сессии идут с этой настройкой. У восстановления, форка, отката и очистки своё поведение; неудачное переключение возвращает прежнее состояние. Оба терминальных интерфейса показывают, включён ли режим; в песочнице Docker переключатель переезжает вместе с сессией. Подробнее: PR #15422 , #15743
В OpenTUI, втором терминальном интерфейсе, закрыли несколько пробелов. Пока поле ввода пустое, пробел запускает голос: транскрипция, отмена, запрос доступа к микрофону и состояние записи подключены. После выхода и возврата видно ранее записанные текст, картинки и результаты инструментов; откат возвращает диалог, следующий запрос и черновик к той же точке. Чекпойнт пишется в момент реального одобрения правки. Вкладки «Discover» и «Sources» у расширений доведены до конца установки. Ставить Bun на свой компьютер больше не нужно. Подробнее: PR #15617 , #15384 , #15389 , #15671 , #14959
Когда контекста почти не осталось, пачка результатов инструментов сжимается по остатку места. Остаток делится на всю пачку: сначала вычитаются текст, картинки и структуры, которые нужно сберечь, а полные оригиналы как и раньше ложатся на диск и остаются доступны. Если целое сообщение об усечении не влезает, пачка уходит обычному сжатию. Подробнее: PR #13599
Модели с контекстом в миллион токенов определяются. qwen4 этого поколения и qwen-latest-series по приглашению теперь получают окно в один миллион токенов вместо небольшого окна по умолчанию. Подробнее: PR #15758 , #15762
В настройках показаны только те модели, которые провайдер отдаёт сейчас. Снятые названия из списка убрали, убрали и модель, где переключатель «выключить рассуждение» на деле ничего не выключал, а картинки для DeepSeek перестали считаться неподдерживаемыми. Alibaba ModelStudio по стандартному API-ключу: заполнили ключ и регион — и выбираете модели, доступные вашему аккаунту. Подробнее: PR #15184 , #15189 , #15164
🔧 Важные исправления
| Исправление | Что это значит для вас | PR |
|---|---|---|
| Выделение в чате VS Code копируется | Выделили текст в истории, нажали Ctrl+C или «Копировать» по правому клику: подсветка оставалась, буфер обмена не менялся (а без выделения его ещё и чистили). Теперь выделенное попадает в буфер | #15403 |
| Картинки и файлы во вложении не теряются при переходе | Набрали текст, ещё не отправили, перешли в другую сессию или обновили страницу — вложения остаются вместе с черновиком; основной вид и split-view одной сессии делят один черновик | #15025 , #15303 |
| Оценка стоимости не считает токены рассуждения дважды | Когда интерфейс не возвращал общее число токенов, токены рассуждения попадали в сумму дважды, и цена выглядела выше реальной. Теперь каждая порция считается отдельно и только потом складывается в итог | #15464 |
| Переименование сессии не тормозит при сотнях записей | Когда в боковой панели накопились сотни сессий, переименование перерисовывало весь список, и ввод отставал. Теперь перерисовывается только поле ввода | #15688 |
| Интерактивная карточка больше не врёт про «посчитано» | Вы поменяли число на карточке, фоновый процесс ответил «готово» — и интерфейс показал успешный пересчёт, хотя правка могла потеряться или остаться необработанной. Теперь эти случаи выглядят по-разному, и пропущенный проход виден, даже если следующий прошёл успешно | #15004 |
| Карточка сохраняет состояние при переходах | Листали историю, переключали сессию, нажимали новую задачу, переходили между основным видом и split-view — введённые значения и результат сбрасывались. Теперь остаются как были | #15611 |
| Сломанная карточка не доходит до вас | Ошибка в разметке, сбой при первом расчёте, ссылка на несуществующий элемент — и вы получали нерабочую карточку. Теперь она сначала прогоняется сама, а ошибка с номером строки и колонки возвращается модели на исправление | #15790 |
| Свежесозданная карточка сразу работает | Пока сессия шла, результат приезжал в виде заглушки с просьбой переоткрыть, и только перезагрузка страницы давала управление. Теперь карточкой можно пользоваться сразу при появлении результата | #15787 |
| Карточки не уходят туда, где их не видно | В терминале и при однократном прогоне модель говорила «карточка готова, подвигайте ползунки», хотя показать её было негде. Теперь карточки получают только интерфейсы, которые их умеют отображать | #15720 |
| На узком экране карточка артефакта не налезает сама на себя | На телефоне длинная строка с информацией о файле вылезала за свою рамку, а кнопки скачивания и открытия ложились на текст сверху. Теперь они под информацией о файле | #15300 |
| Сбой установки скилла называет причину | Раньше в диалоге было только «не установилось». Теперь назван класс проблемы — формат, поле, несовпадение имени, структура пакета, небезопасный путь, — и следом идут подсказки, что делать, на английском и китайском | #15013 |
| Подтверждение от плагина больше не проходит молча | При включённом автоодобрении запросы на подтверждение от самого плагина пропускались автоматически. Теперь они всегда приходят вам, и в диалоге видно, какой плагин их задал | #15306 |
| Порядок рассуждения и ответа сохраняется | Когда рассуждение и ответ шли чередующимися кусками, в терминале и в записи порядок сбивался. Теперь это содержимое с последовательностью: готовый кусок сверху раскрывается и читается, пока нижние ещё поступают | #15621 |
| Обрезанный по длине запрос на правку не дописывает файлы | Когда вывод модели упирался в лимит длины и параметр приходил наполовину, запись всё равно выполнялась. Теперь такой вызов отклоняется по тем же правилам, что в терминале, и текст ошибки одинаков для обоих | #15346 |
| Чужие теги вызова в параметре больше не рушат весь батч | Если значение параметра случайно содержало обрывок тега из другого вызова, отбрасывался весь вызов инструмента. Теперь целый внешний вызов спасается, а некорректная часть отклоняется отдельно | #13579 |
| Экранирование в квадратных скобках sed читается верно | Записи вида s/[ \t]*$// трактовались как escape-последовательности JavaScript, диапазон подстановки уезжал, и нужные пробелы не удалялись. Теперь скобки и всё остальное читаются по одним правилам, а \t и подобные уходят настоящему sed | #13557 |
| Local Control сам берёт свободный порт | Если предпочитаемый порт уже занят другим, запуск падал. Теперь он повторяет запуск со свободным портом, который выдала система, а адрес сопряжения, разрешённые источники и статус показываются по фактически занятому порту | #12352 |
| Каждая группа QQ получает свою сессию | При настройке бота по темам разные группы попадали в одну сессию. Теперь каждая группа снова со своей сессией. Это изменение поведения | #13882 |
| Смена каталога не выглядит как прерванная сессия | Служебные записи, которые подтягивает обновление каталога, принимались за вашу незаконченную реплику, и при восстановлении вас зря спрашивали, продолжать ли. Теперь засчитываются только действительно незакрытые подсказки и незавершённые вызовы инструментов | #15012 |
| Отмена в OpenTUI не ломает повтор | При повторе пропадали подготовленные файлы и картинки, а уже отменённая команда успевала выполниться в момент записи истории. Теперь оба случая закрыты | #15283 |
| На Linux диалог выбора каталога предлагается, когда он действительно работает | Без подключения к графическому сеансу кнопка выбора каталога оставалась на месте и приводила к ошибке. Теперь при запуске сначала проверяется доступность отображения, и кнопка появляется, когда диалог откроется | #15434 |
| Картинки и PDF от провайдера доезжают до модели | То, что прочитали инструменты, раньше не проходило. Теперь проходит: картинки идут через прежнюю безопасную обработку, PDF передаётся исходником или извлечённым текстом | #13606 |
| Отказ от правки в VS Code выводит интерфейс из режима редактирования | После отклонённой правки сообщения интерфейс оставался в редактировании, и следующая обычная реплика не отправлялась. Теперь отказ выходит из редактирования, а при успешной правке прежнее место отката сохраняется | #15439 |
| Управляемые сессии: элементы интерфейса собраны вместе | Переименование переехало в меню каждой сессии в боковой панели; MCP и расширения ведутся через раздел Plugins; при создании задачи убрана повторяющая строка с каталогом, моделью и рантаймом. Поменять рабочий каталог у уже запущенной сессии нельзя, при создании выбор каталога остаётся. Это изменение поведения | #15616 |
👥 Участники
| Участник | Вклад | Ссылки на PR |
|---|---|---|
| @deggs7 | вкладка «Recent sessions» в боковой панели, архив диалогов переехал в настройки, вход для создания группы переехал в меню workspace, строка состояния упрощается вместе со скрытием подсказок загрузки | #14904 , #15557 , #15320 , #15423 |
| @Jun516 | добавлено по одной проверке: на передачу фокуса при повторном открытии деталей сессии и на спиннер в заголовке во время работы | #15351 , #15371 |
| 🆕 @sxl-lucky7 | 🎉 Первый вклад: поправлен пример первого запуска гейта у задачи по расписанию, пояснён учёт расхода при разных способах входа | #15452 , #15554 |
| 🆕 @Aling33 | 🎉 Первый вклад: при падении проверок Java SDK сохраняются отчёт о сбое и причина в SQL | #14910 |
| @barry166 | зафиксирован путь загрузки отчётов JUnit | #15502 |
| @CanReader | зафиксировано экранирование атрибута языка html в веб-вью | #10492 |
| @Eric-GoodBoy-Tech | каждая группа QQ снова получает свою сессию при настройке бота по темам | #13882 |
| 🆕 @EthDing | 🎉 Первый вклад: сообщения лога о переполнении диска перехватываются как ожидается | #8549 |
| @he-yufeng | тесты управления правами изолированы от разделяемого состояния памяти | #11401 |
| @jabrailkhalil | добавлены тесты полного жизненного цикла вложений из Feishu — от получения до записи | #13278 |
| @MohammedAlkindi | исправлено чтение экранирования в квадратных скобках в эмуляции sed | #13557 |
| @shpaker | дописаны разделы про .agents/skills и skills.directories | #15086 |
| @Sumire-no-kai | при занятом порте Local Control берётся свободный, выданный системой | #12352 |
| @waybarrios | эмуляция sed перестала перехватывать длинные ключи, которые она не разбирает | #15223 |
| @yar3333 | копирование выделенного текста в чате VS Code не сбрасывает выделение | #15403 |
Обновление: выполните npm i @qwen-code/qwen-code@latest -g для обновления до последней версии.
Если у вас есть вопросы или предложения, будем рады обратной связи на GitHub Issues !