前言¶
在 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 动态注册模式。
三个贯穿设计机制:
- 先观察,再操作:动作必须基于新鲜观察快照(
element编号或窗口本地截图像素坐标),过期即拒绝; - 所见即所点:观察输出与动作坐标共用同一「窗口本地截图像素」空间;
- 自动升级投递:后台优先,后台不可用则升级前台并完成操作后恢复原焦点。
核心功能¶
观察与坐标¶
| 模式 | 原理 | 适用 |
|---|---|---|
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