dsh-winbot:在 Windows 上通过 GUI2API 操控桌面的 DSH 插件

前言

在 Windows 上让 DeepSeek Harness(DSH)不只读写文件和跑终端,还要点按钮、读窗口、跟进控件变化,通常需要单独接一套桌面自动化后端,再在 DSH 里挂工具、管会话和权限。自己拼 NDJSON 连接、引用隔离和唤醒逻辑,工作量大,也容易和模型侧配置搅在一起。

下面介绍社区插件 dsh-winbot(npm/DSH 包名仍为 dsh-gui2api-bot,以兼容现有 bundle)。它通过 GUI2API 操控 Windows 桌面,并在 DSH 侧提供可编辑人格、持久记忆和定时唤醒。维护者为 daoxiang0520,SkillHub 分类为「客户端」。当前基线版本 0.5.0,注册 28 个工具。本仓库不包含 GUI2API 后端、用户人格、记忆、profile 或模型凭据。

这是什么

dsh-winbot 是运行在 Windows 10/11 上的 DSH 插件:DSH 负责模型调用、对话、文件/终端工具、权限和会话持久化;GUI2API 负责控件发现、调用、恢复和增量登记;插件负责常驻 NDJSON 连接、按会话隔离引用、人格/记忆装配及周期唤醒。结果不明时不自动重放。

运行还需要 Python 3.11+、Node.js >=22.13,以及兼容的 DSH >=0.2.1-rc.2 <0.3.0。VM 安装/启动脚本另需 PowerShell 7。桌面必须登录并解锁;实际权限由 Windows 账户与 DSH 设置决定。

核心功能

桌面 GUI 工具链

插件向模型暴露一组以 gui_ 和 bot_ 为前缀的工具,覆盖 attach、发现、调用、窗口动作,以及 bot 上下文与唤醒。默认流程为:gui_apps → gui_attach → gui_find/gui_discover → gui_invoke/gui_discovery_invoke → 观察结果。

工具 用途
gui_resources / gui_resource_describe 发现资源元数据、复核来源
gui_resource_read / gui_resource_release 显式读取资源、释放引用或清理文件
gui_schema / gui_apps / gui_targets 协议、窗口和已有 CDP 页面
gui_attach / gui_detach / gui_reset 来源和会话连接生命周期
gui_find / gui_scan / gui_describe / gui_invoke 当前控件、方法及一次执行
gui_discover / gui_discovery_describe / gui_discovery_invoke / gui_discovery_events 聚合目录、精确绑定和变化观察
gui_learning_graph / gui_rebind 增量观察关系和当前引用解析
gui_learning_export / gui_learning_import 只含哈希候选的导出/导入
gui_window_action 恢复、前台、标准菜单取消、明确 ESC、建树请求及终端读取
bot_context / bot_memory 人格文件位置、记忆和任务
bot_start / bot_stop / bot_status 常驻唤醒和状态

分组目录的 controls[].id 需配合 method,也可直接选择某个 operations[].id。MSAA/Qt/legacy 默认动作在无后置条件时可能被拦截;可显式选择 click_input,或通过 postcondition 做只读后置校验。outcome_unknown 时应先核对实际状态,历史关系与标签不授权自动执行。完整语义见 GUI2API 的 可靠性契约。

多模态资源

gui_resources → gui_resource_describe/gui_resource_read → gui_resource_release 用于发现、读取及清理控件关联的资源。发现不下载;source 取源字节,rendered 是显式读取渲染内容,不承诺原文件。默认只返回文件引用、MIME 和 SHA256。delivery:native 在宿主提供附件服务时导入正式图片附件;配置的模型和适配器仍需支持图像输入。需要与 GUI2API 后端同步更新,接口说明见 RESOURCES.md。

缓存与会话内引用

配套 GUI2API 后端支持会话内绑定缓存、定点读取与失效后的重新观察。插件提示会优先复用 ref/operation ID;明确目标的后置条件优先传 ref,需要重判唯一性时用 selector。不要每步强制 refresh。详见 CACHE.md。

人格、记忆与持续运行

首次使用可复制公开的 personas/小鲸鱼.md,后续不覆盖用户修改。运行数据放在 dataDir 或环境变量 GUI2API_BOT_HOME 指向的目录;未指定时为当前用户的 .dsh-gui2api-bot,其中包括 人格.md、记忆.md、任务.md、bot-state.json 等。

