Skip to Content
БлогQwen Code Еженедельно: Стоимость токенов на виду, голосовой ввод, сохранение и повторное использование рабочих процессов
Назад в блог

Qwen Code Еженедельно: Стоимость токенов на виду, голосовой ввод, сохранение и повторное использование рабочих процессов

Qwen Team
2026-06-25

На этой неделе Qwen Code выпустил пять релизов — от v0.18.4 до v0.19.2 (major bump до v0.19.0) — с более чем 140 объединенными PR по трем направлениям:

Голосовой ввод — просто говорите, не нужно печатать. Все входные данные раньше набирались вручную — длинные команды, сложные параметры, смесь китайского и английского. Медленно и подвержено опечаткам. На этой неделе /voice позволяет говорить в микрофон; после завершения быстрая модель автоматически удаляет слова-паразиты и опечатки, показывая чистую транскрипцию.

Рабочие процессы теперь можно сохранять и использовать повторно. Раньше рабочий процесс исчезал после выполнения. В следующий раз приходилось заново писать prompt, и не было возможности возобновить прерванное выполнение в той же сессии. На этой неделе Dynamic Workflows закрывает этот пробел: после выполнения нажмите s, чтобы сохранить скрипт как slash-команду — в следующий раз просто введите /<имя> для вызова. Вы также можете возобновить ранее прерванное выполнение в той же сессии.

Интерфейс повсеместно упрощен. Окна вызовов инструментов терминала складывались в стену из скругленных рамок, блоки thinking не имели выделенной клавиши для развертывания, а управление расширениями и серверами MCP требовало ручного редактирования файлов конфигурации. На этой неделе: рамки удалены, завершенные инструменты свернуты в одну строку, Alt+T специально управляет thinking, /extensions становится интерактивным менеджером, а ресурсы MCP можно просматривать и дополнять через @.

Голосовой ввод: Просто говорите в микрофон

Все входные данные раньше набирались вручную. Длинные команды, сложные параметры, смесь китайского и английского — медленно и легко ошибиться при наборе.

На этой неделе добавлен /voice для голосового ввода. Два режима: режим hold — удерживайте Пробел для разговора, отпустите для остановки; режим tap — нажмите один раз для начала, нажмите снова или тишина автоматически останавливает и отправляет. Аудио захватывается через нативный бэкенд микрофона (@qwen-code/audio-capture N-API addon). На Linux автоматически переключается на arecord/SoX; на macOS запрашивает разрешение микрофона.

Транскрипция имеет два пути: пакетный режим (qwen3-asr-flash) использует API chat/completions совместимый с OpenAI + input_audio; режим реального времени (qwen3-asr-flash-realtime, fun-asr-realtime) передает PCM через WebSocket с отображением частичного текста в реальном времени. После завершения быстрая модель очищает слова-паразиты (“um”, “嗯”) и опечатки, сохраняя вашу оригинальную формулировку — без переписывания. При таймауте или ошибке используется сырой транскрипт напрямую. Голосовой ввод всегда производит текст.

/model --voice выбирает модель транскрипции; general.voice.{enabled,mode,language} настраивает поведение.

Что вы можете сделать с этим:

  • /voice hold — удерживайте Пробел для разговора, отпустите для остановки транскрипции
  • /voice tap — нажмите один раз для начала, скажите предложение или тишина остановит
  • /model --voice qwen3-asr-flash-realtime — выберите модель транскрипции потокового вещания в реальном времени
  • /voice status — проверьте текущую конфигурацию голоса
  • Web Shell: нажмите кнопку микрофона для голосового ввода (запись браузером, транскрипция на стороне daemon)

Смотрите PR #5502 , #5794 , #5755 

Dynamic Workflows: Сохраните после выполнения, вызывайте напрямую в следующий раз

Раньше рабочий процесс исчезал сразу после завершения. Хотите запустить ту же задачу снова? Перепишите prompt с нуля. Прервано посреди сессии? Нет способа продолжить с места остановки.

