Computer Use
Qwen Code verfügt über einen computer-use-Skill, der dem Modell beibringt,
wie man Desktop-Anwendungen bedient, über zwei separat installierte Pakete:
bundled computer-use skill
-> @qwen-code/node-repl-mcp
-> @qwen-code/cua-sdk/computer-use
-> native cua-driver accessibility backendQwen Code bündelt nicht den MCP-Server, das SDK oder den nativen Treiber. Der Skill installiert die externen Pakete automatisch, wenn sie fehlen.
Computer Use kann Anwendungs-UIs lesen und Maus- und Tastatureingaben steuern. Verwende es nur in vertrauenswürdigen Umgebungen und prüfe MCP-Genehmigungen sorgfältig.
Automatisches Setup
Node.js 22 oder später und npm werden benötigt.
Bei der ersten Verwendung führt der Skill diese Befehle selbst aus:
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.9Starte Qwen Code neu, nachdem der MCP-Server erstmals hinzugefügt wurde. Der Skill setzt dann
die Desktop-Aufgabe über node_repl fort.
Die SDK-Installation lässt package.json und die Lockdatei unverändert, schreibt aber
in das node_modules des Workspace. Sein Postinstall lädt die native Payload für die aktuelle Plattform herunter und
verifiziert sie.
Das Entfernen der MCP-Konfiguration oder der Workspace-SDK-Installation deaktiviert den Ausführungspfad; es gibt kein Legacy-Fallback.
Verwendung
Bitte Qwen Code, $computer-use für die Desktop-Aufgabe zu verwenden. Nach dem Bootstrap verwendet es
den App-Workflow unter macOS:
- Bindet die Anwendung mit
computer.getApp(nameOrIdentifierOrPath); - Liest
app.getState()für kompakten Accessibility-Text, gefolgt von automatischen inkrementellen Updates; - Führt eine oder mehrere Aktionen über die kurzen Element-IDs in diesem Text aus;
- Ruft den neuesten Zustand ab, bevor entschieden wird, was als Nächstes zu tun ist; und
- Schließt den SDK-Client und setzt das REPL nur zurück, wenn kein anderer persistenter Zustand benötigt wird.
Der Driver ist die einzige Komponente, die Beobachtungs-Diffs berechnet. Modell-Code
verwendet die typisierten SDK-Methoden und dispatcht keine beliebigen Driver-Tool-Namen.
Das App-Handle verfolgt das aktuelle Fenster und Dialoge, behält die native Element-
Identität intern und delegiert Eingaben an den nativen Driver. Modell-Code wählt keine
Foreground/Background-Modi. Unbestätigte Aktionen werden nicht replayed.
getState() kann eine entdeckte gestoppte App öffnen; Aktionen starten sie nie neu.
Vorhandene Exact-Window-APIs bleiben unter Windows und Linux verfügbar.
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);Aktualisiere den Zustand nach dem Öffnen oder Schließen eines Dialogs, bevor Element-IDs
wiederverwendet werden. Jeder App-Zustands-Refresh erfasst intern den aktuellen Screenshot.
Die Standard-Rückgabe hält ihn verborgen; fordere ihn explizit mit
app.getState({ includeScreenshot: true }) an, wenn das Modell das Bild benötigt.
Berechtigungen
Das Node REPL ist ein MCP-Server, der vom Modell verfasstes JavaScript mit normaler Node.js-Autorität ausführt. Seine Aufrufe folgen dem normalen MCP-Genehmigungsfluss von Qwen Code. Das SDK erzwingt zusätzlich native Autorisierung.
Unter macOS erfordern Accessibility-Beobachtung und Eingabe eine Accessibility-Berechtigung. Screenshots erfordern zusätzlich Screen Recording-Berechtigung. macOS kann die Genehmigung dem Terminal oder der IDE zuordnen, das Qwen Code gestartet hat. Windows und Linux verwenden ihre plattformeigenen Accessibility- und Eingabe-Mechanismen.
Fehlerbehebung
- Wenn
node_replnach dem automatischen Setup weiterhin nicht verfügbar ist, starte Qwen Code neu und verifiziere den Server mitqwen mcp list. - Wenn der SDK-Import nach dem automatischen Setup weiterhin fehlschlägt, stelle sicher, dass Qwen Code in dem Workspace läuft, in dem das Paket installiert wurde.
- Nach einem Timeout, Abbruch, Reset oder Kernel-Crash, bootstrape den SDK Client erneut und fordere frischen Zustand an.