
Qwen Code Computer Use 实战指南用computer-use技能驱动桌面应用【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-codeQwen Code 内置的computer-use技能教会模型如何像人类一样操作桌面应用——读取应用 UI、定位元素、点击输入全程由模型自主编排。本文以 Qwen Code 仓库中的 computer-use.md 为骨架结合 qwen-code/cua-sdk/computer-use 的实现与类型定义讲清它的组件架构、自动安装流程、macOS App 工作流、权限模型与故障排查读完即可在自己的终端环境中跑通桌面自动化任务。组件架构技能 MCP SDK 原生驱动的分层调用链computer-use技能不是一个单体程序而是一条分层的调用链从模型侧的技能文件一直延伸到操作系统的原生无障碍Accessibility后端bundled computer-use skill - qwen-code/node-repl-mcp - qwen-code/cua-sdk/computer-use - native cua-driver accessibility backend各层职责如下层级角色说明bundled computer-use skill模型提示与编排层教模型如何绑定应用、读取状态、执行动作并循环观察qwen-code/node-repl-mcpMCP 服务器提供node_repl工具执行模型编写的 JavaScript按 Qwen Code 常规 MCP 审批流放行qwen-code/cua-sdk/computer-use类型化 SDK提供ComputerUse门面、App 句柄与类型化动作方法见 index.d.tsnative cua-driver原生驱动Rust 实现的桌面无障碍后端负责无障碍投影、截图与输入投递关键设计点是Qwen Code 本体并不打包 MCP 服务器、SDK 或原生驱动。技能在首次使用时自动安装缺失的外部包见下一节仓库中只维护技能的编排逻辑与 SDK 的 TypeScript 类型/包装层packages/cua-driver/typescript/computer-use 目录下含 facade、App 包装与测试。[!warning] Computer Use 可以读取应用 UI 并控制鼠标键盘输入。请只在可信环境中使用并仔细审查 MCP 审批请求。自动安装一条命令链完成引导使用前置条件Node.js 22 或更高版本以及 npm。首次使用技能时技能本身会自动执行以下两条命令完成环境引导qwen mcp add --scope user node-repl npx -y qwen-code/node-repl-mcp0.1.4 npm install --no-save --package-lockfalse qwen-code/cua-sdk0.20.6第一条命令把node-replMCP 服务器以user作用域注册进 Qwen Code模型后续通过node_repl工具执行 JavaScript第二条命令把qwen-code/cua-sdk0.20.6安装到当前工作区的node_modules。两条命令的行为细节值得注意需要重启MCP 服务器首次添加后必须重启 Qwen Code重启后技能通过node_repl恢复执行桌面任务SDK 安装是非侵入式的--no-save --package-lockfalse保证package.json与 lockfile 不被改动但会真实写入工作区的node_modules原生载荷在 postinstall 下载SDK 安装后的 postinstall 会下载并校验当前平台对应的原生 cua-driver 载荷无降级回退一旦移除 MCP 配置或工作区 SDK 安装执行路径即被禁用不存在遗留的 fallback 路径。安装完成后可用qwen mcp list验证node_repl服务器是否在线。使用macOS 上的 App 工作流让模型执行桌面任务时直接要求 Qwen Code 使用$computer-use即可。引导完成后在 macOS 上它会走 App 工作流循环如下通过computer.getApp(nameOrIdentifierOrPath)绑定应用按名称、Bundle Identifier 或安装路径读取app.getState()获得紧凑的无障碍文本随后自动获得增量更新基于文本中的短元素 IDshort element ID执行一个或多个动作每次决策前重新获取最新状态仅在不再需要其他持久状态时才关闭 SDK 客户端并重置 REPL。以下是从 computer-use.md 继承的最小可用示例它展示了绑定 → 观察 → 点击 → 输入 → 再观察的完整闭环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 })显式请求对话框后必须刷新打开或关闭对话框、sheet 或菜单后先重新getState()再复用元素 ID因为进程/窗口/会话变化会使旧 ID 失效文本预算App 文本默认上限 12000 字符可通过maxTextChars最小 512调整需要更多全文时用app.getState({ disableDiff: true, maxTextChars: 24000 })截断时文本末尾会给出警告与截断说明。输入投递的安全边界驱动是唯一计算观察差异diff的组件模型代码只使用类型化 SDK 方法不直接派发任意驱动工具名这与设计文档 computer-use-text-operations.md 中单一技能入口根据驱动工具清单选择平台文档的约束一致App 句柄内部持有目标窗口与对话框它跟踪当前窗口、维护原生元素身份并把输入委托给原生驱动模型代码不能选择前台/后台投递模式不确认的动作绝不重放失败、部分成功、无法验证或已取消的可能已派发动作不会被重放出错时要求先重新观察再重试getState()可唤醒已发现但停止的应用通过原生后台启动器但动作永远不会重启应用Windows 和 Linux 上既有的精确窗口exact-windowAPI 依然可用工作流走listApps → listWindows → observeWindow → 按 elementToken 动作的路径完整示例见 README.md。权限模型MCP 审批 原生授权双层机制node-repl本身就是一个 MCP 服务器它以普通 Node.js 权限执行模型编写的 JavaScript其调用遵循 Qwen Code 常规的 MCP 审批流同时 SDK 层还会再执行一次原生授权校验形成双层防线。操作系统层面的权限要求macOS无障碍Accessibility权限无障碍观察与输入所必需屏幕录制Screen Recording权限截图功能所需macOS 可能把授权归属到启动 Qwen Code 的终端或 IDE 进程注意在系统设置中把授权授予正确的主体Windows 与 Linux 分别使用各自的平台无障碍与输入设施对应 cua-driver 下的platform-windows、platform-linuxcrate。交付模式delivery mode在 SDK 层的解析顺序是动作显式deliveryMode→ 环境变量QWEN_CUA_SDK_DEFAULT_DELIVERY_MODEbackground/foreground→ 默认background。环境变量适合让整个隔离进程如测试 worker统一使用前台投递单动作显式值仍可覆盖它非法环境变量值会使 facade 创建失败。平台路由macOS 与 Windows/Linux 的分工设计文档 computer-use-text-operations.md 明确了平台分流的元数据机制computer.getPlatform()返回macos、windows或linux它来自已连接驱动的工具清单不推断自 CLI 或 Node 宿主也不捕获桌面元数据缺失或非法时会显式失败。macOS走 App 工作流App 句柄 紧凑状态 文本操作Windows/Linux保留精确窗口工作流按pidwindowIdelementToken寻址。macOS 独占的文本操作包括app.paste(text, { format: text | md | html })粘贴一次仅在仍持有剪贴板变更计数时恢复快照外部剪贴板改动必须幸存与app.selectText(element, text, { prefix, suffix, selection })在可观察元素内选择唯一、区分大小写的精确匹配selection默认为text另有cursor_before/cursor_after放置插入点。这两个方法在非 macOS 驱动上会在变更前直接拒绝。从源码结构看SDK 的类型定义index.d.ts中PasteOptions与TextSelectionOptions与文档描述一一对应。Troubleshooting 速查node_repl不可用自动安装后仍不可用先重启 Qwen Code再用qwen mcp list确认服务器已注册且在线SDK 导入失败确认 Qwen Code 是在安装了 SDK 的那个工作区中启动的SDK 安装位置是工作区node_modules跨工作区不可见超时/取消/重置/内核崩溃之后重新引导 SDK 客户端并请求全新状态——旧元素 ID 已失效不要复用。更多关联能力可继续阅读 Skills 技能、MCP 服务器、审批模式 与沙箱 文档。【免费下载链接】qwen-codeAn open-source AI coding agent that lives in your terminal.项目地址: https://gitcode.com/GitHub_Trending/qw/qwen-code创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考