Desktop Hand:爲 DSH 提供真實桌面輸入與策略約束的文件工具

前言

DeepSeek Harness(DSH)默認擅長在會話工作區內讀寫代碼、跑命令,但模型無法直接「看見」你的顯示器、也無法用真實鼠標鍵盤去操作前臺應用。若要做 GUI 自動化、跨工作區讀文件、或在桌面環境裏逐步點按驗證,通常只能另寫腳本或接第三方 RPA,和 Harness 裏的工具鏈是割裂的。

下面介紹社區插件 Desktop Hand(維護者 Zero20230619,分類爲客戶端)。它在 DSH 裏註冊真實桌面輸入與受策略保護的文件操作兩套能力,並通過會話授權、審批、限額、緊急停止和審計日誌把風險壓到可管控的範圍。需要說明的是:它不是沙箱,也不是遠程桌面協議;Shell 類工具不受其文件策略約束,使用前應通讀倉庫 README 中的風險說明。

這是什麼

Desktop Hand 是 DSH 插件,當前 package 版本爲 1.0.0,許可證 MIT,源碼與文檔在 GitHub 倉庫 Zero20230619/desktop-hand。社區目錄頁:SkillHub — desktop-hand(SkillHub 爲獨立插件站點,與 DeepSeek / 幻方無官方從屬關係)。

插件把能力 deliberately 分成兩條線:

  1. 真實桌面輸入:觀察屏幕(指針、前臺窗口、截圖)並在物理桌面上移動鼠標、點擊、拖拽、滾動、按鍵、輸入文本。
  2. 策略約束的文件操作:讀/list 目錄、寫、移動、刪除(默認可恢復的隔離區)、恢復、列出 trash;寫/刪/移需要單獨的 files 授權。

真實輸入與文件變更在默認配置下均爲關閉,需人類通過 /desktop-hand authorize 等方式授予會話級、帶時間與動作預算的權限;審批默認多爲 ask。插件以與 DSH 相同的進程權限運行,能觸及該進程能觸及的資源(策略保護的 path 除外)。

核心功能

桌面輸入(input 授權)

模型側工具命名以 desktop_hand_ 爲前綴,典型流程是「看 → 動一步 → 再看」:調用 desktop_hand_screenshot 將 PNG 寫到工作區 .desktop-hand/screenshots/,再用 DSH 自帶的 read_image 查看路徑;每次工具調用只做一次點擊、按鍵、輸入或拖拽,然後重新截圖驗證。

只讀觀察類工具(如 desktop_hand_get_pointer、desktop_hand_foreground_window)不需要 input 授權,但仍受緊急停止等門控影響。截圖消耗 input 授權但不計入動作預算。

文件工具(files 授權)

desktop_hand_read_file、desktop_hand_list_dir 等爲只讀,受文件系統 zone(只讀區、寫保護區、protected roots 等)限制。write_file、move_path、delete_path、restore_path 需要 files 會話授權;默認 approval.fileMutations 爲 ask,每次變更還需 live 審批(若 DSH 審批被設爲 never,相關調用會 fail closed)。

刪除默認走 trash/quarantine(可 restore_path 恢復);永久刪除需在授權與配置中顯式解鎖 direct 模式並確認。

控制、審計與安全門

插件共註冊 21 個模型可見工具,另提供用戶專用斜槓命令 /desktop-hand(不進入模型對話,作爲授權與緊急控制的權威路徑)。獨立 input / files 授權、座標與次數上限、敏感屏幕區域、全侷限額 Pause 緊急熱鍵(Windows 默認,刻意不用 F9)、以及按會話的 JSONL 審計 一併生效。desktop_hand_status、desktop_hand_revoke、desktop_hand_emergency_stop 等在多數狀態下仍可用;緊急停止後僅人類可 /desktop-hand resume。

平臺支持

平臺 真實輸入 截圖 緊急熱鍵
Windows 10/11 完整 完整 默認 Pause
Linux 盡力(需 xdotool 等) 盡力 無(可用 /desktop-hand stop)
macOS 盡力(需 cliclick 等) 盡力 無
fake 內存模擬 寫真實 PNG 無

運行時要求 Node.js ≥ 22、帶 profile 的 DSH;Windows 上依賴 PowerShell 5.1 或 7。開發測試在 README 中記錄爲 Node v26.13.0、Windows 環境。

