dsh-visual-safety-control:带内容策略与动作校验的 Windows 桌面控制插件

前言

在 DeepSeek Harness(DSH)里让模型操作本机桌面,常见做法是注册一个 desktop 工具:截图、OCR 找文字、UI Automation 点控件、再发键鼠输入。上游项目 qingying012/dsh-desktop-control 已经提供了这类能力,但在支付按钮、敏感窗口、不可逆提交等场景下,仅靠模型自觉并不够。dsh-visual-safety-control 在同一套截图 / OCR / UIA 能力之上,增加了内容策略、点击与输入校验,以及可在 Harness 设置页直接编辑的策略项。下面介绍它是什么、如何安装,以及典型调用方式。

这是什么

dsh-visual-safety-control 是 DSH 的 Windows 客户端插件,维护者为 Kxiaoguai3。仓库基于 qingying012/dsh-desktop-control v0.1.3(MIT)修改,当前 npm 包版本为 0.4.1,许可证 MIT。插件向模型暴露名为 desktop 的工具,在本地完成截图、Windows OCR、UIA 定位与键鼠操作,并在执行前按策略拦截危险标签与敏感窗口,在点击与输入后用 expect、verifyText、UIA 回读等方式校验结果。

社区目录页:skillhub.cn 插件页。源码与说明:GitHub - Kxiaoguai3/dsh-visual-safety-control。

核心功能

桌面操作能力

能力 说明
截图 全屏、指定窗口或区域;可选坐标网格、光标标记
OCR 本地 Windows OCR,返回文字与坐标
找控件 按 OCR 文字或 UIA 控件名定位,可按窗口过滤;多命中时拒绝点击并列出候选
鼠标 坐标点击、UIA 控件点击、移动、拖拽、滚轮
键盘 文本粘贴、组合键;输入前确认窗口在前台、控件可编辑,输入后回读
窗口 列出窗口(HWND / PID / 位置 / 标题),激活指定窗口
序列 sequence 一次调用执行多步,减少往返

坐标均为物理像素。

内容策略

策略在 PowerShell 启动前生效,模型无法通过参数关闭;用户配置里的列表会整表替换默认值。

  • 危险标签(支付、转账、删除、卸载等)不点击、不查找
  • 敏感窗口(银行、密码、钱包、凭据管理器)不读取、不操作
  • 疑似凭据的输入内容可配置为拒绝发送(refuseSecrets)
  • 危险组合键拒绝执行
  • 不可逆动作(发布、发送、提交、购买等)默认请求用户确认(irreversibleMode: ask)

动作校验

  • 点击前用 expect 校验落点处文字,降低坐标过期误点
  • 点击后用 verifyText 校验窗口内是否出现预期结果
  • 点击做 hit-test,支持同进程弹窗与 UWP 窗口
  • 输入后通过 UI Automation 回读,确认文字已写入

校验状态包括 verified、unverified、unknown、refused(策略拦截、焦点不对、expect 失配等)。

安装与启用

环境要求:仅 Windows(os: win32),需要交互式桌面会话;Node.js >= 22。插件以当前 DSH 进程权限运行,安装前应自行查看源码与 MIT 许可证。

不要与 dsh-desktop-control 同时启用:两者都会注册 desktop 工具,重名会导致加载失败。

本地目录安装(将路径换成本仓库绝对路径):

plugin_manager({ action: "install_bundle", target: "<本仓库的绝对路径>" })

npm 安装(发布后):

plugin_manager({ action: "install_bundle", target: "dsh-visual-safety-control" })

GitHub Packages 上有 @kxiaoguai3/dsh-visual-safety-control 镜像,日常安装请使用 npmjs 上的包名 dsh-visual-safety-control。

首次安装后若设置页尚未出现「视觉安全」,刷新一次 Harness 页面(Ctrl+R)以加载新的客户端插件。

典型用法

desktop 工具通过 action 区分操作,常用参数见仓库 README 中的用法表(find、elements、ocr、screenshot、windows、click、move / drag / scroll、type、key、activate、pos / wait、sequence)。

示例(与 README 一致):

// 找控件
desktop { action: "find", text: "保存", window: "记事本" }

// 点击前校验文字,点击后校验结果
desktop { action: "click", x: 812, y: 460, window: "记事本", expect: "保存", verifyText: "已保存" }

// 输入并回读
desktop { action: "type", text: "hello", window: "记事本" }

设置与配置

装好插件后,打开 设置 → 插件 → 视觉安全 可编辑:启用/关闭内容策略、危险标签与敏感窗口列表、不可逆动作标签及处理方式(请求确认 / 直接拒绝 / 允许)、拒绝的快捷键、序列最大嵌套层数。保存后写入当前 profile 的插件配置,下一次工具调用立即生效,无需重启。与 cordis.patch.yml 中等价配置二选一即可。

片段示例(字段含义以 README 为准):

- id: visual-safety-control
  name: dsh-visual-safety-control
  config:
    policy:
      enabled: true
      denyLabels: ['支付', '转账', '删除', 'delete', 'pay']
      sensitiveWindows: ['银行', 'Password', 'Bank']
      refuseSecrets: true
      denyKeys: ['alt+f4']
      irreversibleLabels: ['发布', '发送', '提交', 'publish', 'send', 'submit']
      irreversibleMode: ask        # ask | deny | allow
      maxSequenceDepth: 5
    verifyType: true
    verifyClick: true

其他常用选项包括 powershellPath、timeoutMs(默认 30000)、screenshotDir、screenshotMaxWidth、keepShots 等,见 README 配置表。

适用场景与限制

适合:在 Windows 上通过 DSH 做本地 GUI 自动化或辅助操作,且希望在模型侧多一层策略与校验,而不是完全依赖提示词约束。

限制(摘自 README):

  • 锁屏、UAC 安全桌面、RDP 断开会失败
  • 纯坐标点击不受内容策略判断,建议配合 expect / verifyText
  • 短标签或形近字 OCR 可能误识,可用 exact 和 index 提高精度
  • 不可逆动作默认 ask;宿主不支持审批时会直接拒绝

仓库还提供 TESTING.md、OPERATING-RULES.md 等文档,用于测试与操作规范。

结尾

dsh-visual-safety-control 在桌面控制 fork 上补齐了策略与校验,适合需要 desktop 工具又关注误点、误读、敏感窗口的场景。安装走官方 plugin_manager 的 install_bundle,并与同名上游插件互斥。

  • 目录页:https://www.skillhub.cn/plugins/Kxiaoguai3/dsh-visual-safety-control
  • GitHub:https://github.com/Kxiaoguai3/dsh-visual-safety-control
羽毛球分组比赛记分
小程序二维码

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

Xiaoye