Qwen Code Еженедельник: Computer Use как встроенная функция без настройки, интеграция Feishu, переписанный движок сжатия
Qwen Code выпустил v0.17.0 и v0.17.1 на этой неделе, более 60 PR объединено по четырём направлениям:
Computer Use теперь встроенная функция. Раньше нужно было устанавливать расширения, настраивать MCP, выдавать разрешения, перезапускать — большинство людей не могли пройти этот workflow до конца. Теперь 9 инструментов десктопной автоматизации зарегистрированы как отложенные встроенные. Модель запрашивает однократное подтверждение при первом вызове, а всё остальное (загрузка бинарника, проводка разрешений macOS, жизненный цикл сервера) полностью автоматическое. Пока Anthropic продолжает усиливать Computer Use в Opus 4.8, но привязывает к своей модели, Qwen Code работает с моделью по вашему выбору — вы контролируете стоимость.
Интеграция с Feishu запущена. Qwen Code уже поддерживает интеграцию с WeChat, и на этой неделе добавлен Feishu. Режимы подключения WebSocket и Webhook, ответы Agent-а транслируются в реальном времени через интерактивные карточки Feishu с кнопкой остановки. Достаточно упомянуть бота через @ в групповом чате Feishu, чтобы использовать Agent — переключение инструментов не требуется.
Сжатие длительных задач больше не теряет контекст. Старая модель сжатия делила по количеству символов на 70/30. Длительные задачи с одним ходом (типичные workflow computer-use) имеют только одно сообщение пользователя, и логика разделения не могла найти точку разреза, отбрасывая все скриншоты и оригинальный промпт пользователя. Новый движок использует полное резюме истории + выборочное восстановление: 9-секционные структурированные резюме сохраняют нарративную непрерывность, а последние 5 файлов + 3 изображения восстанавливают непрерывность состояния. Когда Computer Use сжимает во время работы, Agent больше не становится «слепым».
Пользователи CJK наконец-то могут вздохнуть. Окно кандидатов IME для китайских/японских/корейских методов ввода всегда прыгало в нижний левый угол терминала, на расстоянии целого экрана от места, где вы фактически печатаете. На этой неделе, обходя дерево yoga для перемещения физического курсора к позиции визуального курсора, окно кандидатов наконец следует за ним.
✨ Новые функции
Computer Use без настройки: десктопная автоматизация с одним подтверждением
Qwen Code делает Computer Use встроенной функцией без настройки. 9 инструментов, включая computer_use__list_apps, computer_use__get_app_state, computer_use__click, зарегистрированы как отложенные встроенные инструменты. При первом вызове любого из них моделью появляется стандартный диалог разрешения инструмента — вы нажимаете Approve один раз, и всё дальше автоматически — npx -y open-computer-use mcp загружает upstream бинарник (~50MB), macOS автоматически проводит через разрешения Accessibility и Screen Recording, жизненный цикл MCP сервера управляется автоматически.
Включено по умолчанию (tools.computerUse.enabled: true). Отключите одной настройкой, если не нужно. Работает с выбранной вами моделью, не привязан к конкретному провайдеру.
Что вы можете с этим делать:
- Попросите Agent «открой приложение Stocks, кликни на первую акцию» — Agent видит скриншот, определяет элементы UI и кликает автоматически
- Первое использование требует только одного подтверждения, последующие вызовы проходят напрямую
- Модель отправляет
select:computer_use__list_apps,computer_use__get_app_state,computer_use__clickдля пакетной загрузки схем, загружая несколько инструментов сразу - Проводка разрешений macOS полностью автоматическая: Accessibility → Screen Recording → автопереподключение после перезагрузки
- Отключите через
tools.computerUse.enabled: falseили переопределите версию upstream бинарника черезQWEN_COMPUTER_USE_PACKAGE
См. PR #4590
Канал Feishu: используйте Qwen Code прямо в Feishu
Qwen Code уже поддерживает интеграцию с WeChat, и на этой неделе добавлен Feishu. Новый адаптер канала Feishu (Lark) поддерживает режимы подключения WebSocket и Webhook. Ответы Agent-а транслируются через интерактивные карточки Feishu в реальном времени с кнопкой остановки. Цитируемый/отвеченный контекст корректно захватывается — будь то текстовое сообщение или карточка.
Каждое сообщение имеет независимую изоляцию состояния, поэтому несколько пользователей не мешают друг другу.
Что вы можете с этим делать:
- Упомяните Qwen Code через @ в приватном или групповом чате Feishu для вопросов или назначения задач напрямую
- Следите за процессом мышления и вывода Agent-а в реальном времени через потоковые карточки, прерывайте в любой момент кнопкой остановки
- Цитируйте сообщение для вопроса, и Agent увидит цитируемый оригинальный текст
- Поддержка вложений изображений и файлов
См. PR #4379

