乐于分享
好东西不私藏

把 iOS 模拟器变成 AI 可操作窗口:serve-sim 值得关注

把 iOS 模拟器变成 AI 可操作窗口:serve-sim 值得关注

如果你让 AI 帮你写过 iOS 应用,大概见过这种“最后一公里”的尴尬:

代码能生成,项目能编译,但应用是否真的跑对了,仍要开发者切回 Mac,在 Simulator 里点开页面、输入内容、检查效果,再把截图和反馈交回给 AI。

GitHub 上的 serve-sim 想解决的,正是这段断裂的流程。

它不是一个新的模拟器,而是给已经启动的 Apple Simulator 加上一层 Web 服务:把画面以低延迟视频流送到浏览器,同时通过 WebSocket 接收点击、滑动、键盘输入等操作。开发者、远程协作者,甚至 AI Agent,都能在浏览器里看到并操控 iOS 模拟器。

一句话理解:

Apple Simulator -> serve-sim -> 浏览器 / AI Agent

它把什么能力搬到了 Web 上?

运行 serve-sim 后,浏览器会出现一个 React 预览页:中间是模拟器实时画面,旁边提供常用控制入口。项目通过 xcrun simctl io ... screenshot --type=jpeg 持续抓取画面,再以 MJPEG 的形式输出。README 给出的目标是每秒约 60 帧,这使它更接近“远程操作窗口”,而不只是隔几秒刷新的截图页。

更关键的是控制反向通道。浏览器中的鼠标、触摸和键盘事件,会经 WebSocket 转换为模拟器可理解的输入。它还覆盖了常见调试动作,例如设备旋转、Home、锁屏、截屏,以及把一张图片注入到模拟器的摄像头环境。

对做相机、扫码、相册选择等功能的团队来说,最后一项尤其有用:测试素材可以从浏览器直接送进 Simulator,不必每次都手工拖文件或重新配置场景。

AI Coding 终于能“看见”结果

今天的编码 Agent 已经很会改代码,但它通常缺少验证界面结果的可靠视角。编译成功不代表交互正确:按钮可能被遮挡,弹窗可能没有触发,列表也可能出现布局错位。

serve-sim 的价值,在于把原本锁在 Mac GUI 里的状态,转成机器可访问的网页界面。Agent 可以通过浏览器查看当前画面、执行点击和输入、观察下一步变化,再根据结果继续修复。这让“写代码 -> 跑模拟器 -> 验证 UI”的闭环更容易自动化。

这并不意味着 AI 可以替代所有真机测试。性能、推送、蓝牙、系统权限和真实摄像头表现仍需要设备验证。但在日常 UI 回归、表单流、导航流程和视觉检查上,它提供了一个非常实际的中间层。

适合哪些场景?

第一类是远程开发。Mac 在办公室或云端,开发者在另一台设备上,也能通过浏览器查看测试进度。

第二类是 AI 辅助开发。把页面状态交给 Agent,能减少“请你再截图看看”的人工往返。

第三类是团队演示与协作。产品、测试和开发可以围绕同一个运行中的模拟器沟通,而不是反复传录屏。

使用时别忽略边界

这类工具的本质是把本机 Simulator 控制权暴露为网络服务,因此安全配置不能省。README 提供了 --host--port 和可选的 Owner password;只在本机使用时应保持默认监听范围。需要远程访问时,优先走可信 VPN 或受控隧道,并设置密码,使用结束后立即关闭服务。

serve-sim 目前仍是轻量开源项目,但它代表了一个值得注意的方向:开发工具不再只给人类看,也在逐步成为 AI Agent 的“感官和手脚”。

当模拟器可以被浏览、被操作、被自动验证,iOS 开发的反馈链路就有机会从“人盯着界面”升级为“人和 Agent 一起迭代界面”。

项目地址:

https://github.com/EvanBacon/serve-sim