Computer Use
Computer Use работает через автономный Node REPL MCP-сервер. Его первый вызов js загружает глобальный cua и отображает документацию для текущей платформы. Computer Use и Browser Use больше не требуют встроенных навыков.
Qwen Code / любой MCP-клиент
-> @qwen-code/node-repl-mcp (js, js_reset)
-> @qwen-code/cua-sdk/runtime
-> native Qwen CUA Driver (настольные приложения)
-> @qwen-code/browser-use (расширение браузера Qwen)Настройка
Требуется Node.js 22 или новее и npm. Зарегистрируйте MCP-сервер, затем перезапустите Qwen Code:
qwen mcp add --scope user node-repl npx -y @qwen-code/node-repl-mcp@0.26.0Сервер устанавливает соответствующий SDK и браузерный SDK как зависимости. Нативный пакет SDK загружается для текущей платформы и проверяется по контрольным суммам SHA-256 соответствующего релиза. Он кэшируется вне npm-пакета; команда бутстрапа SDK рабочего пространства не требуется. Версия 0.26.0 является локальным целевым релизом до его публикации.
Windows по умолчанию использует обычную доставку ввода и не устанавливает UIAccess-воркер. Включение UIAccess через CUA_DRIVER_USE_UIACCESS=1 требует подписанного воркера в Program Files\Qwen\CuaDriver; устанавливайте SDK из терминала с повышенными привилегиями с установленной этой переменной. Неподписанный воркер не может включить UIAccess; не обходите проверку подписи. Старым неподписанным релизам для UIAccess требуется новый подписанный релиз драйвера, а не переустановка той же версии.
Задачи приложений
var app = await cua.getApp('Microsoft Excel');
// Используйте короткий идентификатор из автоматически отображенного состояния AX.
await app.click(37);
await app.typeText('hello');
await app.getAXState();getApp отображает полный текст AX без изображения. getAXState отображает последующие диффы. getScreenshot захватывает только текущее окно; getAXStateAndScreenshot захватывает и то, и другое. Наблюдения возвращают строки и отображают себя; {emit:false} подавляет вывод. Запросите скриншот перед использованием координат {x,y}, которые являются пикселями в текущем скриншоте этого окна.
Драйвер разрешает приложения/окна, владеет текущими короткими идентификаторами и координатами, и выбирает доставку ввода. macOS использует доступность и направленные события. Windows и Linux сначала пытаются фоновую доставку и используют ввод переднего плана только после отказа, доказывающего, что ничего не было отправлено. Ввод переднего плана прекращается при обнаружении физической активности пользователя; он восстанавливает предыдущее приложение только если пользователь не переключился в другое место. Подтверждение диспетчеризации не доказывает изменение UI: наблюдайте перед повторной попыткой.
Linux поддерживает X11, включая приложения X11 под XWayland. Нативные приложения Wayland не поддерживаются. Передайте DISPLAY, XAUTHORITY и шину сеанса доступности рабочего стола серверу.
Задачи рабочего стола и браузера
Используйте явный интерфейс рабочего стола для полноэкранных задач:
await cua.desktop.getScreenshot();
await cua.desktop.click({ x: 300, y: 200 }, { key: 'shift' });Координаты рабочего стола — это пиксели в последнем скриншоте основного дисплея. Ввод рабочего стола управляет видимым передним планом рабочего стола и может перемещать реальный указатель. Для удерживаемых клавиш всегда используйте try/finally с cua.desktop.keyDown(key) и keyUp(key). Удерживаемые клавиши принадлежат вызывающей сессии и освобождаются при корректном сбросе/завершении. При удержании клавиш используйте keyDown/keyUp для аккордов и действий указателя рабочего стола без явных модификаторов; освободите их перед вводом текста, обычными сочетаниями клавиш или вводом приложения. Резкое завершение процесса ОС не может гарантировать очистку.
var browser = await cua.getBrowser('Chrome');
// Документация браузера и вкладки отображаются при первом выборе.
var tab = await cua.getTab('TAB_ID', { browser: 'Chrome' });
await tab.playwright.domSnapshot();getBrowser, getTab и createBrowserTab возвращают существующие репозиторий browser-use SDK дескрипторы. Следуйте документации runtime выбранного браузера и подключите расширение браузера Qwen как раньше. Интеграция не добавляет API окон браузера, дифф DOM или новую поддержку Windows.
Разрешения и жизненный цикл
Сервер выполняет JavaScript с обычными разрешениями Node.js и следует потоку одобрения MCP клиента. На macOS требуется Accessibility для ввода/наблюдения AX и Screen Recording для скриншотов; Automation может быть запрошен для сохранения документов/переименования в Finder. Гранты принадлежат цепочке ответственности ОС хост-процесса. На Windows обычный установленный демон использует существующий путь UAC/задачи входа; приложения, которые он запускает, используют токен, производный от его собственного токена, с целостностью обычного пользователя. UIAccess опционален: явная установка CUA_DRIVER_USE_UIACCESS=1 требует доверенного подписанного рабочего процесса под Program Files и завершается ошибкой, если недоступен. Установка npm по умолчанию не подготавливает этот рабочий процесс и не требует его подписи.
js завершается за один вызов и по умолчанию имеет таймаут 30 секунд. Таймаут может оставить внешние эффекты; наблюдайте перед повторной попыткой. js_reset отбрасывает привязки и корректно закрывает собственную нативную/браузерную сессию. После сжатия контекста вызовите cua.rewriteDocumentation() перед продолжением.
Ретрансляция удаленного рабочего стола
Для существующей настройки ретрансляции рабочего стола macOS установите соответствующий сервер:
npx -y @qwen-code/node-repl-mcp@0.26.0 desktop-relay installЭто использует существующий локальный сокет launchd на 127.0.0.1:47821. В защищенном Web Shell выберите Use this computer, затем Connect this computer. Рабочий стол запрашивает разрешение на каждое подключение. Удаленный демон должен включить QWEN_SERVE_CLIENT_MCP_OVER_WS=1.
Прямой MCP и устранение неполадок
qwen-cua-driver mcp предоставляет те же 19 нативных операций Computer Use напрямую. Вызовы приложений используют app; вызовы с поддержкой рабочего стола используют scope:"desktop" вместо этого. key_down/key_up только для рабочего стола. Расширенные нативные инструменты остаются доступными через хост opt-in CUA_DRIVER_EXTRA_TOOLS=1.
Если сервер недоступен, проверьте qwen mcp list и перезапустите клиент после его добавления. Если захват не работает, проверьте текущую сессию рабочего стола и разрешения ОС. Если нативная загрузка не работает, проверьте точную версию релиза/контрольную сумму актива или предоставьте локально собранный соответствующий пакет через QWEN_CUA_SDK_NATIVE_DIR. Заблокированный рабочий стол не может предоставить доказательства принятия GUI.
См. MCP-серверы, Режим одобрения и Песочница.