DSH Computer Use Enhance:在 DSH 上重建 Windows 电脑控制,并加固性能与契约

前言

在 DSH 里让模型「看屏幕、读界面、点按输入」,通常要依赖一套稳定的工具面:工具名、参数语义、坐标与 state_id 寻址、错误码都要可预期。ZCode 侧的 Computer Use 在开源仓库里是占位实现,原生 Helper 也未公开,社区里虽有 JHyugou/dsh-computer-use 等重建尝试,但在读界面状态(get_app_state)等路径上仍可能偏慢,且存在未知参数被静默忽略、跨窗口复用旧帧仍返回成功等问题。

下面介绍维护者 scarlet20252025-cloud 在 SkillHub 分类「模型推理」下的插件 DSH Computer Use Enhance(仓库 scarlet20252025-cloud/DSH_Computeruse_Enhance)。它把 ZCode Computer Use 能力逆向重建为 DSH 插件,工具面与上游 25 个工具同名,后端改为 Windows 原生实现(长驻 powershell.exe + System.Drawing + UI Automation,树遍历可走 C# 快路径),并在 README 中给出可重复的基准与验证命令。

这是什么

DSH Computer Use Enhance(npm 包名 dsh-computer-use,当前版本 0.1.0,MIT 许可证)面向 Windows(package.json 中 os: ["win32"],需 Node >= 20)。插件入口在 src/index.js:读配置、注册工具、自装技能;通过 src/bridge.js 与原生后端 src/native/cua.ps1 以 stdin/stdout NDJSON(dsh-cua/1 协议)通信。

模型侧可获得与上游一致的操作能力:截图、列举窗口与应用、读取应用 UI 树、点击、输入、快捷键、拖拽滚轮、剪贴板等。仓库还附带逆向说明、契约取证、原生协议与模型操作技能文档(如 docs/reverse-engineering.md、skills/computer-use/SKILL.md、HANDOVER.md)。

相对上游的改动要点

性能

README 给出与上游对照的延迟表(本机实测口径)。例如 400 元素 / 深度 16 的 get_app_state:上游约 1432 ms,本仓库约 250 ms;list_windows(全部)约 309 ms → 24–27 ms,list_apps 约 171 ms → 20–22 ms。手段包括:UIA 树遍历下沉到 C#(src/native/cua-tree.cs,编译失败会回退纯 PowerShell)、跳过特定离屏 Document 子树、进程表缓存、离屏元素不探 UIA pattern、启动预热等;未采用方案及理由见 README「0.1 性能」一节。

契约加固

问题 上游行为 本仓库行为
未知参数 静默忽略 BAD_REQUEST,列出可用键
跨窗口复用旧帧 静默换算坐标仍 ok:true FRAME_TARGET_MISMATCH
screenshot 区域 仅能裁剪 新增 clamp(与 zoom 同名同义)

并补全 DSH 会发但原生曾不读的参数,如 zoom.max_width、list_windows.title / window_index、key.element_index。

工程与文档

提供 tools/bench.mjs、tools/call.mjs 等可重复验证;HANDOVER.md、VERIFY-REPORT.md 记录代码地图与验证结论。本仓库声明为 JHyugou/dsh-computer-use 的改良版。

架构概览

DSH 进程:index.js / tools.js / schema.js / format.js / bridge.js
        ↓ NDJSON(串行队列,超时换进程)
原生:cua.ps1(PowerShell 5.1,SetProcessDPIAware,截图/UIA/输入/剪贴板)

设计取舍(见 README):插件侧用原始 JSON Schema 直接 ctx.tools.register(),不走 MCP;选用 PowerShell 5.1 以开箱使用 System.Drawing 与 UIAutomationClient;必须 SetProcessDPIAware(),否则高 DPI 下截图与 UIA 坐标空间不一致。

安装与启用

资料中未提供 dsh plugin add github:... 一类一键命令,安装方式为 路径安装 或 手改 profile。

方式一:App 内从路径安装(推荐)

  1. 在 DSH 的「插件」页选择 从路径安装。
  2. 选中本仓库在本地解压或同步后的目录。
  3. 重启 DSH。

方式二:手改 profile

编辑 <dsh home>/profiles/<profile>/package.json(Windows 默认示例路径:%USERPROFILE%\.dsh\profiles\desktop\package.json),增加本地 link 依赖,并把包名加入 dsh.profile.bundles(以便应用 cordis.patch.yml):

"dependencies": {
  "dsh-computer-use": "link:E:/OpencodeProject/Project/DSH-Plugin/dsh-computer-use"
},
"dsh": {
  "profile": {
    "bundles": [
      "dsh-computer-use"
    ]
  }
}

将 link: 路径改为你机器上的实际目录。在 profile 目录执行 pnpm install,然后重启 DSH。

验证是否装好

在仓库根目录可依次执行(README 中的六层验证,数值因机器而异):

cd <本仓库目录>
npm test
npm run smoke
npm run e2e
npm run verify:registry
npm run verify:in-dsh
node tools/install-skill.mjs status

verify:in-dsh 在真实 DSH 中让模型按技能点按夹具按钮,脚本用原生后端独立核对窗口标题是否变为 CLICKED:1。若 API key 余额等问题导致模型未启动,README 说明可通过 dsh --patch 叠加 tools/verify-profile-patch.yml 路由到可用 provider,且不修改 profile 文件。

典型用法(模型面)

工具注册后,模型通过 25 个与上游同名的 Computer Use 工具操作桌面。操作流程在随包技能中说明,路径为 skills/computer-use/SKILL.md:先 list_windows / focus_window,再 get_app_state 拿到带 state_id 的元素列表,后续点击、输入等使用 element_index 与当前 state_id 纪律寻址;截图注意 zoom、clamp 与 zoom.max_width 对体积的影响。

开发或调试单次原生调用时,可使用 README 提到的 npm run call(tools/call.mjs),避免临时写脚本;压测延迟可用 npm run bench(tools/bench.mjs),走真实 NDJSON 协议且不注入桌面输入。

适用场景与注意

适合谁:在 Windows 上跑 DSH、需要让智能体稳定控制本机 GUI(办公自动化、可访问性场景下的界面读取与操作、与模型联调 Computer Use 契约)的开发者。分类为 SkillHub「模型推理」,本质是提供模型可调用的桌面自动化工具面。

环境与权限:插件以 当前 DSH 进程权限 运行,能访问该用户会话下可见的窗口与输入;安装前请阅读仓库源码、LICENSE 与 NOTICE.md,自行评估安全边界。仅支持 win32;Linux/macOS 用户无法按当前包定义使用原生后端。

访问模式:DSH 的 desktop access(off / ask / auto)会影响是否允许真实输入;README 中 verify-in-dsh 对三种模式有 fail-closed 验收说明。

社区目录:插件介绍页在 SkillHub,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,目录为社区维护。

结尾

DSH Computer Use Enhance 在 DSH 上复现 ZCode Computer Use 的 25 工具契约,用 Windows 原生栈替代未开源 Helper,并把 get_app_state 等热点路径优化到 README 所载量级,同时把多种静默失败改为显式错误码。若你需要在 Windows 上为 DSH 智能体接上可验证的「电脑控制」能力,可从 SkillHub 目录页或 GitHub 仓库获取源码与完整安装、验证步骤。

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

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

Xiaoye