dsh-gui-agent:DSH 會話級 Windows 鼠標鍵盤代理與真人模擬輸入

前言

在 DeepSeek Harness(DSH)裏讓模型「操作電腦」,常見做法是接 WebDriver、CDP 或瀏覽器擴展,事件往往不是瀏覽器眼裏的 isTrusted,頁面反自動化策略也會更難繞過。另一類 computer-use 方案往往把點擊和按鍵做成瞬時輸入,節奏與人類操作差異明顯。

dsh-gui-agent 是社區維護的工作流類插件:在 DSH 對話輸入框左側提供會話級「代理操作」開關。開啓後,代理通過 Win32 原生路徑獲得 Windows 級鼠標、鍵盤、窗口管理與截屏能力,並默認用貝塞爾軌跡、隨機間隔等方式模擬真人輸入節奏。下文介紹其定位、能力與安裝啓用方式;事實以 GitHub 倉庫 README 爲準。

這是什麼

  • 名稱:dsh-gui-agent(npm 包名同名,當前版本 0.1.0,MIT 許可)
  • 維護者:ChinXavier
  • 分類:工作流(社區目錄 skillhub.cn)
  • 環境要求(package.json):Node >=22,DSH >=0.1.0;僅 Windows(PowerShell 5.1,無第三方依賴)

一句話:給 DSH 輸入區加開關;用戶手動開啓某會話的桌面代理後,模型纔可調用九個 computer_* 工具,在真實桌面上點擊、打字、切窗、截圖並可用 UI Automation 查控件。

核心功能

九個會話級工具

開關關閉時,這些工具不會註冊到模型側工具欄,也沒有對應提示段;開啓後才惰性註冊。

工具 作用
computer_screenshot 截取桌面或單顯示器,PNG 作爲圖片內容塊返回
computer_mouse 移動、點擊、雙擊、右鍵、滾輪、拖拽;危險控件可拒絕
computer_keyboard 文本輸入(ASCII 走 VK,中文回落 Unicode)、組合鍵
computer_window 枚舉、激活、最小化/最大化/還原/關閉窗口
computer_wait 等待動畫或頁面加載
computer_uia UI Automation 按名稱/類型找控件,或讀座標處控件
computer_account 窗口標題子串與賬號標籤映射,切換並校驗前臺窗口
computer_queue 批量 prompt 隊列:add / next / complete / fail / list / clear
computer_downloads 列下載目錄、等待新下載,收集到 ~/Pictures/dsh-gui-agent/<賬號>

真人模擬輸入(與常見 computer-use 的差異)

默認不走「瞬移 + 瞬時按鍵」:

  1. 原生輸入:點擊與按鍵經 Win32 SendInput(SetCursorPos + INPUT),與真實鍵鼠同路徑;不使用 CDP、WebDriver、擴展注入或 DOM 合成事件。
  2. 光標軌跡:兩段非對稱三次貝塞爾,弧線偏移隨機,末端 2–8px 過沖再 2–4 步回拉,單步 ±1px 抖動,耗時按距離約 120–540ms 隨機。
  3. 按鍵節奏:ASCII 用 VkKeyScanW 的真實 VK(含 Shift);非 ASCII 用 KEYEVENTF_UNICODE。字符間隔對數正態;空格 ×0.7、標點 ×1.18;約每 11 字一次長停頓;字母數字約 3% 概率錯鍵後退格。
  4. 點擊:按下前 150–500ms 猶豫,按下 45–95ms,連擊間隔 70–140ms。

開啓開關後,輸入框左側出現節奏下拉:仿真(默認)、便捷(瞬移與快時序)、自定義(0.2–8× 滑桿)。單次調用還可傳 instant: true、pace: "fast"、slowdown: 2.5 覆蓋。

安全模型

  1. 默認關閉,按會話生效;狀態寫入 %LOCALAPPDATA%\dsh-gui-agent\state.json,宿主重啓後按 12 小時 TTL 恢復,超時失效。
  2. 僅用戶能開啓;工具不能自行打開開關。
  3. 關閉即註銷工具;開關路由使用與 DSH API 相同的 Host/Origin 與瀏覽器認證(connection.requestRejection)。
  4. 危險控件:點擊前 UIA 反查落點;命中「發送 / 提交 / 購買 / 支付 / 下單 / 刪除 / 發佈 / 分享 / 註銷 / 退出登錄」及英文同義詞時拒絕,需用戶同意後帶 confirm: true 重試。
  5. 截圖外發:屏幕可見內容會發給模型,開啓前請確認無敏感畫面。

安裝與啓用

DSH 生態裏插件經社區目錄或 GitHub 分發,與 DeepSeek / 幻方無官方從屬關係。安裝前應閱讀源碼與 MIT 許可證;插件以當前 DSH 進程權限驅動本機輸入,權限與風險由使用者自行判斷。

安裝

在 DSH 插件管理器中:

plugin_manager action=install_bundle target=<本倉庫目錄或包名>

或在 dsh plugin CLI:

dsh plugin --profile <profile> add github:ChinXavier/dsh-gui-agent

安裝後刷新 Web 頁面。輸入框工具行左側出現「代理操作」;關閉時僅該按鈕,開啓後同格內出現仿真 / 便捷 / 自定義下拉。

典型用法(工作流層面)

README 未給出獨立腳本示例,典型路徑是:用戶在某會話打開「代理操作」→ 模型按需鏈式調用工具,例如:

  1. computer_window 激活目標程序或瀏覽器;
  2. computer_wait 等待加載;
  3. computer_uia 或 computer_screenshot 定位界面;
  4. computer_mouse / computer_keyboard 操作控件;
  5. 再次 computer_screenshot 覈對結果。

多賬號場景可配合 computer_account 與 computer_queue 做批量 prompt;下載場景用 computer_downloads 等待並歸檔到 ~/Pictures/dsh-gui-agent/<賬號>。

實現概要(便於排障)

  • Host 入口 index.js:會話狀態、路由、惰性註冊工具與提示段。
  • 執行層:常駐 powershell.exe -File helper/computer.ps1,JSON-lines 請求/響應;DPI 感知與 GDI 截屏在 helper 內完成。
  • 客戶端 client.js:掛載 conversation.input.left 的開關與節奏 UI。

已知限制與適用場景

適合:需要在真實 Windows 桌面上讓 DSH 代理操作瀏覽器或任意 GUI、且希望輸入更接近真人、並願意手動控制會話開關與安全確認的場景。

限制(摘自 README):

  • 僅 Windows;UAC 提權窗口收不到注入輸入。
  • DRM / 受保護畫面可能黑屏。
  • 每進程僅一個 computerUse 提供者;本插件直接驅動輸入,不佔用該名額。
  • UIA 對部分 Electron/Chromium 內 Web 內容、自繪控件支持有限。
  • 下載收集按文件名基線比對,同名覆蓋行爲取決於瀏覽器。

結尾

dsh-gui-agent 把 Windows 桌面自動化收成 DSH 裏會話級、默認關閉的九工具集,並強調 SendInput 原生路徑與可調的真人節奏;與工作流類「開開關再讓模型動手」的使用方式一致。

羽毛球分组比赛记分
小程序二维码

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

小夜