qwqwd65-ui
dsh-win-computer-use
No description
- Stars
- 0
- Language
- Rust
- Created
- Aug 14, 2026
- Updated
- Aug 14, 2026
Introduction
dsh-win-computer-use
Windows 电脑控制工具集 —— DeepSeek Harness 原生插件(原型)。
给纯文本 DSH agent 装上操作 Windows 桌面的"手":UIA 语义观察/操作、窗口截图、 自然光标轨迹(贝塞尔 + 缓动 + 微抖动)、内置读图 API(自带 vision 闭环)。
灵感与参考:Anionex/dsh-computer-use(macOS)、 Harusame64/desktop-touch-mcp(Rust UIA 引擎)、 sbroenne/mcp-windows。
架构
DSH Agent → 插件工具 (win_*) → 执行器 (win-cu.ps1 / Rust helper) → Win32/UIA
↘ 视觉 API(内置 see)
两代执行器:
| PS1 版(当前可用) | Rust 版(src/main.rs,开发中) | |
|---|---|---|
| 启动开销 | powershell.exe ~200ms + Add-Type 编译 | 单二进制 ~10ms |
| UIA 树获取(60 元素) | ~350ms | ~106ms(实测参考) |
| 焦点元素 | ~370ms | ~2ms |
| 读图 | 外部 curl 脚本 | 内置 ureq + base64 |
性能参考数据来自 desktop-touch-mcp 的实测迁移报告(PowerShell → Rust COM)。
工具
| 工具 | 说明 |
|---|---|
win_list_apps | 窗口列表:pid/标题/坐标/前台标志 |
win_observe | UIA 树:索引/类型/名称/AutomationId/坐标/模式 |
win_screenshot | PrintWindow 窗口截图 PNG |
win_click | 语义优先(Invoke/Select/Toggle by id 或 index),坐标兜底 |
win_set_value | ValuePattern 写值,不碰剪贴板 |
win_type_text | SendInput Unicode 直发(中文 OK),自动 SetFocus + 焦点恢复 |
win_press_key | 虚拟键 + 修饰键,焦点恢复 |
win_scroll | 滚轮,光标贝塞尔移动到位 |
win_drag | 贝塞尔轨迹拖拽 |
win_wait | 轮询等待元素文本 |
win_see | 内置读图:截图/任意图片 → 配置的视觉 API → 文字描述 |
设计要点
- 先观察再动作:
win_observe返回索引 + 稳定 AutomationId;动作优先用 id(UIA 树会随应用状态重排,索引会漂移——实测翻车后加的 id 定位)。 - 光标可见 + 自然轨迹:坐标动作先贝塞尔移动真实光标(随机控制点 + ease-in-out + 微抖动),你肉眼可见鼠标弧线移动。
- 焦点保护:type/key/scroll 需要前台,操作完成后恢复操作前的前台窗口。
- 内置视觉闭环:
win_see把截图直接发给配置的 OpenAI 兼容视觉端点,纯文本模型也能"看图"。
安装
动态插件方式(当前会话):
在 DSH 会话中:cordis_define 定义插件(见 plugin-host.js),cordis_run 激活
配置(设置页 / 环境变量):
VISION_API_KEY 视觉 API key
VISION_BASE_URL 视觉端点(默认 https://ai.huan666.de)
VISION_MODEL 视觉模型(默认 grok-4.5)
仓库结构
src/main.rs Rust helper(UIA + SendInput + 贝塞尔 + PrintWindow + see)
win-cu.ps1 PS1 执行器(当前默认后端)
plugin-host.js 动态插件宿主代码(11 个 win_* 工具)
License
MIT