前言¶
DeepSeek Harness(DSH)桌面端要讓模型操作本機應用,常見做法是走截圖加多模態模型:每一步把屏幕像素送進模型,再回傳座標點擊。成本高、對主題和佈局變化敏感,且沒有多模態能力時往往整條鏈路用不上。
下面介紹社區插件 dsh-native-uia(展示名「御屏 · 桌面操控」)。它以 Windows UI Automation(UIA)控件樹 爲主觀測通道,純文本模型即可讀界面結構並下發動作;截圖只作爲 Canvas、自繪界面等「看不到樹」時的兜底。維護者爲 xiaobaga281,在 SkillHub 目錄中歸類爲 工作流。
這是什麼¶
dsh-native-uia 是給官方桌面端 @deepseek-ai/dsh-desktop 增加 computer-use 能力的 Cordis 插件(README 寫明在 0.2.0-rc.2 上驗證)。當前包版本 0.2.0,許可證 MIT。
插件解決的核心問題是:在不把「多模態模型」當作唯一閘門的前提下,讓智能體通過結構化控件信息(名稱、類型、可操作 pattern、短 ref)操控 Windows 桌面;動作可在後臺投遞,支持一次調用批量執行、逐步本地校驗,以及成功批次的配方回放。
與像素迴環相比,README 給出的量級對比是:控件樹一次 snapshot 約 1.4k token(與分辨率無關),而典型像素迴環約 4.8k token/步;控件樹通道主要在 UIA 不可用的應用上失效(Canvas、遊戲、部分 Electron)。
核心功能¶
模型側工具¶
安裝並重啓 DSH 後,模型可使用下列工具(名稱與職責來自 README):
| 工具 | 作用 |
|---|---|
computer_windows |
列出可見頂層窗口,獲取 windowId |
computer_snapshot |
讀控件樹,返回短 ref(e1…)與 revision;新快照作廢舊 ref |
computer_find_text |
按文本找元素,命中項帶 ref、可點中心座標與 by 描述符,按可操作性排序 |
computer_act |
單動作:invoke / set_value / toggle / select / expand / scroll / focus |
computer_run |
一次調用批量執行,逐步本地校驗,失敗即停並報告 performedCount |
computer_wait |
等待條件而非固定 sleep |
computer_resolve_window |
按 pid/title/class/titleRegex 解析或等待窗口 |
computer_capture |
PNG 截圖:scope="window"(默認)或 scope="screen"(整桌虛擬屏) |
computer_launch / computer_close |
啓動並按需關閉本插件自己打開的窗口 |
computer_replay |
回放成功批次的配方;元素按描述符重綁定 |
截圖落盤爲 PNG 並返回路徑;是否進入多模態上下文由宿主 read_image 路由,插件不自行把圖片塞進純文本歷史。
控制頁與指示層¶
重啓 DSH 後,插件在 127.0.0.1:3099 起本地控制頁服務,會話視圖出現 「電腦操控」 標籤(iframe 嵌本地服務)。端口被佔用時插件拒絕激活,並充當本機單實例鎖。
操控過程中,頂部居中膠囊指示層顯示「御屏 · 正在操控」或終止後的「御屏 · 已停止」;整屏截圖時會短暫隱藏該浮層,避免污染桌面採樣。
架構要點¶
UIA 調用在獨立 PowerShell worker(worker/uia-worker.ps1)中執行,避免阻塞宿主事件循環。Node 側通過 src/tools.js 暴露工具,src/guard.js 爲策略判定點;批量動作分兩階段 prepare_batch / commit_batch,並與 revision 校驗綁定。
安裝與啓用¶
DSH 生態裏插件常以目錄解壓 + profile 寫入方式安裝;本插件不使用 dsh plugin add github:... 這類憑名稱拼接的命令,以 README 爲準。
- 將包解壓到穩定目錄,不要放在 DSH 安裝目錄(
resources\app.asar旁),避免更新被清。推薦例如C:\Users\<你>\.dsh\plugins\dsh-native-uia或任意固定路徑。 - 在該目錄執行安裝腳本(需 Node ≥ 18):
node scripts/install.mjs install
腳本只修改 profile 的 package.json 中 dsh.profile.bundles 與 dependencies,寫入 link:<本目錄絕對路徑>,並在改動前備份爲 .bak-<時間戳>。
若使用非默認 profile,可指定環境變量:
DSH_PROFILE=my-profile node scripts/install.mjs install
- 重啓 DeepSeek Harness。重啓後確認會話中出現「電腦操控」標籤。
本機維護命令:
node scripts/install.mjs status
node scripts/install.mjs remove
remove 僅刪除本插件寫入的兩條條目,其它 profile 內容不動。
典型用法思路¶
README 未給出獨立「教程腳本」,但工具組合方式可復現如下思路。
先定位窗口,再讀樹或搜文本:
- 用
computer_windows或computer_resolve_window拿到目標windowId(窗口重開、改標題後需重新解析)。 - 對窗口調用
computer_snapshot獲取 ref 與revision;若目標文案明確,可用computer_find_text直接拿帶ref的命中項(排序優先 Button、MenuItem 等可點控件,容器與 offscreen 靠後)。 - 用
computer_act對ref做單步操作;多步且需原子校驗時用computer_run一次提交批次。 - 僅在 UIA 樹不可用或需要視覺確認時調用
computer_capture;整桌場景用scope="screen",單窗默認scope="window"。返回的coordinateMap可與座標類動作配合(README 說明maxDim爲長邊上限,默認 0 表示 1:1 原生像素)。
配方回放: 成功批次可經 computer_replay 按描述符重綁元素,減輕佈局漂移影響。
控制頁提供終止與 Esc 停手;下一次動作在既有設計下可自動重啓 worker(詳見 README 中 verify.mjs 閘門說明)。
適用場景與注意¶
適合: 在 Windows 上、以標準 Win32/WPF/多數帶 UIA 樹的應用爲目標的工作流自動化;希望純文本模型驅動桌面、降低逐步截圖 token 成本的 DSH 桌面端用戶。
侷限: Canvas、遊戲、部分 Electron 等「看不到控件樹」的場景需依賴截圖支路或換方案;插件當前面向 Windows UIA,非 Windows 環境不適用。
安全與權限: 插件以 當前 DSH 進程權限 運行,能啓動應用、改控件值、後臺投遞輸入。安裝前應閱讀倉庫源碼與 MIT 許可證,自行評估是否信任維護者與代碼行爲。社區目錄 SkillHub 與 GitHub 倉庫獨立維護,與 DeepSeek / 幻方無官方從屬關係。
倉庫提供 node scripts/verify.mjs(package.json 中 npm run check)用於本地校驗;冒煙可用 node scripts/smoke.mjs(worker:ping)。
結尾¶
dsh-native-uia(御屏) 把 DSH 桌面操控的主通道放在 Windows UI Automation 控件樹上,讓純文本模型也能結構化地讀界面、批量執行並回放配方;多模態截圖保留爲兜底而非前置條件。
- 目錄頁:https://www.skillhub.cn/plugins/xiaobaga281/dsh-native-uia
- 源碼與完整說明:https://github.com/xiaobaga281/dsh-native-uia