dsh-ios
ZSeven-W/dsh-ios
在对话里直接操作 iOS 模拟器或 USB 连接的 iPhone:22 个 Agent 工具用于启动、构建、按无障碍标识或 OCR 文本驱动 UI、列表行操作与 SwiftUI 预览热重载,并附带可点击拖拽的流式侧边栏面板。
安装
把 dsh-ios 装进 DeepSeek Harness
npm 方式
直接拉已发布的 tarball,不用克隆整个仓库,也不需要额外配置。如果你用的是别的 profile,把 `web` 换成对应的名字。
GitHub 方式 · npm 包
从 GitHub 装会执行项目自己的构建脚本,而 pnpm 默认拦着不让跑——先跑一次这条命令,pnpm 会打印出要加到 ~/.dsh/profiles/web/pnpm-workspace.yaml 里 `allowBuilds` 下面的那个 key。
桌面版有自己的 profile,叫 desktop,只认它自带的 dsh 命令——npm 装的 dsh 会直接拒掉这个 profile。先在应用菜单里点 Manage dsh Command… 装上这个命令,打开一次桌面版再彻底退出,跑下面这条,然后重新打开桌面版。
npm 方式
直接拉已发布的 tarball,不用克隆整个仓库。
GitHub 方式 · npm 包
从 GitHub 装会执行项目自己的构建脚本,而 pnpm 默认拦着不让跑——先跑一次这条命令,pnpm 会打印出要加到 ~/.dsh/profiles/desktop/pnpm-workspace.yaml 里 `allowBuilds` 下面的那个 key。
我们的实装是在 npm 版 dsh 的 web profile 里跑的,没在桌面版上跑过。
我们跑过之后
我们跑过,装得上
这里每条命令都在一次性容器里、对着干净 profile 真跑过,结果取自 harness 自己的记录,不是读源码猜的。 最近一次 8 天前,DeepSeek Harness 0.2.2-rc.1.
挂进你的 README
给维护者的:badge 取这条 listing 最近一次 sandbox 实测的结果,重跑之后它自己会变,读者点开就是这页的完整记录。
安装前须知
装 dsh-ios 之前,先看这几条
- 源码在这里: ZSeven-W/dsh-ios——已进入社区精选库,DSH 自带的插件市场就是从这儿装的。
- 开源协议:MIT。
安全
装 dsh-ios 会执行什么
- 构建脚本
我们这次实装里没有构建脚本被拦。
来源:我们在沙箱里的实装,DeepSeek Harness 0.2.2-rc.1,8 天前。
- 安装钩子
package.json 里没有 preinstall / install / postinstall 脚本。
来源:最近一次同步时读到的 GitHub 上的 package.json。prepare 没有记录——它只在从 GitHub 装时执行,被 pnpm 拦下时会出现在「构建脚本」那一行。
- README 里提到
shell 命令(bash、exec、spawn 之类)
来源:对 README 做的关键词匹配,只提示它可能碰到什么,不是代码分析。
这不是安全审计。上面是一次实装记录加两次文本扫描,没有人替你读过这个插件的代码。插件带着你 agent 的权限在跑。
AI 锐评
是什么 — 在 DeepSeek Harness 会话中集成实时 iOS 模拟器与 USB iPhone 交互支持。
谁该装 — 当你使用 DeepSeek Harness 开发和测试 iOS 应用,需要实时 UI 驱动和 SwiftUI 热重载时,此插件能提供对应能力。 如果你不涉及 iOS 模拟器或 SwiftUI 预览,则此插件的工具集不会被使用。
注意 — 沙箱实测通过:在全新 profile 安装并注册成功。未发现安全或性能问题。
锐评 — 我会安装它,因为它提供直接交互 iOS 设备的缺失能力,但前提是 macOS 主机才能完整使用所有工具。
grok-4.6 写的,只当参考,不当结论。里面说装得上或装不上,是在干净 profile 里真跑过的;其余都是读仓库读出来的。以实际运行为准。
dsh-ios 是做什么的

