Зачем агенту для iOS настоящий Mac
Агент может писать на Swift где угодно. Но собрать, запустить и увидеть приложение для iOS он может только на Mac. Именно поэтому в работе над iOS нужен Mac. По той же причине агент с Mac становится намного полезнее. Он может проверять свою работу. На этой странице перечислено, что есть только в macOS. А затем описан цикл, который мы настраиваем для агентов на своих машинах.
Что бывает только в macOS
- Сборка приложения. xcodebuild и Xcode есть только в macOS. Linux-машина может компилировать пакеты Swift и серверный Swift. Приложение для iOS она собрать не может.
- Запуск. Симулятор iOS входит в Xcode. Нет симулятора, значит нет способа запустить приложение, которое агент только что изменил.
- Просмотр. По скриншоту запущенного приложения агент узнаёт, что вёрстка сломалась. Для этого нужен симулятор.
- UI-тесты. XCUITest управляет приложением на симуляторе или устройстве. Только macOS.
- Подпись и загрузка. Подпись кода, профили provisioning и загрузка в App Store Connect идут через инструменты Apple в macOS.
Поэтому агент на Linux может править ваши файлы Swift и гадать. Агент на Mac может править, собирать, запускать, смотреть и исправлять. Полезен второй.
Цикл по шагам
Настройте это один раз и запишите команды в файл инструкций агента. Тогда он будет использовать их без напоминаний. Сначала найдите симулятор и загрузите его.
xcrun simctl list devices available xcrun simctl boot "iPhone 16"
Соберите под этот симулятор. Подставьте свою схему.
xcodebuild -scheme MyApp \ -destination 'platform=iOS Simulator,name=iPhone 16' \ -derivedDataPath build \ build
Установите и запустите сборку.
xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/MyApp.app xcrun simctl launch booted com.example.MyApp
Сделайте скриншот, который агент сможет прочитать.
xcrun simctl io booted screenshot /tmp/screen.png
Claude Code и Codex оба умеют открывать файлы изображений. Попросите агента делать скриншот после каждого изменения интерфейса и описывать, что он видит, прежде чем считать задачу выполненной. Одна эта инструкция ловит большинство ошибок вёрстки.
Тесты запускаются так же
xcodebuild -scheme MyApp \ -destination 'platform=iOS Simulator,name=iPhone 16' \ -derivedDataPath build \ test
Путь к derived data важен. Если он внутри папки проекта, вторая сборка будет инкрементальной и займёт секунды вместо минут. Агент, который ждёт по четыре минуты на каждую сборку, делает вчетверо меньше работы.
Запишите цикл в файл инструкций
Оба агента читают файл с инструкциями проекта в корне репозитория. Claude Code читает CLAUDE.md, а Codex читает AGENTS.md. Запишите цикл туда, чтобы каждая сессия начиналась с него.
## Building and checking this app - Build: xcodebuild -scheme MyApp -destination 'platform=iOS Simulator,name=iPhone 16' -derivedDataPath build build - Run: xcrun simctl install booted build/Build/Products/Debug-iphonesimulator/MyApp.app && xcrun simctl launch booted com.example.MyApp - Look: xcrun simctl io booted screenshot /tmp/screen.png, then open the image - After any UI change, build, run, and look before saying it is done. - Tests: same xcodebuild command with test instead of build.
На чём спотыкаются агенты
- Не выбран Xcode. После установки нового Xcode укажите на него через xcode-select. Иначе xcodebuild будет использовать старый.
- Симулятор не загружен. Команда запуска падает с невнятной ошибкой. Сначала загрузите симулятор и не выключайте его.
- Не установлена среда выполнения. В свежем Xcode нет среды выполнения iOS, пока вы её не скачаете. Это несколько гигабайт, и скачать их нужно до того, как агент начнёт работу.
- Нет сессии входа. Симулятор это приложение с графическим интерфейсом. На машине без монитора, где никто не вошёл в систему, он не запустится. У пользователя агента должна быть активная сессия рабочего стола. Поэтому на Mac без присмотра так важен автоматический вход.
Что мы настраиваем за вас
На нашем Mac для агентов Xcode установлен, а среда выполнения iOS уже скачана. У пользователя агента есть постоянная сессия рабочего стола. Claude Code и Codex ждут, когда вы войдёте. Добавьте описанный выше цикл в файл инструкций, и агент сможет собирать и видеть ваше приложение с первой задачи. В руководстве о возможностях описано, что ещё работает на машине, а что нет.
Частые вопросы
Может ли Claude Code собрать приложение для iOS на Linux?
+
Нет. На Linux он может править файлы Swift и компилировать пакеты Swift, которые не зависят от фреймворков Apple. Для сборки приложения iOS нужен Xcode, а он работает только на macOS.
Нужен ли агенту настоящий iPhone?
+
Для большей части работы нет. Симулятор покрывает сборку, запуск, скриншоты и UI-тесты. Устройство нужно для камеры, push-уведомлений и проверки производительности на реальном железе.
Может ли агент делать скриншоты симулятора?
+
Да, командой simctl screenshot. Нужно, чтобы симулятор был загружен, а у пользователя агента была сессия рабочего стола. Потом агент может открыть изображение и прочитать его.
Какую версию Xcode будет использовать агент?
+
Ту, на которую указывает xcode-select. Закрепите её в файле инструкций. А на машине с несколькими версиями попросите агента проверять её перед сборкой.