Devin 文档「macOS support」写明:云端会话现在可以跑在 macOS 虚拟机上,用来构建和测试 iOS、macOS 应用。启动方式有三种:blueprint 写 runs-on: macos、Slack 用 !mac、API 把 platform 设为 "macos"。镜像预装 Xcode 26(默认)和 Xcode 27 预发布,以及对应的 iOS Simulator 运行时。Dedicated SaaS 要找客户团队开通,不是默认全开。

iOS 团队以前把 Devin 停在“能读 Swift、不能真的打开模拟器”。Linux 会话可以改代码、跑单元测试,却过不了 Xcode 和 Simulator 这一关。文档把工作流改到验收:Devin 能 xcrun simctl boot/install/launch,工作区有 iOS Simulator 标签页直播画面,Computer Use 在 macOS 上用 ⌘ 而不是 Control。
AI Coding 交流群
如果你也在用 AI 写代码,或者正在研究 Cursor、Claude Code 这些工具,欢迎加入以下交流群。群里平时会聊一些 AI 编程的实际用法、开发工作流,还有各种新工具和新玩法。
发生了什么
macOS 支持复用和 Linux 同一套声明式配置,差别主要在 shell、文件系统和包管理。家目录是 /Users/devin,仓库在 /Users/devin/repos/<repo-name>,默认 shell 是 zsh,Homebrew 在 /opt/homebrew。每个平台各自一份 snapshot:同一仓库要同时服务 Linux 和 iOS,必须用 --- 分成两份 YAML 文档,各写自己的 runs-on;写成一个列表、里面却混着 apt-get 和 brew,会在错误的系统上跑错命令。
预装清单是文档里可逐项核对的事实,不需要 blueprint 再下一遍 Xcode:默认 /Applications/Xcode.app 指向最新 Xcode 26,旁边可有 /Applications/Xcode-27.0-RC.app 这类预发布;每个 Xcode 带一套模拟器运行时(文档举例 iOS 26 与 iOS 27)和预配置的 iPhone 设备;另有 xcodebuild、xcrun、simctl、Swift、Metal、Chrome,以及 Node、Python、Java、Rust。版本会随镜像刷新变化,文档建议开会话后跑 sw_vers、xcodebuild -version 和 xcrun simctl list runtimes。
用量方面,文档写 macOS 会话目前按同等 Linux 用量计、没有 macOS 加价,并标明这是促销价,以后可能改。这是产品方计费说明,不是长期合同条款。
一条可以真用的工作场景
输入是一份只服务 Apple 平台的仓库 blueprint。顶层写 runs-on: macos。initialize 用 brew 装 xcodegen、swiftlint;maintenance 里 xcodebuild -resolvePackageDependencies,再对 platform=iOS Simulator,name=iPhone 17 做 build-for-testing,并用 xcrun simctl boot "iPhone 17" || true 预启动模拟器。Resolved Swift packages、CocoaPods 和 DerivedData 会进 snapshot,新会话从增量构建开始。
操作发生在会话里。Devin 在 zsh 下跑 xcodebuild,用 DEVELOPER_DIR=/Applications/Xcode-27.0-RC.app/Contents/Developer /usr/bin/xcodebuild 切换预发布工具链——文档强调要用 /usr/bin/xcodebuild 这个尊重 DEVELOPER_DIR 的 shim,而不是 PATH 里某个 Xcode 自带的二进制。然后 simctl install booted、simctl launch。Computer Use 打开完整 macOS 桌面,快捷键是 ⌘C / ⌘V / ⌘Tab。你可以在 iOS Simulator 标签页里看它点界面。
交付物应是“模拟器里跑起来的构建 + 会话里能回放的操作”,而不只是绿了的 xcodebuild。Secrets 仍是环境变量,用来放 App Store Connect 密钥或私有 Swift registry token。会话睡眠时磁盘快照会留下安装的工具、仓库和 DerivedData;跑着的模拟器、dev server 和 watcher 不会在唤醒后自动起来,要重启。
反馈回路有两处人必须看。构建第一次在 snapshot 重建后会明显变慢,因为 DerivedData 是冷的——这是文档写明的排障项,不是模型变笨。依赖解析若 TLS 失败,优先查组织给 macOS 配的网络 allowlist:它和 Linux 是分开的,漏掉 CocoaPods、SPM 或 Firebase 主机会在构建中途挂掉。

