Руководство

Зачем агенту для 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. Закрепите её в файле инструкций. А на машине с несколькими версиями попросите агента проверять её перед сборкой.

Похожие руководства