dsh-mobile-control:用 WDA 驅動 iOS 模擬器的 DSH 插件

前言

DSH 的理念是「一切皆插件」,移動端操控能力也可以作爲插件接入 agent 的工具集。dsh-mobile-control 就是這樣一個 DSH 插件:它通過 WebDriverAgent(WDA)驅動 iOS 模擬器,提供截圖、查找 UI 元素、點擊、打開 URL、導出可訪問性樹等操作。

與依賴 macOS 輔助功能或 idb 的路徑不同,這個插件使用 WDA 的 HTTP 服務。安裝後,它會向 agent 註冊 8 個 mobile_* DSH 工具,讓會話裏可以直接用自然語言或工具調用完成 iOS 模擬器操作。

這是什麼

dsh-mobile-control 是 DeepSeek Harness(DSH)插件,定位爲:

DeepSeek Harness 插件 · 操控手機 / DSH plugin for controlling mobile devices

倉庫由 PangYiMing 維護,許可證爲 MIT。

它解決的核心問題是:讓 DSH agent 能通過一組 mobile_* 工具操作 iOS 模擬器。插件底層依賴 WDA 驅動,能力包括截圖、元素查找、點擊、打開 URL 或自定義 scheme、導出當前前臺 app 的可訪問性樹 XML,以及使用 simctl privacy grant 做隱私預授權。

核心功能

下面是已覈實的主要能力:

  • 通過 WebDriverAgent(WDA)驅動 iOS 模擬器
  • WDA 暴露 localhost:8100 HTTP 服務
  • 端口自適應;真實端口可能寫入 ~/.cache/webdriveragent/wda.port
  • iOS 模擬器截圖
  • 按 accessibility label / class 查找 UI 元素
  • 點擊元素,或按邏輯點座標點擊
  • 打開 URL 或自定義 scheme 深鏈
  • 導出當前前臺 app 的可訪問性樹 XML
  • 使用 simctl privacy grant 預授權,避免系統彈窗擋自動化
  • WDA 冪等啓動與端口自適應
  • 安裝插件後註冊 8 個 mobile_* DSH 工具

WDA 的特點是:零 macOS 輔助功能授權、不依賴 idb,並且可以點任意 app,包括系統彈窗。

安裝與啓用

先確認運行環境。package.json 聲明:

  • Node >=20.11
  • peerDependencies 爲 @deepseek-ai/dsh-tools 和 @deepseek-ai/cordis

然後從 GitHub 安裝:

dsh plugin --profile demo add github:PangYiMing/dsh-mobile-control

GitHub 源碼安裝需要 prepare 構建。安裝完成後,插件會註冊 8 個 mobile_* DSH 工具,供 agent 在會話中調用。

典型用法

1、啓動 WDA

先啓動 WDA:

bash scripts/wda-up.sh [UDID]  # 不傳 UDID 用當前 Booted 的模擬器

腳本採用冪等啓動:如果 WDA 已在運行,直接返回;如果有緩存,可跳過編譯;如果沒有緩存,需要先完成 clone 和編譯。端口自適應時,真實端口可能寫入:

~/.cache/webdriveragent/wda.port

插件和腳本都會讀取該端口,而不是固定假定 8100。

2、檢查 WDA 狀態

默認情況下可以檢查 localhost:8100/status:

curl -s localhost:8100/status | head -c 200

如果端口自適應後實際端口不是 8100,應使用從 ~/.cache/webdriveragent/wda.port 讀取到的端口替換 8100。

3、在 agent 會話中調用

安裝插件後,可以直接在 agent 會話裏用自然語言觸發工具。例如:

用 mobile_wda_up 啓動 WDA,然後 mobile_tap 點 (268, 492)

下面是一些已覈實的工具用法示例:

  • 使用 mobile_find_element 按 accessibility label / class 找 UI 元素,返回元素 id
  • 使用 mobile_tap 點元素(elementId)或按邏輯點座標(x / y)點擊
  • 使用 mobile_open_url 打開 URL 或自定義 scheme 深鏈
  • 使用 mobile_grant_privacy 預授權,避免系統彈窗擋自動化

插件還提供 iOS 模擬器截圖、導出當前前臺 app 的可訪問性樹 XML 等能力。

適用場景與注意

適合的場景:

  • 在 macOS 上使用完整版 Xcode
  • 需要 DSH agent 自動操作 iOS 模擬器
  • 不想依賴 macOS 輔助功能授權
  • 不想依賴 idb
  • 需要點擊任意 app,包括系統彈窗

注意以下限制:

  • 需要完整版 Xcode;XCUITest 靠 testmanagerd 拉起,純 simctl launch 起不來 HTTP 服務
  • 真機 WDA 必須用含設備 UDID 的描述文件重新簽名,不能直接複用模擬器包
  • 模擬器包未簽名,arch=arm64+x86_64,可跨 Mac 複用
  • Android(ADB)支持、元素級滑動 / 長按 / 輸入文本在路線圖中未完成
  • 插件以當前 dsh 進程權限運行,安裝前應檢查源碼與 MIT 許可證
  • 社區目錄是獨立站點,不等同於官方應用商店

結尾

dsh-mobile-control 把 WDA 驅動的 iOS 模擬器操控能力封裝成 DSH 工具。適合需要在 agent 會話裏完成截圖、找元素、點擊、打開 URL、導出可訪問性樹和隱私預授權的場景。

相關鏈接:

  • GitHub 源碼:https://github.com/PangYiMing/dsh-mobile-control
  • 目錄頁:未在本次已覈實資料中給出具體 URL
羽毛球分组比赛记分
小程序二维码

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

小夜