前言¶
在 DeepSeek Harness(DSH)里让智能体「动手」操作本机,常见做法是截图交给视觉模型再回传坐标,或单独写脚本调 API。前者慢、费 token,且对登录态页面、自绘界面往往不稳;后者要和窗口、浏览器、输入法各打一套交道,维护成本高。下面介绍社区插件 dsh-win-control(维护者 uss7118):面向 Windows 10/11,把窗口管理、UI Automation、本地 OCR、Chrome DevTools Protocol(CDP)读页、拟人化键鼠和实时控制面板收进同一套 Host 工具,并优先走程序级通道,视觉只作兜底。
这是什么¶
dsh-win-control 是 DSH 的客户端类插件(package 版本 1.1.0,MIT 许可证,仅支持 win32)。一句话定位:在 Windows 桌面上驱动程序、读界面与浏览器内容,并以可配置的拟人化方式发送鼠标键盘输入;面板上的按钮与智能体调用的 Host 操作共用同一实现,避免两套逻辑漂移。
首次激活时会探测本机并写入 <DSH_HOME>/computer-control/config.json(Windows / PowerShell 版本、屏幕尺寸、OCR 引擎与语言、UI Automation 是否可用、python / pypinyin 等)。之后每隔数秒重读该文件,手工修改会生效;缺少某项能力时会降级并给出说明,而不是在深处失败。
核心功能¶
自适应配置与自检¶
- 无 OCR 语言包时,
computer_find_text会立即说明,而不是深层报错。 - 无 python + pypinyin 时,打字模式
ime会直接走 Unicode 直输。 - 无 UI Automation 时,
computer_uia会解释限制;computer_act仍可用 OCR。 - 无已开启 CDP 端口的浏览器时,
computer_dom会说明如何启动。 computer_selftest可重新探测并重写配置。
执行顺序:程序优先,识别其次,视觉最后¶
- 程序控制 —
computer_open(Shell 启动)、computer_window(列出 / 聚焦 / 最小化 / 最大化 / 还原 / 关闭 / 移动)直接调 Windows API。 - 程序识别 —
computer_uia(控件树:probe / tree / find / invoke / focus / setvalue);computer_find_text/computer_click_text使用内置 Windows OCR(基于PrintWindow表面,被遮挡的窗口仍可能读到文字)。 - 自动路由 —
computer_act探测单个窗口并自选通道:UIA 树丰富则走InvokePattern/ValuePattern(无坐标);否则本地 OCR 再点击;结果标注channel: "uia" | "ocr"。 - 视觉兜底 — 非文字目标(图标、画布、游戏)或计划不清时,用
computer_look。
公开页面优先用 Harness 的 HTTP 抓取;需要登录或 JS 渲染的页面用下文读页工具;画布、游戏等仍靠 OCR。
浏览器:读 DOM / 无障碍文本,而不是扫像素¶
computer_dom— 无额外依赖的 CDP WebSocket 客户端:读innerText/outerHTML、执行 JavaScript、按选择器点击、导航;或用隔离 profile 启动 Edge/Chrome 并带--remote-debugging-port(默认 profile 在<DSH_HOME>/browser-profile,可通过参数改到其他盘)。computer_page_text— 通过 UI Automation 的TextPattern读浏览器文档全文;无TextPattern时回退 OCR 整窗 dump。computer_find_text且text为空 — 按行 dump 窗口或区域内 OCR 识别的全部文字。
看屏与存图策略¶
默认不向磁盘持久化屏幕内容,三种路径区分清楚:
- 控制面板预览 — PowerShell worker 截帧进内存,Host 保留最新帧,面板用 Blob URL 渲染并在下一帧到达后撤销旧 URL。
computer_look— 内存截帧,仅作为一次模型调用的临时附件,回答后立即删除;模型侧收到的是文本描述,不是图片库里的永久文件。computer_screenshot且includeImage: true或指定path— 唯一显式「保留」:写入对话附件库或指定路径。
拟人化输入(默认开启)¶
本地完成,不额外消耗模型 token:
- 指针 — 相对
SendInput沿二次贝塞尔移动,逐步 5–14 ms,点击前 60–180 ms 停顿;非SetCursorPos瞬移。 - 打字 —
typing: "ime"(需中文 IME 与 PATH 上的 python + pypinyin,否则imeFallback仍用 unicode 保证结果)、keys、unicode,或"auto"(纯 ASCII 用 keys,含非 ASCII 用 unicode);字符间隔 20–85 ms,偶发更长停顿。需要确定性速度时传humanize: false。 - 滚轮 — 拆成 1–3 档,档间 25–85 ms。
因 Harness 窗口常在工具返回后抢前台,computer_keyboard / computer_mouse 支持在同一调用内通过 window / hwnd 聚焦目标窗,避免「先 focus 再 type」两次调用之间丢焦点。
用户态 SendInput 无法伪装成真实硬件;反作弊等可识别注入标志。文档说明 USB HID 适配器或内核驱动(如 Interception)不在本插件范围内,且驱动有风险。
实时控制面板¶
插件向 Harness Web 客户端注入控制面板(dsh.client 配置为 platform: "web"、immediately: true)。若当前 Harness UI 没有预期插槽,面板会跳过,Host 工具仍可用。
安装与启用¶
环境要求:Windows 10/11,以及能安装 profile bundle 的 DeepSeek Harness 构建;其余能力依赖系统自带组件(PowerShell、UI Automation、WinRT OCR 等)。
在对应 profile 下执行官方安装命令:
dsh plugin --profile <name> add dsh-win-control
安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。插件以当前 dsh 进程的用户权限运行,等同于该用户能操作的桌面与文件,生产环境务必评估风险。
典型用法(概念与参数)¶
以下能力名与行为均来自项目 README,具体 JSON 字段以仓库文档为准。
打开程序并聚焦窗口
通过 computer_open 启动应用,再用 computer_window 的 list / focus 等 action 切到目标 HWND。
对已知控件名点击(自动选 UIA 或 OCR)
computer_act — 对指定窗口探测并触发命名控件或 OCR 点击,返回 channel。
读已登录或 JS 渲染的页面正文
优先 computer_dom,action: "text" 取 document.body.innerText;若无调试端口浏览器,用 action: "launch" 按文档启动隔离 profile。Electron/Chromium 窗体也可试 computer_page_text。
让智能体「看一眼」但不落盘
调用 computer_look:得到文本化描述,临时截图附件在单次调用结束后删除。
中文输入(尽量走 IME 候选)
computer_keyboard 使用默认 typing: "auto" 或显式 typing: "ime";需中文输入法处于中文模式,并安装 python 与 pypinyin(插件 bundled scripts/pinyin.py)。失败时会撤销并 unicode 直输以保证文本正确。
人工与智能体同一套操作
打开插件注入的控制面板,预览帧率可选 0.5 s / 1 s / 2 s;面板按钮与 Host 工具同源。
适用场景与注意¶
适合:在 Windows 本机做 RPA 式辅助(Office、系统设置、Electron 客户端)、需要 CDP 读内页而非 OCR 扫屏的浏览器自动化、希望键鼠轨迹更接近真人且可在面板里手动试操作的 DSH 开发者。
注意:
- 仅 Windows;Linux/macOS 不适用。
- 插件能力边界受 UIA/OCR/CDP/IME 环境限制,首次运行生成的
config.json决定降级行为。 - 社区目录 SkillHub 插件页 与 GitHub 为独立社区生态,与 DeepSeek / 幻方无官方从属关系;星标与版本以各页面当时显示为准(package 1.1.0)。
- 涉及敏感账号、支付、游戏反作弊环境时,应默认
humanize: false或不用桌面控制,并理解SendInput的可见性限制。
结尾¶
dsh-win-control 把 Windows 桌面自动化按「程序 → UIA/OCR → 视觉 → CDP 读页」分层,自带配置探测与拟人化输入,并可选实时面板与智能体共用同一 Host。需要安装命令与工具列表时,以 GitHub README 为准;浏览分类与简介可参考 SkillHub 目录页。