dsh-vimina:将 Vimina 能力集成到 DSH 原生工具中

DSH(DeepSeek Harness)遵循“一切皆插件”的架构理念。在 Windows GUI 自动化场景下,直接调用底层能力通常需要编写自定义桥接脚本。该插件将 Vimina(基于 .NET 8 的 Windows GUI 自动化服务)的能力注册为 DSH 原生工具,让模型可直接调用扫描、点击、输入、按键、脚本控制、截图、窗口管理及鼠标操作等能力,无需依赖视觉模型。

核心功能

插件通过 stdio 协议驱动 Vimina 的常驻服务(Vimina.exe serve),将底层方法映射为 DSH 的工具。模型可见的工具共 26 个,涵盖以下领域:

  • 窗口与扫描:列出窗口、扫描前台控件、按标题扫描、按名称或坐标查询控件、激活窗口。
  • 点击与鼠标:按标签点击、坐标点击、滚动(支持滚轮)、获取/移动/拖拽/按下/释放鼠标。
  • 键盘操作:输入文本、组合键、按键按下/释放。
  • 脚本与引擎:执行/暂停/恢复/停止 VMA 脚本、查询引擎状态、获取脚本日志。
  • 其他:能力自描述、截图(支持区域截取)。

安装与挂载

推荐将插件作为 DSH profile 依赖安装,加载器会自动挂载 cordis.patch.yml。

dsh plugin --profile web add <包名或本地路径>

若需手动挂载,可修改 dsh.profile.bundles 或使用 --patch 参数:

dsh web --patch path/to/dsh-vimina/cordis.yml

通常无需手动配置路径,插件会按优先级自动解析 Vimina.exe 的位置。

配置

插件支持以下配置项(默认值在括号内):

字段 默认值 说明
exePath 自动解析 Vimina 可执行文件路径
timeoutMs 60000 单次工具调用超时

exePath 的自动解析优先级如下:
1. 显式配置:DSH 设置或 profile 中的配置。
2. 环境变量:VIMINA_EXE。
3. 自动探测:常见安装位置(%LOCALAPPDATA%、%ProgramFiles% 等)。
4. 回退:PATH 上的 Vimina.exe。

使用与注意事项

浏览器使用限制

在操作 Chromium 浏览器时,必须遵守以下规则:
- 必须使用真实点击:vimina_clickAt 默认 backend=false,后台点击对 Chromium 网页无效,请勿使用 backend:true。
- 先滚动再扫描:网页内容需要先滚动(vimina_scroll 或 vimina_key PageDown/End),UIA 才能暴露网页控件,否则 vimina_scan 只能看到浏览器框架。
- getControlAt 命中容器:在网页场景下,坐标命中往往返回的是外层容器而非精确控件,应以 vimina_scan 结果为准。

通用注意事项

  • 先扫描后操作:vimina_clickLabel 依赖最近一次 vimina_scan 的映射,操作前需重新扫描。
  • 沙箱限制:插件采用懒启动 Vimina 进程,在受限沙箱环境中可能被 EPERM 拦截。
  • 无需视觉模型:vimina_scan 和 vimina_getElement 直接返回文本控件名,无需 OCR 或视觉模型。

典型用法示例

1. 区域截图
截取屏幕左上角 (100, 200) 处宽 400 高 300 的区域并保存为 cover.png:

vimina_screenshot({ filename: 'cover.png', x: 100, y: 200, w: 400, h: 300 })

2. 页面滚动与扫描
滚动页面后扫描控件:

vimina_scroll()
vimina_scan()

3. 控件操作
激活窗口并按标签点击:

vimina_activate()
vimina_clickLabel('提交')

总结

dsh-vimina 插件通过将 Vimina 的 GUI 自动化能力标准化,为 DSH 模型提供了无需视觉模型的直接操作 Windows 的能力。开发者可通过简单的配置与命令将其集成到工作流中,实现更精准的桌面自动化操作。

GitHub 仓库

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

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

小夜