御屏(dsh-native-uia):用 Windows 控件樹給 DSH 加桌面操控

前言

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 爲準。

  1. 將包解壓到穩定目錄,不要放在 DSH 安裝目錄(resources\app.asar 旁),避免更新被清。推薦例如 C:\Users\<你>\.dsh\plugins\dsh-native-uia 或任意固定路徑。
  2. 在該目錄執行安裝腳本(需 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
  1. 重啓 DeepSeek Harness。重啓後確認會話中出現「電腦操控」標籤。

本機維護命令:

node scripts/install.mjs status
node scripts/install.mjs remove

remove 僅刪除本插件寫入的兩條條目,其它 profile 內容不動。

典型用法思路

README 未給出獨立「教程腳本」,但工具組合方式可復現如下思路。

先定位窗口,再讀樹或搜文本:

  1. 用 computer_windows 或 computer_resolve_window 拿到目標 windowId(窗口重開、改標題後需重新解析)。
  2. 對窗口調用 computer_snapshot 獲取 ref 與 revision;若目標文案明確,可用 computer_find_text 直接拿帶 ref 的命中項(排序優先 Button、MenuItem 等可點控件,容器與 offscreen 靠後)。
  3. 用 computer_act 對 ref 做單步操作;多步且需原子校驗時用 computer_run 一次提交批次。
  4. 僅在 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