На этой неделе Dynamic Workflows закрывает этот пробел. После завершения рабочего процесса нажмите s, чтобы сохранить скрипт в .qwen/workflows/<имя>.js. После сохранения он становится slash-командой — в следующий раз просто введите /<имя> для выполнения без переписывания prompt. Вы можете выбрать уровень проекта (доступно только в текущем проекте) или уровень пользователя (доступно во всех проектах) при сохранении. Существующие скрипты с тем же именем запросят подтверждение перезаписи.

В той же сессии вы также можете возобновить ранее запущенный рабочий процесс: resumeFromRunId воспроизводит из логов JSONL, возобновляет на самом длинном неизмененном префиксе из кэша, затем продолжает в первой точке расхождения. Каждое завершенное выполнение терминала автоматически сохраняется в <projectDir>/workflows/<runId>.json; панель /workflows показывает историю (сохраняется после перезапусков; самые старые записи автоматически очищаются).

Дополнительные возможности: watchdog agent stall (таймауты под-агентов автоматически повторяют 3 раза), вложенные вызовы (workflow('<имя>') внутри другого рабочего процесса), мягкое перенаправление ключевого слова “workflow” к инструменту workflow (можно отключить с ui.disableWorkflowKeywordTrigger), и звуковое уведомление терминала при завершении/ошибке.

Что вы можете сделать с этим:

  • После завершения рабочего процесса нажмите s для сохранения как slash-команда /<имя>
  • Панель /workflows показывает историю, сохраняется после перезапусков
  • Возобновите прерванный рабочий процесс в той же сессии
  • Сохраняйте на уровне проекта или пользователя, выбирайте область видимости по необходимости

Смотрите PR #5600 

Опыт UI оптимизирован повсеместно

На этой неделе и терминал, и Web Shell получили концентрированное упрощение — снижение визуального шума, эффективность взаимодействия и возможности управления все улучшены за один раз.

Удаление рамок TUI + сворачивание завершенных инструментов. Каждый вызов инструмента раньше был обернут в скругленные рамки; параллельные вызовы складывались в стену коробок. На этой неделе рамки полностью удалены. В компактном режиме завершенные инструменты сворачиваются в одну строку (иконка статуса + имя инструмента + длительность); только активные и ошибочные вызовы остаются развернутыми. Некомпактный режим не затрагивается.

Thinking Alt+T + полноэкранный просмотрщик. На прошлой неделе Thinking был сворачиваемым, но не имел выделенной клавиши для развертывания — вам приходилось делить Ctrl+O для переключения compactMode. На этой неделе Alt+T специально управляет развертыванием/сворачиванием всех блоков thinking. Нажатие на свернутую строку thinking открывает полноэкранный просмотрщик AlternateScreen с навигацией клавиатурой (↑↓, PgUp/PgDn) + прокруткой мышью.

/extensions становится интерактивным менеджером. Ранее /extensions был плоским списком только для чтения; установка или настройка означали ручное редактирование настроек. На этой неделе он становится интерактивным многовкладочным менеджером: вкладка Installed группирует по уровню + меню действий для каждого расширения (включить/отключить/избранное/изменить scope/обновить/удалить); вкладка Discover ищет и устанавливает расширения marketplace одним кликом; вкладка Sources добавляет новые marketplace (поддерживает repo GitHub, marketplace Claude, пакет npm, локальный путь). CLI также имеет группу команд qwen extensions sources add/list/update/remove.

Ресурсы MCP просматриваемые и дополняемые через @. Ресурсы серверов MCP не имели механизма обнаружения — пользователи не знали, какие данные доступны. На этой неделе диалог /mcp добавляет действие View resources, открывая список URI ресурсов с деталями; ввод @server: автоматически дополняет URI ресурсов этого сервера; ввод @ ищет ресурсы на всех серверах. Prompts больше не перефильтровываются чрезмерно строгим gating возможностей.