bot_start 明确绑定当前会话,周期范围 60–86400 秒;忙碌时不重复塞入唤醒。bot_stop 停止未来唤醒;数据目录中的 STOP 文件会阻止未来桌面请求并停止唤醒。重启后尝试恢复同一持久会话,失败或上次结果未明时暂停。

安装与启用

插件不会自动下载 GUI2API 后端。推荐将两个仓库放在同一父目录下,例如:

WinBot/
  GUI2API/       guictl.py、native/、bridges/
  dsh-winbot/    index.mjs、lib/、scripts/、personas/

插件会优先使用配置 guiRoot,其次环境变量 GUI2API_ROOT,再探测相邻的 GUI2API 目录。

已有 DSH:手工接入

先安装 GUI2API 的依赖,再在用于启动 DSH 的同一个 PowerShell 中设置路径:

$gui = 'C:\Projects\WinBot\GUI2API'
$plugin = 'C:\Projects\WinBot\dsh-winbot'
python -m venv "$gui\.venv"
& "$gui\.venv\Scripts\python.exe" -m pip install -r "$gui\requirements-gui.txt"

$env:GUI2API_ROOT = $gui
$env:GUI2API_PYTHON = "$gui\.venv\Scripts\python.exe"
$env:GUI2API_BOT_HOME = 'C:\Projects\WinBot\bot-data'

dsh plugin --profile gui2api-bot add $plugin
dsh --profile gui2api-bot

先确保目标 DSH profile 已存在。模型和 API Key 在 DSH 中配置;插件更新与 GUI2API 后端更新是两件事。

也可在插件配置中写入路径与超时等字段:

config:
  guiRoot: C:/Projects/WinBot/GUI2API
  python: C:/Projects/WinBot/GUI2API/.venv/Scripts/python.exe
  dataDir: C:/Projects/WinBot/bot-data
  requestTimeoutMs: 60000
  maxSessions: 4

新 Windows VM:可选脚本

在插件目录下可使用 Setup-VM.ps1 与 Start-VM.ps1 初始化虚拟环境、安装依赖并在指定 profile 中注册插件。Start-VM.ps1 默认新会话权限为 danger-full-access,可通过 -PermissionMode 改为 workspace-write 或 read-only。需要登录后自启动时,由操作者执行 Install-Autostart.ps1;脚本注册交互登录任务,不配置自动登录。

典型用法

带后置条件的 invoke

当默认 invoke 效果不可靠时,可显式指定方法与只读后置条件,例如:

{
  "ref": "当前按钮引用",
  "method": "invoke",
  "postcondition": {
    "selector": {"name": "实际观察到的面板", "role": "Pane", "exact": true},
    "field": "exists", "equals": true, "timeout_ms": 1500
  }
}

后置校验只读取,不重复动作。

启动周期唤醒

在 DSH 会话中通过 bot_start 绑定当前会话并设置 60–86400 秒范围内的唤醒间隔;无待办时应安静结束。查看状态用 bot_status,停止用 bot_stop。

适用场景与注意

适合需要在 已登录、已解锁的 Windows 桌面 上,用 DSH 驱动 GUI 自动化,并希望人格、记忆与定时任务与 GUI 工具在同一插件内装配的开发者。插件以当前 DSH 进程及 Windows 账户权限运行,不代替 DSH/Windows 的权限管理;安装前应阅读仓库源码与许可证(含 LICENSE.qq-bridge 等)。

本插件依赖外部 GUI2API 仓库与 Python 虚拟环境;DSH 的音频、视频、文档类资源当前仍以文件引用为主,尚未在插件侧加入转写或文档解析。已有 Host 的模块缓存不会因源码文件变化自动失效,更新后需按 DSH 与 Node 的惯例重启或重新加载。

社区目录 SkillHub 插件页 与 GitHub 仓库相互独立,与 DeepSeek / 幻方无官方从属关系;以仓库 README 与 GUI2API 文档为准做版本对齐。

结尾

dsh-winbot 把 GUI2API 的 Windows 桌面能力与 DSH 的模型、会话和工具体系接在一起,并用 28 个注册工具覆盖发现、调用、资源、学习与 bot 唤醒。若你在 Windows 上搭建 Harness 智能体并需要可控的桌面操作与人格持久化,可从官方 README 的路径与 profile 步骤起步。

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

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

Xiaoye