Переписанное сжатие: длительные задачи больше не теряют контекст
На прошлой неделе мы спроектировали авто-сжатие как трёхуровневую лестницу. На этой неделе мы пошли на уровень глубже: сам движок сжатия был переписан.
Старая модель делила историю по количеству символов на первые 70% (сжатые в резюме) и последние 30% (сохранённые дословно). Проблема возникала с длительными задачами с одним ходом, как computer-use — пользователь говорит только одну вещь, например «открой Safari, кликни на результат поиска, сделай скриншот», затем Agent выполняет десятки раундов вызовов инструментов. Логика разделения требует как минимум двух сообщений пользователя для нахождения точки разреза; один ход никогда не может найти такую, и fallback заменяет все скриншоты и оригинальный промпт пользователя текстовым резюме. После восстановления Agent становится «слепым» — нет визуального контекста, нет дословного намерения пользователя.
Новый движок использует резюме + выборочное восстановление:
- 9-секционное структурированное резюме: секция 6 принудительно цитирует дословно каждое сообщение пользователя, гарантируя выживание намерения пользователя после сжатия
- Восстановление последних 5 файлов: адаптивно по размеру — маленькие файлы встраивают свежепрочитанное полное содержимое с диска, большие файлы получают только ссылки на пути
- Восстановление последних 3 изображений: каждое изображение несёт заголовок метаданных (индекс хода + имя исходного инструмента + args), модель может соотнести визуальное состояние с действием, которое его произвело
Что вы можете с этим делать:
- После сжатия во время длительной задачи Computer Use Agent всё ещё может видеть недавние скриншоты и ваши оригинальные инструкции
/compressдобавляет директиву фокуса:/compress focus on the auth bug— направляет резюме на то, что вас интересует (макс. 2000 символов)- Режим Plan и состояние фоновых subagent-ов автоматически восстанавливаются после сжатия, без тихой потери
Режим одобрения переименован: Default → Ask Permissions
Режим одобрения по умолчанию ранее назывался «Default» — имя, которое говорит только «это значение по умолчанию», не указывая, какие разрешения режим фактически предоставляет. Другие режимы (Plan, Auto-Edit, Auto, YOLO) все напрямую описывают поведение; Default был единственным исключением.
Переименован в Ask Permissions, напрямую отвечая на вопрос «будет ли Agent спрашивать меня в этом режиме?» Одновременно выровнено с именованием Claude Code для эквивалентного режима, снижая когнитивную нагрузку между инструментами.
Внутреннее значение enum ApprovalMode.DEFAULT, "default" в settings.json и CLI команда /approval-mode default — всё остаётся без изменений — ноль миграции для существующих конфигураций. Переводы для 9 локалей обновлены одновременно.
Что вы можете с этим делать:
- Диалог Settings показывает
Ask permissionsв строкеTool Approval Mode— мгновенно понятно, что этот режим будет запрашивать ваше согласие - Селектор
/approval-modeпоказывает описания поведения, а не бессмысленное «Default» - Существующие settings.json и CLI команды полностью совместимы, изменения не требуются
См. PR #4674

