dsh-ios 是什么?把 iOS 模拟器与真机带进 DeepSeek Harness 对话
dsh-ios 是装进 DeepSeek Harness(DSH)的 iOS 模拟器与真机控制插件:agent 能在对话里启动设备、构建运行 Xcode 项目、按辅助功能身份或 OCR 文字驱动 UI、读日志、查进程与泄漏,而设备画面通过实时 MJPEG 流渲染在右侧面板上,你可以直接点击、拖拽、旋转或按 Home——同一套工具与面板也适用于 USB 连接的 iPhone。 本文介绍 dsh-ios 是什么、核心功能有哪些、怎么安装与启用、典型用法与常见问题。
dsh-ios 是什么?
dsh-ios 解决的是「调试 iOS 应用要在模拟器、Xcode 和终端之间来回切换」的麻烦:把设备画面、构建运行与 UI 自动化全部收进 DSH 对话,让 agent 看得见像素、你随时能上手。 以下定位与事实来自官方 README(来源):
dsh-ios(GitHub 仓库 ZSeven-W/dsh-ios)由 zseven-w 维护,MIT 协议开源,npm 包名为 @zseven-w/dsh-ios,是 DSH Plugin 生态里的工具类插件,需要在安装 Xcode 的 macOS 上使用。它把模拟器与真机操作拆成 22 个返回 JSON 的 agent 工具(ios_sim_* 与 ios_real_start_wda),图像不以图片块形式出现,而是通过 DSH 网页服务签名的临时 URL 到达界面——令牌由 HMAC 签名、10 分钟内过期,浏览器永远不直连设备流端口。真机场景由 WebDriverAgent 承担:插件在手机上构建并启动它,再把控制与画面端口经回环 usbmux 隧道转发,因此同一套工具、面板、卡片与状态胶囊即可操作 iPhone。
dsh-ios 的核心功能有哪些?
核心能力围绕「实时模拟器与真机、22 个 agent 工具、可交互侧边栏、语义化 UI 自动化、行级验证、SwiftUI 预览热重载、安全传输」展开:让 agent 既能看见屏幕又能点按真实控件,且所有图像字节都走受保护的签名通道。 以下能力来自官方 README(来源):
- 实时模拟器与真机控制:设备画面经 MJPEG 流进侧边栏面板,支持点击、拖拽、旋转、按 Home;真机通过 USB 连接后同样可用。
- 22 个 agent 工具:覆盖设备启动与关闭、截图、构建运行、统一日志、UI 树导出、按元素点击、列表行操作、OCR 查找与点击、SwiftUI 预览热重载、进程、回溯与泄漏检查。
- 语义化 UI 自动化:基于辅助功能树导出层级,按标签或标识符点击;树为空或退化时自动回退到 Vision OCR 识别文字再点击。
- 列表与信息流行操作:把深层辅助功能快照转成带索引的行,用行内计数器变化验证点击是否生效。
- SwiftUI 预览热重载:生成临时宿主应用,把预览编译为动态库,在运行中的模拟器内热替换,约 2 到 5 秒。
- 安全传输:流量只绑定回环地址,路由要求回环对端与 Host 校验并检查 Fetch-Metadata/Origin,HMAC 令牌 10 分钟内过期。
怎么安装与启用 dsh-ios?
安装 dsh-ios 前先确认环境是装有完整 Xcode 的 macOS,并至少安装了一个 iOS 模拟器运行时;然后把它装进 DSH 的 web profile,启动 DSH Web 界面即可在对话中调用 22 个工具。 命令与要求来自官方 README(来源):
1. 检查环境(推荐):dsh-ios 依赖 macOS 上的完整 Xcode(不只是命令行工具),可用 xcodebuild 与 simctl 验证:
xcodebuild -version
xcrun simctl list devices available
2. 从 npm 安装:在 DeepSeek Harness 项目根目录执行,装进 web profile 后启动 Web 界面:
dsh plugin --profile web add @zseven-w/dsh-ios@latest
dsh web
3. 确认启用:打开 DSH Web 界面,进入「设置 → 插件」确认 dsh-ios 已启用;侧边栏出现 iOS 模拟器面板入口即表示插件装载成功。
4. 准备可选依赖:AXe(辅助功能树工具)可用 Homebrew 安装,Vision OCR 会在首次使用时自动编译:
brew install cameroncooke/axe/axe
5. 更新插件:重跑安装命令即可解析 npm 上的新版本,宿主插件管理的 update 命令同样可用:
dsh plugin --profile web add @zseven-w/dsh-ios@latest
6. 卸载插件:在宿主插件管理中移除,或执行移除命令后重启:
dsh plugin remove @zseven-w/dsh-ios
dsh-ios 典型用法
dsh-ios 的典型流程是:发现设备 → 启动并打开面板 → 让 agent 驱动 UI 或构建运行你的项目 → 用预览热重载快速迭代 → 需要时接上真机。全程画面都在对话右侧实时可见。 步骤来自官方 README(来源):
1. 发现设备:让 agent 列出可用模拟器(也可以看到 USB 连接的 iPhone 与开发者模式状态),确定要用的设备 udid 或名称:
List the available simulators. → ios_sim_devices
2. 启动设备并打开面板:让 agent 启动模拟器,MJPEG 流随之开始,右侧「iOS 模拟器」面板出现实时画面;也可以直接点面板上的视频进行点击与拖拽,或用工具栏旋转、截图、按 Home。
3. 让 agent 驱动 UI:根据场景选择驱动方式——身份驱动用辅助功能树加按元素点击,文字驱动在树为空时用 OCR 查找再点击,列表类应用用行工具:
Open Settings, then tap General. → ios_sim_interact
4. 构建运行你的项目:把 Xcode 项目或 Swift 包路径交给 agent,由它编译、安装并启动应用;完整构建需要几分钟,落地后应用在面板里实时可见。
5. SwiftUI 预览热重载:让 agent 启动某个 Swift 包的预览,之后每次编辑源码,预览都会在约 2 到 5 秒内热替换到运行中的模拟器,无需重启。
6. 接入 USB 真机:用数据线连接并解锁 iPhone(开启开发者模式),让 agent 启动 WebDriverAgent;构建完成后面板自动切到真机画面,同一套工具用真机 udid 即可操作。
dsh-ios 常见问题与排错
常见问题集中在「工具报需要 Xcode」「AXe 或 OCR 依赖缺失」「真机调用失败」「画面自己停掉」四类,分别按环境、依赖、面板状态码与空闲策略定位。 依据来自官方 README(来源):
1. 工具调用报 iOS 模拟器需要 macOS 与 Xcode:症状是设备工具全部返回环境错误。原因:当前是 macOS 但只有命令行工具,或根本没装 Xcode。解决:安装完整 Xcode 与 iOS 模拟器运行时;非 macOS 主机上工具虽注册但无法执行。
2. UI 树工具提示缺少 AXe:症状是 ios_sim_ui_tree 与 ios_sim_tap_element 报依赖缺失。原因:AXe 未安装。解决:用 Homebrew 安装,或让插件在首次使用时下载固定版本(SHA-256 校验),也可用 DSH_IOS_AXE_BIN 指定路径。
3. 真机调用失败并带状态码:症状是面板状态显示 device-locked、cert-untrusted、profile-expired 或 tunnel-failed。原因:设备锁屏、证书未信任、免费签名过期或 USB 链路问题。解决:解锁设备、信任 WebDriverAgent 证书、重跑 ios_real_start_wda 重建签名、换数据线重连。
4. 画面自己停止:症状是面板流在无人使用时自动消失。原因:这是空闲策略而不是崩溃——零消费者约 5 分钟后自动停止。解决:下次调用工具或打开面板即自动重启;崩溃的流会在约 5 秒内于后台重启。
适用场景与注意
dsh-ios 适合在 DSH 里做 iOS 开发与验证的用户:想让 agent 构建并驱动 App、检查 UI 状态与日志、快速迭代 SwiftUI 界面,或直接在对话里操作真机。 适用性与限制来自官方 README(来源):
典型场景包括:对话内 UI 验证——让 agent 启动模拟器、操作界面并截图确认;Xcode 项目构建运行——把完整构建交给 agent,在面板里实时观察;SwiftUI 快速迭代——用预览热重载边改边看;真机联调——解锁 iPhone 后用同一套工具驱动真实设备;崩溃与泄漏排查——让 agent 读统一日志、抓回溯与泄漏摘要。需要注意的限制有:只支持装有完整 Xcode 的 macOS,且至少安装一个模拟器运行时;真机需数据线连接、解锁设备(建议关闭自动锁屏)并在手机上开启开发者模式;WebDriverAgent 需要本地有源码检出,由插件自行构建而非下载;AXe 与 Vision OCR 为可选依赖,分别服务身份点击与文字点击;回滚能力取决于 Developer Mode(lldb 附加),未开启时回溯工具自动降级为 Xcode 的 sample 引擎;免费签名每 7 天过期,需重跑真机启动工具重建。
项目链接
dsh-ios 是 zseven-w(ZSeven-W)维护的 MIT 开源项目,作为 DeepSeek Harness 的 iOS 模拟器与真机控制插件持续迭代。 想查看完整功能、截图与插件信息,欢迎访问本站的 dsh-ios 插件详情页:dsh-ios。
本页是基于该插件官方 README 独立重写的导读——权威文档和最新变更请以源头为准:ZSeven-W/dsh-ios。插件是安装时就在你机器上运行的第三方代码;收录不代表背书——安装前请自行审阅源码。
常见问题
dsh-ios 启用后直接让 agent 调用工具即可:agent 会先列出可用设备并启动模拟器,再构建运行你的 Xcode 项目,随后侧边栏面板实时显示设备画面,你就能在对话里看到并操作模拟器。
dsh-ios 真机模式要求 iPhone 已解锁:插件会在手机上构建并启动 WebDriverAgent,再经回环隧道转发控制与画面端口。设备锁屏时 WebDriverAgent 无法启动,工具调用失败,侧边栏也看不到画面。
当辅助功能树为空或退化时,dsh-ios 的查找文本工具会自动改用 Vision OCR 识别屏幕文字,再点击匹配到的文本。这样即使界面没暴露辅助功能信息,agent 依然能靠视觉驱动 UI。
dsh-ios 的行工具会把深层辅助功能快照转成带索引的行并解析行内计数器,点击相对坐标后检查计数器是否按预期 ±1 变化来确认生效。若行内没有该计数器,点击会在发生前被拒绝,真机点击从不被当作试探。
dsh-ios 的预览热重载会生成临时宿主应用,把 SwiftUI 预览编译成动态库后在运行中的模拟器内热替换,因此无需重启。整个过程约 2 到 5 秒,让你快速迭代 SwiftUI 界面。
dsh-ios 的所有流量只绑定回环地址,要求回环对端与 Host 校验并检查 Fetch-Metadata/Origin,签名令牌 10 分钟过期。真机 WebDriverAgent 隧道同样是回环 usbmux 转发,处在同一套保护之下。
相关术语
- dsh-ios
- dsh-ios 是 zseven-w(ZSeven-W)维护的 MIT 开源 DSH 插件,把 iOS 模拟器与 USB 真机带进 DeepSeek Harness 对话,提供 22 个 agent 工具与实时面板。— dsh-ios README
- ios_sim_* 工具集
- ios_sim_* 工具集是 dsh-ios 暴露给 agent 的 22 个工具的统称,涵盖设备启动、构建运行、UI 树、行操作、OCR、日志、进程与泄漏检查等。— dsh-ios README
- WebDriverAgent
- WebDriverAgent 是 dsh-ios 在 USB 真机上构建并启动的 WebDriver 服务,负责把真机控制与画面经回环 usbmux 隧道转发给同一套工具与面板。— dsh-ios README
- AXe 辅助功能树
- AXe 辅助功能树是 dsh-ios 语义化 UI 自动化的数据源,把界面导出为带标签与标识符的层级,支持按身份点击而非猜测坐标。— dsh-ios README
- SwiftUI 预览热重载
- SwiftUI 预览热重载是 dsh-ios 的 ios_sim_preview 能力,用临时宿主应用把预览编译为动态库并在运行中模拟器内热替换。— dsh-ios README