前言¶
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:8100HTTP 服务 - 端口自适应;真实端口可能写入
~/.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.11peerDependencies为@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