Что вы можете сделать с этим:

  • В компактном режиме завершенные инструменты сворачиваются в одну строку; Alt+T управляет thinking
  • /extensions открывает менеджер — поиск, установка, настройка, удаление расширений
  • /mcp → View resources для просмотра данных сервера MCP, @server: для дополнения ресурсов
  • Вкладка Sources /extensions для добавления marketplace Claude или repo GitHub

Смотрите PR #5003 , #5627 , #4850 , #5398 , #5544 , #5635 , #5733 , #5774 

Artifact: Модель дает вам интерактивную веб-страницу

Ранее, когда вы просили модель нарисовать диаграмму архитектуры или создать интерактивную панель управления, она могла выводить только текст и таблицы в терминале — вы видели форматированный вывод, а не настоящие графики, которые можно кликать или перетаскивать.

На этой неделе добавлен инструмент Artifact (экспериментальный, opt-in). Когда включен, модель может упаковать сгенерированный контент как веб-страницу и открыть ее напрямую — диаграммы архитектуры, где вы кликаете узлы для просмотра деталей, таблицы данных с сортировкой и фильтрацией, walkthrough кода с кликабельными ссылками. Как получить прототип от дизайнера, который открывается в браузере.

Весь контент записывается в локальные файлы (~/.qwen/artifacts/), открывается через URL file:// — без доступа к сети. Повторный запуск того же файла перезаписывает старую версию; другой файл создает новую страницу. Сгенерированный контент должен быть полностью самодостаточным — без внешних ссылок CSS или JS, избегая неконтролируемых внешних ресурсов. Ограничение размера одной страницы: 16 МБ.

Включение через настройки: установите experimental.artifact, или установите переменную окружения QWEN_CODE_ENABLE_ARTIFACT=1. По умолчанию недоступно в неинтерактивных режимах и SDK.

Что вы можете сделать с этим:

  • Попросите модель сгенерировать интерактивную диаграмму архитектуры — кликайте узлы для деталей
  • Сгенерируйте панель данных с сортировкой и фильтрацией
  • Сгенерируйте страницу walkthrough кода с кликабельной навигацией
  • Включите experimental.artifact в настройках, или установите QWEN_CODE_ENABLE_ARTIFACT=1

Смотрите PR #5557 

Vision Bridge: Текстовые модели теперь могут видеть изображения

Ранее при использовании текстовой модели (как DeepSeek V4), изображения, сосланные через @, заменялись индикатором “unsupported-image” — модель не видела никакого содержимого изображения.

На этой неделе добавлена автоматическая совместимость Vision Bridge. Когда пользователь ссылается на изображение через @, primary модель известна как text-only, и тот же provider имеет модель capable к изображениям, Qwen Code автоматически занимает модель vision для транскрипции содержимого изображения в текст, затем отправляет этот текст primary модели. Никакой конфигурации пользователя не требуется — запускается автоматически, когда все условия выполнены: primary is text-only + same provider has vision model + user turn содержит image parts. Если primary уже поддерживает ввод изображений, изображения отправляются напрямую без bridge; если modalities primary неизвестны или нет доступной модели vision от того же provider, bridge не запускается и оригинальное поведение сохраняется.

Bridge занимает модели только в пределах того же provider — нет cross-provider маршрутизации, credentials не утекают к третьим сторонам.

Что вы можете сделать с этим:

  • Используйте текстовые модели как DeepSeek V4 и ссылаетесь на скриншоты через @ — автоматически транскрибируются в текстовые описания
  • Никакой конфигурации не требуется; запускается автоматически, когда условия выполнены
  • Занимает модель vision в пределах того же provider, нет cross-provider маршрутизации

Смотрите PR #5126 

/stats: Стоимость токенов на виду

Ранее вы могли только догадываться, сколько токенов использовали или сколько потратили. Запуск длительной задачи мог незаметно сжечь десятки тысяч токенов, но /stats показывал только итоги уровня сессии — без разбивки по дням, месяцам или моделям.

