dsh-win-computer-use:面向 Windows 的 DSH 桌面 Computer Use 插件

前言

在 DeepSeek Harness(DSH)里让模型「看屏幕、点控件、输文字」,难点往往不在 prompt,而在工程:Win32 / WinUI / UIA 的前后台焦点、XAML 输入、观察坐标与点击坐标是否同一套像素空间,以及工具列表过长导致模型频繁换 schema。社区目录 SkillHub 上的 dsh-win-computer-use(维护者 orangeofcarl0-sys,分类 工作流)针对 Windows 做了深度实测,并通过 dispatcher 把对外稳定工具面收成 2 个入口。下面介绍它是什么、能做什么、如何安装与使用。

这是什么

dsh-win-computer-use 是给 DeepSeek Harness 增加的一层 Computer Use 桌面操作能力:底层由 cua-driver 驱动本地桌面(独立虚拟光标,不抢占真实鼠标)。项目源自 988hj7tczd-oss/dsh-computer-use(MIT)@07477f4,现为独立维护;2026-11-10 更名为当前仓库。当前版本 0.5.6,要求 Node.js >= 22.18.0、dsh >= 0.1.5-rc.2,许可证 MIT;平台标注为 Windows 优先,亦声明支持 macOS / Linux。

默认对外只暴露 2 个稳定入口(computer_do、screen_observe),完整 22 个工具 经 dispatcher 路由调用,不再使用已废弃的 enter/exit 动态注册模式。

三个贯穿设计机制:

  1. 先观察,再操作:动作必须基于新鲜观察快照(element 编号或窗口本地截图像素坐标),过期即拒绝;
  2. 所见即所点:观察输出与动作坐标共用同一「窗口本地截图像素」空间;
  3. 自动升级投递:后台优先,后台不可用则升级前台并完成操作后恢复原焦点。

核心功能

观察与坐标

模式 原理 适用
ax(默认) AX/UIA 树 → 编号 + 坐标 原生应用
native 窗口截图供主模型直读 树为空或 Canvas/Electron 等
vision 视觉观察者结构化描述 主模型不支持图片输入时

AX 树为空时会沿文档描述的降级链处理;窗口级观测被拒绝时可降级为桌面级采集(结果标注 visualOnly,坐标语义与动作空间不同)。自 v0.2.0 起,所有动作坐标均为窗口本地截图像素,与 screen_observe 的 @(x,y) 一致,无需乘缩放或加窗口偏移。

screen_zoom 用于区域放大(≤500px JPEG)或在树空时做「定位环」:先裁剪局部图确认目标,再按 crop 元数据换算回整窗像素后点击。

操作与投递

文本输入可走 UIA ValuePattern(computer_type、computer_set_value);组合键走 hotkey 通道。投递链为 background → foreground → bring_to_front,deliveryMode 默认 auto(后台优先,失败再前台,结束恢复原前台)。

其它已文档化能力包括:点击/拖拽/滚动、剪贴板与菜单路径、应用列表与启动(app_list / app_launch)、确定性验证与轮询(computer_verify / computer_wait_for)、强杀开关(computer_stop / computer_resume)、以及子 agent 委派(computer_task,回执压缩到主上下文)。

工具面:dispatcher 与 hybrid

22 个工具 schema 常驻会分散模型注意力,因此默认 dispatcher 只注册 computer_do + screen_observe;其余工具通过:

computer_do({ action: 'call', tool, args })

查询隐藏工具签名:

computer_do({ action: 'catalog' })

hybrid 模式额外直接暴露 computer_click、computer_type、computer_key、computer_scroll、computer_verify,长尾仍走 dispatcher。配置示例:

- id: dsh-win-computer-use
  config:
    surfaceMode: dispatcher   # dispatcher(默认)| hybrid

README 记载:在 opencode / deepseek-v4.1-flash 渠道实测(2026-11-09),dispatcher 稳定 tools 在重复请求中命中率高于旧的动态 enter/lazy 方案,因此默认建议保持 dispatcher。

安全姿态(文档自述)

插件立场为「无感自治」:动作零审批、零打断,归因靠投递注记与会话日志;密码框为唯一硬拒绝(拒绝自动输入);extremePatterns 命中仅附警告不阻断;可选 allowedApps 白名单(默认关)。安装与运行前应阅读仓库 package.json 中 dsh.permissions 摘要与源码,插件以当前 DSH 进程权限执行。

安装与启用

前置:cua-driver

须先安装 trycua/cua 驱动(各平台安装器见上游仓库),或手动指定:

export CUA_DRIVER_BIN=/path/to/cua-driver

缺失时工具返回结构化错误与自救指引,不会静默失败。

安装插件

官方 README 步骤如下。Windows/Linux 可先设置 DSH_HOME 指向 harness 配置目录:

export DSH_HOME=/path/to/dsh-home
git clone https://github.com/orangeofcarl0-sys/dsh-win-computer-use.git
cd dsh-win-computer-use
./install.sh --dry-run   # 预演,不写配置
./install.sh             # 链接进 profile + 注册 bundle patch

亦可按仓库 docs/store-evidence.md 手动安装。装完后重启宿主,用 app_list 或 screen_observe 验证。

典型用法

1、观察窗口

通过 screen_observe 获取编号树或截图(mode 可选 ax / native / vision);窗口未变化时可得极简回执,需要全量时设 force=true。

2、经 dispatcher 调用隐藏工具

例如点击编号元素或坐标(参数以 catalog 为准):

computer_do({
  action: 'call',
  tool: 'computer_click',
  args: { element: 42 }
})

树空时按 README「定位环」:screen_observe → screen_zoom → 图内坐标换算 → computer_click。

3、验证与等待

对 UI 状态做确定性断言或轮询:

computer_do({
  action: 'call',
  tool: 'computer_verify',
  args: { pid, window_id, expect: [/* 1-8 条谓词 */] }
})

unknown 永不视为成功;computer_wait_for 在超时内轮询 expect。

适用场景与注意

适合:在 Windows 上让 DSH 智能体操作本机 GUI(原生 Win32/WinUI、常见 Electron 场景等),且希望工具列表对 prompt cache 友好、观察与点击坐标一致。

注意:

  • 以 Windows 深度实测 为主,其它平台能力以上游声明为准;
  • 依赖 cua-driver 与足够新的 Node / DSH 版本;
  • app_launch 文档说明:驱动若需管理员权限,启动的应用继承高完整性级别,非提权客户端可能无法关闭该进程;
  • computer_task 对子 agent 的工具范围限制取决于宿主;宿主拒绝时子 agent 可能与父会话能力同级,回执会写明;
  • 社区目录与 DeepSeek / 幻方无官方从属关系;星标等元数据以目录页为准(当前约 2 stars)。

结尾

dsh-win-computer-use 把 Windows 桌面自动化收敛为「两入口 + dispatcher」的稳定工具面,并在 UIA、投递升级与观察几何上做了可验证的工程处理。需要安装说明与完整工具表时,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/orangeofcarl0-sys/dsh-win-computer-use
  • GitHub:https://github.com/orangeofcarl0-sys/dsh-win-computer-use
羽毛球分组比赛记分
小程序二维码

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

Xiaoye