dsh-desktop-control:为 DeepSeek Harness 提供桌面控制能力的插件

前言

DeepSeek Harness(DSH)的理念是「一切皆插件」,开发者可以通过插件扩展模型的能力边界。当模型需要操作本地 Windows 程序时,传统做法要么让模型拼装 PowerShell 命令,要么把屏幕截图发给视觉模型去识别。前者容易出错,后者 token 消耗大。dsh-desktop-control 插件直接把一套成熟的桌面控制工具封装为 DSH 工具调用接口,让模型用类型化的 action 做精确控制。

这是什么

qingying012/dsh-desktop-control 是一个 DeepSeek Harness 插件,仅支持 Windows。它包装了内部的 gui.ps1 脚本(包含截图、Win32 输入、本地 OCR、UI Automation),把原本需要手动拼写的 PowerShell 命令转化为统一的 DSH 工具调用。维护者为 qingying012。

插件的核心价值在于:用本地 OCR 替代视觉模型读屏,大幅降低 token 消耗;用 UIA 和坐标定位替代手动点击;用 sequence 把多步操作压缩为一个调用,减少往返开销。

核心能力

插件提供以下 actions:

  • find:运行本地 OCR 定位屏幕上的文本,返回坐标(可点击)。只输出文本行和坐标,不返回图片。
  • elements:列出窗口的 UIA 控件清单,每个控件包含名称和中心点坐标。
  • ocr:对本地图片进行 OCR,返回文本和每行的文本框位置。
  • screenshot:保存 PNG 截图(默认包含光标),返回文件路径。
  • windows:列出可见窗口的 HWND、PID、矩形区域和标题。
  • click:移动并点击,或通过 UIA 名称点击控件。
  • move:移动光标到指定坐标。
  • drag:按下、移动、释放鼠标。
  • scroll:滚动滚轮。
  • type:通过剪贴板粘贴文本。
  • key:发送按键组合,如 ctrl+s、alt+f4。
  • activate:把指定窗口置顶。
  • pos:返回当前光标坐标。
  • wait:睡眠指定毫秒数。
  • sequence:在一次调用中执行多个 actions,包括截图。

所有坐标都是物理像素。插件内部启用了多显示器 DPI 感知 v2。

安装与启用

在 DSH 客户端(Electron)中:
1. 打开 Plugins → + Add plugin
2. 输入 dsh-desktop-control 并安装
3. 安装后点击 Enable now

在 CLI profile 中:

dsh plugin --profile web add dsh-desktop-control

本地开发时,可以在插件目录下直接安装和修改源码,reload 插件后生效。

配置示例

- id: dsh-desktop-control
  name: dsh-desktop-control
  config:
    enabled: true
    powershellPath: powershell.exe
    timeoutMs: 30000
    screenshotDir: ''
    screenshotMaxWidth: 1440
    screenshotGrid: false
    screenshotCursor: true
    keepShots: 40
    elementsMaxRows: 140

常用配置项:
- enabled:是否注册工具,默认 true。
- powershellPath:PowerShell 可执行文件路径,默认 powershell.exe。
- timeoutMs:单次调用超时时间,默认 30000。
- screenshotDir:截图保存目录,默认 $DSH_HOME/desktop-control。
- screenshotMaxWidth:截图最大宽度,用于缩放,默认 1440(0 禁用缩放)。
- screenshotGrid:是否叠加带标签的坐标网格,默认 false(网格会被 OCR 识别为文本)。
- screenshotCursor:是否在截图上标记光标十字,默认 true。
- keepShots:保留最近多少张截图,默认 40。
- elementsMaxRows:elements 输出的最大行数,默认 140(all:true 禁用)。

典型用法

1. 定位按钮并点击

先查找按钮文本,再点击:

find "Save" | window 1296x828 at 312,110 | threshold 0.9

返回坐标后,可以直接在 find 中启用 click:true,在同一调用中完成点击:

find "Save" | window 1296x828 at 312,110 | click true

2. 列出窗口控件

获取窗口的 UIA 控件列表:

elements | window "Notepad" | filter "Button"

返回控件名称和中心点坐标,模型可直接用 click 或 uia invoke 操作。

3. 多步操作压缩

把一连串操作压缩为一个调用,减少往返:

sequence steps=[
  {action: "find", args: {text: "Plugins", threshold: 0.9}},
  {action: "click", args: {uia: "Plugins"}},
  {action: "wait", args: {waitMs: 500}},
  {action: "screenshot", args: {maxWidth: 1440}}
]

适用场景与注意

适合需要模型直接操作 Windows 桌面应用的开发者,例如:
- 自动化安装向导
- 批量配置软件
- 模拟用户在特定窗口中的操作流程

注意事项:
- 插件以当前 DSH 进程的权限运行,而不是低完整性子进程,因此输入操作通常不需要切换权限预设。
- 插件可以点击任意位置、输入任意文本,截图也会进入模型上下文。不要在无人值守机器上启用。
- UAC 安全桌面、锁屏、部分游戏和反作弊软件、终端应用无法被驱动。
- find 依赖 OCR,对简短菜单项效果较好,对长文本或模糊渲染可能识别错误。
- 背景窗口的截图对 GPU 渲染的应用(如 PowerPoint)可能为空白,需要先 activate 置顶窗口。
- UIA 不暴露 Chromium/Electron/Qt 渲染的内容,只能获取窗口外壳、标题栏按钮和菜单栏。
- Windows only。

短结尾

dsh-desktop-control 把一套桌面控制工具链封装为 DSH 工具调用,让模型可以用更低的 token 消耗完成窗口定位、文本识别和鼠标键盘操作。它适合需要模型直接操作 Windows 应用场景,但务必在可信环境中使用。

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

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

小夜