Я перепробовал всё. Cursor, Claude Code, GitHub Copilot, локальные модели — каждый обещал рай. Но реальность оказалась проще: стопка токенов, лимиты запросов и AI, который не понимает архитектуру моего проекта. Через три месяца экспериментов я сложил пазл. Вот что реально работает для iOS-разработки на M3 Pro в 2026.
Спойлер: серебряной пули нет. Но есть схема, где каждый инструмент делает своё дело, а AGENTS.md перестаёт быть монстром на 500 строк.
Почему я выбросил половину инструментов
Сначала я установил Cursor, открыл свой SwiftUI-проект на 50 тысяч строк и попросил «помоги». Cursor открыл 40 файлов, задумался на минуту и предложил переименовать переменную. (Спасибо, кэп.) Потом я запустил Claude Code — он генерировал отличные сниппеты, но после пятого запроса вылезал лимит. Локальный Qwen на M3 работал быстро, но его ответы были плоскими, без учёта специфики iOS.
Проблема оказалась не в моделях, а в том, как я их кормил. AGENTS.md — тот самый файл, который должен описывать контекст проекта, — был свалочным полигоном. Я записал туда всё: архитектуру, требования, историю багов, имена разработчиков. AI тонул в этом шуме и выдавал среднюю температуру по больнице.
Как НЕ надо: AGENTS.md на 500 строк, где 80% — устаревшая документация. AI читает его каждое утро и забывает, что вы просили 10 минут назад.
Стек: три инструмента, одна цель
После нескольких недель A/B-тестов я остановился на такой конфигурации:
- Cursor — для ежедневного редактирования кода. Беру на себя быстрые правки, рефакторинг одной функции, генерацию тестов.
- Claude Code (через Apple MCP в Xcode 26.3) — для сложных архитектурных изменений. Поднимает руку, когда нужно переписать сетевой слой или добавить обработку ошибок.
- Локальный Qwen2.5-Coder-7B (Q4 квантование) — для офлайн-задач, когда нет интернета или жалко тратить токены. Отлично справляется с простыми запросами и автодополнением.
Ключевой момент: ни один из них не получает полный AGENTS.md. Каждый видит только ту часть контекста, которая ему нужна. Как это сделать — ниже.
Оптимизация AGENTS.md — как я сократил его в 10 раз
Исходный AGENTS.md был монстром. Я выкинул всё, что не относится к текущему спринту. Теперь файл состоит из трёх блоков:
1 Контекст принятия решений
Только то, что изменилось за последнюю неделю. Новые архитектурные решения, выбранные библиотеки, известные баги в текущем спринте. Всё остальное — в отдельный `ARCHITECTURE.md`, который AI читает только по запросу.
2 Правила взаимодействия с кодом
Чёткие запреты и разрешения. Например: «Не изменяй файлы в папке `Pods/». «Используй Combine, а не RxSwift». «Тесты пиши в экстеншенах `// MARK: - Tests`». Без этих правил AI постоянно пытался править чужой код или использовал устаревшие фреймворки.
3 Специфичные для инструмента настройки
Cursor читает блок `cursor:`, Claude Code — `claude:`, локальный Qwen — `qwen:`. Это позволяет давать разные указания. Например, Cursor я прошу «не рефакторить, пока не спросит разрешения», а Claude Code — «предлагай два варианта реализации». Qwen получает только короткие шаблоны для генерации кода.
# AGENTS.md (сокращённая версия)
---
project: MyApp
context:
- SwiftUI + Combine
- Core Data для кэша
- Минимальная iOS 17
cursor:
- Не меняй архитектуру без подтверждения
- Используй `// MARK:` для навигации
claude:
- Предлагай два варианта: простой и производительный
- Анализируй дерево зависимостей перед рефакторингом
qwen:
- Генерируй только шаблонный код
- Не используй асинхронные замыкания, если не нужно
Результат: средняя длина AGENTS.md — 50 строк. Скорость первого ответа выросла в 2 раза, потому что AI перестал пережёвывать тонну лишнего текста.
Cursor + Xcode MCP: тандем, который я не ожидал
Cursor из коробки не умеет запускать симулятор или парсить логи Xcode. Решение — mobile-mcp: MCP-сервер, который даёт Cursor доступ к Xcode через Model Context Protocol. Пока это экспериментальный проект на GitHub, но он работает.
Я настроил Cursor так:
- Установил mobile-mcp через Homebrew. Подключил к Cursor в настройках MCP.
- Дал Cursor доступ к чтению последних логов сборки и ошибок Xcode.
- Написал правило в AGENTS.md: «Если видишь ошибку компиляции, сначала прочитай лог через mobile-mcp, потом предложи исправление».
Раньше я вручную копировал ошибки из Xcode в Cursor. Теперь это автоматизировано. Cursor сам анализирует лог, находит строку с ошибкой и предлагает патч. (И да, иногда предлагает чушь — но это уже вопрос качества модели.)
Интересный факт: интеграция Apple Claude и Codex в Xcode 26.3 использует тот же MCP. Значит, mobile-mcp совместим с любым AI-агентом, который поддерживает MCP. Cursor их поддерживает, Claude Code в Xcode — тоже.
Локальный Qwen: когда облако недоступно
На M3 Pro с 36 ГБ я запускаю Qwen2.5-Coder-7B в Q4 квантовании через Ollama. Модель жрёт ~6 ГБ ОЗУ и выдаёт 60-70 токенов в секунду. Не хватает контекстного окна в 32K? Для быстрых подсказок — хватает.
Как я использую Qwen:
- Генерация шаблонного кода (модели Core Data, ViewModel для SwiftUI). Это быстро и не требует глубокого анализа.
- Автодополнение в Neovim (да, я иногда выхожу из Cursor, когда нужно быстро поправить файл).
- Черновики комментариев и документации — Qwen пишет сносные DocC-комментарии.
Сравнение с Claude Code: если задача требует понимания 10 файлов, Qwen тупит. Claude Code справляется легко. Но зато Qwen не имеет лимитов и не отправляет код на чужие сервера.
Claude Code и агентный режим в Xcode 26.3
Как Apple интегрировала Claude и Codex в Xcode 26.3, я уже описывал. Агенты видят весь проект через MCP. Я подключаю свой AGENTS.md прямо в Xcode — он лежит в корне проекта, и Claude его читает. Отдельно настраивать ничего не пришлось.
Но есть нюанс. Агентный режим в Xcode медленнее, чем Cursor. Потому что Claude сначала сканирует проект, а потом думает. Для быстрых правок я переключаюсь на Cursor. Claude Code запускаю только для задач, где нужен глубокий анализ: рефакторинг сетевого слоя, оптимизация Core Data, написание UI-тестов.
Три ошибки, которые стоили мне недели времени
- Дублировать контекст. Я написал одно и то же в AGENTS.md, в комментариях кода и в README. AI читал всё и путался. Решение: AGENTS.md — единственный источник истины для AI. Остальное — для людей.
- Давать доступ ко всему. Я разрешил Claude Code читать все файлы проекта. Он начал предлагать править Pods и Carthage (facepalm). Решение: запретить мусорные папки в AGENTS.md и в настройках инструмента.
- Доверять одному инструменту. Cursor идеален для мелких правок, но когда нужно перепроектировать архитектуру, он даёт узкие решения. Claude Code видит шире, но медленнее. Qwen — для черновиков. Три разных мозга работают лучше одного.
Итоговый рабочий процесс
| Задача | Инструмент | Почему |
|---|---|---|
| Быстрая правка (переименовать, исправить баг) | Cursor | Низкая задержка, хорош для одной функции |
| Рефакторинг модуля | Claude Code (через Xcode MCP) | Видит весь проект, даёт архитектурные предложения |
| Написание тестов (шаблон) | Qwen (локальный) | Бесплатно, быстро, не уходит в облако |
| Создание новой фичи | Claude Code + Cursor | Сначала Claude предлагает архитектуру, потом Cursor реализует |
Этот стек работает для меня уже месяц. Главное — не пытаться оптимизировать всё сразу. Начните с одного инструмента, добавьте AGENTS.md с правилами, потом подключите остальные по мере необходимости.
Ещё один совет: не храните AGENTS.md в гите? Храните. Но сделайте его частью ревью. Пусть команда обсуждает правила, записанные там. Так AI будет работать в одном направлении с людьми.
Я не стал выбрасывать половину инструментов. Я просто перестал просить их делать одно и то же. Разделение труда — единственное, что реально повышает продуктивность. А если у вас до сих пор один AI на всё — вы либо платите в три раза больше, либо ждёте в три раза дольше.