为 DeepSeek Harness 提供 Windows 电脑操控:MCP stdio 服务器 + PowerShell UIA 后端,22 个桌面工具(UIA 树、截图、键鼠输入、OCR、窗口管理、急停保护)。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:Yu-tao-Li/dsh-computer-use-win
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
dsh-computer-use-win
给 DeepSeek Harness 装上 Windows 电脑操控能力——MCP stdio 服务器 + PowerShell/UIA 桌面引擎,22 个工具让 agent 能看(UIA 无障碍树、窗口裁剪截图、OCR 词框)也能做(鼠标、键盘、UIA 语义动作、窗口管理)真实的 Windows 桌面应用。
通过 DSH 内置的 @deepseek-ai/dsh-mcp-client 桥接,不改 DSH 本体,零运行时依赖。
① 文件资源管理器:find 定位 + 语义 invoke 选中文件(状态栏"选中 1 个项目") |
② type_text 写入真实文档(剪贴板路径,verifyValue 回读) |
③ UWP 计算器:find 定位按钮 + 语义 Invoke 点击(25×4=100) |
|---|---|---|
![]() |
![]() |
![]() |
特性
- 文本优先的观察——UIA 无障碍树三视图(
control/content/raw);按 name/automationId/类名/值找控件,不靠猜像素。元素 id 用 UIA RuntimeId(UI 刷新后仍稳定,过期报stale而非点错地方)。 - 三级截图链——
PrintWindow(非前台窗口也能抓)→ WGC(Windows.Graphics.Capture,DirectComposition/被遮挡窗口)→ 屏幕区域兜底(带occludedPossible标记)。窗口裁剪 + 降采样 +imageScale/origin坐标映射,PNG 30 分钟自动清理。 - 三条输入路径,诚实上报——语义(UIA pattern,不碰鼠标)/ 前台(
SetCursorPos+ SendInput + 剪贴板 /KEYEVENTF_UNICODE)/ 后台(PostMessage 直进窗口消息队列,不抢前台;投递未验证,如实verified:false——Chromium/Electron/WinUI 会静默丢合成消息,工具会明说)。 - UIA 盲区 OCR 回退——
Windows.Media.Ocr(csc 编译的 C# WinRT 助手);返回文字 + 逐词屏幕坐标词框,query命中后自动回查匹配词下的控件(ControlFromPoint)。 - 内置安全机制
- 坐标 homing——观察后窗口被移动,点击自动补偿并回报
homed:{dx,dy} - 急停 failsafe——物理鼠标停屏幕角落 500ms,所有输入被拒(
EMERGENCY STOP),只有人把鼠标移开才恢复 - identity guard——按
windowTitle操作时窗口 HWND/PID 变了就拒绝(identity_changed) - 前台校验——输入 fail-closed:目标窗口不是真前台就直接报错,绝不打进别的窗口
- Win 键黑名单——
Win+R/X/L/S类组合按设计拦截
- 坐标 homing——观察后窗口被移动,点击自动补偿并回报
- 持久化后端——一个常驻 PowerShell 进程 + JSON 行协议,热态延迟 6–100ms(首次 ~500ms 冷启动);C# P/Invoke 助手按 hash 编译成缓存 DLL,重启免重编。
安装
# 从 GitHub(--profile 指定装进哪个 profile)
dsh plugin --profile web add github:Yu-tao-Li/dsh-computer-use-win
# 或在 DSH 设置的插件市场(dshmarket)搜索 dsh-computer-use-win
重启 dsh web,工具以 mcp__wincu__windows_computer_use_* 出现。
bundle 在安装时自解析路径(
cordis.patch.yml用!!js相对包目录),任何 profile /$DSH_HOME都能装,无硬编码路径。同一 profile 只保留一个serverName: wincu行。
工具清单(22 个,前缀 mcp__wincu__)
| 分组 | 工具 |
|---|---|
| 观察 | health · snapshot(树+截图)· accessibility_tree · list_windows · find · element_info · ocr |
| 动作 | click · double_click · move · drag · scroll · type_text(clipboard/sendinput/background)· keypress · focus · invoke · set_value |
| 窗口 | activate_window · move_window · close_window(WM_CLOSE,应用可弹保存框否决)· wait_for · wait |
所有工具都支持可选窗口定位(windowTitle 子串 / processId / nativeWindowHandle)+ activate: true;不指定 = 当前前台窗口。
架构
DSH agent
│ 模型看到 mcp__wincu__windows_computer_use_* 工具
▼
@deepseek-ai/dsh-mcp-client ← DSH 内置桥接(官方 MCP SDK StdioClientTransport)
│ JSON-RPC 2.0 over stdio(按行分帧)
▼
mcp/server.mjs ← 本仓库:MCP 服务器(Node ≥22,零依赖)
│ 保活一个持久化后端;JSON 行协议
▼
scripts/windows-uia.ps1 ← 本仓库:桌面引擎(PowerShell 5.1 兼容)
├─ UI Automation 程序集 → 无障碍树
├─ user32 P/Invoke(C# 缓存 DLL)→ 鼠标/键盘/窗口操作
├─ Windows.Media.Ocr(C# WinRT)→ OCR
└─ Windows.Graphics.Capture → WGC 窗口捕获
安全与限制
- 动作是真实的——敏感操作前让 agent 先
snapshot;重要窗口用windowTitle明确限定。 - WinUI / Chromium / Electron 会丢弃 PostMessage 合成输入(
verified:false是诚实上报,不是成功)。这类目标走前台/剪贴板路径。 - 提权窗口(UAC/管理员程序)UIA 与合成输入都被 Windows 拦截,读不到也点不了。
- 坐标以物理像素为准(显式 Per-Monitor V2 DPI)。
- OCR 对 CJK 按字符给词框(引擎特性),点选足够用。
- 仅支持 Windows。
开发
mcp/server.mjs MCP stdio 服务器 + 持久化后端管理
scripts/windows-uia.ps1 桌面引擎(one-shot 与 -Persistent 双模式)
test/ self-test / MCP 协议 / Notepad E2E / 功能综合 / 延迟基准
docs/wiki/ 上游架构文档(见 THIRD_PARTY.md)
docs/dev-notes.md 设计原理、踩坑记录、性能数据、测试记录
node mcp/server.mjs --self-test # 全栈自检(仅 Windows)
node test/mcp-test.mjs # initialize → tools/list → tools/call
node test/notepad-e2e.mjs # 真实输入端到端(会开记事本)
CI(.github/workflows/ci.yml)在每次 push/PR 时于 windows-latest 跑自检 + 协议测试。
许可
MIT,见 LICENSE。本项目是 cgissing/windows-computer-use(MIT)的衍生作品,上游版权声明保留于 THIRD_PARTY.md。
链接
同类插件
superdesigndev/treg★ 460
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
zhaoolee/notes#dsh-plugin★ 147
将 DSH 对话导出为锤子便签风格 PNG,或在配置的账号工作区中新建和更新 Markdown 便签。
taxueseek/argo#dsh-plugin★ 99
专为 agent 打造的搜索工具:多语言,覆盖中文/英文/学术/代码/购物/金融/新闻/百科。
omdsh-dev/dsh-data-agent★ 52
让 AI 帮你连数据库、写 SQL。
heartleo/hn-cli#hacker-news★ 50
用于获取 Hacker News 榜单、讨论串、搜索和用户资料的工具。
geml-spec/geml#integrations/dsh-plugin★ 24
按块寻址的文档读写:MCP server 提供 geml_get / geml_set / geml_check 等工具,Agent 只取回或改写 Markdown、GEML 文档中的某一个块,而不是整篇文件。另带 GEML 写作技能,以及把项目调用图构建为 GEML codemap 并浏览的代码图谱技能。


