iOSAutomator 是一款基于 iOS MCP 的自动化流程编排工具,由原生 App 和独立守护进程组成。你可以在 App 中组合启动应用、查找屏幕、点击、滚动、输入和验证等功能块,让手机在接口返回有效内容时执行指定流程。
项目起源于一个具体需求:把礼卡易上的 Codex 重置公告发送到微信群。随着这些操作被拆成可配置的功能块,同一套工具也能用来将接口内容存入备忘录,或填写到指定页面。
App 与守护进程独立运行。iOSAutomator 本身不向 UIKit、SpringBoard 或目标 App 注入代码,不安装 Hook,也不替换它们的方法。 设备操作由连接的 iOS MCP 服务提供。
| 功能 | 说明 |
|---|---|
| 可视化编排 | 添加、编辑、删除功能块,拖动调整顺序,组合等待和嵌套循环。 |
| 多流程管理 | 创建和管理多个流程,单选其中一个用于自动执行。 |
| 屏幕交互 | 查找文字、滚动寻找目标、点击、长按,并验证屏幕上的结果。 |
| 应用选择 | 从 MCP 应用列表选择目标,支持搜索及用户应用、系统应用筛选。 |
| 截图选点 | 在图片上标记坐标,按所选 1×、2×、3× 倍率换算为屏幕点坐标。 |
| 接口模板 | 保留完整 JSON,通过 {{data.title}}、{{data[0].title}} 等路径引用数据。 |
| MCP 工具分类 | 从 MCP tools/list 动态加载工具,分类展示并生成参数表单。 |
| 测试与分享 | 单独测试流程、查看执行结果,导入或导出流程 JSON。 |
| 后台轮询 | 关闭编辑 App 后继续运行,通过系统唤醒计划支持锁屏轮询。 |
| 中英文界面 | 中文系统显示中文,英文及其他语言系统显示英文。 |
flowchart LR
Editor["iOSAutomator App<br/>流程编辑与配置"] --> Daemon["守护进程<br/>定时拉取 · 队列 · 执行状态"]
API["JSON 接口"] --> Daemon
Daemon --> MCP["iOS MCP"]
MCP --> Target["目标 App"]
首次安装默认关闭自动轮询;完成配置并开启后,默认每 60 秒检查一次接口。HTTP 请求与界面操作分队列处理,长流程不会阻塞接口轮询;界面流程依次执行,避免同时操作屏幕。
自动执行使用当前单选流程。每个任务保留启动时的流程快照,后续修改对新任务生效。“启用自动轮询”开关立即保存:关闭后停止新的轮询和自动任务,已经开始的任务完成本次。
轮询开启时,守护进程重启或重新开启开关会继续处理已保存的未完成任务和队列,无需等待接口再次返回新内容。空响应不创建新任务;已经归档的失败任务不会自动重跑。
- 已越狱且越狱环境处于启用状态的 iPhone 或 iPad。
- 已安装并运行 iOS MCP,可从其 Releases 页面下载对应越狱环境的安装包;本项目 Deb 包声明依赖
com.witchan.ios-mcp。 - 设备能够访问配置的 JSON 接口和 MCP 地址。
- 从源码构建需要 macOS、Xcode 及命令行工具、配置好 iOS SDK 的 Theos,以及 Python 3。
如果 MCP 运行在同一台设备,地址可填 http://127.0.0.1:8090/mcp;连接其他设备时,填写其可访问的 MCP 地址。设备设置了锁屏密码时,界面自动化仍需要正常解锁。
在仓库根目录执行,将 THEOS 指向自己的 Theos 安装目录;未设置时使用 $HOME/theos:
export THEOS=/path/to/theos
# 按设备的越狱环境选择一种构建方式。
./build.sh roothide
# ./build.sh rootless
# ./build.sh rootful| 越狱环境 | 最低构建目标 | 输出安装包 |
|---|---|---|
| RootHide | iOS 15.0 | packages/com.witchan.codex-notesd_0.0.1_iphoneos-arm64e.deb |
| Rootless | iOS 15.0 | packages/com.witchan.codex-notesd_0.0.1_iphoneos-arm64.deb |
| Rootful | iOS 13.0 | packages/com.witchan.codex-notesd_0.0.1_iphoneos-arm.deb |
本项目采用 MIT License。

