前言¶
在 DeepSeek Harness(DSH)裏讓 Agent 操作本機應用,常見做法是走全局鼠標鍵盤注入或腳本橋接。這類路徑容易帶來兩個問題:一是動作與當前 UI 狀態脫節,模型基於過期界面信息重放點擊;二是輸入事件進入全局 HID 流,可能移動系統光標、搶佔前臺,打斷用戶正在進行的操作。
dsh-computer-use 是 Anionex 維護的 DSH 插件,定位爲 macOS 上的原生動作層。它以 Accessibility 觀測爲先,把每個動作綁定到未過期的 observation,並通過進程/窗口定向的路由把 fallback 輸入投遞給目標應用,而不是全局桌面。目前僅支持 macOS 14 及以上版本。
這是什麼¶
@anionex/dsh-computer-use 是發佈在 npm 上的 DSH Bundle,GitHub 倉庫爲 Anionex/dsh-computer-use。插件分類爲 admin-security,當前版本 v0.1.0,採用 MIT 許可證。
它解決的核心問題是:在 DSH Session 中,讓 Agent 能夠觀察 macOS 應用的 Accessibility 樹、對指定進程/窗口執行語義化或 fallback 輸入,並在每次動作後返回新鮮狀態;同時通過作用域權限、過期狀態拒絕和前臺安全輸入策略,降低誤操作與干擾用戶的風險。
核心功能¶
下面介紹插件在 README 中明確列出的能力。
先觀察再動作¶
computer_observe 返回有界的 Accessibility 樹、帶 index 的元素、準確的 app/process/window 元數據、權限狀態,以及可選的截圖 Artifact。每個元素帶有 observation-local index 和 opaque targetHandle,後續動作必須引用未過期的 observationId。
前臺安全的輸入路由¶
默認策略有意避免干擾用戶當前工作:
- 不移動系統光標;helper 中沒有 cursor warp 路徑。
- click、scroll、drag 的 fallback 走 pid/window 定向的 SkyLight 路由,不進入全局 HID 事件流。
- 語義化 Accessibility、
keyboardPolicy: preserve與目標進程指針輸入不激活應用;Bundle 默認的keyboardPolicy: activate僅在鍵盤 fallback 前把目標應用帶到前臺。 - click、scroll、drag 使用獨立的 Agent 軟件光標(點擊穿透、不激活應用),系統真實光標保持不變。
優先語義輸入,fallback 投遞給目標¶
動作優先使用 AXPress、可編輯 value、selected-text 賦值和元素聲明的 Accessibility action;僅在必要時才走指針或鍵盤 fallback。鍵盤輸入發給選定 pid;指針輸入攜帶窗口本地座標,發給選定 pid 和 CGWindowID。
作用域權限與敏感動作確認¶
read/control lease 按 Agent、Session、turn 和準確 bundle id 分離。沒有配置 grant 時,DSH 會請求 approval:read approval 在 Session 內有效,control approval 只在當前 turn 有效。高影響動作需要一次性 confirmation。
模型 Tool 按需暴露¶
Bundle 初始只貢獻 computer_use_activate。在當前 Agent 加載 Computer Use Skill 後,才暴露 computer_list_apps、computer_observe、computer_click、computer_set_value、computer_type_text、computer_press_key、computer_scroll、computer_drag、computer_perform_action、computer_wait、computer_confirm 等執行 Tool。
安裝與啓用¶
前置條件¶
- macOS 14 或更新版本。
- 已安裝 Web 或 Headless Profile、並掛載 Skill Tool 的 DeepSeek Harness。
- macOS Accessibility 權限(觀察和原生動作必需)。
- 僅當請求截圖時需要 macOS Screen Recording 權限。
已發佈的包名爲
@anionex/dsh-computer-use。舊名@dsh-external/dsh-computer-use從未發佈到 npm,不可安裝;安裝前請先更新舊的 profile 或 manifest 引用。
安裝命令¶
下面是從 README 給出的官方安裝方式,分別添加到 web 與 headless profile:
dsh plugin --profile web add @anionex/dsh-computer-use
dsh plugin --profile headless add @anionex/dsh-computer-use
安裝後可用以下命令確認配置已寫入:
dsh --profile web --dump-config | grep computer-use
dsh --profile headless --dump-config | grep computer-use
修改已安裝插件後,需要重啓正在運行的 dsh web host,再創建一個新 Session,讓 host 重新載入 Bundle 與 Skill catalog。
加載 Skill¶
在新 Session 中輸入:
/computer-use
典型用法¶
加載 Skill 後,可以讓 Agent 按「先觀察、再動作、返回新鮮狀態」的流程操作本機應用。README 給出的示例如下:
使用 Computer Use 檢查正在運行的 DSH Computer Use Fixture,啓用 deterministic option,並根據動作後返回的新狀態報告結果。優先使用 Accessibility 元素,不要複用舊 observation。
倉庫自帶的 AppKit fixture 用於驗證前臺安全策略:發佈測試通過 open -g 以後臺模式啓動 fixture,再經與 Agent 相同的協議完成 observe → click → 新鮮 observation 的流程,並檢查 activation 爲 not-requested、pointerRouting 爲 target-process。
典型工作流可概括爲:
computer_list_apps列出有界用戶應用及權限診斷。computer_observe獲取目標應用的 Accessibility 樹與observationId。- 基於元素 index 或
targetHandle調用computer_click、computer_set_value等 Tool。 - 動作 settle 後返回完整或差分 observation,供下一步決策。
適用場景與注意¶
適合誰¶
- 需要在 DSH Agent 中操作 macOS 原生應用(無專用 API/CLI 插件時)的開發者。
- 希望 Agent 在後臺操作其他應用、同時儘量不干擾用戶當前前臺工作的場景。
- 需要 stale-state 拒絕、按應用 lease 和敏感動作確認等安全控制的 admin-security 類工作流。
不取代什麼¶
README 明確劃定了範圍:dsh-computer-use 是原生動作層,不會取代更窄的接口:
- 瀏覽器任務應繼續使用 browser automation 和 DOM/CDP 狀態。
- 有 API、CLI 或專用應用插件時仍應優先使用。
- OCR 與視覺理解應交給獨立安裝的
dsh-vision-toolkit,通過vision-toolsSkill 處理截圖 Artifact。
安裝前須知¶
插件以當前 DSH 進程權限運行,需要 Accessibility 權限,截圖時還需要 Screen Recording 權限。安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證,確認交互策略和權限模型符合你的安全要求。Helper executable 是 DSH 內部傳輸實現,應通過已註冊 Tool 使用,以保留應用 lease、敏感動作 confirmation 與宿主策略檢查。
目前僅支持 macOS;Linux 或 Windows 環境無法使用此插件。
結尾¶
dsh-computer-use 把 macOS Accessibility 觀測、過期狀態拒絕、作用域權限和前臺安全輸入路由組合成 DSH 的原生動作層,適合需要在本機 GUI 上可靠、可控地執行 Agent 操作的場景。