>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 安全
Python

如何教 Claude Code 控制 iOS 模拟器

1,130 星标

想象一下:你坐在终端前,与 Claude Code 聊天,无需手动打开 Xcode、在模拟器中寻找正确的按钮,或从控制台复制日志,你只需输入:"检查登录界面在 iPhone 15 上的显示效果,然后点击登录按钮。"AI 就会完成这一切。听起来像魔法,但实际上这是 ios-simulator- skill 脚本集合的功劳。

我在寻找将 AI 代理与移动开发集成的方法时偶然发现了这个仓库。项目作者 Conor Ladhy 编写了 22 个 Python 和 Bash 脚本,将 Claude 打造成一个成熟的 QA 工程师或开发助手,能够"看到"应用的界面并与之交互。

有了 Xcode 还需要这个吗

通常情况下,AI 代理与 iOS 项目的交互会因为大量的构建日志和沉重的截图而变成噩梦。如果你向 Claude 输入标准输出 xcodebuild,上下文窗口在几秒钟内就会被垃圾信息淹没。

这个项目优雅地解决了这个问题。脚本充当过滤器:只向神经网络提供必要的信息。Claude 收到的不是 400 行认证日志,而是 15 行干净的文本。这节省了 token,更重要的是,防止了模型因信息过载而"产生幻觉"。

这个工具集能做什么

该项目解决了两个主要任务:构建应用和操作模拟器。

智能构建,过滤噪音

build_and_test.py 脚本封装了标准的 Apple 工具。当你运行构建时,Claude 只看到一条简短的状态行和一个结果 ID。如果出现问题,模型可以专门请求该 ID 的错误或警告。这被称为渐进式数据披露——我们不会一次性倾倒所有内容,而是按需提供详细信息。

这可能是最酷的功能。脚本使用 iOS Accessibility API,而不是试图猜测截图上的按钮坐标(这通常会导致点击失败)。Claude 通过语义含义搜索元素。例如,找到"登录"文本并点击它的命令比点击坐标 x: 320, y: 400 更可靠。此外,元素树的文本描述比图像少几百倍的 token。

截图优化

如果你无法避免视觉验证(例如,你需要比较设计或查找布局错误),脚本会自动压缩和调整截图大小。这可以将上下文负载减少 90-95%。

底层工作原理

仓库包含大量调用 xcrun simctlidb(Facebook 的 iOS 自动化工具)的 Python 脚本。

以下是列表中一些有趣的工具:

  • screen_mapper.py — 分析屏幕并编译所有交互元素的列表。
  • gesture.py — 可以执行滑动、捏合,甚至下拉刷新。
  • privacy_manager.py — 让你只需一条命令即可授予应用照片、联系人或位置的权限。这对于自动化测试非常方便,之前你必须手动点击系统弹窗。

有趣的是,作者甚至添加了 accessibility_audit.py 来检查应用对 WCAG 标准的合规性。Claude 可以遍历屏幕,告诉你哪里忘记了为 VoiceOver 添加标签。

如何自行运行

该项目被定位为 Claude Code 的"技能",但实际上它是一组独立的脚本,也可以单独使用。

如果你使用 Claude Code,安装方式如下:

你需要的依赖包括 Xcode Command Line Tools、Python 3,以及最好安装 idb(通过 brew 安装)。如果你计划比较截图,还需要通过 pip 安装 Pillow 库。

实际效益

这对谁有用?首先是那些想要自动化日常任务的人。例如,你可以让 Claude:

  1. "构建项目,在 iPhone 14 Pro 上启动,并为文档截取所有屏幕的截图。"
  2. "找出测试在授权阶段崩溃的原因,只显示最近 2 分钟的日志。"
  3. "检查应用在网络缓慢和禁用地理位置时的行为。"

在作者自己的测试中,Claude + ios-simulator- skill 组合实现了 100% 的场景完成率,而没有这些工具的"裸"Claude 成功次数不到一半。

值得一试吗

如果你是一名 iOS 开发者,并且已经开始将 AI 代理集成到你的工作流程中,那么这个项目是必备的。它消除了主要痛点:冗长的 Apple 工具与语言模型所需的简洁性之间的不兼容。

当然,这个项目需要环境设置,而且 idb 在新版本的 macOS 上有时可能比较挑剔,但通过语义元素树控制模拟器的想法正是现代自动化应该有的样子。脚本编写得很简单,很容易根据你的需求进行调整,或者你可以提取你需要的内容用于 CI/CD 流水线。

相关项目