前言¶
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