На этой неделе /stats добавляет постоянный учет токенов. /stats daily показывает общие токены дня, количество запросов и разбивку input/output/cached/thought, сгруппированную по модели и типу auth; /stats monthly показывает сводку целого месяца; /stats export daily YYYY-MM-DD --format csv или /stats export monthly YYYY-MM --format json --output <путь> экспортирует файл, содержащий только агрегированные данные — без текста prompt/response или путей проекта. Пути экспорта ограничены рабочей директорией проекта; path traversal, symlinks и пути Windows alternate-data-stream отклоняются.

Данные сохраняются в ~/.qwen/stats/ и переживают перезапуски.

Что вы можете сделать с этим:

  • /stats daily — посмотрите расход токенов дня, сгруппированный по модели
  • /stats monthly — посмотрите сводку месячного потребления
  • /stats export — экспортируйте CSV/JSON только с агрегированными данными, без приватного контента
  • Данные сохраняются после перезапуска

Смотрите PR #4564 

Больше новых функций

ФункцияPRВлияние
Revivable subagent + transcript TTL#5556 Завершенные фоновые Agents могут быть реактивированы в той же сессии без перестроения контекста; старые transcripts автоматически истекают по cleanupPeriodDays
Боковая панель предпросмотра файла Desktop#5730 Предпросмотр файла приложения Desktop больше не закрывает весь экран; правая docked панель с изменяемой шириной, разговор и дерево файлов сосуществуют; исправлены пути CJK и ошибочная идентификация домена .md
Skill desktop-pet#4808 Введите /desktop-pet + имя персонажа для автоматической генерации spritesheet пиксельного питомца и активации
Иконка Liquid Glass macOS 26+#5284 brand-create автоматически компилирует Assets.car; рендеринг иконки Liquid Glass macOS 26+
Жесткая блокировка деструктивных команд Auto mode#5754 git reset --hard, git clean -fd, terraform destroy и т.д. имеют детерминированный regex pre-filter в режиме AUTO, больше не полагаются на классификаторы LLM
/history collapse-on-resume#4085 История по умолчанию сворачивается при возобновлении длинных сессий; /history collapse-on-resume сохраняет предпочтение; /history expand-now временно разворачивает
Временные метки ответа [HH:MM:SS]#5001 Настройка output.showTimestamps показывает временную метку перед каждым ответом assistant; opt-in, по умолчанию выключено
Web Shell от qwen serve#5392 qwen serve напрямую обслуживает UI Web Shell, дополнительная настройка не нужна
Канал QQ Bot#5202 Новый адаптер канала QQ Bot; Qwen Code может подключаться к группам QQ
Движок пробуждения Loop с точностью до секунды#5182 Точность тайминга /loop улучшена с минут до секунд; диапазон delay [60, 3600]s; self-paced wakeup не считается в лимит MAX_JOBS
Self-paced цикл Loop#5197 /loop <prompt> (без interval) становится self-paced циклом — модель сама решает, когда перепроверять, больше нет фиксированного cron 10 минут; короткие интервалы при быстром polling, автоматически удлиняется при стабильности, останавливается при завершении задачи
API правил разрешений workspace#5743 Daemon и клиенты ACP могут читать/записывать правила allow/ask/deny workspace через REST API
Provider Requesty#5478 Новая поддержка provider модели Requesty
Бюджет токенов workflow P5 + UI per-run#5231 Рабочие процессы добавляют контроль бюджета токенов и отображение UI per-run
DashScope preserve_thinking включен по умолчанию#5637 Provider DashScope по умолчанию отправляет токены thinking; процесс рассуждения модели более полный
Теги модели fastOnly/voiceOnly#5632 Модели могут быть помечены fastOnly или voiceOnly, скрыты из основного списка моделей
Обнаружение изменений файла Settings#4933 chokidar watcher обнаруживает изменения файла settings и автоматически обновляет конфигурацию
Источник установки archive /extensions#4909 Поддерживает установку расширений из файлов archive
Инструмент чтения ресурса MCP#5781 Модель получает инструмент read_mcp_resource для автономного чтения URI ресурсов сервера MCP — не нужна ручная инъекция @
Branching сессии Web Shell#5613 Web Shell поддерживает branching сессии
Обнаружение простоя daemon#4934 GET /health?deep=true обнаруживает состояние простоя daemon
Настраиваемые игнорируемые файлы agent#4653 Agents могут настраивать списки игнорируемых файлов
Отображение скорости токенов ответа#5401 Строка состояния опционально показывает скорость токенов ответа
toolCallId системы hook#4918 Система hook получает сырой ID вызова API
Локализованные имена инструментов i18n#5220 Имена инструментов TUI и web-shell локализованы
Lint имени файла kebab-case#4797 ESLint принудительно применяет имена файлов kebab-case
Настраиваемый timeout разрешения ACP#5260 Длительность timeout разрешения ACP daemon настраиваема
Маршрут статуса Remote LSP#5741 qwen serve добавляет endpoint запроса статуса remote LSP
Polling операции расширения#5753 Операции расширения поддерживают polling ожидания завершения

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