为什么这会改工作流
以前 Devin 对 iOS 的价值停在读代码和开 PR,UI 验收还得回到本机 Xcode。macOS VM 把“编译 → 安装到模拟器 → 点一遍主路径”收进同一条云端会话。人要从看 diff 改成看 Simulator 标签页:按钮在不在、权限弹窗会不会卡死自动化。
它没有把本机 Mac 或 CI 里的真机农场替换掉。文档把物理设备、USB 直通、VM 内 Instruments 性能数据都标成不成立。工作流变化是云端可以先做模拟器回归;签名、TestFlight、真机帧率和耗电,仍在会话之外。
多平台仓库不要图省事把 runs-on 写成列表就完事。文档允许 runs-on: [default, macos],但那表示同一组命令在每个平台各跑一遍,只适合 npm install 这种真跨平台步骤。iOS 的 pod install、Linux 的 apt-get 必须拆成多文档 YAML:每份文档自己的 snapshot、自己的 initialize。顶层必须是 mapping;写成 - runs-on: macos 这种 sequence,后端会拒。
Computer Use 在 macOS 会话里拿到的是完整桌面:Chrome、鼠标、键盘,可以测原生 App 也可以测 Web,并能录下操作。它不是模拟器标签页的替代品。标签页只流式传输已 boot 的 Simulator;桌面侧才能点 Xcode、系统设置或原生菜单。两者都依赖会话机器在线。机器失败卡片现在提供“在新会话继续”,但文档在其它发布说明里写过:机器本地文件和正在跑的进程不会带走。iOS 场景里这意味着模拟器状态、未写进 snapshot 的 DerivedData 增量都可能丢,人要按 blueprint 的 maintenance 重新预热,而不是以为“Continue”等于同一台 Mac 接着点。
目的地找不到时,先跑 xcrun simctl list devices available,把 -destination 的机型名和 OS 对上镜像实际提供的设备。文档举例用 iPhone 17,那是当前镜像的预配置名字,不是保证永远叫这个。Xcode 选错时检查 xcode-select -p,并在步骤里显式写 DEVELOPER_DIR。这些是环境问题,不是“Devin 不会写 Swift”。
限制与人接管点
没有嵌套硬件虚拟化。容器要走 QEMU 软件模拟,文档写 Colima 会自己切到 --vm-type qemu,虚拟机要两到四分钟才能用,CPU 大约慢 15 到 25 倍,每次启动还有数秒开销。拉镜像走宿主机网络速度。这只适合 lint 或打包容器;编译型负载应换 Linux 会话,或让 macOS 会话指向远端 Docker daemon。
不要在 blueprint 里下载 Xcode,除非镜像里的版本确实不够。那是数 GB 下载,而且 Apple 要 Apple ID。把账号存进 Secrets 再下 beta,会把 snapshot 构建拖成不可用。优先 xcode-select 或 DEVELOPER_DIR。
人接管点还包括 BSD userland:sed -i 必须带备份后缀参数;GNU 工具要 brew 的 coreutils。路径不要从 Linux blueprint 原样粘贴 /home/ubuntu。Dedicated SaaS 若还没开通,命令级报错应先找客户团队,而不是反复改 runs-on。
Windows 和 Android 模拟器是相邻能力,不是这次 macOS VM 的一部分。需要真机或 USB 外设的验收,仍然要回到你们自己的设备农场。把 macOS 会话当成“云上的一台已经装好 Xcode 的 Mac mini”来用:适合编译、模拟器回归和界面走查;不适合替代签名服务器,也不适合拿 VM 里的 Instruments 数字对产品性能做结论。
如何试用
先读 macOS support,按「Build an iOS app with Devin」走一遍。在非生产仓库加 runs-on: macos 和一段 maintenance 预热,用 Slack !mac 或 API platform: "macos" 开会话。进去先跑文档里的版本命令,确认 Xcode 和模拟器运行时,再让 Devin 构建并打开 Simulator 标签页。若依赖阶段 TLS 失败,去对 macOS 网络策略,而不是给 Linux allowlist 加域名。
信息来源
- Devin Docs:macOS support
- Devin Docs:Computer Use
- Devin 博客:Devin gets a Mac(页面有访问防护,正文事实以文档为准)
开发必备:API 全流程管理神器 Apifox
介绍完上文的内容,我想额外介绍一个对开发者同样重要的效率工具 —— Apifox。作为一个集 API 文档、调试、设计、测试、Mock、自动化测试于一体的工具,Apifox 是目前提升研发效率的首选。
如果你正在开发项目,不妨试试其极其友好的界面设计,它完全兼容 Postman 和 Swagger 数据格式,导入数据非常方便,,即使是新手也能很快上手,点击这里即可注册使用。

值得一提的是,除了个人和常规团队使用,针对有高安全合规要求、或需要在内网环境协作的企业,Apifox 还提供了深度定制的私有化部署方案。
获取专属报价与部署方案
详细的私有化部署系统架构与安全白皮书
针对您公司规模的专属报价单
免费的 1v1 专属产品演示 (Demo) 机会