dsh-win-control:在 Windows 上为 DeepSeek Harness 提供桌面控制能力

前言

在 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 可重新探测并重写配置。

执行顺序:程序优先,识别其次,视觉最后

  1. 程序控制 — computer_open(Shell 启动)、computer_window(列出 / 聚焦 / 最小化 / 最大化 / 还原 / 关闭 / 移动)直接调 Windows API。
  2. 程序识别 — computer_uia(控件树:probe / tree / find / invoke / focus / setvalue);computer_find_text / computer_click_text 使用内置 Windows OCR(基于 PrintWindow 表面,被遮挡的窗口仍可能读到文字)。
  3. 自动路由 — computer_act 探测单个窗口并自选通道:UIA 树丰富则走 InvokePattern / ValuePattern(无坐标);否则本地 OCR 再点击;结果标注 channel: "uia" | "ocr"。
  4. 视觉兜底 — 非文字目标(图标、画布、游戏)或计划不清时,用 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 识别的全部文字。

看屏与存图策略

默认不向磁盘持久化屏幕内容,三种路径区分清楚:

  1. 控制面板预览 — PowerShell worker 截帧进内存,Host 保留最新帧,面板用 Blob URL 渲染并在下一帧到达后撤销旧 URL。
  2. computer_look — 内存截帧,仅作为一次模型调用的临时附件,回答后立即删除;模型侧收到的是文本描述,不是图片库里的永久文件。
  3. 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 目录页。

羽毛球分组比赛记分
小程序二维码

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

小夜