前言¶
在 DeepSeek Harness(DSH)里做智能体时,模型往往只能读写对话与文件,无法「看见」当前屏幕、也无法像人一样点按钮、输文字、切窗口。若要把任务落到真实桌面应用上,要么手写 RPA 脚本,要么依赖闭源宿主里的 Computer Use 能力,而那条链路在开源侧常常是占位或缺实现。
dsh-computer-use 把 ZCode 的 Computer Use(电脑控制)契约逆向重建为 DSH 插件:在 Windows 上提供 25 个与上游同名的工具,覆盖截图、UI Automation、鼠标键盘、剪贴板等,并附带随包技能与屏幕置顶操作指示器。下文介绍它是什么、能做什么、如何安装与配置。
这是什么¶
- 仓库: JHyugou/dsh-computer-use
- 目录页: SkillHub 插件条目
- 维护者: JHyugou
- 分类: 模型推理(目录站标注)
- 平台: 仅 Windows(
package.json中os: ["win32"]),Node.js ≥ 20
插件定位是:让模型能看屏幕、读应用界面、点按、输入、快捷键、拖拽滚轮、走剪贴板,像人一样操作本机 Windows。25 个工具名、参数语义、坐标纪律、state_id 元素寻址、错误码语义按上游 Computer Use 契约重建;后端改为长驻 powershell.exe,配合 System.Drawing 与 UI Automation,不依赖 ZCode 未开源的原生 Helper。
架构概览¶
DSH 进程侧负责读配置、注册工具、自装技能;通过 stdin/stdout 的 NDJSON(dsh-cua/1)与 src/native/cua.ps1 长驻 PowerShell 5.1 进程通信,由后者完成 DPI 感知、截图、窗口、UIA、输入、剪贴板、启动应用等。
几个与使用相关的设计选择:
- 工具按注册表接受的原始 JSON Schema 直接
ctx.tools.register(),参数校验在插件内schema.js完成。 - 启动时调用
SetProcessDPIAware(),避免高 DPI 下截图分辨率与 UIA 坐标空间不一致。 - 协议串行;单次调用超时后会结束进程并在下次调用时重启,避免迟到响应归属错乱。
更细的逆向过程、契约取证与原生协议见仓库内 docs/reverse-engineering.md、docs/zcode-cua-contract.md、docs/native-protocol.md。
核心功能¶
工具面(25 个,与上游同名)¶
| 分组 | 工具 |
|---|---|
| 环境与观察 | request_access、list_apps、list_windows、get_app_state、screenshot、zoom |
| 启动与聚焦 | open_application(聚焦窗口配合 list_windows 与前台语义) |
| 鼠标 | left_click、double_click、triple_click、right_click、middle_click 等(README 工具表完整列出) |
| 键盘与剪贴板 | 含输入、快捷键、剪贴板读写等(与上游工具面一致) |
配置项 tools 可选:
"native"(默认):25 个独立工具;"single":合并为一个computer_use(带action),减少 schema token。
访问控制与指示器¶
accessMode:auto全自动 /ask每次审批 /off禁用电脑操控。allowSubagents:默认false,避免子代理在用户不可见时动鼠标键盘。indicator:可在屏幕最前显示「DSH 正在操作电脑」浮层;indicatorLocale、indicatorShowAction、indicatorAutoHideMs等可调。
随包技能¶
默认 installSkill: true 时,会把技能安装到 <dsh home>/skills/computer-use/(带所有权标记,不覆盖用户自写版本)。模型面操作说明见仓库 skills/computer-use/SKILL.md。
安装与启用¶
插件是普通 npm 包,并附带 cordis.patch.yml。README 给出两种装法,没有 dsh plugin add github:... 一类命令;请按下面步骤操作。
方式一:App 内从路径安装(推荐)¶
- 在 DSH 打开「插件」页。
- 选择「从路径安装」,指向本插件所在目录(需先取得仓库目录,用户自行下载或拷贝,本文不写
git clone)。 - 重启 DSH。
方式二:手改 profile¶
编辑 <dsh home>/profiles/<profile>/package.json(Windows 默认示例路径:%USERPROFILE%\.dsh\profiles\desktop\package.json):
"dependencies": {
"dsh-computer-use": "link:E:/OpencodeProject/Project/DSH-Plugin/dsh-computer-use"
},
"dsh": {
"profile": {
"bundles": [
// …其它 bundle
"dsh-computer-use" // ← 加入这里,cordis.patch.yml 才会被应用
]
}
}
将 link: 后的路径换成你本机上的插件目录。然后在 profile 目录执行 pnpm install,并重启 DSH。
仓库还提供带备份的安装脚本(默认预览、不改动):
node tools/install-plugin.mjs # dry-run
node tools/install-plugin.mjs --apply --install # 备份 + 写入 + pnpm install
node tools/install-plugin.mjs --rollback # 从备份恢复
验证是否装好¶
装好并重启后,在会话里让模型调用 request_access:应回报平台、屏幕、DPI 感知、显示器数量与后端可用性,这是最直接的端到端确认。
README 还列出多层自动化验证(npm test、npm run smoke、npm run e2e、npm run verify:in-dsh 等),需在插件目录、真机 Windows 上执行;其中 verify:in-dsh 会在真实 DSH 里让模型点夹具按钮,并以原生后端再次读取窗口标题判定是否成功。
配置¶
配置文件路径:<dsh home>/plugins/dsh-computer-use/config.json(不存在则用默认值)。也可在 profile 的插件条目里用 config: 内联覆盖(内联优先)。
| 字段 | 默认 | 含义 |
|---|---|---|
enabled |
true |
关闭后不再注册任何工具 |
tools |
"native" |
native 或 single |
warmup |
true |
加载时预热后端 |
installSkill |
true |
安装随包技能到用户技能根 |
accessMode |
"auto" |
auto / ask / off |
allowSubagents |
false |
是否允许子代理调用电脑操控 |
indicator |
true |
是否显示操作浮层 |
requestTimeoutMs |
30000 |
单次调用默认超时 |
screenshotMaxWidth |
1600 |
模型可见截图长边上限 |
screenshotMaxBytes |
524288 |
单张截图字节预算 |
debug |
false |
是否把原生后端 stderr 写入 DSH 日志 |
完整字段表见 README「配置」一节。示例(省 token + 更小截图):
{ "tools": "single", "screenshotMaxWidth": 1280, "screenshotFormat": "jpeg" }
典型用法¶
- 确认插件已启用且已重启 DSH。
- 在对话中让模型先调用
request_access,确认后端可用与访问模式符合预期(accessMode为ask时会走审批)。 - 按任务链组合工具:例如
list_windows/get_app_state获取界面与state_id,screenshot观察屏幕,left_click等按元素索引与坐标纪律操作;复杂流程可参考已安装的skills/computer-use/SKILL.md。
插件还以库形式导出 ./client,供在 Node 侧直接调用同一套能力(见 package.json 的 exports)。
适用场景与注意¶
适合谁
- 在 DSH 里做 Windows 桌面自动化、需要模型读屏与 UIA 的智能体开发者。
- 希望工具面与 ZCode Computer Use 契约对齐、便于迁移提示词或技能的同学。
务必注意
- 仅 Windows:Linux/macOS 上
package.json的os限制不适用。 - 权限与信任:插件以当前 DSH 进程权限操作本机桌面(鼠标、键盘、剪贴板、启动应用)。安装前应阅读源码与 MIT 许可证,并理解
accessMode、allowSubagents的含义。 - 生态说明:DSH 主张「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系,本文不将其描述为官方应用商店。
- 上游背景:ZCode 开源树中 Computer Use 曾为不可用占位;本插件是依留下契约与文档重建的实现,未解部分见仓库
docs/zcode-cua-contract.md。
结尾¶
dsh-computer-use 把 Computer Use 的 25 工具面与 Windows 原生后端接到 DSH,并配套访问闸门、操作指示器与随包技能。若你需要在 Harness 里让模型「看见并操作」本机 Windows,可从目录页或 GitHub 获取插件,按 README 从路径或 profile 安装,用 request_access 做首次验收。
- 目录页:https://www.skillhub.cn/plugins/JHyugou/dsh-computer-use
- GitHub:https://github.com/JHyugou/dsh-computer-use