dsh-computer-use-windows:带安全门禁的 Windows Computer Use 插件

前言

让智能体操作 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.ymlconfig 字段,均可选,有默认值:

字段 默认值 说明
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、幻方没有官方从属关系。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye