前言¶
让智能体操作 Windows 桌面,难点不在「点一下」,而在三件事:模型拿到的截图可能拍错了窗口;微信、Electron 这类自绘界面没有无障碍树,element_index 路径走不通;删除、支付这类操作如果没有确认环节,出错就没有回头路。常见的做法要么纯靠截图猜坐标,要么要求目标应用提供完整的 UI Automation 树,两者在真实桌面上都不稳定。
下面介绍 dsh-computer-use-windows,一个面向 DeepSeek Harness(DSH)的插件。DSH 的理念是「一切皆插件」,这个插件补的正是 Windows Computer Use 这一块:窗口发现、UI Automation 元素操作、遮挡感知截图、3x3 网格视觉定位,外加风险操作审批。
这是什么¶
dsh-computer-use-windows 由 nanbbb 维护,当前版本 0.2.1,MIT 许可证。一句话定位:为 DeepSeek Harness 提供带安全门禁的 Windows Computer Use 工具,视觉定位兼容 ModLens。
使用前有几个前提:
- 仅面向 Windows 10/11 x64(MVP 阶段);
- Node 版本要求 >= 22.19(来自 package.json 的 engines 字段);
- 原生辅助程序自带 .NET 运行时,完全自包含,无需单独安装;
- 必须保持
@liustack/modlens启用,本插件不重复也不替代它的视觉提供方。
核心功能¶
窗口发现与前台输入¶
computer_list_windows 做 Windows 窗口发现,操作前插件会把目标窗口激活到前台,再执行点击、打字和按键。
UI Automation 与遮挡感知截图¶
标准控件走 UI Automation:插件返回元素发现结果和焦点状态,操作绑定 element_index。窗口截图是遮挡感知的:窗口空白或被遮挡时,原生辅助程序会重新激活该窗口并重试;仍然被遮挡则报明确错误,而不是返回错误窗口的截图。
ModLens 兼容的 3x3 视觉定位¶
computer_observe 返回标注 A1-C3 的 grid_screenshot_path。对没有无障碍树的自绘 UI,用 modlens_read_image 读网格,选定单元格后 computer_zoom 逐级放大,重复直到区域足够小再点击。
绑定观测快照的操作¶
元素和坐标操作都绑定观测快照:element_index 与坐标只在快照有效期内可用,快照过期即失效,避免对着过时的界面执行操作。
审批与托盘唤醒¶
风险操作通过 DeepSeek Harness 的一次性审批提示确认。托盘唤醒由 computer_hotkey(如 ctrl+alt+w)和 computer_tray 负责。
安装与启用¶
从 npm 安装:
npx -y @deepseek-ai/dsh plugin --profile web add dsh-computer-use-windows
或从 GitHub 安装:
npx -y @deepseek-ai/dsh plugin --profile web add github:nanbbb/dsh-computer-use-windows
安装后需要重启 DeepSeek Harness 才会生效。想从源码构建,先跑验证和打包,再把生成的 tgz 安装进 DSH:
npm run verify
npm pack
npx -y @deepseek-ai/dsh plugin --profile web add C:\absolute\path\to\dsh-computer-use-windows-0.2.1.tgz
同样,安装后重启 DeepSeek Harness。
配置¶
配置写在 cordis.patch.yml 的 config 字段,均可选,有默认值:
| 字段 | 默认值 | 说明 |
|---|---|---|
observationTtlMs |
120000 |
观测快照有效期(毫秒),过期后 element_index / 坐标失效 |
maxAccessibilityElements |
300 |
单次观测返回的 UI Automation 元素上限 |
screenshotDirectory |
auto |
截图输出目录;auto 表示系统临时目录 |
requireApprovalForTyping |
false |
设为 true 时所有打字操作强制走审批 |
allowedApps |
[] |
进程白名单;非空时只允许这些进程名(不含 .exe,如 ["notepad","chrome"]),其余全部拒绝 |
allowedExternalLabels |
[] |
允许降级「发送/提交」类标签的名单(子串匹配、不区分大小写,如 ["发送","send"]) |
allowedExternalLabels 只能放行 external 类的发送/提交标签,命中时按模型的显式 risk 处理;删除、支付、登录类操作不在放行范围,永远升级到审批。
典型用法¶
计算器任务¶
示例任务:用 Computer Use 打开已有的计算器窗口并计算 19 × 7,不操作其他应用。流程为:
1、computer_list_windows 选定唯一返回的窗口;
2、computer_observe 获取观测快照;
3、执行一次操作;
4、再次 computer_observe 确认结果。
无无障碍树的自绘 UI¶
微信、Electron 这类自绘界面拿不到 element_index,走截图路径:
1、computer_observe 拿到 grid_screenshot_path;
2、modlens_read_image 读网格,选定 A1-C3 中的目标单元格;
3、computer_zoom 放大该区域,重复直到区域足够小,再点击。
ModLens 可能超时或不精确:读不到就重试,并用 computer_zoom 交叉核对,不要只信单次网格结果。标准控件仍应走 UI Automation 的 element_index 路径。
唤醒托盘里的微信¶
微信是隐藏到托盘而不是最小化,先唤醒再观测:
computer_hotkey: ctrl+alt+w
或者用 computer_tray。不要依赖辅助程序去揭示一个空白窗口。
适用场景与注意¶
适合的场景:在 Windows 10/11 x64 上,需要让智能体操作真实桌面应用(标准控件与自绘 UI 混合)的开发者。MVP 阶段平台范围只有 Windows 10/11 x64。
使用前有几件事必须清楚:
1、这是前台模式。操作前会把目标窗口激活到前台,物理鼠标移动到操作点,不能后台运行。代理工作时不要同时使用这台机器。
2、安全模型是失败关闭(fail closed)。风险调用使用 Harness 审批服务,缺少审批支持时直接失败;屏幕上出现的指令永远不算用户授权。
3、原生辅助程序会拒绝一批请求:不可见窗口、无效句柄、窗口外坐标、密码控件、终端窗口、认证 UI、锁定桌面。
4、插件以当前 dsh 进程的权限运行,它能做什么取决于你启动 DSH 的环境。安装前建议检查源码与许可证,本插件为 MIT。
结尾¶
回顾一下:dsh-computer-use-windows 把窗口发现、UI Automation、遮挡感知截图和 3x3 网格视觉定位组合起来,用观测快照约束操作、用审批服务兜底风险,在 DSH 插件体系里补齐了 Windows Computer Use 这一块。经过上面的安装、配置和示例流程,可以在自己的工作流里直接试一遍。
- 社区插件目录页:https://www.skillhub.cn/plugins/nanbbb/dsh-computer-use-windows
- GitHub 仓库:https://github.com/nanbbb/dsh-computer-use-windows
目录页是社区独立站点,与 DeepSeek、幻方没有官方从属关系。