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
羽毛球分组比赛记分
小程序二维码

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

小夜