ИсправлениеPRВлияние
Отмена разрешения немедленно останавливает выполнение#5258 Когда пользователь отказывает в разрешении, agent немедленно останавливается — не пропускает gate
Circuit breaker вызова инструмента per-turn#5279 Жесткий лимит per turn + опциональное обнаружение loop предотвращает бесконечные циклы вызовов инструмента
Always-on guard последовательных идентичных вызовов инструмента#5573 Повторяющиеся идентичные вызовы инструмента автоматически блокируются, opt-in не нужен
Gate plan имеет escape path когда недоступен#5430 Сбой агента gate plan больше не блокирует весь turn; пользователь может продолжать
Ручной вход в режим plan требует подтверждения#5595 Предотвращает случайное переключение в режим plan
Защита path-traversal workflow#5740 Проверяет runId для предотвращения path-traversal, вызывающего ошибочное удаление директории
Лимит turn fork + эскалация разрешений#5737 Fork под-агенты имеют лимиты turn; запросы разрешений эскалируются к основному агенту для подтверждения
Desktop исправляет два бага ссылки markdown#5730 readme.md ошибочно идентифицируется как домен, перенаправляющий на parked страницу; пути CJK /Users/me/项目/笔记.md не линкуются из-за ASCII-only regex
Восстановлено позиционирование курсора IME#4993 Исправлена регрессия смещения курсора ввода композиции IME из #4779
systemd-inhibit больше не всплывает окно пароля, ломая TUI#5318 Параметр --no-ask-password предотвращает запрос пароля systemd, портящий интерфейс терминала
auto-memory /quit больше не вызывает OOM#5181 Автоматическое извлечение памяти при выходе больше не крашится на больших разговорах
Сохранение сообщений изображений mid-turn#5183 Изображения, вставленные mid-model-reply, больше не теряются
Разрешение неоднозначности duplicate model name#5769 Одно и то же имя модели across providers больше не путается; показывает идентификатор provider
Voice addon упакован в standalone archive#5628 N-API addon @qwen-code/audio-capture включен в standalone tar.gz; голосовой ввод больше не缺少预构建二进制文件
Отклонение stale prompt client#5784 Daemon отклоняет истекшие prompt clients, предотвращая ghost sessions
Маппинг типа transport сервера MCP Claude#5812 Типы transport sse/stdio/streamable-http сервера MCP Claude правильно маппятся в import и .mcp.json
Вставленный путь изображения автоматически promoted to attachment#5803 Пути файлов изображений, вставленные в терминал, автоматически распознаются как вложения, ручной @ не нужен
Модель запоминает выбранный provider#5179 Когда несколько providers разделяют один и тот же ID модели, выбор больше не теряет provider
Emoji thinking → символ Unicode#5788 Иконки thinking и summary переключаются с emoji на текстовые символы Unicode (💡→⟡), чтобы избежать несоответствий рендеринга терминала

