sage-guikit: DSH 桌面控制工具集

前言

DeepSeek Harness (DSH) 的 agent 在处理桌面应用任务时,需要具备“看”和“做”的能力。现有的 DSH profile 可能缺乏针对 Windows 桌面的具体交互手段。sage-guikit 是一个专为 DSH 设计的 GUI 工具包,它将 Windows 桌面控制能力打包成 profile bundle,为 agent 提供屏幕布局监控、截图、鼠标/键盘操作、窗口管理以及基于 UI Automation 的结构化查询与验证功能。

核心功能

该插件提供 13 个模型工具,核心能力包括:

  • 屏幕与截图:获取显示器布局契约,支持全屏及单窗口截图,并附带坐标标注功能。
  • 交互操作:支持点击、拖拽、打字、按键及滚动。
  • 窗口管理:列出窗口、获取/激活/移动窗口。
  • 定位与验证:通过元素名或 UIA 树定位控件,支持轮询验证和语义验证。

安装与启用

安装该插件需要手动操作,将其作为 DSH profile bundle 引入。

  1. 进入 DSH profile 目录(例如 ~/.dsh/profiles/web)。
  2. 执行安装命令:
    pnpm add dsh-guikit
  1. 编辑该目录下的 package.json,在 dsh.profile.bundles 数组中添加 "dsh-guikit"。
  2. 重启 DSH Web 服务。

本地开发时也可使用 link: 方式,但需注意裸导入可能无法解析到 profile 的 node_modules,此时需在插件目录自行安装 peer 依赖(@deepseek-ai/cordis、@deepseek-ai/dsh-tools)。

工具概览

插件注册了以下模型工具:

屏幕与截图

  • gui_screen: 获取显示器布局、虚拟桌面原点、DPI 缩放等信息。任何坐标操作前应先调用此工具。
  • gui_screenshot: 截取全屏或指定区域,返回图片路径。开启 annotate 后会绘制标尺、网格坐标标签和左下角水印。
  • gui_window_shot: 单窗口截图(PrintWindow),不激活窗口,不遮挡。返回 window-local 空间坐标。

交互操作

  • gui_click: 在指定坐标点击。支持 window 参数和 space 参数(window-local)。可选 verify 参数进行点击后验证。
  • gui_drag: 模拟按住鼠标拖动,用于选文字、拖动滑块等。
  • gui_type: 向焦点控件打字,支持 unicode(绕过 IME)和 clipboard 模式。
  • gui_key: 发送系统按键或组合键(如 ctrl+s)。
  • gui_scroll: 在指定位置滚动滚轮。

定位与管理

  • gui_locate: 通过元素名或窗口标题定位。不猜测坐标,仅在 status="found" 时返回可点击坐标。支持 timeoutMs 轮询。
  • gui_uia: 使用 Windows UI Automation 结构化查询,支持 tree、find、invoke、value 等操作。
  • gui_window: 窗口管理,支持 list、rect、activate、move 操作。

验证

  • gui_wait: 轮询验证,支持像素变化对比或窗口出现等待。
  • gui_verify: 语义验证,断言元素是否存在或属性是否满足条件。返回三态结果(satisfied / unsatisfied / unknown)。

坐标系统与契约

插件定义了三套空间,工具之间不互相猜测,必须严格遵循返回的契约进行换算:

空间名称 用途 原点
virtual-desktop-physical gui_click / gui_drag 入参;gui_screen / gui_locate 返回值 虚拟桌面左上
image-pixels (截图) read_image 读取的图像像素 截取区域左上
window-local gui_window_shot 返回值;gui_click 的 space="window-local" 入参 窗口左上

换算逻辑:
* 图内像素 → 桌面坐标:绝对 = origin + 图内像素 × scale
* 桌面坐标 → 图内像素:图内 = (绝对 − origin) ÷ scale

注意事项:read_image 返回的图像通常经过了降采样(如 ×1.50),图素间距不可信。请务必使用 annotate=true 生成的图片中的标签文本读取坐标,而非手动计算。

注意事项

  • 平台限制:仅支持 Windows 10/11。
  • 依赖环境:依赖 PowerShell 7 和 .NET 的 System.Drawing / UIAutomationClient。
  • 权限与安全:工具在当前 DSH 进程权限下运行,调用前应检查源码与许可证。
  • 验证结果:gui_verify 返回 unknown 并不表示成功,表示“判不出来”,绝不可作为成功读数。

结语

sage-guikit 通过提供结构化的 UI Automation 查询和明确的坐标契约,解决了 DSH agent 在 Windows 桌面自动化中定位不准、验证困难的问题。安装后,agent 即可获得完整的“眼手”能力。更多细节可参考其 GitHub 仓库:gezi-wen/sage-guikit。

羽毛球分组比赛记分
小程序二维码

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

小夜