前言¶
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 一致,由模型在工具層完成循環:
- 調用
desktop_status確認 CLI、權限與狀態目錄。 - 用
desktop_list_apps/desktop_list_windows或desktop_run的launch定位目標應用。 desktop_snapshot獲取帶@ref的樹;需要時用desktop_find縮小範圍。desktop_click、desktop_type、desktop_press、desktop_scroll等對 ref 操作。- 再次
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 目錄頁。