Позиционирование кандидатов IME: методы ввода CJK наконец работают
Qwen Code рендерит визуальный курсор инвертированными символами, а физический курсор скрыт и по умолчанию находится в нижнем левом углу терминала. Окно кандидатов методов ввода CJK всегда следует за физическим курсором — на расстоянии целого экрана от места, где вы фактически печатаете. Hermes и OpenClaude имеют ту же проблему; их решение — форк исходного кода Ink.
Qwen Code использует другой подход: через addLayoutListener (срабатывает после calculateLayout() yoga, ноль дрожания) обходит дерево yoga для получения абсолютной позиции компонента ввода, затем перемещает физический курсор к позиции визуального курсора. Использует patch-package для экспорта внутренних модулей ink/dom и ink/components/CursorContext без форка всего Ink.
Что вы можете с этим делать:
- Переключитесь на Sogou/Apple Pinyin или другие методы ввода CJK, и окно кандидатов появится рядом с курсором вместо прыжка в нижний левый угол
- Окно кандидатов следует при перемещении курсора стрелками
- Обычные разговоры, многострочный ввод и прокрутка истории не затронуты
См. PR #4652

Другие новые функции
| Функция | PR | Влияние |
|---|---|---|
Virtual Viewport: opt-in виртуализированный рендеринг истории (ui.useTerminalBuffer: true), рендерит только видимую область, прокрутка клавиатурой/мышью, исправляет мерцание и лаги длинных разговоров | #4146 | Разговоры в 1000 ходов больше не мерцают/лагают/вызывают шторм прокрутки, напрямую исправляет #3702 #2950 #3118 #2972 |
| Fork SubAgent Gating + Дисциплина промптов: отключает fork в неинтерактивном режиме, внедряет ограничения «Don’t peek / Don’t race» в интерактивном режиме | #4574 | Fork больше не срабатывает случайно в CI/headless; в интерактивном режиме Agent не подглядывает промежуточные результаты fork и не фабрикует статус завершения |
| Мониторинг давления памяти: cgroup-aware RSS + мониторинг кучи V8, автоочистка FileReadCache | #4403 | Автоматически освобождает кеш при давлении памяти во время длинных сессий, избегая OOM |
| Автодамп диагностики перед OOM: записывает диагностический JSON на диск при hard/critical давлении | #4654 | Диагностические данные сохраняются после краша процесса, можно напрямую прикрепить к баг-репорту |
| Уведомления о завершении фоновых Shell задач: уведомления терминала при завершении/неудаче/отмене фоновых задач | #4355 | Не нужно вручную спрашивать Agent, завершились ли фоновые задачи |
| Атомарная запись Фаза 2: credentials/memory/config/JSONL — всё атомарная запись | #4333 | kill -9 / OOM / потеря питания больше не повреждает файлы учётных данных и не вызывает склеивание записей JSONL |
CPU Profiling: /doctor cpu-profile или QWEN_CODE_CPU_PROFILE=1 или сигнал SIGUSR1 | #4620 | Три способа генерации .cpuprofile, загружается напрямую в Chrome DevTools для анализа |
| Предупреждение о повреждении Settings JSON: диалог предупреждения при синтаксических ошибках в файле конфигурации | #4560 | Ошибки ручного редактирования settings.json больше не проглатываются молча |
Кастомизация Statusline: опции respectUserColors + hideContextIndicator | #4670 | Цвета строки состояния и индикатор контекста настраиваемы по предпочтению |
| Модель MiniMax-M3: добавлена конфигурация модели MiniMax-M3 | #4668 | Выбрать MiniMax-M3 напрямую из /model |
| Web Shell /delete: пакетное удаление сессий | #4603 | Пакетная очистка старых сессий в Web UI |
| Runtime MCP add/remove: динамическое добавление/удаление MCP серверов в runtime | #4552 | Управление MCP серверами без перезапуска |
| Triage Skill: встроенный навык классификации issue/PR | #4577 | Agent может выполнить начальную классификацию issue и PR за вас |
| Simplify Skill: встроенный навык упрощения кода | #3570 | Agent имеет систематический workflow упрощения кода |
| Agent Reproduction Workflows: workflow воспроизведения проблем Agent-а | #4118 | Стандартизированный workflow воспроизведения и отладки поведения Agent-а |
| Shell Subprocess Context Env Vars: session/agent/prompt ID инжектированы в переменные окружения shell | #4649 | Пользовательские скрипты могут получить доступ к контексту текущей сессии |
| AUTO Denial Observability + Caps: наблюдаемость и лимиты для отказов режима AUTO | #4476 | Что режим AUTO отклонил и почему — теперь есть данные |
| Web Shell Inline Terminal: встроенный терминальный интерфейс команд в Web UI | #4710 | Видеть выполнение команд напрямую в Web UI |
| Подписанный пакет Computer Use: использует подписанный + нотаризованный форк @qwen-code/open-computer-use | #4726 | macOS Gatekeeper больше не блокирует бинарник Computer Use |
| Мультибрендовая поддержка Desktop | #4581 | Desktop приложение поддерживает мультибрендовые сборки |
| Daemon Non-Blocking Prompt | #4585 | POST /prompt немедленно возвращает 202 + promptId, неблокирующий |
🔧 Важные исправления
| PR | Исправление | Влияние |
|---|---|---|
| #4644 | Заменить structuredClone на поверхностную копию/хвостовой вариант при resume, предотвращая OOM | Возобновление длинных сессий больше не вызывает переполнение памяти из-за глубокого копирования всей истории |
| #4650 | Состояние переключателя /memory корректно сохраняется после повторного открытия диалога | Переключатель /memory больше не теряет настройки после повторного открытия |
| #4605 | Отключить undici 300s bodyTimeout (путь Node.js no-proxy) | Длительные вызовы модели больше не прерываются 300-секундным таймаутом |
| #4580 | Исправить ложную ошибку rewind «compressed turn» при наличии mid-turn сообщений | Откат разговора больше не выдаёт ложные ошибки в сжатых сессиях |
| #4505 | DashScope корректно отправляет enable_thinking при отключённом рассуждении | Пользователи DashScope больше не видят вывод рассуждений после отключения thinking |
| #4540 | Раскрыть ошибку пустого потока провайдера Anthropic | Чёткое сообщение об ошибке, когда провайдер Anthropic возвращает пустой поток, больше не зависает молча |
| #4474 | Загрузить переменные ~/.env перед разрешением переменных settings | Ссылки на переменные окружения в settings.json наконец могут корректно разрешать переменные, определённые в ~/.env |
| #4431 | atomicWriteFile сохраняет uid файла, избегая повреждения файлов совместной записи | Атомарная запись в многопроцессных сценариях больше не меняет владельца файла |
| #4689 | Daemon изолирует параллельные текстовые потоки subAgent-ов | Выходные данные параллельных subAgent-ов больше не перемешиваются в транскриптах |
| #4701 | Исправление клавиши Space в диалоге выбора модели Arena | Клавиша Space наконец работает при выборе моделей в режиме Arena |
| #4558 | Подавить меню автодополнения перед редактированием текста восстановления истории | Нажатие ↑ для восстановления ввода истории больше не вызывает немедленное появление меню автодополнения |
| #4623 | Сжатие, вызванное скриншотом, корректно помечено в уведомлении auto-compact | Уведомления о сжатии больше не помечают ложно сжатие, вызванное скриншотом, как обычное сжатие |
| #4531 | Защита от отправки слишком большой истории resume | Возобновление сверхдлинных сессий больше не завершается неудачей из-за слишком большого payload |
| #4439 | Исправить подсчёт токенов использования враждебных провайдеров | Аномальные подсчёты токенов от определённых провайдеров больше не отображают некорректные данные |
🎉 Новые контрибьюторы
Благодарим следующих контрибьюторов за первый вклад:
| Контрибьютор | Вклад |
|---|---|
| @kagura-agent | Отображение предупреждений запуска на stderr перед рендерингом TUI #4461 |
| @yuanyuanAli | Адаптер канала Feishu (Lark) #4379 |
| @he-yufeng | Прокси-запросы IDE используют undici fetch #4607 , скрытие завершённых sticky todos #4635 , соблюдение флага list extensions #4673 и другое |
| @zzhenyao | Диалог предупреждения о повреждении Settings JSON #4560 , позиционирование кандидатов IME #4652 , опции кастомизации Statusline #4670 |
| @Pepograminger | Отключение undici 300s bodyTimeout #4605 |
| @InfiniteUselessness | Обновление зависимости @google/genai до 2.6.0 #4485 |
| @ZijianZhang989 | Исправление клавиши Space выбора модели Arena #4701 |
Как обновить: Выполните npm i @qwen-code/qwen-code@latest -g для обновления до последней версии.
Если у вас есть вопросы или предложения, оставляйте обратную связь в GitHub Issues !