🎉 Участники

Благодарим следующих новых участников, которые提交了他们的第一个 PR на этой неделе:

  • @shiloong — toolCallId системы hook передает сырой ID вызова API (#4918 )
  • @Eric-GoodBoy-Tech — адаптер канала QQ Bot (#5202 )
  • @aspnmy — конфигурация сервера MCP (#5311 )
  • @xxlaura — skill pixel-art desktop-pet (#4808 )
  • @mvanhorn — расширение пути home Windows и исправление ghost entry сессии desktop (#5253 )
  • @CubeLander — изоляция AbortSignal gate plan (#5185 )
  • @water-in-stone — обнаружение изменений файла Settings (#4933 )
  • @OrbitZore — systemd-inhibit —no-ask-password (#5318 )
  • @Gove2004 — /history collapse-on-resume (#4085 )
  • @Zoean-z — комментарии trustedFolders сохранены (#4746 )
  • @ken-jo — очистка мертвого поля hooks (#5423 )
  • @Thibaultjaigu — provider Requesty (#5478 )
  • @interconnectedMe — улучшения MCP (#5488 )
  • @lcheng321 — исправление заполнения фона input box (#5568 )
  • @russeell — исправление лимита файла лога OpenAI (#5569 ) и валидация индекса ответа ask_user_question (#5622 )

Благодарим следующих основных участников за их непрерывную итерацию на этой неделе:

  • @he-yufeng — исправление формата изображения BMP/WebP/AVI, тег text-only модели, рендеринг duration, экранирование пути emacs ediff, строгий парсинг переменных окружения (10+ PR)
  • @wenshao — circuit breaker, guard последовательных вызовов, события daemon mid-turn, идемпотентность миграции settings v5, исправление theme background, перехват triage cross-repo, бюджет bundle SDK (8+ PR)
  • @doudouOUC — история файла sed, сохранение изображений mid-turn, память provider модели, остановка при отмене разрешения, обновление provider workspace daemon, разрешение неоднозначности duplicate model, отклонение stale client, документация OAuth MCP (7+ PR)
  • @yiliang114 — интервалы списка расширений, bare fast model auth, миграция settings, представление чата боковой панели VSCode (4+ PR)
  • @qqqys — подтверждение + отмена artifact, упаковка standalone voice addon, лимит turn fork + эскалация разрешений, исправление источника токена /context (4+ PR)
  • @huww98 — McpServer per-session VSCode, дополнение модели Token Plan, исправление двойного подсчета stats
  • @ZijianZhang989 — заголовок окна показывает имя сессии, исправление OOM auto-memory /quit
  • @kkhomej33-netizen — лимит буфера streaming thought, сокращение памяти interactive tool output
  • @Alex-ai-future — закрытие Enter dropdown @path, escape path gate plan, ранжирование completion slash
  • @LaZzyMan — ручное подтверждение режима plan, защита path-traversal workflow
  • @DragonnZhang — защита от краха telemetry, fallback secrets расширения
  • @pomelo-nwu — emoji thinking→Unicode, сохранение/восстановление custom model ID
  • @chiga0 — заполнение background темы удалено из input box и сообщений пользователя
  • @ZevGit — стабилизация взаимодействия мыши VP
  • @BZ-D — исправление маппинга типа transport MCP Claude
  • @cyphercodes — рендеринг истории preview resume, сбой обнаружения loop non-interactive
  • @BenGuanRan — восстановление позиционирования курсора IME
  • @Jerry2003826 — язык вывода эффективен в side queries
  • @tanzhenxin — GLM на DashScope больше не теряет контент web_fetch

Как обновить:

  • CLI: выполните npm i @qwen-code/qwen-code@latest -g для обновления до последней версии.
  • Desktop: скачайте установщик для вашей платформы с GitHub Releases .

Есть вопросы или предложения? Откройте issue на GitHub Issues !

Last updated on