dsh-gui-control:给 DSH 装上「眼睛 + 手」的 Windows 桌面操作插件

前言

在 DeepSeek Harness(DSH)里做自动化,常见做法是写脚本或调 API;一旦任务落在本机 GUI——对话框、资源管理器、没有稳定接口的桌面软件——模型往往只能「猜界面」,你还得自己点鼠标。社区插件 dsh-gui-control(维护者 Macocin,GitHub:Macocin/dsh-gui-control)把截图、读屏和鼠标键盘控制收成一组 desktop_* 工具,让模型按「看 → 点 → 打字 → 再看」闭环操作 Windows 桌面。下面介绍它是什么、能做什么、怎么装,以及使用前必须知道的边界与安全点。

这是什么

dsh-gui-control 是 DSH 的客户端类插件:类似人类操作的桌面控制——查看截图、控制鼠标键盘,并附带低成本读屏(无障碍树、OCR、找色/网格、截图分级)。当前资料版本为 0.1.0,仅支持 Windows,要求 Node ≥ 18,零 npm 依赖(Node 内置模块 + 系统自带 PowerShell 5.1),许可证 MIT。

插件同时注册 gui-control skill,把坐标换算、省 token 的读屏策略和常见坑写进模型上下文。社区目录页:https://www.skillhub.cn/plugins/Macocin/dsh-gui-control ;源码与说明:https://github.com/Macocin/dsh-gui-control 。目录站点与 DeepSeek / 幻方无官方从属关系,属于 DSH「一切皆插件」生态里的第三方条目。

核心功能

读屏:L0 → L4,先便宜后贵

同一画面,读屏手段不同,token 代价可差约 5~20 倍。README 要求永远从 L0 往 L4 试,第一级成功就停,并在本会话内记住该应用适合哪一级。

层级 工具 作用概要
L0 desktop_a11y Windows UI Automation 控件树(名称 + 坐标)
L1 desktop_ocr 屏幕文字 JSON(文本 + 坐标,无图)
L2 desktop_find 找色 / 网格 / 校验某点颜色
L3 / L4 desktop_screenshot 截图回传图像(可限窗口、区域、灰度、变更检测等)

辅助工具 desktop_info 返回显示器、DPI、光标、前台窗口、窗口列表等纯文本,不消耗图像 token。

操作:类人轨迹与一步多动

  • desktop_mouse:move / click / right / double / drag / scroll;默认鼠标走三次贝塞尔曲线 + 缓动 + 抖动,而非瞬移。
  • desktop_keyboard:type(逐字符 Unicode)、paste(剪贴板)、press / hold。
  • desktop_act:一串步骤 + 末尾截图,一次调用完成多步;含 waitChange 等。
  • desktop_click_text:按文字找坐标并点击,支持 dryRun。

坐标默认绑定最近一张截图的像素:
screenX = region.left + imageX / scale.x。需要物理屏幕坐标时传 space: "screen"。

紧急停止(使用前必读)

热键 效果
Ctrl+Shift+C 所有桌面控制立刻失效
Ctrl+Shift+C+V 急停 + 要求 AI 结束对话
Ctrl+Shift+X 解除(仅用户按键,无工具可代解)

急停后工具返回 HALTED,状态写入 %TEMP%\dsh-gui-control\halt-<pid>.json,Node 每次调用前读取。README 强调:务必阅读急停章节;不要给 DeepSeek 改这个插件,以免急停逻辑被改坏;代码经 AI 核查,可能存在未发现问题。敏感界面上不要让插件看屏——截图、OCR、无障碍树会把屏幕内容(含可见信息)送入模型上下文;paste 会临时读写剪贴板。

急停生效后,desktop_guard 仍可查看状态,是被拦截时唯一还能调通的工具。

实现要点(便于评估信任边界)

  • 持久 helper 进程:helper/win-helper.ps1,JSON 行协议,约 50–90ms/次调用。
  • 截图走 GDI,输入走 SendInput;不执行 shell(无 Invoke-Expression / cmd.exe 等拼用户输入进脚本的路径)。
  • 区域在 Node 侧 clampRegion() 与 C# 侧均有像素上限,避免巨图拖垮 GDI。

安装与启用

在 DSH 内通过 plugin_manager 安装本地 bundle(路径换成你本机目录;资料未给出 dsh plugin add github:... 一类命令,勿自行拼接):

plugin_manager install_bundle  target=file:<你的路径>/dsh-gui-control

示例:

plugin_manager install_bundle  target=file:D:/code/dsh-gui-control

装好后重启 DSH,会出现十个 desktop_* 工具与 gui-control skill。改代码后需重新 install_bundle 或覆盖 profile 下 node_modules/dsh-gui-control/(非软链);仅改 helper/win-helper.ps1 时可杀掉 helper 进程,下次调用自动拉起新脚本。

配置项(package 默认)

项 默认 说明
helperPath 包内 helper/win-helper.ps1 helper 脚本
powershell C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe PowerShell 可执行文件
timeoutMs 60000 单条 helper 命令超时

环境变量 DSH_GUI_CONTROL_KEEP_DIR:设置后每张截图另存一份(调试用)。

典型用法与本地测试

脱离 DSH 时,可在插件目录用 Node 跑冒烟脚本(README 所列):

node test/smoke.mjs           # 工具注册 + info/截图/移动/批量
node test/input.mjs           # 打开记事本, 聚焦, 打字(中文), 截图, 关闭
node test/click.mjs           # 按截图坐标点击 + 长文本粘贴
node test/framing.mjs         # act 步骤坐标跟随本次取景目标
node test/halt.mjs            # 真按急停热键,断言拦截与恢复
node test/halt-midflight.mjs  # 打字中途急停,断言约 1.5s 内中断

在 DSH 会话里,模型应优先 desktop_a11y / desktop_ocr / desktop_find,再必要时 desktop_screenshot;Electron/Chromium 类应用控件树常只有少量节点,资料建议直接走 L1。游戏或自绘界面可优先 L2 找色。

适用场景与注意

适合:需要在 Windows 上让 DSH 模型操作本机 GUI、又不想单独维护 RPA 框架的开发者;强调 token 成本的读屏分级与类人输入的场景。

不适合或需人工介入:UAC / 安全桌面(截图黑、输入无效)、最小化窗口(需先还原)、锁屏、被其他窗口遮挡的「窗口区域截图」、目标窗口以管理员权限运行而当前用户权限不足时 SendInput 被拒绝。

插件以当前 DSH 进程用户权限运行,不会自行提权。安装前应阅读源码与 MIT 许可证,并理解 README「安全模型」:超时后 Node 放弃等待但 helper 内命令可能仍在跑;屏幕与 OCR 结果会进入模型服务商上下文。

结尾

dsh-gui-control 把 Windows 桌面的看与控封装成 DSH 工具,并用 L0–L4 读屏策略和全局急停控制自动化风险。若要进一步了解参数与边界,以仓库 README 为准。

  • 社区目录:https://www.skillhub.cn/plugins/Macocin/dsh-gui-control
  • GitHub:https://github.com/Macocin/dsh-gui-control
羽毛球分组比赛记分
小程序二维码

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

小夜