Skip to Content
Руководство для пользователейВозможностиУправление компьютером

Computer Use

В Qwen Code входит навык computer-use, который обучает модель управлению настольными приложениями через два отдельно устанавливаемых пакета:

bundled computer-use skill -> @qwen-code/node-repl-mcp -> @qwen-code/cua-sdk/computer-use -> native cua-driver accessibility backend

Qwen Code не включает MCP-сервер, SDK или нативный драйвер. Навык устанавливает внешние пакеты автоматически, если они отсутствуют.

Warning

Computer Use может читать UI приложений и управлять вводом мыши и клавиатуры. Используйте его только в доверенных средах и внимательно проверяйте одобрения MCP.

Автоматическая настройка

Требуется Node.js 22 или новее и npm.

При первом использовании навык самостоятельно выполняет следующие команды:

qwen mcp add --scope user node-repl npx -y @qwen-code/node-repl-mcp@0.1.5 npm install --no-save --package-lock=false @qwen-code/cua-sdk@0.20.9

Перезапустите Qwen Code после первого добавления MCP-сервера. Затем навык продолжает задачу рабочего стола через node_repl.

Установка SDK не изменяет package.json и lockfile, но записывает в node_modules рабочего пространства. Его postinstall загружает и проверяет нативный пакет для текущей платформы.

Удаление конфигурации MCP или установки SDK в рабочем пространстве отключает путь выполнения; устаревшего фолбэка нет.

Использование

Попросите Qwen Code использовать $computer-use для задачи рабочего стола. После бутстрапа он использует рабочий процесс приложения на macOS:

  1. привязывает приложение с помощью computer.getApp(nameOrIdentifierOrPath);
  2. считывает app.getState() для получения компактного текста доступности, затем автоматические инкрементальные обновления;
  3. выполняет одно или несколько действий, используя короткие идентификаторы элементов из этого текста;
  4. получает новейшее состояние перед принятием решения о дальнейших действиях; и
  5. закрывает клиент SDK и сбрасывает REPL только тогда, когда никакое другое постоянное состояние не требуется.

Драйвер — единственный компонент, который вычисляет диффы наблюдений. Код модели использует типизированные методы SDK и не диспатчит произвольные имена инструментов драйвера. Дескриптор приложения отслеживает текущее окно и диалоги, хранит идентификаторы нативных элементов внутри себя и делегирует ввод нативному драйверу. Код модели не выбирает режимы переднего/фонового плана. Неподтверждённые действия не воспроизводятся. getState() может открыть обнаруженное остановленное приложение; действия никогда его не перезапускают. Существующие API точных окон остаются доступными на Windows и Linux.

const app = await computer.getApp('Microsoft Excel'); nodeRepl.write((await app.getState()).text); // Use an element ID from the returned state. await app.click(37); await app.typeText('hello'); nodeRepl.write((await app.getState()).text);

Обновляйте состояние после открытия или закрытия диалога перед повторным использованием идентификаторов элементов. Каждое обновление состояния App захватывает текущий скриншот внутренне. Возврат по умолчанию оставляет его скрытым; запросите его явно через app.getState({ includeScreenshot: true }), когда модели нужно изображение.

Разрешения

Node REPL — это MCP-сервер, который выполняет написанный моделью JavaScript с обычными правами Node.js. Его вызовы следуют обычному потоку одобрения MCP Qwen Code. SDK также применяет нативную авторизацию.

На macOS для наблюдения доступности и ввода требуется разрешение Accessibility. Скриншоты дополнительно требуют разрешения Screen Recording. macOS может привязать выдачу разрешения к терминалу или IDE, из которых запущен Qwen Code. Windows и Linux используют свои платформенные средства доступности и ввода.

Устранение неполадок

  • Если node_repl всё ещё недоступен после автоматической настройки, перезапустите Qwen Code и проверьте сервер командой qwen mcp list.
  • Если импорт SDK всё ещё не работает после автоматической настройки, убедитесь, что Qwen Code запущен из рабочего пространства, где был установлен пакет.
  • После таймаута, отмены, сбоя или краха ядра заново выполните бутстрап клиента SDK и запросите свежее состояние.

См. также

Last updated on