Еженедельный дайджест Qwen Code: видно, какой файл занял контекст, один SSH-адрес открывает проект на другой машине, прерванный рабочий процесс продолжается с того же места
На этой неделе Qwen Code выпустил четыре официальных релиза — с v0.24.1 по v0.24.4 — и принял 200 pull-реквестов.
Когда контекст заполнен, видно, какой файл и какое расширение его заняли. Понятно, что отключать, чтобы освободить место.
Один SSH-адрес — и проект на другой машине правится отсюда. Код лежит на сервере, в сборочной машине или у коллеги: вы остаётесь за своим компьютером, а Qwen Code меняет файлы там и запускает там же сборку.
Прерванный на середине рабочий процесс продолжается после перезапуска. Завершённая часть не теряется: в многочасовом процессе доделываете только то, что упало.
✨ Новые возможности
Контекст разложен по источникам: видно, какой файл и какое расширение его заняли
/context разводит контекст по источникам: системный промпт, встроенные инструменты, инструменты MCP, файлы памяти, навыки, файлы расширений; на этой неделе добавились ещё две строки — «Стартовый контекст» и «Префикс кэша». Через /context detail видно конкретные файлы: всё, что пришло из расширений, помечено Extension: имя расширения · имя файла, и для каждого указано, сколько он занимает. Терминал и Web Shell показывают одно и то же.
Перерасход помечается сразу. Если постоянный контекст (QWEN.md и автопамять) вместе превышает меньшее из двух значений — 15% окна или 10 000 токенов, — при загрузке появляется предупреждение.
Правила из расширения можно включать только по попаданию в файл. Контекст подмешивается, когда вы открываете именно тот файл, к которому правило привязано; в остальное время место не занимает.
Что это даёт:
- Контекст на исходе — сначала смотрите, какие файлы и какое расширение его съедают
- Поставили расширение и контекст подрос —
/context detailпокажет, из-за чего именно - Предупреждение о перерасходе сразу отвечает, что сокращать:
QWEN.mdили автопамять
Подробнее: PR #12119 , #12318 , #12034

Проект на другой машине подключается по одному SSH-адресу
Проект лежит на сервере, в сборочной машине или у коллеги, а менять его нужно вам. Раньше для этого на той машине сначала ставили Qwen Code, поднимали сервис и только потом вписывали адрес. Теперь в Web Shell при добавлении рабочей области вместо пути каталога пишете SSH-адрес:
ssh://user@host/absolute/projectЕсли Qwen Code там не установлен, регистрируете рабочую область этим адресом; если сервис уже запущен, один раз сохраняете адрес и токен — и дальше просто выбираете её при добавлении. После регистрации всё идёт через один ваш локальный диалог: чтение и запись файлов там, команды там же, состояние Git тоже там. Свежедобавленная рабочая область доступна только на чтение — менять в ней документы можно после того, как выдадите разрешение «Доверять».
Что это даёт:
- Код и зависимости на сборочной машине — правки и сборку заказываете из локального диалога
- Проверяете что-то в готовом окружении на чужой машине
- Локальный и удалённый проекты открыты одновременно, и вы ходите между ними в одном диалоге
Подробнее: PR #12255 , #12085 , #12412

Прерванный рабочий процесс продолжается с того же места
Процесс не успел добежать до конца — вы ушли домой, машина ушла в перезагрузку. Раньше это означало запускать всё заново; теперь каждый запуск оставляет запись, и следующий старт начинает с того места, где всё оборвалось.
После перезапуска напоминание приходит само. Запуская Qwen Code, вы видите в стартовом сообщении, какой запуск прервался, на каком шаге он остановился и сколько дочерних агентов уже отработали, плюс подсказку заглянуть в /workflows. Эти запуски попадают и в историю.
На карточке запуска в истории Web Shell есть кнопки. «Повторить сбойную ветку» перезапускает только то, что не удалось, «Перезапустить всё» начинает с нуля.
Что это даёт:
- Уходите посреди длинного процесса — завтра посмотрите, на каком шаге он остановился
- В многочасовом процессе упали два дочерних агента — «Повторить сбойную ветку» доделывает только эти места
- Нужно ещё раз пройти весь процесс с начала — нажимаете «Перезапустить всё»
Подробнее: PR #12159 , #12291 , #12097

