前言¶
DeepSeek Harness(DSH)桌面端要让模型操作本机应用,常见做法是走截图加多模态模型:每一步把屏幕像素送进模型,再回传坐标点击。成本高、对主题和布局变化敏感,且没有多模态能力时往往整条链路用不上。
下面介绍社区插件 dsh-native-uia(展示名「御屏 · 桌面操控」)。它以 Windows UI Automation(UIA)控件树 为主观测通道,纯文本模型即可读界面结构并下发动作;截图只作为 Canvas、自绘界面等「看不到树」时的兜底。维护者为 xiaobaga281,在 SkillHub 目录中归类为 工作流。
这是什么¶
dsh-native-uia 是给官方桌面端 @deepseek-ai/dsh-desktop 增加 computer-use 能力的 Cordis 插件(README 写明在 0.2.0-rc.2 上验证)。当前包版本 0.2.0,许可证 MIT。
插件解决的核心问题是:在不把「多模态模型」当作唯一闸门的前提下,让智能体通过结构化控件信息(名称、类型、可操作 pattern、短 ref)操控 Windows 桌面;动作可在后台投递,支持一次调用批量执行、逐步本地校验,以及成功批次的配方回放。
与像素回环相比,README 给出的量级对比是:控件树一次 snapshot 约 1.4k token(与分辨率无关),而典型像素回环约 4.8k token/步;控件树通道主要在 UIA 不可用的应用上失效(Canvas、游戏、部分 Electron)。
核心功能¶
模型侧工具¶
安装并重启 DSH 后,模型可使用下列工具(名称与职责来自 README):
| 工具 | 作用 |
|---|---|
computer_windows |
列出可见顶层窗口,获取 windowId |
computer_snapshot |
读控件树,返回短 ref(e1…)与 revision;新快照作废旧 ref |
computer_find_text |
按文本找元素,命中项带 ref、可点中心坐标与 by 描述符,按可操作性排序 |
computer_act |
单动作:invoke / set_value / toggle / select / expand / scroll / focus |
computer_run |
一次调用批量执行,逐步本地校验,失败即停并报告 performedCount |
computer_wait |
等待条件而非固定 sleep |
computer_resolve_window |
按 pid/title/class/titleRegex 解析或等待窗口 |
computer_capture |
PNG 截图:scope="window"(默认)或 scope="screen"(整桌虚拟屏) |
computer_launch / computer_close |
启动并按需关闭本插件自己打开的窗口 |
computer_replay |
回放成功批次的配方;元素按描述符重绑定 |
截图落盘为 PNG 并返回路径;是否进入多模态上下文由宿主 read_image 路由,插件不自行把图片塞进纯文本历史。
控制页与指示层¶
重启 DSH 后,插件在 127.0.0.1:3099 起本地控制页服务,会话视图出现 「电脑操控」 标签(iframe 嵌本地服务)。端口被占用时插件拒绝激活,并充当本机单实例锁。
操控过程中,顶部居中胶囊指示层显示「御屏 · 正在操控」或终止后的「御屏 · 已停止」;整屏截图时会短暂隐藏该浮层,避免污染桌面采样。
架构要点¶
UIA 调用在独立 PowerShell worker(worker/uia-worker.ps1)中执行,避免阻塞宿主事件循环。Node 侧通过 src/tools.js 暴露工具,src/guard.js 为策略判定点;批量动作分两阶段 prepare_batch / commit_batch,并与 revision 校验绑定。
安装与启用¶
DSH 生态里插件常以目录解压 + profile 写入方式安装;本插件不使用 dsh plugin add github:... 这类凭名称拼接的命令,以 README 为准。
- 将包解压到稳定目录,不要放在 DSH 安装目录(
resources\app.asar旁),避免更新被清。推荐例如C:\Users\<你>\.dsh\plugins\dsh-native-uia或任意固定路径。 - 在该目录执行安装脚本(需 Node ≥ 18):
node scripts/install.mjs install
脚本只修改 profile 的 package.json 中 dsh.profile.bundles 与 dependencies,写入 link:<本目录绝对路径>,并在改动前备份为 .bak-<时间戳>。
若使用非默认 profile,可指定环境变量:
DSH_PROFILE=my-profile node scripts/install.mjs install
- 重启 DeepSeek Harness。重启后确认会话中出现「电脑操控」标签。
本机维护命令:
node scripts/install.mjs status
node scripts/install.mjs remove
remove 仅删除本插件写入的两条条目,其它 profile 内容不动。
典型用法思路¶
README 未给出独立「教程脚本」,但工具组合方式可复现如下思路。
先定位窗口,再读树或搜文本:
- 用
computer_windows或computer_resolve_window拿到目标windowId(窗口重开、改标题后需重新解析)。 - 对窗口调用
computer_snapshot获取 ref 与revision;若目标文案明确,可用computer_find_text直接拿带ref的命中项(排序优先 Button、MenuItem 等可点控件,容器与 offscreen 靠后)。 - 用
computer_act对ref做单步操作;多步且需原子校验时用computer_run一次提交批次。 - 仅在 UIA 树不可用或需要视觉确认时调用
computer_capture;整桌场景用scope="screen",单窗默认scope="window"。返回的coordinateMap可与坐标类动作配合(README 说明maxDim为长边上限,默认 0 表示 1:1 原生像素)。
配方回放: 成功批次可经 computer_replay 按描述符重绑元素,减轻布局漂移影响。
控制页提供终止与 Esc 停手;下一次动作在既有设计下可自动重启 worker(详见 README 中 verify.mjs 闸门说明)。
适用场景与注意¶
适合: 在 Windows 上、以标准 Win32/WPF/多数带 UIA 树的应用为目标的工作流自动化;希望纯文本模型驱动桌面、降低逐步截图 token 成本的 DSH 桌面端用户。
局限: Canvas、游戏、部分 Electron 等「看不到控件树」的场景需依赖截图支路或换方案;插件当前面向 Windows UIA,非 Windows 环境不适用。
安全与权限: 插件以 当前 DSH 进程权限 运行,能启动应用、改控件值、后台投递输入。安装前应阅读仓库源码与 MIT 许可证,自行评估是否信任维护者与代码行为。社区目录 SkillHub 与 GitHub 仓库独立维护,与 DeepSeek / 幻方无官方从属关系。
仓库提供 node scripts/verify.mjs(package.json 中 npm run check)用于本地校验;冒烟可用 node scripts/smoke.mjs(worker:ping)。
结尾¶
dsh-native-uia(御屏) 把 DSH 桌面操控的主通道放在 Windows UI Automation 控件树上,让纯文本模型也能结构化地读界面、批量执行并回放配方;多模态截图保留为兜底而非前置条件。
- 目录页:https://www.skillhub.cn/plugins/xiaobaga281/dsh-native-uia
- 源码与完整说明:https://github.com/xiaobaga281/dsh-native-uia