安裝與啓用

插件包目錄名爲 desktop-hand/,內含 index.js、lib/、cordis.patch.yml、desktop-hand.config.json、install.ps1 等。官方推薦用 PowerShell 安裝腳本寫入 profile 的 node_modules 並在 cordis.patch.yml 插入托管塊。

若 DSH 已設置 DSH_PROFILE_DIR,在插件源碼目錄執行:

pwsh -File .\install.ps1 -ProfileDir "$env:DSH_PROFILE_DIR"

腳本會校驗包名、備份 patch、複製到 profile 的 node_modules/desktop-hand,並在 <DSH_HOME>/desktop-hand.config.json 不存在時種子化配置(默認 DSH_HOME 爲 ~/.dsh)。完成後需重啓 DSH(或等待 profile HMR);配置每次激活只讀一次,改 JSON 後也要 reload/重啓。

手動安裝時:將包複製到 profile 的 node_modules/desktop-hand,並在 cordis.patch.yml 末尾加入 README 中的 insert 行(id / name: desktop-hand),然後重啓。

卸載(保留用戶 config、審計與 trash 數據):

pwsh -File .\uninstall.ps1 -ProfileDir "$env:DSH_PROFILE_DIR"

開發時可用 DSH 啓動器的 --patch 疊加 YAML 覆蓋 enabled、provider 等,但 README 強調仍需先把包裝進 profile 以解析 @deepseek-ai/* 依賴。

典型用法

README Quick start 建議先在 disposable workspace 裏走完一遍,並優先用 input.provider: "fake" 做幹跑。

  1. 安裝並重啓 DSH 後,在用戶側查看狀態(始終允許):
/desktop-hand status

確認 provider、刪除模式 trash、熱鍵 Pause,以及 input/files 授權均爲 none。

  1. 爲桌面輸入授予短時、有限動作預算(示例:10 分鐘、200 次動作):
/desktop-hand authorize input 10 200

若需點擊任務欄等敏感區域,可在末尾加 sensitive。

  1. 模型按「截圖 → read_image → 單步 click / press_key / type_text → 再截圖」循環操作;操作前可用 get_pointer 與 foreground_window 覈對座標與前臺標題。

  2. 文件變更需單獨授權,例如 5 分鐘、50 次動作:

/desktop-hand authorize files 5 50
  1. 隨時按 Pause 或執行 /desktop-hand stop;恢復僅人類執行 /desktop-hand resume。

斜槓命令還包含 revoke、tighten(僅可加嚴 zone / 禁止刪除)、policy、help 等,完整語法見倉庫 README 的 Slash commands 一節。

適用場景與注意

適合:需要在 DSH 會話裏做可控的 GUI 探針、桌面截圖驅動的工作流、或在策略圈內對工作區外路徑做受審計的文件讀寫/隔離刪除,且操作者願意承擔「模型驅動真實輸入」的風險。

務必注意:

  • README 標明 HIGH RISK:非 VM、非獨立用戶、非 OS 權限邊界;bash / pwsh 等 Shell 工具可繞過 Desktop Hand 文件策略(除非啓用 policy.enforceOnDshFsTools)。
  • 真實 GUI 自動化(如 Blender)在開發中未做端到端驗收;真實應用 acceptance 應視爲手動步驟,可先走 docs/ACCEPTANCE.md 與 fake provider。
  • 安裝前請自行審閱源碼與 MIT 許可證;社區目錄星標數爲 1(截至目錄線索),不代表安全審計結論。
  • 普通工作區編輯仍應優先使用 DSH 內置 read / write / edit,Desktop Hand 文件工具針對的是策略允許範圍內的擴展路徑與 trash 流程。

結尾

Desktop Hand 把「真實桌面 see-act 循環」和「帶 zone、trash、審計的文件工具」收進 DSH 插件形態,用會話授權與人類斜槓命令把默認關死的危險能力按需打開。若你要評估是否接入,可從 fake provider 與 /desktop-hand status 開始,並保留緊急停止習慣。

  • 目錄頁:https://www.skillhub.cn/plugins/Zero20230619/desktop-hand
  • GitHub:https://github.com/Zero20230619/desktop-hand
羽毛球分组比赛记分
小程序二维码

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

小夜