Web Shell: сразу несколько обновлений
Перед одобрением правка видна целиком. Карточка подтверждения сама перечисляет, какие строки добавлены и какие удалены; это работает для изменения файла, создания нового и правки notebook. Подробнее: PR #12443
Большая вставка сворачивается в карточку. Всё, что длиннее 200 строк или 8000 символов, сворачивается автоматически; заголовок берётся из начала текста, а кнопка «Показать в поле ввода» возвращает содержимое обратно. Не сворачиваются вставки, начинающиеся с / или !, короткие вставки и замена выделения. Подробнее: PR #12084
В правую панель добавляется вкладка Trajectory. Раунд показался медленным или дорогим — открываете вкладку Trajectory и видите, куда ушло время: сколько длился каждый раунд, когда появился первый символ, сколько токенов потрачено и какой вызов инструмента стоил дороже всего. Вход — в правой области расширений через «Добавить вкладку», где и выбирается Trajectory. Подробнее: PR #12388
История Git стала обозримее. Коммиты в Web Shell показываются графом веток, можно переключаться между всеми ветками и искать по сообщению коммита, автору или хешу. Адреса удалённых репозиториев добавляются и удаляются там же, в интерфейсе, — терминал с командами не нужен. Вход — на метке ветки над полем ввода. Подробнее: PR #12152 , #11163
Прочие улучшения. Переключатель режима планирования убран из панели инструментов поля ввода в меню «+», а пока режим включён, над полем ввода остаётся снимаемая метка (#12218 ); файл, экспортированный через /export, виден в диалоге карточкой с предпросмотром и скачиванием (#12050 ).

📊 Прочие новинки
Web Shell устанавливается как обычное приложение. Справа в адресной строке появилась кнопка установки: один клик — и у сервиса свой значок и отдельное окно, как у приложения из магазина. Нужен Chrome / Edge 111 и выше, Firefox 128 и выше или Safari 16.4 и выше, а адрес должен быть локальным (127.0.0.1 или localhost) либо отдаваться по HTTPS; по IP из локальной сети установить не выйдет. Подробнее: PR #11722
В десктопной версии масштабируется текст окна. Cmd / Ctrl с -, = или 0, либо щипок двумя пальцами на тачпаде — от 50% до 300%; при следующем запуске остаётся тот масштаб, который вы выставили. Подробнее: PR #12410
Квота Goal видна над полем ввода. Строка состояния, кроме прежнего бюджета токенов, показывает ещё лимиты раундов и времени — например 3 / 20 turns или 12m 3s / 30m 0s; у Goal без лимитов всё по-прежнему. Экспорт через /export теперь содержит и весь путь Goal. Подробнее: PR #12201 , #12099
Goal засчитывает выполнение по фактическому ходу диалога. Даёте цель через /goal, она отрабатывает несколько раундов, но собственное «готово» из реплики Goal ничего не доказывает: приёмка перечитывает последние раунды и смотрит, что действительно произошло. Не сходится — цель считается невыполненной. Подробнее: PR #12105
Дочернего агента можно запереть в контейнере. Поручаете ему просмотреть весь репозиторий и гоняете кучу команд — и не боитесь, что он доберётся до SSH-ключей и учётных данных в домашнем каталоге: каждая команда и каждый ввод-вывод остаются внутри контейнера Docker или Podman, и доступна для записи только рабочая область. Включается это до запуска, через QWEN_AGENT_EXECUTION_BACKEND=docker; цена — при таком запуске отключаются рабочие процессы, Agent Team, MCP, LSP и навыки, а Windows пока не поддерживается. Подробнее: PR #11711
У одного провайдера можно смешать два протокола. Хотите, чтобы отдельная модель работала по протоколу OpenAI Responses, — добавляете в её запись строку "wireApi": "responses"; остальные модели идут по-прежнему через Chat. В /auth при настройке своего провайдера появился необязательный шаг «Выбор формата API». Подробнее: PR #11538
👏 Улучшения UX
Web Shell на телефоне стал удобнее. Если сервис слушает внешний адрес, QR-код для сопряжения появляется и в правом верхнем углу страницы сессии: навели камеру телефона — и вы в текущей сессии, вводить токен вручную не нужно. Поле ввода на мобильной странице переверстано: с десяток действий убраны в выдвижной ящик «Добавить к сообщению». Подробнее: PR #12322 , #12252
Вокруг поля ввода стало чище. Пока сессия не создана, выбор рабочей области и метка ветки Git уехали из панели инструментов поля ввода в отдельную строку ниже; после создания сессии от рабочей области остаётся только значок папки наверху, а полный путь виден по наведению мыши. Карточки-артефакты со ссылками в диалоге теперь открываются на новой странице. Подробнее: PR #12299 , #12317
Сводка после /compress стала внятной. После сжатия появляется «Контекст сжат: X → Y», а если сжимать нечего — «Сжатие не требуется.»; после перезапуска сессии число в кольце контекста тоже обновляется. Подробнее: PR #12141
Автоподключение Channel в неосновных рабочих областях заработало. Когда один qwen serve держит несколько рабочих областей со своими ботами Channel, при старте сервиса восстанавливаются Channel каждой доверенной области — переключатель «Подключать автоматически при запуске Qwen Code» после сохранения действительно применяется. Подробнее: PR #12385
На Linux в песочницу теперь садится только выполнение инструментов. Конфигурация прошлого выпуска, где весь Qwen Code запирался внутри bwrap, теперь завершается ошибкой с подсказкой по миграции. После перехода на tools.executionSandbox ограничения касаются только выполнения инструментов — командной строки и чтения-записи файлов, а сам Qwen Code, запросы к модели и ваш вход остаются на машине. Подробнее: PR #12267
Одиночный вызов из скриптов стал быстрее. Режим qwen -p — выполнил строку и вышел — ускорился с 7,7 до 5,1 секунды, а потребление памяти упало с 640 до 421 MiB: один процесс меньше поднимается. Подробнее: PR #12340
Если QR-код не показался в терминале, причина объясняется. Поднимаете сервис на внешнем адресе, чтобы подключиться с телефона, и кода нет — Qwen Code говорит, почему, и выдаёт отдельный код только с адресом: отсканировали, один раз ввели токен на телефоне, соединились. Принудительно вывести код вместе с токеном можно через qwen serve --token-qr. Подробнее: PR #12266
🔧 Важные исправления
| Исправление | Что это значит для вас | PR |
|---|---|---|
| Отмена по Esc больше не считается сбоем | Esc в очереди задач записывался как настоящая ошибка, и модель отрабатывала его как упавшую операцию. Теперь отмена — это отмена | #11154 |
| У официального API DeepSeek считается реальный размер окна | Модель, вписанная как deepseek-flash или просто deepseek-v4, получала 128K вместо окна 1M: длинная сессия сжималась снова и снова, пока не обрывалась. Теперь оба варианта дают 1M контекста / 384K на вывод | #11909 , #12124 |
| Перезапуск сессии не врёт о прерванном ответе | После локальных команд вроде /docs или /export при повторном открытии сессии появлялось сообщение, что прошлый ответ был прерван, и предложение «Продолжить выполнение» для уже сделанной работы. Теперь оно не всплывает, а по-настоящему прерванные сессии как возобновлялись, так и возобновляются | #12052 , #12007 |
| Верхняя панель не показывает старую сессию как «Новый диалог» | Открытая сессия сначала подписывалась «Новый диалог», настоящее имя подставлялось через секунду, а отправка сообщения возвращала старую подпись. Теперь имя видно сразу | #12379 |
| Занятый контекст не обнуляется после перезагрузки страницы | После перезагрузки или повторного открытия сессии индикатор рядом с полем ввода пропадал или показывал 0, и возвращался только после нового сообщения. Теперь доля сохраняется | #12070 |
| Теги-ссылки в сообщениях переживают перезагрузку | Сообщения со ссылками на @файл, MCP или расширение после перезагрузки рассыпались в сырой текст, и файл было не открыть. Теперь остаются теги, предпросмотр открывается | #12404 |
| Интерактивные интерфейсы MCP видны и после перезапуска сессии | Графики и формы раньше жили только в момент вывода, а после перезапуска от них оставалась строка текста. Теперь они восстанавливаются, а если не загрузились — причина объясняется | #12131 , #11960 |
| Обновление расширения показывает прогресс и перестаёт напоминать о себе | «Обновить сейчас» не давало ответа и нажималось повторно, запуская обновление дважды, а после успеха кнопка оставалась на месте. Теперь прогресс виден, повторный запуск заблокирован, по завершении напоминаний нет | #11886 |
| Кнопки ↑ и ↓ на телефоне снова листают историю | В браузере на iPhone нажатия часто не срабатывали, и первое сообщение с приветственного экрана было не достать. Теперь кнопки работают, а черновик остаётся, если уйти в историю и вернуться | #12362 |
| Уменьшение блок-схемы не сжимает её в полоску | Когда mermaid-схему уменьшали, чтобы увидеть целиком, картина шириной за три тысячи пикселей влезала в полоску примерно в 500 пикселей, и после сдвига влево начало терялось навсегда. Теперь холст фиксированный, а диапазон масштабирования следует за размером схемы | #12177 |
| Конфигурация Channel из домашнего каталога не пропадает | Когда qwen serve запускался с домашним каталогом в качестве рабочей области, сохранение Channel возвращало успех, но список показывал 0 configured, а после перезагрузки страницы настройки исчезали. Теперь чтение и запись согласованы | #11083 |
| Китайский текст больше не обнуляет ответ LSP | При включённом LSP любой ответ с китайским текстом (Markdown с китайскими заголовками, китайские имена файлов) отбрасывался, и это выглядело как ложное «символ не найден» с пустым результатом. Теперь такие ответы возвращаются как надо | #12210 |
| Записи в истории рабочих процессов не исчезают целиком | Если запись о запуске обрывалась на середине, весь запуск пропадал из списка истории. Теперь записи сохраняются | #12341 , #12347 |
| Выводы ревью и отчёт о покрытии стали достовернее | Значительная часть дочерних агентов ревью читала основной клон вместо рабочей копии этого PR — причём те файлы, которые как раз менялись в diff; отчёт о покрытии дополнительно придумывал «непроверенный раздел» и заявлял автору, что часть diff осталась без ревью. Теперь агенты работают с правильной копией, а отчёт не сочиняет лишнего | #11926 , #12370 |
👥 Участники
| Участник | Вклад | Ссылки на PR |
|---|---|---|
| @yiliang114 | Diff до одобрения, разбивка стоимости по именам расширений в /context, масштабирование окна в десктопной версии и строка заголовка macOS, упрощённый процесс удалённой рабочей области, ускорение одноразового headless-запуска, исправление не-ASCII в LSP | #12443 , #12318 , #12410 , #12393 , #12340 , #12210 |
| @qqqys | Голосовой вызов и демонстрация экрана в браузере, маршрутизация Realtime-моделей, вкладка Trajectory, контрольные точки рабочих процессов и продолжение с места обрыва, зачёт выполнения Goal по ходу диалога, восстановление Channel в неосновных рабочих областях | #12189 , #12378 , #12173 , #12388 , #12159 , #12291 , #12105 , #12385 |
| @wenshao | SSH-рабочие области без сервиса на удалённой машине, сопряжение по QR-коду с телефона и новая вёрстка поля ввода, граф веток Git и управление удалёнными репозиториями, исправление прокрутки истории на iPhone, переключатель режима планирования в меню «+» | #12255 , #12322 , #12252 , #12152 , #11163 , #12362 |
| @doudouOUC | Инфраструктура выполнения в песочнице, изоляция выполнения инструментов в bwrap с миграцией старых конфигураций, лимит управляемых сессий и остановка рабочих областей, очистка отладочных журналов сессий, предупреждения при загрузке ресурсов MCP, управляемая среда выполнения и база персистентности | #12267 , #12269 , #12067 , #12008 , #12374 , #11960 |
| @ytahdn | Сворачивание длинных вставок в карточку, карточка для экспортируемого файла, внятные сводки после сжатия, два исправления, связанных с перезагрузкой страницы (заголовок верхней панели и теги-ссылки), исправление холста при масштабировании схем, ложное сообщение о прерывании после slash-команд | #12084 , #12050 , #12141 , #12379 , #12404 , #12177 |
| @qwen-code-dev-bot | Старт не падает при недоступном на запись домашнем каталоге, повторы при кратковременных сбоях в CI и на этапах релиза, недостающие алиасы конфигурации в панели настроек | #10455 , #11731 , #11879 , #12103 |
| @tanzhenxin | Канал подключения Browser SDK к Chrome, общий профиль Chrome для нескольких сессий, пайплайн сборки и релиза расширения Chrome с описанием приватности, выбор интерфейса OpenAI для отдельных моделей | #11241 , #11242 , #12229 , #12329 , #12330 , #11538 |
| @chiga0 | Устранение расхождений между экспериментальным и стандартным рендерером, обновление версии рендерера | #11806 , #12309 , #12321 |
| 🆕 @Lilian0122 | 🎉 Первый вклад: ограничение видимости параметров Web Shell со стороны хост-приложения, исправление переполнения при редактировании сообщения в узкой панели | #11975 , #12328 , #12175 |
| @callmeYe | Обновление каталога расширений по списку только для чтения, статус завершения Markdown-сообщений | #12153 , #12431 |
| @DragonnZhang | Сохранение кэша контекста при отложенной загрузке инструментов, обработка пустых значений при постраничном чтении notebook | #10410 , #12421 |
| @dvd233 | Поддержка отложенных вызовов инструментов в e2e-тестах SDK, изоляция вывода при проверке перед выпуском пакетов | #12365 , #12367 |
| @he-yufeng | Имя flash-модели для официального API DeepSeek разбирается по лимитам V4, суффикс поколения V4 сохраняется при нормализации имён моделей | #11909 , #12124 |
| 🆕 @jabrailkhalil | 🎉 Первый вклад: установка Web Shell как браузерного приложения, конфигурация подключения с шифрованием и изоляцией на мобильных | #11722 , #12121 |
| @kabishou11 | Дочерние агенты ревью получают корректный путь рабочей области PR, /context берёт счётчики кэша текущей сессии | #11926 , #12066 |
| @CanReader | Документация об изоляции всего репозитория в процессе ревью | #10493 |
| 🆕 @cactuser-Lu | Сессия с первым сообщением не теряется, когда её подменяют | #12149 |
| 🆕 @elizabethbrunette21 | 🎉 Первый вклад: сообщения в очереди после сбоя перезагрузки снова привязываются к сессии | #12279 |
| @harjothkhara | Grok и MiniMax добавлены в тест порядка провайдеров | #10089 |
| 🆕 @L4XB | 🎉 Первый вклад: из истории убираются строки ввода от уже удалённых сессий | #11769 |
| 🆕 @mohammedmessaoudene-cmd | 🎉 Первый вклад: тесты руководства по управляемому сервису разложены по разделам протокола | #11808 |
| @now-ing | Уточнение, до какого уровня заполнять baseUrl у управляемого OpenAI-совместимого шлюза | #11155 |
| @samuelhsin | Бэкенд отдаёт каталоги сессий нескольких рабочих областей одним запросом | #12254 |
| @shenyankm | Запросы во время создания сессии больше не отклоняются | #11913 |
| @Willam2004 | Одновременные запросы к провайдеру с одинаковым адресом объединяются в один | #12327 |
| @XIQIXIQIXIQI | Ссылки на ресурсы, приложенные пользователем, сохраняются при воспроизведении | #12088 |
Обновление: выполните npm i @qwen-code/qwen-code@latest -g для обновления до последней версии.
Если у вас есть вопросы или предложения, будем рады обратной связи на GitHub Issues !