dsh-agent-desktop:把 agent-desktop 接到 DSH 的 desktop_* 工具

前言

DeepSeek Harness(DSH)裏的智能體若要操作本機 GUI,常見做法是裝上游的 agent skill,讓模型按文檔裏的 snapshot → act → verify 循環走。Vercel Labs 的 agent-desktop CLI 通過系統無障礙樹讀寫界面:每次返回帶穩定 @ref 的 JSON 快照,智能體對 ref 執行動作後再快照校驗,不依賴像素匹配和座標。DSH 可以直接掃描 skill 目錄加載 SKILL.md,但在 macOS 上 Harness 的 Bash 工具處於文件沙箱,無法執行 /bin/ps;而 agent-desktop 的 list-apps、帶 --app 的過濾、launch、close-app 等都會用 ps 建應用清單,在 Bash 裏會報 ps: Operation not permitted。下面介紹社區插件 dsh-agent-desktop(維護者 dogxxgod,分類爲模型推理 / computer-use),它從 Host 進程調用 CLI(不受 Bash 沙箱限制),並把 skill 裏的操作規則注入系統提示,與單獨安裝 skill 可以並存。

這是什麼

dsh-agent-desktop 是 DSH 的 Host 插件 bundle:把本機已安裝的 agent-desktop CLI 封裝成一組原生 desktop_* 工具,供 Harness 智能體調用。插件版本 1.0.0,要求 DSH >= 0.2.1-rc.5(README 寫明在 macOS 26.7.1 arm64 上與 0.2.1-rc.5 聯調),CLI 兼容 agent-desktop 1.1.0(JSON envelope version: 2.6)。Node 引擎爲 ^22.19.0 || >=24.0.0(Harness 自帶運行時,無需另裝 Node)。許可證 MIT,源碼與說明見 GitHub,社區目錄頁:skillhub.cn/plugins/dogxxgod/dsh-agent-desktop(獨立社區站點,與 DeepSeek / 幻方無官方從屬關係)。

核心功能

插件不改變 agent-desktop 的語義,只是把 CLI 子命令映射爲工具,統一返回 CLI 的 JSON envelope(ok 加 data 或 error);命令失敗不會轉成工具異常,由模型按返回內容處理。

工具 對應 CLI 用途
desktop_status status 平臺、權限、CLI 版本、狀態目錄、支持能力;應最先調用
desktop_list_windows list-windows 可見窗口及 w-… id
desktop_list_apps list-apps 運行中的 GUI 應用
desktop_snapshot snapshot 無障礙樹與 @ref
desktop_find find 按 role/name/text 等匹配元素
desktop_get get 讀取 ref 屬性
desktop_click click 等 點擊 ref
desktop_type type 向 ref 輸入文本
desktop_press press 按鍵組合
desktop_scroll scroll 滾動
desktop_screenshot screenshot 窗口/顯示器 PNG
desktop_run 任意命令 launch、剪貼板、wait、session、batch 等剩餘能力

可選配置通過 profile 的 cordis.patch.yml 覆蓋插件行(後層替換整個 config):

字段 默認 含義
binaryPath agent-desktop PATH 上的命令名或絕對路徑
stateHome ""(CLI 默認 ~/.agent-desktop) 設置 AGENT_DESKTOP_HOME
timeoutMs 60000 單次 CLI 默認超時;工具可傳 timeout_ms
promptSection true 是否注入桌面控制規則到系統提示

安裝與啓用

安裝前需滿足:DSH 版本、agent-desktop CLI、以及 macOS 上的無障礙(及可選錄屏)授權。插件本身是本地 bundle,無構建步驟、無 install 腳本、無額外 npm 依賴。

1. 安裝 agent-desktop CLI

npm install -g agent-desktop
agent-desktop version        # {"version":"2.6","ok":true,...}

若二進制不在 PATH,在配置裏設置 binaryPath。macOS 權限可執行:

agent-desktop permissions --guide

向啓動 Harness 的應用(如 DeepSeek Harness.app)授予輔助功能;需要截圖時再授予屏幕錄製。desktop_status 會報告這兩項狀態。

2. 下載並註冊 bundle

官方支持路徑是 Harness 插件管理器,將 release 解壓目錄鏈入當前 profile。以 v1.0.0 爲例(macOS):

curl -L -o dsh-agent-desktop-1.0.0.zip \
  https://codeload.github.com/dogxxgod/dsh-agent-desktop/zip/refs/tags/v1.0.0
unzip -q dsh-agent-desktop-1.0.0.zip -d ~/work

解壓後應得到含 package.json 的目錄(例如 ~/work/dsh-agent-desktop-1.0.0)。在 Harness Plugins 頁使用 Install bundle / Install from folder(文案隨版本略有不同),選中該文件夾;或讓智能體調用同等 Host 能力,例如:

用 plugin_manager 把 /absolute/path/to/dsh-agent-desktop-1.0.0 安裝爲 bundle

管理器會把 dsh-agent-desktop 寫入 profile 的 dsh.profile.bundles 並激活 agent-desktop host 行。

3. 重啓並驗證

若提示 restart-required,重啓 Harness 後執行 desktop_status,工具列表中應出現 desktop_*。

可選覆蓋配置示例:

- id: agent-desktop
  config:
    binaryPath: /Users/you/.local/bin/agent-desktop
    stateHome: /Users/you/.agent-desktop
    timeoutMs: 90000
    promptSection: true

升級時下載新 tag 的 ZIP(URL 中把 v1.0.0 換成新版本),解壓覆蓋原目錄或註冊新目錄;bundle 爲鏈接安裝,重啓 Harness 即可生效,無需重複註冊。卸載在 Plugins 頁或 plugin_manager remove_bundle 後重啓;CLI 與狀態目錄可按 README 自行刪除。

典型用法

工作流與上游 agent-desktop 一致,由模型在工具層完成循環:

  1. 調用 desktop_status 確認 CLI、權限與狀態目錄。
  2. 用 desktop_list_apps / desktop_list_windows 或 desktop_run 的 launch 定位目標應用。
  3. desktop_snapshot 獲取帶 @ref 的樹;需要時用 desktop_find 縮小範圍。
  4. desktop_click、desktop_type、desktop_press、desktop_scroll 等對 ref 操作。
  5. 再次 desktop_snapshot 或 desktop_get 校驗結果;截圖用 desktop_screenshot。

插件在 promptSection: true 時會注入 snapshot → act → verify、ref 生命週期、重試策略等規則,即使未單獨安裝 filesystem skill 也能按同一套約定操作。

適用場景與注意

適合已在 DSH >= 0.2.1-rc.5 上開發 computer-use / 桌面自動化 智能體、並願意在本機安裝 agent-desktop 的開發者。README 在 macOS 上給出了權限與聯調環境;Windows / Linux 權限模型見上游文檔。

安全與權限:CLI 由 Host 進程啓動,權限等同於運行 Harness 的用戶與啓動 Harness 的應用;安裝前應閱讀倉庫源碼與 MIT 許可證,確認符合你的部署策略。Bash 工具仍保持沙箱,僅 desktop 相關能力走 Host。

社區目錄當前星標爲 0,不代表功能完整性;以 README 與 release 1.0.0 爲準。

結尾

dsh-agent-desktop 補上 DSH Bash 沙箱與 agent-desktop 對 ps 依賴之間的缺口,把 Vercel Labs 的無障礙樹桌面控制 loop 變成 Harness 一等公民工具。需要詳情與更新時查閱 GitHub 倉庫 與 SkillHub 目錄頁。

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

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

小夜