前言¶
在使用 DeepSeek Harness (DSH) 爲視覺模型接入 Windows 桌面控制時,傳統基於 UI Automation(可訪問性樹)的自動化方案在現代應用上表現不佳。Chromium、WebView2 和 Electron 窗口幾乎不暴露可訪問控件,導致基於樹的工具無法讀取界面內容。
dsh-computer-use-native 插件通過截圖獲取真實渲染像素,利用 Win32 FFI 直接驅動窗口,解決了這一痛點。它不依賴可訪問性樹,默認將輸入消息發佈到目標窗口隊列,保持桌面焦點不被搶佔。
是什麼¶
這是一個爲 Windows 桌面自動化設計的 DSH 插件,專爲視覺模型設計。它通過 PrintWindow 和 PW_RENDERFULLCONTENT API 截取真實桌面或窗口像素,將圖像輸入給模型,再由插件將圖像座標轉換爲屏幕座標執行操作。
核心功能¶
插件提供以下工具:
| 工具名稱 | 功能 |
|---|---|
computer_screenshot |
截取桌面或指定窗口,返回圖像及視口 ID |
computer_window |
列出窗口、讀取幾何信息或置頂窗口 |
computer_click |
在截圖位置點擊、雙擊或右鍵 |
computer_move |
移動鼠標指針(用於懸停菜單) |
computer_type |
輸入 Unicode 文本 |
computer_key |
發送按鍵或組合鍵 |
computer_scroll |
在指定位置滾動滾輪 |
computer_drag |
在兩點間拖拽 |
技術細節¶
座標映射¶
模型處理的是截圖,截圖可能經過縮放。插件通過 viewport 記錄圖像尺寸、來源屏幕矩形、縮放因子和窗口信息。當模型給出圖像座標時,插件通過視口將圖像像素精確還原爲屏幕座標,避免模型因縮放計算失誤導致點擊偏差。
輸入路由¶
所有輸入工具支持 dispatch 參數,默認爲 background(後臺)。
* background:將消息(如 WM_LBUTTONDOWN)直接發佈到目標窗口隊列,窗口不會被置頂,光標不會移動,不影響當前用戶操作。
* foreground:通過模擬真實光標移動和點擊來操作,代價更高,且可能打斷用戶。
性能優化¶
截圖成本主要在編碼。插件對“看”進行了優化:
* 像素差異比較:將屏幕像素縮小爲 32x20 的亮度網格,只有當差異超過 2% 時才視爲“變化”並重新截圖。
* 無變化複用:若屏幕未動,插件直接複用之前的視口,不發送圖像,也不寫入附件。首次截圖約 238ms,重複截圖約 41ms。
安裝與啓用¶
- 安裝插件:
dsh plugin add dsh-computer-use-native
- 安裝指定版本(推薦,防止更新後行爲改變):
dsh plugin --profile web add github:dao-awa/dsh-computer-use-native#1354d1d1481619c2cc0a5ecccfa8180f1a34452a
- 重要:安裝後必須重啓 DSH 並開始新會話。Bundles 需要在會話創建前掛載。
前提條件與注意事項¶
- 運行環境:需要 Windows 10 或更高版本(x64),Node.js 22 或更高版本。
- DSH 服務:DSH 實例需啓用
computerUse、tools、systemPrompt和attachments服務。 - 模型支持:需要配置一個接受圖像輸入的模型路由。
- 應用兼容性:由於不使用可訪問性樹,此方案對現代應用(Chromium、WebView2、Electron)有效,但傳統基於樹的工具在這些應用上會失效。
- 共存衝突:與
computer-use-win(MCP) 服務器同時使用會造成工具重疊和混淆,建議二選一。 - 權限:插件以當前 DSH 進程權限運行,使用前請檢查源碼與許可證(MIT)。
總結¶
dsh-computer-use-native 提供了基於像素的 Windows 桌面控制能力,通過視口座標映射和後臺輸入分發,在保證準確性的同時降低了交互成本。對於需要視覺模型操作現代 Windows 應用的場景,它是目前可行的技術方案。