前言¶
在 DeepSeek Harness(DSH)里做工作流时,模型往往需要「看见屏幕、点鼠标、敲键盘、切窗口」——而不是只在终端里跑命令。常见做法会依赖 UI Automation、SendKeys 或各应用的脚本接口,稳定性和覆盖范围因场景而异。下面介绍社区插件 dsh-computer-use-windows(维护者 pdong15dth):通过 12 个 computer_* 工具,把操作落到 Win32 调用上,由本机编译或缓存的原生 helper 进程执行,README 明确说明不使用 UI Automation、也不使用 SendKeys。
这是什么¶
dsh-computer-use-windows 是 DSH 的 Host 插件包(package.json 版本 1.0.0,许可证 MIT),分类为工作流。它给模型提供对当前 Windows 桌面的真实控制能力:鼠标、键盘、截图、窗口枚举与操控、剪贴板、启动应用/打开路径或 URL。动作层与 README 中的机制对应关系如下。
| 能力 | Win32 机制 |
|---|---|
| 鼠标 | SendInput(绝对坐标、按键、滚轮) |
| 键盘 | SendInput(Unicode、ctrl+shift+t 等组合键) |
| 屏幕 | GDI+ CopyFromScreen,按物理像素分辨率 |
| 窗口 | EnumWindows、SetForegroundWindow、ShowWindow、PostMessage(WM_CLOSE) 等 |
| 剪贴板 | 真实 Win32 剪贴板(STA 工作线程) |
| 启动 | Process.Start + UseShellExecute(与 Win+R / 开始菜单同类路径) |
插件以当前 DSH 进程所属用户权限运行 helper,不会自行提权;安装前应在 GitHub 阅读源码与 LICENSE,再决定是否启用。
核心功能:12 个工具¶
README 列出的工具及用途如下(名称保持原文)。
| 工具 | 作用 |
|---|---|
computer_info |
虚拟屏幕、显示器、光标、DPI 感知状态、是否提升权限 |
computer_screenshot |
整桌、单显示器或指定区域截图 |
computer_mouse_move |
绝对坐标移动指针 |
computer_click |
左/右/中键,单击或双击,可先移动 |
computer_drag |
按下、插值移动、释放 |
computer_scroll |
在指针处垂直/水平滚轮 |
computer_type |
Unicode 输入(\n 为 Enter,\t 为 Tab) |
computer_key |
快捷键与命名键,如 ctrl+shift+t 或 ["ctrl+a", "delete"] |
computer_clipboard |
读、写或清空剪贴板 |
computer_windows |
列出顶层窗口(句柄、标题、pid、矩形、状态) |
computer_window_control |
聚焦、最小化、最大化、还原或关闭窗口 |
computer_launch |
启动应用、打开路径/文档或 URL |
截图结果会附带坐标映射(originX、originY、scale):图像像素 (ix, iy) 对应屏幕点 (originX + ix*scale, originY + iy*scale)。所有工具坐标均使用 computer_info 返回的虚拟屏幕空间中的物理像素。
原生 helper 如何就绪¶
首次调用工具时,Host 插件会用 Windows 自带的 .NET Framework 编译器编译 helper/ComputerHelper.cs,输出缓存到:
%LOCALAPPDATA%\dsh-computer-use\dsh-computer-helper.exe
编译命令在 README 中写为使用 %WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe;源码变更时按 SHA-256 戳记重建。若 csc.exe 不可用,会回退到 helper/serve.ps1(Add-Type + 相同 JSON 行协议),启动较慢。可通过环境变量覆盖:
| 变量 | 效果 |
|---|---|
DSH_COMPUTER_USE_HELPER |
使用指定已编译 helper .exe |
DSH_COMPUTER_USE_CSC |
使用指定的 csc.exe 编译 |
helper 为 /target:winexe,Host 以 windowsHide: true 启动,避免控制台闪窗。
安装与启用¶
插件是纯 Host 包:无构建步骤、无 npm 依赖;ESM 与原生 helper 在首次使用时编译。
从本地目录安装¶
在 Harness 会话中执行(路径改为你 clone 或解压后的绝对路径;资料要求通过 bundle 安装,勿自行拼接未在文档出现的 CLI 命令):
plugin_manager { action: "install_bundle", target: "<absolute path to this directory>" }
安装会把该目录链入 profile,并插入 cordis.patch.yml 中的 computer-use-windows 行。
从插件市场索引发现¶
仓库发布 format-1 市场索引,可在 Harness Plugins → Discover 中发现并安装。索引 URL:
https://raw.githubusercontent.com/pdong15dth/dsh-computer-use-windows/main/market/index.json
将其加入 @deepseek-ai/dsh-plugin-market 的 indexes 列表(例如在 profile 的 cordis.patch.yml 中),Discover 页会列出 dsh-computer-use-windows。代理侧 plugin_market 的 list_indexes / list_plugins / list_versions 给出的安装目标为 commit 固定形式,例如:
git+https://github.com/pdong15dth/dsh-computer-use-windows.git#<40-hex-commit>
社区目录页:https://www.skillhub.cn/plugins/pdong15dth/dsh-computer-use-windows(独立站点,与 DeepSeek / 幻方无官方从属关系)。
典型用法思路¶
README 的 Verification 节记录了在 Windows 11 build 26100、双 1920×1080、per-monitor-v2 上的实测流程,可作为复现顺序参考:
- 安装 bundle 后确认
plugin_manager报告application: applied。 - 调用
computer_info确认显示器与 DPI 状态。 - 用
computer_screenshot获取带origin/scale的图像块。 - 用
computer_windows与computer_window_control聚焦、最小化、还原或关闭目标窗口。 - 用
computer_launch启动 Notepad 等应用。 - 在确认前台窗口正确(
computer_windows中目标窗口带[focused])后,使用computer_type/computer_key输入;README 强调焦点是全局状态,人机共用桌面时两次调用之间焦点可能变化。 - 读写剪贴板用
computer_clipboard;ctrl+c成功会覆盖用户剪贴板。
坐标类操作(computer_click、computer_drag、computer_scroll)在 helper 层有测试覆盖;插件层验证时若桌面仍被人使用,可能为避免误点而跳过,使用前宜保证桌面相对空闲。
适用场景与注意¶
适合:需要在 DSH 工作流里做真实桌面自动化——例如打开应用、填表、截图取证、窗口管理——且接受 Win32 输入注入语义的场景。
务必知晓的限制(来自 README Safety / Known limits):
- 输入注入到当前焦点窗口;模型可点击、输入、关闭窗口,启用前应审查会话权限并保存无关工作。
- 非提升权限的 helper 无法向提升权限窗口注入输入;无法触及 UAC 安全桌面。
- 部分全屏游戏与反作弊窗口可能忽略合成输入。
- DRM 保护内容截图可能为黑屏。
- 成功
ctrl+c会覆盖用户剪贴板。
DSH 生态理念是「一切皆插件」;本插件 GitHub 星标数为 1(以目录线索为准),适合自行审阅 helper/ComputerHelper.cs 与 PROTOCOL.md 后再用于生产环境。
结尾¶
dsh-computer-use-windows 把桌面控制收敛到 12 个 computer_* 工具与 Win32 helper,避免 UI Automation 与 SendKeys 路径,并给出截图坐标映射与市场索引安装方式。进一步了解实现与验证细节见仓库 README 与 helper 报告。