dsh-ios 是一个 DeepSeek Harness 插件,把 iOS Simulator 或通过 USB 连接的 iPhone 放进 agent 会话中操作。它提供 22 个工具,覆盖设备发现、启动与关闭、截图、构建和运行 Xcode 项目或 Swift package、UI 操作、日志读取,以及进程、backtrace 和内存泄漏检查。
DeepSeek Harness 插件通过 simctl 和 serve-sim 处理模拟器;连接真实 iPhone 时,会构建并启动 WebDriverAgent,再通过 loopback 转发控制和 MJPEG 画面。UI 操作优先使用 accessibility tree,按 label 或 identifier 定位;当无障碍树不可用时,可用 OCR 查找并点击屏幕文字。列表工具会从 accessibility snapshot 解析行,并通过计数器变化确认点击结果。SwiftUI preview 还能在运行中的模拟器内热重载。
它适合需要观察真实画面、验证 iOS UI 或调试应用的 agent。插件会接触 macOS 上的构建、模拟器、日志和 USB 设备工具,因此安装后应按实际需要授予权限。非 macOS 主机上的工具只会返回错误;真实 iPhone 必须解锁。若环境没有可用的 iOS Simulator、Xcode 项目、Swift package 或设备,dsh-ios 就不合适。
dsh-ios 的文档
dsh-ios 的配置
DeepSeek Harness 从 @zseven-w/dsh-ios 加载插件。README 没有列出配置文件或用户可设置的配置 key。工具通常通过 udid 选择设备;它可以是模拟器 UDID、设备名称或真实设备 UDID。
dsh-ios 的命令
工具返回普通 JSON。ios_sim_devices 列出可用模拟器和 USB 连接的 iPhone。ios_sim_boot 启动设备及 serve-sim 流,ios_sim_shutdown 关闭设备。ios_sim_screenshot 获取 PNG 摘要,ios_sim_interact 支持点击、输入、硬件按键、滚动和手势。
ios_sim_ui_tree 与 ios_sim_tap_element 使用 accessibility identity;ios_sim_find_text 与 ios_sim_tap_text 使用 OCR。ios_sim_ui_rows 解析列表行,ios_sim_tap_row 点击行内位置并检查计数器变化。其他工具覆盖构建运行、unified logs、SwiftUI preview 热重载、进程、backtrace、leaks 和 app info。ios_real_start_wda 为 USB iPhone 启动 WebDriverAgent。
dsh-ios 的环境要求
模拟器工具需要 macOS、simctl 和 serve-sim。非 macOS 主机仍会注册工具,但调用时返回说明性错误;ios_sim_preview 的 status 会返回 { running: false }。真实 iPhone 通过 USB 连接,必须解锁,并使用 WebDriverAgent 和 loopback 隧道。
dsh-ios 的行为说明
流通过 /_dsh/dsh-ios/* 路由提供,检查 loopback peer、loopback Host 以及 Fetch-Metadata 或 Origin;HMAC capability 在 10 分钟内过期。画面通过签名 URL 和 presentationMeta 到达 UI,不以 image block 返回。ios_sim_preview 会在 package 外生成临时 host app,将 preview 构建为 dylib,再热替换到运行中的模拟器。
根据项目自己的文档整理,会跟着上游更新。两边对不上时以源码仓库为准—— 去 GitHub 看原始 README
同一分类
dsh-ios 的同类插件
dsh-remote-web-ui
zhu1090093659
手机/PC 远程操控 dsh web 工作区:扫码配对、令牌门控通道、SSE 实时同步,提供移动端与完整桌面 GUI 两种远程形态。
我们跑过,装得上
ds-harness-remote
liguobao
通过端到端加密通道远程访问 DeepSeek Harness 及兼容的编码工作区,支持自适应 Relay/WebRTC 传输、设备授权、工作区文件、只读预览、终端和可选的 Codex Remote。
我们跑过,装得上
deepseek-harness-remote
liguobao
DeepSeek Harness 多端远程访问:从手机、平板、浏览器或另一台电脑继续进行中的会话,端到端加密通道(Noise IK + 自适应 Relay/WebRTC 传输),设备授权管理;远程端仅开放 ApiProxy 能力,支持 dsh-file-viewer 只读文件预览,不提供 Shell、远程桌面或写入权限。
我们跑过,装得上
dsh-mobile
saya-ch
通过 Android App 或手机浏览器访问 DeepSeek Harness,支持安全局域网连接、远程访问、持久设备配对和可自定义移动界面。
我们跑过,装得上