
В каждом доме есть ящик, который поедает вещи. Ключи, запасная зарядка, паспорт, который нужен дважды в год. Вы кладёте туда что-то “на сохранение”, а через три месяца стоите на коленях и вытряхиваете содержимое целого шкафа на пол. Это полное руководство о том, как создать приложение с нуля с помощью ИИ в 2026 году, на примере приложения, которое я сделал, чтобы починить этот ящик.
Stash — мой ответ на этот ящик. Это небольшое, спокойное приложение для iPhone и iPad: вы фотографируете место, куда что-то положили, даёте вещи имя и комнату, а когда она снова понадобится, вы ищете. В этом вся идея. Оно вышло в App Store 23 сентября 2026 года. Оно бесплатное, и в нём нет рекламы.
Я не из разработки. Всё, что я делаю, я делаю с ИИ-агентами, и за последний год инструменты для этого прошли путь от «красивой демки» до «это уже можно выпускать». Поэтому руководство в первую очередь практическое: каждый шаг от пустой папки до живой страницы в App Store, а Stash служит сквозным примером.
Стек — тот, который я бы передал любому, кто начинает сегодня. Figma для дизайна. OpenCode v2 как агент для кодинга. MiniMax M3.1 как модель, которая думает (строго говоря, M3.1-Flash-Preview, вышедшая 27 сентября, и я объясню, почему это различие важно). А затем всё то “барахло”, которое никогда не попадает в ютуб-руководства: бэкенд, политика конфиденциальности, App Store Connect, скриншоты, ревью, лендинг, юридические страницы и сколько всё это стоит.
Всё здесь проверено по официальной документации, примечаниям к выпускам и самому App Store на 5 октября 2026 года. Кое-что устареет уже через несколько недель. Новая модель MiniMax — предварительная версия, OpenCode выпускает обновления почти каждый день, а Figma всё ещё решает, каким агентам для кодинга можно подключаться к её MCP-серверу. Изменчивые места я отмечал по ходу.
Раскрытие информации: Stash — моё приложение, его выпускает моя компания Graham Miranda UG. Оно бесплатное, без рекламы и без встроенных покупок. В этой статье нет партнёрских ссылок. MiniMax, команда OpenCode в Anomaly, Figma, Apple, Google и Expo не спонсировали её, не проверяли и не одобряли.
Кратко — версия за 60 секунд
- В 2026 году можно создать настоящее приложение с нуля с помощью ИИ, но “с нуля” теперь означает решения, а не набор кода. Код пишет агент. За вами — бриф, дизайн, модель данных, история с конфиденциальностью, тестирование и бумажная работа для App Store.
- Стек: Figma (экраны и переменные дизайна) → OpenCode v2 (агент с открытым исходным кодом, лицензия MIT) → MiniMax M3.1-Flash-Preview (контекстное окно 1 млн токенов, читает текст, изображения и видео, пять уровней усилий) → сборка в Expo или Xcode → TestFlight → App Store. Firebase, если нужны аккаунты и синхронизация.
- “MiniMax M3.1” сегодня означает M3.1-Flash-Preview. Она вышла 27 сентября 2026 года и доступна только по подписке MiniMax M Plan ($22, $55 или $132 в месяц, скидка 50% на первый месяц при месячной оплате до 14 октября) и в приложении MiniMax Code. Цены за токены нет, открытых весов нет, опубликованного бенчмарка тоже пока нет. Размышления отключить нельзя, а уровень усилий по умолчанию — максимальный.
- В OpenCode v2 она работает без файла конфигурации:
/connect→ “MiniMax Token Plan (minimax.io)” → вставьте ключ подписки →/models→MiniMax-M3.1-Flash-Preview. - Подвох с Figma, о котором никто не говорит: Удалённый MCP-сервер Figma пока не принимает OpenCode. Во время беты доступ только по списку разрешённых. Используйте настольный MCP-сервер по адресу
127.0.0.1:3845вместо него (нужно настольное приложение Figma и платный тариф Dev или Full от $12 в месяц), либо передайте агенту экспортированные фреймы — M3.1 их читает. - Публикация — отдельный проект: $99 в год за Apple Developer Program (€99 в Германии), сборки на Xcode 26 или новее, политика конфиденциальности, метки конфиденциальности, соответствующие реальности, удаление аккаунта из приложения, если вы предлагаете аккаунты, и данные торговца для ЕС. Apple говорит, что 90% заявок проверяют в течение 24 часов.
- Stash в цифрах: в App Store с 23 сентября 2026 года, версия 1.0.1 с новым дизайном от 2 октября, бесплатно, iOS и iPadOS 16.4 или новее, около 64 МБ, без отслеживания и с гостевым режимом, который хранит всё на устройстве.
- Сколько это стоит: о $363 за первый год при скромной конфигурации (членство Apple плюс M Plan Go), около $500 с тарифом Figma Dev. Расходы на бэкенд начинаются с нуля на бесплатных квотах Firebase.
- Самое важное правило: “готово” — это утверждение, а не факт. Запустите приложение на настоящем телефоне, в авиарежиме, в тёмной теме, с включённым VoiceOver. И только потом верьте.
Стек одним взглядом
| Уровень | Инструмент | Его задача в этом рабочем процессе | Стоимость (октябрь 2026) |
|---|---|---|---|
| Дизайн | Figma | Экраны, компоненты, переменные цвета и типографики, кликабельный прототип | Бесплатный тариф Starter; тариф Dev от $12 в месяц открывает настольный MCP-сервер |
| Мост от дизайна к коду | MCP-сервер Figma (настольный) | Передаёт агенту фреймы, переменные и скриншоты | Входит в тариф |
| Агент для кодинга | OpenCode v2 | Планирует, правит файлы, запускает команды и тесты; терминал, настольное приложение или работа внутри Xcode 27 | Бесплатно, лицензия MIT |
| Модель | MiniMax M3.1-Flash-Preview | Мозг для планирования и кодинга; читает скриншоты и записи экрана | M Plan от $22 в месяц |
| Фреймворк приложения | Expo SDK 56 (iPhone + Android) или SwiftUI с Xcode 27 (только Apple) | Само приложение | Бесплатно; бесплатный тариф Expo включает 15 облачных сборок для iOS и 15 для Android в месяц |
| Бэкенд | Firebase (Auth, Firestore, Storage, Functions, Messaging) | Аккаунты, синхронизация, хранение фото, уведомления | Бесплатные квоты; для Storage и Functions нужен тариф Blaze с оплатой по факту |
| Распространение | App Store Connect + TestFlight | Бета-тестирование, ревью, релиз | $99 в год за Apple Developer Program |
| Запуск | Статический лендинг и юридические страницы | Объяснить, показать, соблюсти требования | Столько, сколько стоит ваш хостинг |
Цены — прайсовые на 5 октября 2026 года, без НДС. Условия подписок меняются часто, поэтому проверяйте перед покупкой.
Содержание
- Часть 1 — Знакомьтесь, Stash: приложение, вокруг которого построено это руководство
- Часть 2 — Стек 2026 года для создания приложения с нуля с помощью ИИ
- Часть 3 — MiniMax M3.1, честно объяснённая
- Часть 4 — Настройка OpenCode v2 с MiniMax M3.1, шаг за шагом
- Часть 5 — Дизайн приложения в Figma, когда вы не дизайнер
- Часть 6 — Подключение Figma к OpenCode: подвох с MCP
- Часть 7 — Как создать приложение с нуля, фаза за фазой
- Часть 8 — Как опубликовать приложение в App Store в 2026 году
- Часть 9 — “И прочее”: комплект для запуска вокруг приложения
- Часть 10 — Сколько стоит создать приложение с помощью ИИ в 2026 году
- Часть 11 — Десять ошибок, которых стоит избежать при создании первого приложения с ИИ
- Часть 12 — Стоит ли использовать именно этот стек? Шесть сценариев
- Часть 13 — За чем следить в ближайшие месяцы
- Часто задаваемые вопросы
- Итог
- Источники
Часть 1 — Знакомьтесь, Stash: приложение, вокруг которого построено это руководство
Сначала пример, потом инструменты. Руководство по созданию приложений ровно настолько хорошо, насколько хорошо приложение, которое оно создаёт, поэтому вот что такое Stash на самом деле — по его собственной странице в App Store и политике конфиденциальности, а не по моему энтузиазму.
Страница начинается с одной строки, которая описывает всю задачу: “Больше никогда не переворачивайте дом вверх дном в поисках чего-то.” Дальше весь продукт объясняется в трёх предложениях: “Stash — самый быстрый способ запомнить, куда вы что-то положили. Сфотографируйте, выберите комнату, сохраните. Это всё приложение.”
Последнее предложение — это дизайн-бриф. Всё в приложении либо ускоряет сохранение, либо ускоряет поиск. Всё, что не делает ни того, ни другого, не должно существовать.
Что делает Stash
| Функция | Что оно делает | Почему это важно |
|---|---|---|
| Фото места | Вы фотографируете ящик, полку или коробку, а не саму вещь | Вы запоминаете места визуально; фотография места и есть память |
| Название, комната, точное место, заметка | “Ключи от дома · Прихожая · верхний ящик · в керамической тарелке слева” | Четыре коротких поля лучше свободного текста, который вы потом плохо найдёте поиском |
| Голосовые заметки с расшифровкой | Запишите короткую заметку; Stash превращает её в текст, доступный для поиска | Быстрее, чем печатать, когда руки заняты |
| Поиск | По названию вещи, комнате, заметке или словам из записи, с фильтром для вещей с фотографиями | Весь смысл приложения — в момент, когда вам что-то понадобилось |
| Комнаты | Просматривайте дом комнату за комнатой | Для случаев, когда вы не помните название, а помните только примерно где |
| “Нашлось” | Одно нажатие, когда вещь вернулась на место | Закрывает цикл |
| Напоминания | Сезонные вещи всплывают, когда они нужны | Зимние шины, рождественские гирлянды, туристическое снаряжение |
| Виджеты | Виджеты для экрана «Домой» и экрана блокировки | Два нажатия от “надо запомнить” до сохранения |
| Офлайн, затем синхронизация | Работает без сигнала; синхронизируется между iPhone и iPad, если у вас есть аккаунт | В подвалах и гаражах связь ужасная |
| Внешний вид | Светлая, тёмная или как в системе | В 23:00 оно тоже выглядит спокойно |
| Экспорт и удаление | Экспортируйте свои записи; удалите аккаунт в настройках | Ваши данные остаются вашими, а второе требует Apple |
Как это выглядит
Визуальное направление намеренно тихое: тёплый фон цвета слоновой кости, глубокий лесной зелёный, единственный коралловый акцент, заголовки с засечками и простой шрифт без засечек для всего остального. Скриншоты в App Store рассказывают историю в шести заголовках: У каждой вещи есть место. Найдите его. За секунды. Сохраните место. Ваш дом. Комната за комнатой. Помните мелочи. Ясно. При любом свете.
Показать изображение Stash на iPhone: сохраните место, найдите за секунды, просматривайте комнату за комнатой. Светлая и тёмная тема — одно и то же спокойствие.

Как оно обращается с вашими данными
Это важнее любой функции, поэтому я процитирую политику конфиденциальности, а не перескажу её:
- Гостевой режим: “Если вы не создаёте аккаунт, ваши комнаты, вещи, фотографии и голосовые заметки остаются на вашем устройстве и не загружаются.”
- С аккаунтом: синхронизация и резервное копирование работают на Google Firebase (Authentication, Cloud Firestore, Cloud Storage, Cloud Functions и Cloud Messaging), а правила безопасности изолируют данные каждого пользователя.
- Никакой бизнес-модели, построенной на вас: “Мы не показываем рекламу, не запускаем рекламное или аналитическое отслеживание, не строим профили пользователей и не продаём ваши данные.”
- Голосовые заметки: превращение записи в текст для поиска может использовать речевой сервис, встроенный в телефон (на iOS — Apple).
- Удаление: удалите аккаунт в настройках или через веб-форму; копии удаляются из резервных копий в течение 30 дней.
Если вы читали мою статью о том, почему программы local-first снова в моде, вы узнаете эту философию. Приложение должно работать идеально без облака. Облако — это удобство, которое вы выбираете сами.
Карточка фактов
| Название в App Store | Stash — Find It Fast |
| Подзаголовок | Находите всё, что убрали |
| Первый выпуск | 23 сентября 2026 (версия 1.0) |
| Текущая версия | 1.0.1, выпущена 2 октября 2026: “Новый дизайн и исправления ошибок.” |
| Цена | Бесплатно, без встроенных покупок |
| Требуется | iOS или iPadOS 16.4 и новее; также работает на Mac с Apple silicon и Apple Vision Pro как приложение для iPad |
| Размер | Около 64 МБ |
| Категория | Продуктивность (также в категории «Утилиты») |
| Возрастной рейтинг | 4+ |
| Разработчик | Graham Miranda UG (haftungsbeschränkt), Бланкенбург (Гарц), Германия |
| Сайт | stash.grahammiranda.network, на десяти языках, с демо в браузере |
| Скачать | Stash в App Store |
Чего в приложении пока нет
На сайте есть раздел «Исследования дизайна» с тремя идеями: отметить точное место на фото, Быстрое перемещение для случая, когда у вещи меняется место, и коробки и этикетки чтобы видеть, что внутри коробки, не открывая её. Сайт прямо говорит, что “эти идеи есть в интерактивном концепте, но не в релизе для App Store.”
Мне нравится это разделение, и я советую его всем, кто делает своё первое приложение. Свободно исследуйте в прототипе. Выпускайте только то, что работает. Страница в App Store не должна обещать того, чего не умеет сборка. Проверяют и рецензенты Apple, и авторы однозвёздочных отзывов.
Почему это удачная форма для первого приложения
Если вы читаете это, потому что хотите сделать своё приложение, украдите форму Stash, даже если потерянные ключи вам не важны:
- Один основной цикл. Сохранить, потом найти. Всё остальное поддерживает этот цикл.
- Данные, которые начинаются на устройстве. В первый день сервер не нужен, поэтому можно выпустить приложение до того, как вы сделали бэкенд.
- Несколько настоящих функций платформы. Камера, микрофон, уведомления и виджеты — ровно столько “нативности”, чтобы учиться и не утонуть.
- Необязательное облако. Аккаунты и синхронизация могут появиться во второй версии без переписывания первой.
- Ни ленты, ни чата, ни платежей. Каждое из этого — отдельный проект со своими способами ломаться.
ИИ-агент может построить почти всё, что вы опишете. Трудное — описать нечто достаточно маленькое, чтобы это довести до конца.
Часть 2 — Стек 2026 года для создания приложения с нуля с помощью ИИ
Три инструмента, три отдельные задачи:
- Figma решает, как приложение выглядит.
- OpenCode решает, как делается работа: какие файлы читать, какие команды запускать, о чём спросить вас, прежде чем делать что-то рискованное.
- MiniMax M3.1 думает внутри OpenCode: планирует, пишет код, читает скриншоты, исправляет поломанное.
Разделение этих задач — самое важное архитектурное решение во всём руководстве, и к коду оно отношения не имеет. Когда в следующем месяце выйдет лучшая модель (а она выйдет), вы поменяете одну строку в конфиге. Когда появится лучший инструмент дизайна, вашему агенту всё равно. Ничего не спаяно намертво.
Почему агент — это OpenCode v2
OpenCode — AI-агент для кодинга с открытым исходным кодом под лицензией MIT. Вы указываете ему папку проекта, описываете, что нужно, и он работает как разработчик: читает код, строит план, правит файлы, запускает команды, читает ошибки, исправляет их и продолжает.
Версия 2.0.0, полная переделка с нуля, получила тег 11 сентября 2026 года, а к 2 октября команда выпустила 2.0.22. Я подробно разбирал переделку в своём разборе OpenCode v2, так что здесь только то, что важно для создания приложения:
- Он не привязан к модели. Более 75 провайдеров через Models.dev плюс локальные модели. MiniMax встроен.
- Один общий фоновый сервер. Терминальный интерфейс, приложение для компьютера, веб-интерфейс и расширения для IDE видят одни и те же сессии.
- Права, которые работают как межсетевой экран. Упорядоченный список правил разрешить, спросить и запретить, где побеждает последнее совпадение, поэтому “никогда не запускать
git push” и “никогда не отправлять в App Store” — это по одной строке. - Отмена для каждого шага. Снимки до и после каждого шага модели, с
/undoи/redo. - Подагенты, которых видно и можно остановить, и навыки, которые загружаются из
.opencode,.claudeи.agentsпапок. - Он работает внутри Xcode 27. Новый Xcode от Apple принимает любого агента, который говорит на Agent Client Protocol, и
opencode acpделает именно это (настройка в части 4).
На главной странице теперь 208 000 звёзд на GitHub, 950 участников и 16 миллионов разработчиков в месяц. Две честные оговорки из документации v2: общий доступ к сессиям в v2 пока не вернулся, и плагины v1 не загружаются.
Почему модель — MiniMax M3.1
Часть 3 разбирает подробно, но коротко: три свойства, которые на удивление хорошо подходят для создания приложений:
- Контекстное окно в 1 000 000 токенов. Небольшое приложение, заметки по дизайну, его AGENTS.md и нужная документация помещаются в одну рабочую сессию, и ещё остаётся место.
- Он читает изображения и видео, а не только текст. Вы можете дать ему фрейм Figma, скриншот из симулятора или запись экрана с ошибкой.
- Пять уровней усилий, от
низкийдомаксимум, чтобы планирование получало глубокое обдумывание, а механическая работа — скорость.
Компромисс в том, что это превью без опубликованных бенчмарков и без цены за токен, доступное только по подписке MiniMax. Я вернусь к этому, потому что это не мелкая оговорка.
Почему инструмент дизайна — Figma
Дизайн приложений по-прежнему делается в Figma. Бесплатного плана Starter хватает, чтобы спроектировать первое приложение. Её переменные становятся вашими дизайн-токенами — цветами, отступами и размерами шрифта, которые держат все экраны единообразными. А её MCP-сервер позволяет агенту для кодинга напрямую читать выбранный фрейм — это пока самое близкое к тому, чтобы “сделай как здесь” действительно работало.
На Config 2026 (23–25 июня в Сан-Франциско) Figma также открыла своего Figma Agent для всех платных планов в статусе открытой беты, добавила таймлайн анимации и показала “слои кода”, которые обращаются с кодом как с полноценным объектом на холсте. Ничего из этого не нужно для первого приложения. Полезно знать, куда всё движется.
А ещё “всякое”
То, чего никто не показывает на обложке:
| Что | Варианты | Где разобрано |
|---|---|---|
| Фреймворк приложения | Expo (React Native) для iPhone и Android; SwiftUI с Xcode 27 только для Apple; Flutter | Часть 7 |
| Бэкенд | Firebase — простой выбор по умолчанию для аккаунтов, синхронизации и хранения файлов | Часть 7 |
| Контроль версий | Git, всегда. GitHub или аналог для резервной копии | Части 4 и 7 |
| Сборки и подпись | Xcode на Mac или облачные сборки EAS от Expo без него | Части 7 и 8 |
| Тестирование и выпуск | TestFlight и App Store Connect | Часть 8 |
| Запуск | Лендинг, демо, юридические страницы, оптимизация для App Store | Часть 9 |
Показать изображение Весь конвейер на одной странице. Вы стоите слева (бриф), в середине (проверяете каждый дифф) и справа (нажимаете “Отправить на проверку”).
Что теперь значит “с нуля”
Вот неудобная правда о создании приложения с ИИ в 2026 году: агент делает ту часть, что раньше была трудной, и оставляет вам ту, что была трудной всегда.
| Вы отвечаете за | Агент отвечает за |
|---|---|
| Зачем нужно приложение и чего оно делать отказывается | Превращение этого в файлы, компоненты и функции |
| Экраны и дизайн-система | Реализация экран за экраном |
| Модель данных: что хранится, где и как долго | Написание кода хранения, синхронизации и миграций |
| История о конфиденциальности, юридические страницы и ответы для App Store | Аудит кода, чтобы ваши ответы были правдивыми |
| Тестирование на реальных устройствах с реальными людьми | Написание и запуск автотестов |
| Нажатие “Отправить” | Вы никогда не нажимаете “Отправить” |
Если от этой таблицы вам немного не по себе — хорошо. Именно эта тревога отличает приложение, которое выходит, от папки с наполовину работающим кодом.
Часть 3 — MiniMax M3.1, честно объяснённая
Если вы поищете “MiniMax M3.1” прямо сейчас, вы найдёте уверенные статьи о модели, которая, строго говоря, ещё не вышла. Вот что существует на самом деле, чем можно пользоваться сегодня и чего пока не знает никто.
Что существует, по порядку
- 1 июня 2026: MiniMax M3. Модель с открытыми весами, изначально мультимодальная, с контекстным окном 1 млн токенов, архитектурой mixture-of-experts примерно на 428 млрд параметров всего и около 23 млрд активных на токен, и собственной разреженной attention от MiniMax. В августе я сравнил её с GLM-5.3-Flash для OpenCode в GLM-5.3-Flash vs MiniMax M3.
- Июль: “M3.1” становится именем. Сообщения с Всемирной конференции по искусственному интеллекту в Шанхае описывали M3.1 с контекстом в миллион токенов и более сильными мультимодальными возможностями. Ни модели, ни её ID, ни цены после этого не появилось.
- 23 сентября: загадочная модель. Анонимная модель под названием “Space Bunny Alpha” появилась на OpenRouter и в OpenCode как бесплатное превью, с контекстом 1 млн и настраиваемым reasoning. Независимый анализ токенизатора указывал на MiniMax. MiniMax ничего не подтвердила, а совпадение токенизатора — это свидетельство о семействе моделей, а не доказательство.
- 27 сентября: MiniMax M3.1-Flash-Preview. Первая модель под маркой M3.1, которой может пользоваться кто угодно: она вышла в собственном приложении MiniMax для кодинга MiniMax Code и по подписке для кодинга. MiniMax описывает её как модель для “повседневной разработки — быструю, надёжную и готовую к реальной работе, от быстрых исправлений ошибок до целых функций.”
- 30 сентября: M Plan. Вышла MiniMax Code 3.1.0 с новой подпиской M Plan, которая заменяет Token Plan для новых клиентов по тем же ценам.
Полноценная M3.1 из летних анонсов так и не вышла. Когда в октябре 2026 года говорят “M3.1”, имеют в виду M3.1-Flash-Preview — и я тоже, до конца этой статьи.
Показать изображение Всё в этой статье произошло за четыре с половиной месяца, и семь из этих девяти дат приходятся на последние пять недель.
MiniMax M3 против M3.1-Flash-Preview
| MiniMax M3 | MiniMax M3.1-Flash-Preview | |
|---|---|---|
| Выпуск | 1 июня 2026 | 27 сентября 2026 |
| Статус | Общедоступна | Предварительная версия |
| ID модели | MiniMax-M3 | MiniMax-M3.1-Flash-Preview |
| Контекстное окно | 1 млн токенов | 1 000 000 токенов |
| Ввод | Текст, изображение, видео | Текст, изображение, видео |
| Размышление | Можно включать и выключать | Всегда включено. Пять уровней усилий: низкий, medium, высокий, xhigh, максимум (по умолчанию максимум) |
| Открытые веса | Да, по лицензии MiniMax Community License | Ни весов, ни карточки модели |
| Цена с оплатой по факту использования | $0,30 за миллион входных токенов, $1,20 за выходные, $0,06 за кэшированные; вдвое больше при входе свыше 512K | Не публикуется. Только по подписке |
| Где можно использовать | MiniMax API, OpenRouter, OpenCode Go, Ollama Cloud и многие другие хосты | Только подписка M Plan и MiniMax Code |
| Опубликованные бенчмарки | Да, от MiniMax и независимых площадок | Нет |
| Архитектура | ~428B всего, ~23B активных, разреженный MoE | Не раскрывается |
| В OpenCode v2 | Встроена, через несколько провайдеров | Встроена, через “MiniMax Token Plan (minimax.io)” |
Снимок по документации MiniMax и Models.dev на 5 октября 2026 года. Превью меняются без предупреждения; проверяйте, прежде чем полагаться на любую строку.
Одну вещь стоит расшифровать: в документации сказано, что thinking нельзя отключить. Отправьте thinking.type: "disabled" или усилие none, и API вернёт ошибку 400, которая, по сути, сообщает, что модель “требует адаптивного мышления.” Что вы можете контролировать — насколько усердно она думает.
Как это получить: M Plan
Документация MiniMax прямо говорит о доступе: “MiniMax-M3.1-Flash-Preview пока доступна только через M Plan и MiniMax Code.”
| Уровень M Plan | Цена | Что входит |
|---|---|---|
| Go | $22 в месяц | M3.1-Flash-Preview плюс модели изображений и аудио от MiniMax |
| Explore | $55 в месяц | Всё из Go плюс видеомодель H3 |
| Build | $132 в месяц | Всё из Explore с самым большим лимитом использования |
Несколько деталей, которые важнее цен из заголовка:
- Стартовое предложение: Скидка 50% на первый месяц при месячной оплате, до 14 октября 2026 года. Годовая оплата не участвует. После первого месяца подписка продлевается по полной цене, если вы не отключите автопродление.
- Бесплатная неделя: с 1 по 7 октября (по пекинскому времени) все подписчики получили неограниченный доступ к M3.1-Flash-Preview. Если вы читаете это после 7-го, эта возможность уже прошла.
- Это ключ подписки, а не API-ключ. Документация MiniMax ясно говорит, что ключи подписки и API-ключи с оплатой по факту не взаимозаменяемы. В OpenCode вы вставите ключ подписки.
- Квоты, а не оплата по счётчику. Использование ограничено скользящими пятичасовыми и недельными окнами, а неиспользованная квота не переносится. Для аналогичных уровней Token Plan сама MiniMax ориентировала примерно на три-четыре, четыре-пять и шесть-семь одновременно работающих агентов.
- Действующие подписчики Token Plan сохраняют свой план. Новые клиенты покупают M Plan.
- Поддерживаемые инструменты на странице M Plan от MiniMax перечислены Claude Code, Codex, Cursor, OpenCode, Hermes Agent и OpenClaw.
MiniMax Code сам по себе — десктопный агент для macOS и Windows с режимом кодинга и режимом “work” для исследований и документов, а также версия для командной строки. Это вполне хороший способ попробовать модель. Я использую OpenCode, потому что он не привязывает меня к одному производителю моделей, и в этом весь смысл части 2.
Почему он подходит для создания приложений
- Контекстное окно меняет то, как вы работаете. Небольшое мобильное приложение — это несколько тысяч строк кода, возможно, несколько десятков тысяч. С миллионом токенов агент может одновременно держать всю кодовую базу, ваш AGENTS.md, модель данных и часть документации платформы. Меньше моментов в духе “я забыл, что мы решили”. (В собственном руководстве MiniMax по OpenCode в примере конфигурации окно ограничено 512K — я бы скопировал именно это. Чем короче контекст, тем быстрее ответы.)
- Покажите, а не описывайте. Поскольку он принимает изображения и видео, вы можете подбросить экспортированный фрейм Figma, скриншот из iOS Simulator или запись экрана с ошибкой, где клавиатура закрывает кнопку Save. Один только последний вариант экономит невероятно много набора текста.
- Усилие — это регулятор, а не выключатель.
максимумдля планирования функции или распутывания ошибки синхронизации.низкийилиmediumдля переименований, написания тестов и перевода строк. Часть 4 показывает, как настроить это для каждого агента. - Стоимость фиксированная. Для одиночного разработчика предсказуемый ежемесячный счёт лучше, чем следить за счётчиком токенов во время долгой отладки.
Один ранний независимый тест показал примерно от 90 до 110 токенов в секунду в первый день. Это единичное измерение, а не бенчмарк, но оно соответствует названию “Flash”.
Чего пока никто не знает
Вот что упускает большинство обзоров M3.1:
- Бенчмарков нет. Ни от MiniMax, ни от независимых рейтингов: модель, доступную только по подписке одной компании, трудно тестировать независимо. Бенчмарк — это вы. Дайте ей одну реальную задачу из своего проекта, дайте ту же задачу модели, которой уже доверяете, и сравните диффы.
- Цены за токен нет. Внутри подписки это нормально. Это проблема, если вы хотите запускать модель в CI или в продукте, где нужно знать, сколько стоит миллион токенов.
- Это предварительная версия. Она может изменить поведение, получить новое имя или быть заменена полной M3.1 без предупреждения. Держите идентификатор модели в одном конфигурационном файле, чтобы замена была изменением одной строки.
- Размышления всегда включены. Даже тривиальные запросы несут накладные расходы на рассуждения. Снижайте усилие для небольших задач.
- Он доступен только от MiniMax. На момент написания его нет в OpenRouter, Ollama Cloud или OpenCode Go. Ваши промпты и код уходят на серверы MiniMax, поэтому для клиентской работы со строгими правилами данных сначала прочитайте условия MiniMax или держите этот проект на локальных моделях.
Не скачивайте “MiniMax M3.1”
В течение суток после запуска появились GitHub-репозитории, не имеющие отношения к MiniMax, которые обещали “официальную бесплатную загрузку” M3.1-Flash в виде Windows-архива, который нужно “распаковать и запустить”. Весов M3.1 для скачивания не существует, а MiniMax Code берётся с собственного сайта MiniMax. Считайте любую “загрузку M3.1” вредоносной, пока не доказано обратное.
Когда вместо него использовать MiniMax M3
Используйте M3 если вам нужно что-то из того, чего нет у предварительной версии: оплата по мере использования, открытые веса, которые можно развернуть самостоятельно, или доступ через OpenCode Go, Ollama Cloud или OpenRouter. Она также безопаснее для всего автоматизированного, потому что её цена и поведение задокументированы. Если хотите шире посмотреть на альтернативы, моё Сравнение MiniMax M3, Kimi K2.7 Code и Nemotron 3 Ultra сравнение охватывает весь спектр.
Часть 4 — Настройка OpenCode v2 с MiniMax M3.1, шаг за шагом
Это настройка, которую я дал бы другу. Она занимает около пятнадцати минут, большая часть — ожидание загрузок.
Шаг 0 — что нужно заранее
- Mac с чипом Apple silicon, если хотите собирать и запускать приложения для iPhone локально. Xcode 27 (выпущен 14 сентября 2026 года) больше не поддерживает Intel Mac и требует macOS Tahoe 26.4 или новее. Если пойдёте путём Expo в части 7, можно собирать iOS-приложения в облаке из Windows или Linux, но настоящий iPhone для тестов всё равно понадобится.
- Git. Снимки, ветки и ваше собственное душевное равновесие зависят от него.
- Node.js (LTS) если будете использовать Expo.
- Подписка MiniMax M Plan (Часть 3).
- Современный терминал. Терминала macOS достаточно; Ghostty, WezTerm и Kitty приятнее.
Шаг 1 — Установите OpenCode v2
bash
curl -fsSL https://opencode.ai/v2/install | bash
opencode --version # should print 2.0.x
opencode service status # the shared background server should be running
Хотите ещё и десктопное приложение? Скачайте его с opencode.ai/download, или на Mac выполните brew install --cask opencode-desktop. Терминал и десктопное приложение используют один сервер, поэтому сеанс, начатый в одном, появляется в другом.
На что обратить внимание: собственное руководство MiniMax по OpenCode до сих пор показывает URL установщика v1 (opencode.ai/install). Используйте /v2/install из строки выше.
Шаг 2 — Получите ключ подписки M Plan
Оформите подписку на платформе MiniMax и создайте ключ подписки в консоли. Не API-ключ с оплатой по мере использования: это разные продукты, и только ключ подписки даёт доступ к M3.1-Flash-Preview.
Обращайтесь с ключом как с паролем. Никогда не вставляйте его в чат, на скриншот или в Git-репозиторий.
Шаг 3 — Подключите MiniMax в OpenCode
bash
cd ~/code/my-app
opencode
Затем внутри OpenCode:
- Тип
/connectи найдите MiniMax Token Plan (minimax.io). Провайдер сохранил старое название; он принимает ключи M Plan. - Вставьте ключ подписки.
- Тип
/modelsи выберите MiniMax-M3.1-Flash-Preview.
Вот и всё. Каталог моделей OpenCode (Models.dev) уже содержит модель с контекстом 1 000 000 токенов, вводом изображений и видео и пятью уровнями усилий, поэтому для начала конфигурационный файл не нужен. Если её нет в /models, сначала обновите OpenCode; конфигурация в шаге 4 также добавляет её вручную.
Две альтернативы: opencode auth login делает то же самое из терминала, а мастер настройки MiniMax (npx -y mmx-cli@latest agent setup) устанавливает и настраивает OpenCode за вас, используя M3 по умолчанию. После этого переключитесь на M3.1 с помощью /models. Аккаунты на китайской платформе MiniMax используют версию провайдера “(minimax.cn)”.
Шаг 4 — Добавьте конфигурацию проекта
Настройки по умолчанию работают, но проект приложения заслуживает конфигурационного файла, который делает три вещи: направляет каждого агента на нужный уровень усилий, задаёт разрешения, не подпускающие агента к необратимым действиям, и подключает ваши MCP-серверы. Сохраните это как opencode.jsonc в корне проекта:
jsonc
{
"$schema": "https://opencode.ai/config.json",
// Default model for new sessions
"model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview",
"providers": {
"minimax-coding-plan": {
"models": {
"MiniMax-M3.1-Flash-Preview": {
// MiniMax's own OpenCode example caps the window at 512K
"limit": { "context": 524288 },
// Thinking is always on and defaults to "max".
// These variants send MiniMax's documented output_config.effort field.
"variants": [
{ "id": "quick", "body": { "output_config": { "effort": "low" } } },
{ "id": "steady", "body": { "output_config": { "effort": "medium" } } },
{ "id": "careful", "body": { "output_config": { "effort": "high" } } }
]
}
}
}
},
"agents": {
// Planning gets the full default effort: a bad plan costs the most later
"plan": { "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview" },
// Building: thorough, but faster than max
"build": { "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview#careful" },
// Read-only searching through the codebase: speed matters more than depth
"explore": { "model": "minimax-coding-plan/MiniMax-M3.1-Flash-Preview#quick" }
},
"permissions": [
{ "action": "shell", "resource": "*", "effect": "ask" },
{ "action": "shell", "resource": "git status *", "effect": "allow" },
{ "action": "shell", "resource": "git diff *", "effect": "allow" },
{ "action": "shell", "resource": "git log *", "effect": "allow" },
{ "action": "shell", "resource": "npm test *", "effect": "allow" },
{ "action": "shell", "resource": "npx tsc *", "effect": "allow" },
{ "action": "shell", "resource": "npx expo lint *", "effect": "allow" },
{ "action": "shell", "resource": "git push *", "effect": "deny" },
{ "action": "shell", "resource": "eas submit *", "effect": "deny" },
{ "action": "shell", "resource": "firebase deploy *", "effect": "deny" }
],
"mcp": {
"servers": {
// Figma's desktop MCP server (Part 6). Local, so no OAuth.
"figma-desktop": {
"type": "remote",
"url": "http://127.0.0.1:3845/mcp",
"oauth": false
},
// Firebase's official MCP server. It asks before changing your project.
"firebase": {
"type": "local",
"command": ["npx", "-y", "firebase-tools@latest", "mcp"]
}
}
}
}
Несколько пояснений, чтобы вы понимали, что вставляете:
- Правила разрешений читаются сверху вниз, и побеждает последнее совпадение. Каждая команда оболочки сначала спрашивает разрешение, безобидные команды Git и тестов выполняются свободно, а три вещи запрещены полностью: отправка кода, публикация в App Store и развёртывание бэкенда. Это вы делаете сами, намеренно.
- Замените разрешённые команды на свои для вашего инструментария. Если вы собираете нативно в Xcode вместо Expo, замените
npxстроки своими командами тестирования и линтинга. - Если вариант, кажется, ничего не делает, выполните
/modelsчтобы подтвердить названия вариантов, и проверьте запрос в логах OpenCode. MiniMax используетмаксимумкогда усилие не передано, так что худший случай — более медленный ответ, а не сломанный. - Старые примеры в стиле v1 всё ещё работают. В руководстве MiniMax используется
providerkey из v1; OpenCode v2 читает поддерживаемые настройки v1, не переписывая ваш файл.
Шаг 5 — Напишите AGENTS.md до того, как напишете первую строку кода
OpenCode читает AGENTS.md в начале каждой сессии. Это самая эффективная привычка в разработке с помощью ИИ, а моё руководство по вайб-кодингу разбирает всю систему. Для приложения он должен содержать правила продукта, а также команды сборки. Вот примерная структура для приложения вроде Stash:
markdown
# Заметки для агентов-кодеров (пример для приложения в стиле Stash)
## Что это за приложение
Stash помнит, где что лежит. Фото места + название + комната = найдено за секунды.
Если изменение не ускоряет сохранение или поиск, ему здесь не место.
## Непреложные правила
- Сначала офлайн. Каждая функция работает без сети. Синхронизация — бонус.
- Гостевой режим ничего не загружает.
- Никакой аналитики, рекламы или SDK для отслеживания. Спрашивайте перед добавлением ЛЮБОЙ зависимости.
- Никаких секретов в пакете приложения. Привилегированная работа выполняется в Cloud Functions.
- Доступность: Dynamic Type, метки VoiceOver, зоны нажатия 44 x 44 pt.
- Светлая и тёмная тема для каждого экрана.
## Дизайн
- Токены хранятся в src/theme/tokens.ts. Никогда не задавайте цвет или размер шрифта жёстко.
- При реализации фрейма Figma: get_design_context, затем get_variable_defs,
затем get_screenshot, чтобы сравнить результат.
## Команды
- Установка: npm install
- Запуск: npx expo start
- Тест: npm test
- Типы: npx tsc --noEmit
- Линт: npx expo lint
## Определение готовности
- Тесты, типы и линт проходят
- Работает в авиарежиме
- Работает в светлой и тёмной теме при максимальном размере текста
- В консоли нет новых предупреждений
Шаг 6 (необязательно) — Запустите OpenCode внутри Xcode и дайте ему инструменты Xcode
В Xcode теперь есть встроенное агентное кодирование, и он принимает сторонних агентов двумя разными способами. Оба стоит знать, если вы собираете нативно.
OpenCode как агент внутри Xcode (ACP). Xcode может размещать любого агента, говорящего на Agent Client Protocol, и OpenCode умеет это через opencode acp.
- Сначала войдите из терминала:
opencode auth login. - Запуск
which opencodeи скопируйте абсолютный путь. Xcode не раскрывает~и не читает PATH вашей оболочки. - В Xcode выберите Xcode → Settings → Intelligence, затем в разделе Agents нажмите Add an Agent.
- Вставьте путь как команду и добавьте
acpкак аргумент. - Начните новый разговор в боковой панели Intelligence в Xcode и выберите OpenCode.
В интерфейсе Xcode нельзя переключать модели, поэтому задайте модель по умолчанию в opencode.jsonc сначала.
Инструменты Xcode внутри OpenCode (MCP). Другое направление часто полезнее: OpenCode остаётся в вашем терминале, но может собирать проект, запускать тесты и отрисовывать превью SwiftUI через Xcode.
- В Xcode → Settings → Intelligence, в разделе Model Context Protocol включите Разрешить внешним агентам использовать инструменты Xcode.
- Добавьте мост Xcode в OpenCode:
opencode mcp add xcode -- xcrun mcpbridge - Откройте проект в Xcode перед тем, как отправлять промпт. Мост общается с запущенным Xcode, и Xcode сообщает, когда подключается внешний агент.
Какой уровень усилий для какой задачи
| Задача | Агент | Усилие |
|---|---|---|
| Планирование функции, модели данных или логики синхронизации | план | максимум (по умолчанию) |
| Реализация экрана по фрейму Figma | build | высокий |
| Исправление ошибки с понятным способом воспроизведения | build | высокий; максимум если это ошибка синхронизации или состояния гонки |
| Написание тестов, переименования, небольшие рефакторинги | build | medium |
| Поиск по кодовой базе, чтение документации | исследовать | низкий |
| Правки текстов и перевод строк | build | низкий или medium |
Более высокое усилие означает больше токенов на размышления и больше ожидания, по словам самой MiniMax. Большая часть времени в цикле агента уходит на ожидание, поэтому соизмеряйте усилие с риском.
Часть 5 — Дизайн приложения в Figma, когда вы не дизайнер
Чтобы спроектировать хорошее первое приложение, не нужно быть дизайнером. Нужно небольшое число решений, принятых один раз и записанных там, где агент может их прочитать.
Начните со слов, а не с прямоугольников
Прежде чем открыть Figma, напишите три вещи в простом текстовом файле:
- Обещание в одном предложении. Для Stash: самый быстрый способ вспомнить, куда вы что-то положили.
- Три пользовательские истории. “Паспорт лежит в ящике стола, и в марте я хочу его найти.” “Я в гараже, связи нет, и я хочу записать, куда делась дрель.” “Хочу, чтобы новогодние гирлянды напоминали о себе в ноябре.”
- Список экранов. В Stash четыре вкладки (Home, Search, Rooms и Settings), а также экран добавления и подробный вид предмета. Шесть экранов. Это и есть всё приложение.
Затем отдайте этот файл план агенту и попросите его поспорить с вами: “Прочитайте этот бриф. Перечислите пользовательские сценарии, крайние случаи, о которых я не подумал, и экраны, которых мне не хватает. Потом скажите, что стоит вырезать.” Именно для такой скучной и тщательной работы и нужно максимальное усилие: вопросы вроде “что произойдёт, если пользователь запретит доступ к камере?”. Десять минут такой работы могут спасти вас от переделки дизайна.
Настройте переменные, прежде чем что-то рисовать
Figma переменные — это именованные значения: цвета, отступы, радиусы скругления, размеры. Настройте их сначала, со светлой и тёмной темой для цветов, и ваше приложение по умолчанию будет единообразным.
С ИИ-агентом они важны вдвое сильнее. Когда агент реализует экран, MCP-сервер Figma может передать ему точные переменные, использованные в этом фрейме ( get_variable_defs инструмент), поэтому он пишет colors.green вместо того чтобы угадывать hex-код по скриншоту.
Вот палитра из публичной дизайн-концепции Stash:
| Токен | Значение | Используется для | Контраст на Paper |
|---|---|---|---|
| Paper | #F6F4EE | Фон приложения | — |
| Surface | #FFFCF7 | Карточки и поля | — |
| Ink | #172E2A | Основной текст | 13.1 : 1 |
| Green | #23594C | Кнопки, выбранные состояния, бренд | 7.3 : 1 |
| Green soft | #E1EBE4 | Тихие акценты | — |
| Coral | #D46F4F | Акцентная точка, одно слово в заголовке | 3.1 : 1 |
| Coral soft | #F8E8DE | Тёплые акценты | — |
| Muted | #6E7D76 | Вторичный текст | 3.9 : 1 |
| Line | #DEDFD7 | Разделители и границы | — |
Заголовки используют шрифт с засечками; всё остальное — системный без засечек. Вот и вся типографическая система.
Колонку контраста и стоит копировать. Ink и green с большим запасом проходят требуемые WCAG 4,5 : 1 для обычного текста. Coral с примерно 3 : 1 проходит только для крупного текста, поэтому он уместен на крупных словах в заголовках и маленьких акцентных точках — именно там Stash его и использует. Приглушённый серый даёт 3,9 : 1, поэтому он подходит для более крупных подписей, а не для мелкого текста. Проверьте это в Figma, прежде чем агент скопирует токен в пятьдесят мест.
Показать изображение Девять цветов, два шрифта, несколько компонентов. Дизайн-система не обязана быть большой, чтобы быть полезной; она обязана быть записанной.
Сделайте пять компонентов, а не пятьдесят
Для первого приложения нужно примерно пять переиспользуемых компонентов: кнопка (основная и тихая), текстовое поле, карточка, строка списка или плитка (плитка комнаты в Stash) и панель вкладок. Соберите их как компоненты Figma с вариантами для их состояний: обычное, нажатое, недоступное, ошибка.
Apple публикует официальные ресурсы по дизайну iOS для Figma. Используйте их как ориентир для системных элементов — листов, оповещений и клавиатуры — вместо того чтобы перерисовывать их. Ваш агент всё равно будет использовать настоящие системные компоненты.
Спроектируйте экраны, о которых забудет агент
ИИ-агенты очень хорошо справляются с основным сценарием и тихо проваливаются во всём, что вокруг него. Проектируйте это специально:
- Пустые состояния. Первый запуск, комната, в которой ничего нет (сетка комнат Stash показывает “Пока нет вещей”), поиск без результатов.
- Огромный текст. Установите на телефоне максимальный размер Dynamic Type и посмотрите на свои макеты. Длинные названия вещей переносятся. Кнопки увеличиваются.
- Тёмная тема, для каждого экрана, а не только для красивых.
- Нет фото. Как выглядит карточка вещи без фото?
- Доступ запрещён. Пользователь отказал в доступе к камере. Что дальше?
- Офлайн. Как выглядит “сохранено, синхронизируется позже”?
Пусть ИИ помогает внутри Figma, но источник истины оставьте за собой
Собственный ИИ Figma быстро вырос за этот год. Figma Agent вышел в открытую бету для всех платных тарифов на Config 2026, и во время беты он бесплатен для мест Full. Он умеет генерировать и переделывать дизайны внутри вашего файла. Figma Make превращает промпты в кликабельные прототипы. Weave инструменты теперь выполняют операции с изображениями, например замену фона, не покидая файл дизайна.
Они отлично подходят для исследования. Сгенерируйте десять вариантов главного экрана, заберите одну хорошую идею, а затем пересоберите её на своих компонентах и переменных. Если сгенерированные слои станут источником истины, ваша дизайн-система поплывёт, а агент для кодинга унаследует этот дрейф.
Stash делает то, что я рекомендовал бы каждому: его экспериментальные идеи живут в отдельном, ясно обозначенном интерактивном концепте на сайте, а не в приложении. Вы можете исследовать публично, не обещая функций, которых не существует.
Соберите прототип и посмотрите, как им пользуются трое
Свяжите экраны в кликабельный прототип, дайте телефон трём людям и попросите каждого сохранить что-нибудь и снова найти это. Ничего не объясняйте. Смотрите, где они замешкаются. Трое найдут большинство важных проблем, а исправление фрейма в Figma занимает минуты, тогда как исправление после того, как агент всё построил, требует целой сессии.
Часть 6 — Подключение Figma к OpenCode: подвох с MCP
Это та часть рабочего процесса, которая, когда всё работает, ощущается как будущее: выберите фрейм в Figma, скажите агенту его собрать — и он прочитает настоящий макет, настоящие переменные и настоящие компоненты вместо того, чтобы вглядываться в скриншот.
Это также та часть, где большинство руководств пропускает деталь, которая обойдётся вам в целый вечер.
Что MCP-сервер Figma даёт агенту
MCP (Model Context Protocol) — стандартный способ, которым ИИ-агент пользуется внешними инструментами. MCP-сервер Figma предоставляет набор инструментов; вот те, что важны для создания приложения:
| Инструмент | Что он возвращает |
|---|---|
get_design_context | Контекст дизайна для выбранного слоя или фрейма. Figma называет его точкой входа по умолчанию |
get_variable_defs | Переменные и стили, использованные в выделении: ваши цвета, отступы, шрифт |
get_screenshot | Изображение выделения, чтобы агент мог сравнить свой результат |
get_metadata | Разреженная XML-структура слоёв |
get_code_connect_map | Соответствия между компонентами Figma и вашими реальными компонентами кода |
create_design_system_rules | Промпт, который создаёт файл правил с описанием вашей дизайн-системы для агента |
Есть также запись инструменты (use_figma для создания и редактирования нативного контента Figma, generate_figma_design чтобы превращать работающий веб-интерфейс в слои Figma, и другое), но почти все они доступны только на удалённом сервере. Запомните это.
Удалённый сервер против настольного
Figma запускает две версии сервера:
- Удалённый сервер по адресу
https://mcp.figma.com/mcp. Figma рекомендует его, ему не нужно настольное приложение, он работает на любом месте и тарифе и имеет полный набор инструментов, включая запись на холст. - Настольный сервер по адресу
http://127.0.0.1:3845/mcp, который работает внутри настольного приложения Figma. Для него требуется место Dev или Full на платном тарифе, и он в основном только для чтения.
Загвоздка: OpenCode пока не разрешён на удалённом сервере
Во время беты удалённый сервер принимает только одобренные клиенты. В списке Figma есть, среди прочих, Claude Code, Codex, Cursor, VS Code, Gemini CLI, Kiro, Warp и Xcode. OpenCode в нём нет. Попробуйте подключиться — и этап регистрации завершится ошибкой HTTP 403.
Это не ошибка на стороне OpenCode. В мае сотрудник Figma объяснил на форуме Figma, что область подключения “намеренно ограничена поддерживаемыми клиентами, пока мы находимся в бете”, и направил людей к настольному серверу, который “полностью обходит проблему OAuth и белый список.” У команды OpenCode есть открытый pull request на добавление зарегистрированного клиента Figma, который на момент написания всё ещё ждёт одобрения Figma.
Вы найдёте посты, где предлагают позаимствовать OAuth client ID другого приложения, чтобы проскользнуть мимо белого списка. Не делайте так. Используйте настольный сервер и дождитесь официальной поддержки.
Показать изображение Три пути из Figma в OpenCode. Только один из них — тупик, и именно его Figma рекомендует всем остальным.
Настройка настольного сервера с OpenCode
- Установите настольное приложение Figma и войдите в аккаунт с местом Dev или Full на платном тарифе. На тарифе Professional место Dev стоит $12 в месяц, а место Full — $16.
- Откройте файл дизайна и переключитесь в Dev Mode с
Shift + D. - На панели инспектора найдите раздел MCP-сервер и нажмите Enable desktop MCP server.
- Добавьте его в OpenCode. Либо используйте
figma-desktopблок из конфигурации в части 4, либо выполните:
bash
opencode mcp add figma-desktop --url http://127.0.0.1:3845/mcp
Если OpenCode попытается запустить вход через OAuth для него, установите "oauth": false на сервере в opencode.jsonc. Настольный сервер локальный, и ему это не нужно. 5. Проверьте подключение командой opencode mcp list.
Держите настольное приложение Figma открытым во время работы. Если Figma закрыта, инструменты Figma у агента просто исчезают.
Учитывайте ограничения по частоте
На тарифе Professional места Dev и Full получают до 200 вызовов инструментов MCP в день и 10 в минуту. Места Organization получают 15 в минуту; Enterprise — 600 в день и 20 в минуту. Места View и Collab ограничены несколькими вызовами в месяц. Двести кажется большим числом, пока ретивый агент не начнёт обращаться get_screenshot после каждой мелкой правки, поэтому скажите ему в AGENTS.md сравнивать со скриншотом один раз на экран, а не один раз на изменение.
Работающий шаблон промпта
Выберите фрейм в Figma, затем в OpenCode:
Реализуйте выбранный фрейм Figma как экран Add Item. Сначала вызовите get_design_context и get_variable_defs. Используйте только токены из src/theme/tokens.ts; если значения не хватает, добавьте токен, а не прописывайте его жёстко. Переиспользуйте наши существующие компоненты Button, TextField и Card. Когда закончите, вызовите get_screenshot и перечислите все видимые различия между фреймом и тем, что вы построили. Затем исправьте их.
Две привычки делают это гораздо надёжнее:
- Запуск
create_design_system_rulesодин раз в начале проекта и сохраните результат как раздел вашего AGENTS.md или как навык в.opencode/skills/. С этого момента каждая сессия знает ваши правила дизайна без напоминаний. - Один фрейм на запрос. “Соберите всё приложение из этого файла” даёт целое приложение, которое немного неправильно везде. По одному экрану за раз — и экраны получаются правильными.
Нет платного места? Бесплатный путь
Всё это можно делать без MCP. M3.1 читает изображения, поэтому экспортируйте каждый фрейм в PNG с масштабом 2x, прикрепите его к промпту и вставьте значения цветов и отступов в tokens -файл в репозитории. Вы теряете точные данные слоёв и обращения к переменным, поэтому ожидайте больше итераций по отступам. Для первого приложения с шестью экранами это вполне работоспособно и ничего не стоит.
Часть 7 — Как создать приложение с нуля, фаза за фазой
Это часть “с нуля”. Семь этапов в том порядке, в котором я бы их делал, с промптами и ловушками.
Этап 0 — Выберите фреймворк
В 2026 году есть три разумных варианта, и правильный зависит от того, где должно работать ваше приложение.
| SwiftUI + Xcode 27 | Expo SDK 56 (React Native) | Flutter | |
|---|---|---|---|
| Работает на | iPhone, iPad, Mac, Apple Watch, Vision Pro | iPhone, iPad, Android, веб | iPhone, iPad, Android, веб, десктоп |
| Язык | Swift 6.4 | TypeScript | Dart |
| Нужен Mac? | Да | Не для сборки или отправки: сервис EAS от Expo собирает iOS-приложения в облаке | Да, для сборок iOS, если только вы не используете облачный CI |
| Виджеты | Нативный WidgetKit | Стабилен для iOS начиная с SDK 56 | Через плагины плюс нативный код WidgetKit |
| Удобство для агентов | Очень хорошо, особенно с собственными инструментами MCP в Xcode; компилятор Swift ловит многое | Очень хорошо: типы TypeScript, быстрая перезагрузка и огромное количество публичных примеров кода | Хорошо |
| Кому подходит | Приложения только для Apple, которым нужны все нативные функции | Одна кодовая база для iPhone и Android, которую делает один человек | Одинаковый интерфейс на всех платформах |
Моё практическое правило:
- Только Apple, и вам нужны новейшие игрушки платформы (ИИ-фреймворки Apple на устройстве, Live Activities, глубокая интеграция с системой): SwiftUI, а OpenCode работает внутри Xcode или использует инструменты Xcode (часть 4).
- iPhone и Android из одной кодовой базы, и вы один человек: Expo. SDK 56 вышел 21 мая 2026 года с React Native 0.85, поднял минимальную версию до iOS 16.4, довёл слой интерфейса для SwiftUI и Jetpack Compose до готовности к продакшену и перевёл iOS-виджеты в стабильный статус. Его сервис EAS собирает и отправляет iOS-приложения с Windows или Linux, а бесплатный тариф включает 15 сборок iOS и 15 сборок Android в месяц.
- Flutter если вы или ваша команда уже знаете его.
Страница Stash в App Store требует iOS 16.4, а её политика конфиденциальности уже учитывает сборку для Android, так что приложение явно задумано не только для iPhone.
Этап 1 — Каркас, коммит, бриф
Создайте пустой проект и убедитесь, что он запускается, прежде чем агент к нему притронется.
Expo:
bash
npx create-expo-app@latest my-app
cd my-app
npx expo start # open it on your phone with Expo Go, or in the iOS Simulator
SwiftUI: в Xcode выберите File → New → Project → iOS → App, выберите SwiftUI и запустите его один раз в симуляторе.
Затем добавьте файлы из части 4 (AGENTS.md и opencode.jsonc), плюс ещё два:
ROADMAP.md: список вертикальных срезов ниже, с флажками. Агент читает его, отмечает пункты, и вы всегда знаете, где находитесь.src/theme/tokens.ts(или аналог на Swift): ваши переменные Figma в виде кода. Скопируйте их вручную или позвольте агенту вытянуть их с помощьюget_variable_defs.
Сделайте коммит. Если Git ещё не настроен, git init сначала. С этого момента каждый рабочий шаг заканчивается коммитом.
Этап 2 — Спланируйте модель данных до экранов
Модель данных — решение, которое дороже всего менять позже, потому что когда у реальных пользователей появятся реальные данные, каждое изменение потребует миграции. Используйте план агента на полной мощности:
Вы планируете приложение “куда я это положил?”. Прочитайте AGENTS.md, ROADMAP.md и бриф. Предложите модель данных, подход к локальному хранению и структуру папок. Приложение должно полностью работать офлайн без аккаунта; аккаунты и синхронизация появятся позже и не должны требовать переписывания локального слоя. Перечислите компромиссы, миграции, которые понадобятся, если мы добавим синхронизацию позже, и всё неоднозначное в брифе. Пока не пишите код.
Для приложения вроде Stash у вас получится примерно так (иллюстрация, а не настоящая схема Stash):
ts
type Room = {
id: string;
name: string; // "Прихожая"
createdAt: number;
updatedAt: number;
};
type Item = {
id: string;
name: string; // "Ключи от дома"
roomId: string;
spot?: string; // "Верхний ящик"
note?: string; // "В керамической миске слева"
photoPath?: string; // сначала локальный файл; облачная копия только с аккаунтом
voiceNotePath?: string;
transcript?: string; // что делает голосовые заметки доступными для поиска
remindAt?: number; // сезонное напоминание
createdAt: number;
updatedAt: number; // используется для разрешения конфликтов синхронизации
deletedAt?: number; // мягкое удаление, чтобы удаления тоже могли синхронизироваться
};
Прочитайте план как следует. Поспорьте с ним. Это самый дешёвый момент во всём проекте, чтобы передумать.
Этап 3 — Стройте вертикальными срезами
Вертикальный срез — это одна функция, которая работает от начала до конца, от экрана до хранилища и обратно, прежде чем вы начнёте следующую. Вот в каком порядке я бы строил приложение вроде Stash:
- Добавление вещи: название, комната, место и заметка, сохранённые локально.
- Фотографии: камера и фотобиблиотека, хранение в локальных файлах.
- Главная: недавно сохранённые вещи и ряд комнат.
- Поиск: по названию, комнате и заметке, плюс фильтр “с фотографиями”.
- Карточка вещи и “Нашёл”.
- Комнаты: сетка, а также добавление, переименование и удаление комнат.
- Голосовые заметки: запись, расшифровка, поиск по расшифровке.
- Напоминания: локальные уведомления для сезонных вещей.
- Виджеты для домашнего экрана и экрана блокировки.
- Настройки: внешний вид, экспорт и, когда появятся аккаунты, удаление аккаунта.
- Аккаунты и синхронизация: материал для второй версии, если вы разумны.
Каждый срез идёт по одному и тому же циклу:
- План: этот
планагент пишет короткий план для среза. Вы его исправляете. - Дизайн: выберите фрейм Figma, затем используйте шаблон промпта из части 6.
- Сборка: этот
buildагент реализует, запускает тесты и исправляет то, что не проходит. - Запустите сами, на устройстве, и попробуйте его сломать.
- Прочитайте дифф. Каждую строку, которая попадёт в релиз.
- Коммит, отметьте пункт в ROADMAP.md и начните новую сессию для следующего среза.
Новая сессия важнее, чем кажется. Даже при миллионе токенов контекста длинная сессия накапливает устаревшие допущения. Чистый старт с повторным чтением AGENTS.md и ROADMAP.md часто умнее долгой сессии.
Этап 4 — Сначала офлайн, потом синхронизация
Политика конфиденциальности Stash описывает схему, которую я бы скопировал почти для любого личного приложения: без аккаунта всё остаётся на устройстве; с аккаунтом данные синхронизируются через бэкенд. Это делает первую версию проще, прохождение проверки App Review — легче, а доверие пользователей — крепче.
Порядок действий:
- Сначала сделайте локальный слой полноценным. SQLite через библиотеку Expo или SwiftData в нативном приложении. Фотографии и записи хранятся файлами на устройстве.
- Добавьте аккаунты с Firebase Authentication. Для начала достаточно входа по электронной почте. Если вы добавите Google или другой сторонний вход как основной способ входа, правило Apple 4.8 потребует равноценный вариант, ориентированный на конфиденциальность, например Sign in with Apple.
- Синхронизируйте записи о вещах с Cloud Firestore, а фотографии и голосовые заметки — с Cloud Storage, каждый по собственному пути пользователя.
- Выполняйте привилегированные операции на сервере. Всё, что требует прав администратора — например, удаление всех файлов при удалении аккаунта, — должно быть в Cloud Functions и никогда в сборке приложения.
- Закройте доступ правилами безопасности чтобы каждый пользователь мог читать и записывать только свои данные:
rules_version = '2';
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid}/{document=**} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
}
}
Напишите аналогичное правило для Cloud Storage и поручите агенту написать тесты, которые пытаются прочитать данные другого пользователя и должны провалиться. Официальный MCP-сервер Firebase (он есть в конфигурации из части 4) позволяет агенту понимать и проверять ваши правила, а перед любым изменением в проекте запрашивает ваше подтверждение. Развёртывание остаётся вашей задачей, поэтому firebase deploy запрещён в разрешениях.
Два замечания о деньгах. Бесплатный тариф Spark в Firebase покрывает Authentication (50 000 пользователей в месяц) и бесплатные квоты Firestore (1 GiB на диске, 50 000 чтений и 20 000 записей в день), но для Cloud Storage и Cloud Functions нужен тариф Blaze с оплатой по факту использования. В Blaze сохраняются щедрые бесплатные квоты, включая 5 ГБ хранилища и 2 млн вызовов функций в месяц, так что небольшое приложение всё ещё может ничего не стоить. Но в первый же день настройте оповещение о бюджете.
Если хотите глубже разобраться, “почему” в основе дизайна лежит local-first, я писал об этом в почему программы local-first снова в моде.
Часть 5 — Что специфично для iPhone
Вот детали, которые отделяют “у меня на телефоне работает” от “проходит проверку”:
- Запросы разрешений должны объяснять причину честно. Камера, медиатека, микрофон и — если вы используете речевой фреймворк Apple — распознавание речи требуют строки назначения, где точно сказано, зачем это нужно. “Чтобы сфотографировать, куда вы положили вещь” — хорошо. “Приложению нужен доступ” — классическая причина отказа.
- Спрашивайте в подходящий момент. Просите разрешение на уведомления, когда человек ставит первое напоминание, а не при первом запуске. Люди соглашаются, когда причина очевидна.
- Предпочитайте распознавание речи на устройстве там, где телефон это поддерживает, и укажите в политике конфиденциальности, что речевой сервис платформы может обрабатывать аудио. Политика Stash так и делает.
- Виджеты — это отдельное маленькое приложение. У них свой жизненный цикл, свои ограничения памяти и свой способ читать ваши данные. Заложите на них отдельный кусок времени.
- Манифесты конфиденциальности. С мая 2024 года приложения (включая входящие в них SDK) должны указывать одобренные причины использования некоторых системных API. SDK Firebase поставляются со своими манифестами; убедитесь, что ваш тоже есть.
- Тёмный режим, Dynamic Type, VoiceOver. Проверяйте все три на каждом экране. Агенты гораздо надёжнее делают метки доступности, когда AGENTS.md этого требует, — так и пропишите это требование.
Часть 6 — Тестируйте как скептик
Агент скажет вам, что всё готово. Часто он ошибается в мелочах, а иногда и в крупном. Агенты в Xcode 27 теперь сами запускают тесты и проверяют превью SwiftUI — это помогает, но ничто не заменит человека с телефоном.
Автоматически: юнит-тесты для поиска, модели данных и особенно логики слияния при синхронизации. Именно такие ошибки теряют данные людей.
Вручную, перед каждым релизом:
- Реальное устройство, а не только Simulator
- Режим полёта: сохраните, найдите, отредактируйте, затем восстановите связь и проверьте, что синхронизация прошла
- Тёмный режим и максимальный размер текста на каждом экране
- VoiceOver: сможете ли вы сохранить и найти вещь с закрытыми глазами?
- Каждое разрешение запрещено по очереди
- Чистая установка и обновление поверх предыдущей версии (данные должны сохраниться)
- Удаление аккаунта: действительно ли всё исчезло?
Когда что-то ломается, запишите это. Включите запись экрана на iPhone, приложите видео и спросите M3.1, что не так. Он принимает видео на вход, и “посмотрите это” лучше трёх абзацев описания.
Шаблоны промптов для такого приложения
Адаптируйте их, а не копируйте вслепую.
Срез:
Реализуйте срез 4 из ROADMAP.md (поиск). Сначала прочитайте AGENTS.md. Поиск должен совпадать с названиями предметов, названиями комнат, заметками и расшифровками голосовых заметок без учёта регистра по мере ввода. Добавьте фильтр “С фото”. Сначала напишите юнит-тесты, затем реализацию. Запустите тесты и проверку типов. Покажите мне дифф и список всех сделанных допущений.
Ошибка:
Во вложении запись экрана. На iPhone с максимальным размером текста клавиатура закрывает кнопку «Сохранить» на экране добавления. Найдите причину, объясните её в двух предложениях, исправьте и проверьте другие формы в приложении на ту же проблему.
Ревью:
Проверьте все изменения с момента последнего коммита как скептичный старший iOS-ревьюер. Ищите падения, потерю данных, утечки приватности, отсутствующие метки доступности, жёстко заданные цвета и всё, что ломает офлайн-работу. Пока ничего не исправляйте; дайте нумерованный список, начиная с самого серьёзного.
Этот последний промпт стоит запускать перед каждым коммитом. Он занимает минуту и ловит проблемы, которые стоят выходных.
Часть 8 — Как опубликовать приложение в App Store в 2026 году
Создавать приложение — интересная часть. Публикация — это бумажная работа, и именно на ней разработчики-новички теряют неделю. Вот всё это в одном месте.
Что требует Apple по состоянию на октябрь 2026 года
| Требование | Подробности | Действует с |
|---|---|---|
| Apple Developer Program | $99 в год (€99 в Германии). Компании регистрируются как организация, для этого нужен номер D-U-N-S | — |
| Инструменты сборки | Загрузки должны быть собраны с помощью Xcode 26 или новее с использованием SDK iOS 26 | 28 апреля 2026 |
| Минимальная целевая версия | Приложения должны поддерживать iOS 13 или новее | 9 сентября 2026 |
| Возрастной рейтинг | Ответьте на обновлённые вопросы Apple о возрастном рейтинге | 31 января 2026 |
| Манифест конфиденциальности | Одобренные причины для API “required reason”, в том числе в сторонних SDK | 1 мая 2024 |
| Политика конфиденциальности | Ссылка в App Store Connect и доступна внутри приложения (правило 5.1.1(i)) | — |
| Удаление аккаунта | “Если ваше приложение поддерживает создание аккаунта, вы также должны предложить удаление аккаунта внутри приложения” (5.1.1(v)) | — |
| Статус трейдера в ЕС | Его указывает каждый разработчик. Адрес, телефон и электронная почта трейдеров отображаются на странице продукта во всех 27 странах ЕС | — |
Сейчас у Apple актуальны Xcode 27 и iOS 27, обе выпущены 14 сентября 2026 года. Собирать в Xcode 27 пока не обязательно, но загрузить что-либо, собранное в Xcode 16 или старше, уже нельзя (Apple перескочила с Xcode 16 сразу на 26, когда перешла на версии по году выпуска).
Замечание для разработчиков из Германии и ЕС: если вы публикуете приложение как бизнес, вы трейдер по Закону ЕС о цифровых услугах, и Apple проверяет ваши контактные данные, прежде чем показывать их на странице продукта. В феврале 2025 года Apple убрала тысячи приложений из магазинов ЕС из-за отсутствия этой информации. Не станьте одним из них.
App Store Connect, поле за полем
Создайте запись приложения в App Store Connect, затем заполните:
- Bundle ID. Идентификатор в обратном доменном формате, который никогда не меняется. Например, у Stash:
network.grahammiranda.stash. Выбирайте его внимательно. - Название (30 символов) и подзаголовок (30). Stash использует Stash — Find It Fast и Находите всё, что убрали: бренд плюс польза, затем та же польза простыми словами.
- Ключевые слова (100 символов), через запятую без пробелов. Не повторяйте слова, которые уже есть в названии или подзаголовке; они всё равно учитываются.
- Промотекст (170 символов), его можно менять без новой проверки, и описание (4,000).
- Скриншоты. От одного до десяти на каждый размер устройства, PNG или JPEG, без прозрачности. Для iPhone — размер 6,9 дюйма (1320 × 2868) или 6,5 дюйма (1284 × 2778); для iPad — 13 дюймов (2064 × 2752). В наборе Stash используются размеры 6,5 и 13 дюймов.
- Категория. Основная и необязательная дополнительная. У Stash основная категория — Productivity, вторая — Utilities.
- URL-адреса. Поддержка, маркетинг и политика конфиденциальности. Все они должны работать.
- Конфиденциальность приложения, “этикетка питания”. Подробнее об этом ниже, потому что именно здесь честные люди всё ещё ошибаются.
- Возрастной рейтинг опросник.
- Информация для проверки приложения: контактные данные, заметки для проверяющего и, если в приложении требуется вход, демонстрационный аккаунт. Гостевой режим, как в Stash, облегчает жизнь проверяющему.
- Соответствие требованиям экспорта. Если приложение использует только шифрование, встроенное в операционную систему, например HTTPS, оно обычно подпадает под исключение. Сверьтесь с указаниями Apple, затем установите
ITSAppUsesNonExemptEncryptionв вашем Info.plist, чтобы вас не спрашивали при каждой загрузке.
Текстовые поля — тоже хорошая работа для агента: “Составьте подзаголовок, ключевые слова, промотекст и описание для App Store. Используйте только функции, которые есть в коде; укажите файл, где находится каждая функция.” Последняя инструкция не даёт ему выдумывать функции.
Сначала TestFlight
Загрузите сборку (из Organizer в Xcode или с помощью eas build --platform ios --auto-submit в Expo) и сначала проверьте её через TestFlight:
- Внутренние тестировщики: до 100 человек из вашей команды, проверка не нужна.
- Внешние тестировщики: до 10 000, приглашённых по электронной почте или по публичной ссылке. Первая внешняя сборка проходит короткую проверку Beta App Review.
- Сборки остаются доступными для тестирования 90 дней.
Дайте её на неделю пяти друзьям — с разными телефонами — и они найдут то падение, которое не нашли вы.
Что на самом деле приводит к отклонению приложений
Apple утверждает, что “в среднем 90% заявок проверяются менее чем за 24 часа”, и что “более 40% нерешённых проблем связаны с правилом 2.1: App Completeness”: падения, контент-заглушки, неполная информация и нерабочие ссылки. Обычные подозреваемые для первого приложения:
| Правило | Что это значит на практике |
|---|---|
| 2.1 App Completeness | Без падений, без “Lorem ipsum”, без нерабочих ссылок; данные демо-аккаунта, если требуется вход |
| 4.2 Minimum Functionality | “Приложение должно включать функции, контент и интерфейс, которые поднимают его выше переупакованного сайта” |
| 4.8 Login Services | Если вход через третью сторону — основной способ входа, вы также должны предложить вариант с упором на конфиденциальность, например Sign in with Apple |
| 5.1.1(i) Privacy policy | Ссылка в App Store Connect и внутри приложения; указывает, какие данные вы собираете, кто их обрабатывает и как работает удаление |
| 5.1.1(v) Account deletion | Если люди могут создать аккаунт, они могут удалить его в приложении |
| Точные метаданные | Скриншоты и описания показывают, что на самом деле делает сборка, а не планы на будущее |
Stash держит свои дизайнерские эксперименты на сайте, с чёткими пометками, и не выносит их на страницу App Store — и это правильная сторона этой границы.
Ярлыки конфиденциальности: сделайте их верными, а не просто правдоподобными
Определение Apple точное: “‘Сбор’ означает передачу данных за пределы устройства так, что вы и/или ваши сторонние партнёры получаете к ним доступ дольше, чем необходимо для обслуживания переданного запроса в режиме реального времени.” Данные, обрабатываемые только на устройстве, не собираются.
На практике для приложения вроде Stash:
- Только гостевой режим (ничего не покидает телефон): данные не собираются.
- Аккаунты с синхронизацией: адрес электронной почты, фотографии, голосовые записи и заметки, хранящиеся на вашем бэкенде собираются , потому что они покидают устройство и остаются на сервере, хотя видеть их может только пользователь. Они попадают в ярлык как данные, связанные с пользователем, используемые для работы приложения и не используемые для отслеживания.
Агент здесь отличный аудитор, потому что он может прочитать каждый сетевой вызов в кодовой базе:
Проверьте эту кодовую базу на все данные, которые покидают устройство: что это, куда они уходят (какой SDK или эндпоинт), хранятся ли они, как долго и связаны ли они с пользователем. Включите данные, отправляемые сторонними SDK. Выведите таблицу, которую я смогу использовать для заполнения вопросов App Privacy в Apple и формы Data safety в Google Play.
Затем убедитесь, что три документа рассказывают одну и ту же историю: ваша политика конфиденциальности, ярлык конфиденциальности в App Store и, если вы выпускаете приложение на Android, форма Data safety в Google Play. В политике конфиденциальности Stash сказано, что её таблица данных составлена в соответствии с обеими декларациями магазинов — это правильный стандарт, которого стоит держаться.
Показать изображение Распечатайте его, повесьте рядом с экраном и отмечайте пункты перед каждой первой отправкой.
Как Stash вышел в свет
Stash 1.0 вышел 23 сентября 2026 года. Версия 1.0.1 с “Новый дизайн и исправления ошибок”, вышла 2 октября, девять дней спустя. Выпускайте версию, которая работает, и улучшайте её публично: это самый здоровый ритм для первого приложения, какой я знаю.
Часть 9 — “И прочее”: комплект для запуска вокруг приложения
Приложение в App Store без ничего вокруг — это магазин без вывески. Вот остальной набор, снова на примере Stash.
Лендинг с демо, которое можно потрогать
Сайт Stash делает несколько вещей, которые я бы повторил в любом первом приложении:
- Одно обещание на первом экране. “Уберите. И знайте, где.” Затем одно предложение и две кнопки: получить приложение или попробовать его в браузере.
- Живой предпросмотр в верхнем блоке. Телефон справа — не картинка. По нему можно нажимать.
- Настоящее демо в браузере. A пример главного экрана где можно искать ключи, просматривать комнаты и добавить тестовую вещь. Демо “работает во вкладке браузера”, не трогает данные приложения и забывает всё при перезагрузке. Оно позволяет попробовать идею до того, как человек решится на установку.
- Три шага, четыре функции, без жаргона. Сфотографируйте место. Дайте ему имя и комнату. Найдите, когда понадобится.
- Дизайн-эксперименты, ясно обозначенные как концепции, а не функции.
- Десять языков (английский, немецкий, французский, испанский, итальянский, нидерландский, бразильский португальский, польский, шведский и датский), каждый с правильными
hreflang-тегами, чтобы поисковые системы показывали нужную версию, плюс переключатель светлого и тёмного оформления. - Структурированные данные описывающие приложение как
MobileApplication, с ценой, платформами и ссылкой на App Store, чтобы поисковые системы понимали, что страница посвящена приложению. - Ничего подозрительного. В коде сайта нет аналитики, рекламных пикселей, встроенных соцсетей, внешних шрифтов, входа в аккаунт и контактной формы. Он хранит в вашем браузере только выбранные язык и оформление.
Показать изображение Лендинг Stash. Телефон справа — работающее демо, а не скриншот.
Такая статическая страница — ещё и идеальный первый проект для той же связки OpenCode и M3.1: чистые HTML, CSS и немного JavaScript, без фреймворка, и каждое изменение сразу видно в браузере.
Юридические страницы, если вы в Германии или ЕС
Это общая информация от того, кто через это прошёл, а не юридическая консультация. Если сомневаетесь, спросите юриста.
Публикация из Германии означает несколько дополнительных страниц, о которых не расскажет американское руководство:
- Impressum (выходные данные) по § 5 Digitale-Dienste-Gesetz (DDG) — немецкого закона, который в 2024 году заменил прежний Telemediengesetz: название компании, адрес, управляющий директор, запись в реестре, контактные данные и, если он есть, номер НДС (VAT ID).
- Два отдельных текста о конфиденциальности. Один для сайта и один для приложения, потому что они обрабатывают разные данные. У Stash есть оба, и в каждом ясно сказано, какой из них вы читаете.
- Политика конфиденциальности приложения с реальным содержанием. Политика Stash охватывает оператора, таблицу с точным перечнем того, что собирается и зачем, правовое основание для каждой цели по статье 6 GDPR, участвующих обработчиков (Firebase от Google), то, как регулируются международные передачи (Рамочная программа ЕС–США по защите данных и стандартные договорные условия), хранение и удаление, права пользователей, ответственный надзорный орган, детей, безопасность и порядок объявления об изменениях.
- Способ удалить аккаунт вне приложения. Stash предлагает веб-форму в дополнение к варианту в приложении. Google Play требует веб-ссылку для удаления аккаунта, если ваше приложение позволяет создавать аккаунты, так что она понадобится вам в тот день, когда вы выпустите версию для Android.
- Условия обработки данных с вашим провайдером бэкенда, принятые в его консоли до поступления реальных пользовательских данных.
Файлы cookie — вторая классическая головная боль. Сайт Stash обходит большую часть проблемы тем, что ему не о чем спрашивать согласие: никакой аналитики, никаких рекламных пикселей, никакого отслеживания — только запомненные язык и тема. Самый дешёвый баннер согласия — тот, который вам никогда не понадобится.

Оптимизация в App Store без шарлатанства
Поиск в App Store работает по названию, подзаголовку и ключевым словам, а решение люди принимают за секунды — по иконке и первым скриншотам. Несколько правил, которые работают:
- Название: бренд плюс польза. “Stash — Find It Fast” сразу говорит постороннему, для чего нужно приложение.
- Скриншоты рассказывают историю — по порядку. Шесть скриншотов Stash читаются как короткая реклама: У каждой вещи есть место. Найдите его. За секунды. Сохраните место. Ваш дом. Комната за комнатой. Помните мелочи. Ясно. При любом свете. Многие не пролистывают дальше первых двух-трёх, поэтому основной цикл должен быть именно там.
- Локализуйте страницу приложения на всех языках, которые приложение действительно поддерживает.
- Просите оценку в удачный момент. Запрос оценки от Apple может появляться не чаще трёх раз в год для одного пользователя, поэтому не тратьте его на первый запуск. В приложении вроде Stash очевидный момент — сразу после того, как человек нажимает “Found it”.
- Используйте промо-текст для сезонов. Весенняя уборка, переезд, уборка зимних вещей. Он меняется без новой проверки.
Android, когда будете готовы
Если вы собирали на Expo или Flutter, до Android — в основном одна сборка. Бумажная работа проще, но другая:
- Google Play берёт $25 один раз за открытие аккаунта разработчика.
- Новые личные аккаунты (созданные после 13 ноября 2023 года) должны провести закрытое тестирование с участием не менее 12 тестировщиков, которые участвуют в нём 14 дней подряд, прежде чем смогут опубликовать приложение. Аккаунты организаций освобождены от этого, и это ещё один повод публиковать через компанию, если она у вас есть.
- Форма безопасности данных — это версия метки конфиденциальности от Google. Держите её согласованной с политикой конфиденциальности и ответами в App Store.
Часть 10 — Сколько стоит создать приложение с помощью ИИ в 2026 году
Программное обеспечение в этом стеке в основном бесплатное. Платить приходится за модель, членство Apple и, по желанию, за более продвинутый тариф Figma.
| Позиция | Цена по прайс-листу | Когда нужно |
|---|---|---|
| Apple Developer Program | $99 в год (€99 в Германии) | Чтобы вообще публиковаться в App Store |
| OpenCode v2 | Бесплатно, лицензия MIT | Всегда |
| MiniMax M Plan | Go $22, Explore $55, Build $132 в месяц (скидка 50% на первый месяц при месячной оплате до 14 октября) | Чтобы пользоваться M3.1-Flash-Preview |
| Figma | Starter бесплатно; Professional с лицензией Dev — $12 в месяц, Full — $16 | Платная лицензия нужна только для настольного MCP-сервера |
| Xcode | Бесплатно | Нативные сборки на Mac с Apple silicon |
| Expo EAS | Бесплатный тариф: 15 сборок iOS и 15 сборок Android в месяц; Starter — $19 в месяц | Если собираете на Expo |
| Firebase | Бесплатный тариф Spark; Blaze — оплата по факту использования с бесплатными квотами | Аккаунты и синхронизация; для Storage и Functions нужен Blaze |
| Google Play | $25 один раз | Только если выпускаете приложение на Android |
| Лендинг | Сколько стоят ваш хостинг и домен | Настоятельно рекомендуется |
Три реалистичных бюджета на первый год
| Бюджет | Что в него входит | Первый год |
|---|---|---|
| Экономный | Членство Apple + M Plan Go; Figma Starter с экспортированными фреймами; Expo, Firebase и OpenCode на бесплатных тарифах | $363 |
| Комфортный | Экономный + лицензия Figma Dev для настольного MCP-сервера + Google Play | $532 |
| Power | Apple + M Plan Explore + лицензия Figma Full + Expo Starter + Google Play | $1,204 |
Показать изображение Подписка на модель — самая крупная строка в любом бюджете. Взнос Apple — единственный, который обойти нельзя.
Цены по прайс-листу в долларах США на 5 октября 2026 года, без учёта НДС, по полным месячным ставкам (без скидок за запуск). Счёт за бэкенд зависит от числа пользователей; при небольшом масштабе бесплатных квот Firebase обычно хватает. Уведомление о бюджете всё равно настройте.
Экономный бюджет выходит примерно в $30 в месяц. Но настоящая цена проекта не в таблице: это ваши вечера. ИИ сокращает набор текста, а не размышления, а именно они занимают большую часть времени.
Часть 11 — Десять ошибок, которых стоит избежать при создании первого приложения с ИИ
- Начинать с кода вместо технического задания. Агент с удовольствием очень быстро соберёт не то приложение.
- Строить всё сразу. “Сделай всё приложение” даёт целое приложение, которое немного сломано везде. Стройте вертикальными срезами.
- Пропускать AGENTS.md. Без него каждая сессия начинается с нуля, и агент заново решает то, что вы уже решили.
- Позволять агенту свободно добавлять зависимости. Каждый пакет — это код, который вы не читали, лишний размер приложения и будущее обновление, за которым нужно следить. Заставьте его спрашивать.
- Хардкодить цвета и размеры. Тогда изменение дизайна означает правку 140 файлов. Токены, всегда токены.
- Верить в “готово”. Агенты оптимистично сообщают об успехе. Запустите приложение на настоящем телефоне, в авиарежиме, в тёмной теме, с самым крупным размером текста.
- Хранить секреты в приложении. Всё, что лежит внутри пакета приложения, можно извлечь. API-ключи, которые стоят денег или дают административный доступ, живут на сервере.
- Метка конфиденциальности, которая правдоподобна, а не точна. Если данные покидают устройство и остаются на сервере, они собираются — даже когда видеть их может только сам пользователь.
- Забыть про удаление аккаунта. Apple требует это в приложении, если вы разрешаете регистрацию; Google Play требует ещё и ссылку в вебе.
- Обещать то, что в планах. Скриншоты и описания показывают, что приложение делает сегодня. Концепции — на вашем сайте, с пометкой, что это концепции.
И ещё одна на всякий случай: не читать дифф. Вайб-кодинг значит не писать каждую строку. Он не значит не читать строки, которые уходят в релиз. Цифры по безопасности в моём Состояние ИИ 2026 обзоре — как раз поэтому.
Часть 12 — Стоит ли использовать именно этот стек? Шесть сценариев
1. “Я никогда не писал ни строчки кода.”
Expo, настольное приложение OpenCode, M3.1 на тарифе Go плана M Plan и бесплатный план Figma с экспортированными фреймами. Ограничьте первое приложение одним основным циклом, как «сохрани и найди» в Stash. Команды оболочки оставьте в режиме «спрашивать», делайте коммит после каждого рабочего шага и пользуйтесь /undo без угрызений совести.
2. “Мне нужен только iPhone, и полностью нативный.”
SwiftUI в Xcode 27: OpenCode либо внутри Xcode через ACP, либо в терминале с инструментами MCP от Xcode. M3.1 для планирования и сборки. Вы первыми получите доступ к новейшим фреймворкам Apple и самую тесную интеграцию с системой.
3. “Я уже плачу за Claude или ChatGPT.”
Используйте то, что есть, и честно оценивайте, где это выигрывает. Claude Code, Codex и Cursor сегодня входят в список одобренных клиентов удалённого MCP-сервера Figma, включая инструменты записи на холст, до которых OpenCode пока не дотягивается. OpenCode умеет входить напрямую с ChatGPT Plus или Pro. Подключите M3.1 через OpenCode для задач, где блещут его контекст на миллион токенов и приём видео.
4. “Мне нужен самый дешёвый старт.”
MiniMax M3 вместо M3.1 (через OpenCode Go за $10 в месяц или с оплатой по факту), Figma Starter, бесплатные сборки Expo и бесплатный план Firebase. Членство Apple за $99 — единственная трата, которой не избежать для приложения под iPhone. Если вы к этому не готовы, сначала сделайте веб-версию.
5. “Моё приложение работает с чувствительными данными.”
Сначала проектируйте гостевой режим, сводите сторонние SDK к минимуму и подумайте также о том, куда уходит ваш код. Ваши промпты и исходный код уходят провайдеру модели. Для особо чувствительных проектов локальные модели через Ollama оставляют всё на вашей машине (моя статья об OpenCode v2 описывает такую настройку), а перед запуском дайте специалисту по конфиденциальности проверить приложение.
6. “Я делаю приложения для клиентов.”
План Figma Organization с Code Connect, политики OpenCode, чтобы контролировать, каких провайдеров может использовать проект каждого клиента, уровень M Plan с запасом на несколько параллельных агентов и платные сборки EAS. Складывайте правила дизайна каждого клиента в навык, лежащий в репозитории, или в AGENTS.md, чтобы каждая сессия и каждый коллега начинали с одних и тех же правил.
Часть 13 — За чем следить в ближайшие месяцы
- Полная версия M3.1 от MiniMax. Выйдет ли она, получит ли цену за токены, опубликованные бенчмарки и открытые веса, как у M3, и доберётся ли Flash-превью до OpenRouter, OpenCode Go или Ollama Cloud.
- OpenCode в белом списке Figma. Пул-реквест OpenCode с регистрацией клиента Figma ждёт решения Figma. Когда он пройдёт, инструменты записи удалённого сервера откроются для пользователей OpenCode.
- Цены Figma на запись в холст. Figma говорит, что в бете эти функции бесплатны, а позже станут оплачиваться по факту использования.
- Figma Code Layers, показанные на Config и обещающие дизайн и код на одном холсте.
- Взросление OpenCode v2: возвращение общего доступа к сессиям, подтягивание плагинов и успокоение релизов 2.0.x.
- Следующий дедлайн Apple по SDK. Если Apple следует своему обычному шаблону, сборки на Xcode 27 станут обязательными для загрузки примерно следующей весной.
- Сам Stash. Три дизайнерских эксперимента на его сайте (точная метка места, Quick Move, коробки и ярлыки) показывают, куда движутся идеи.
Часто задаваемые вопросы
Можно ли создать приложение с нуля без опыта программирования?
Да. В 2026 году ИИ-агент для кодинга вроде OpenCode вместе с сильной моделью вроде MiniMax M3.1 пишет код, а вы принимаете решения: что приложение делает, как выглядит, какие данные хранит и как вы его проверяете. Вам всё равно придётся научиться читать план, просматривать дифф, тестировать на реальном устройстве и разбираться с App Store Connect. Начните с приложения, у которого один основной цикл и нет платежей.
Сколько времени занимает создание приложения с ИИ?
Это куда больше зависит от объёма, чем от инструментов. Маленькое приложение с одним основным циклом, вроде «сохрани и найди», — это вопрос недель вечеров, а не месяцев, если строить вертикальными срезами и проверять по ходу. Публикация добавляет несколько дней на TestFlight и бумаги для App Store; Apple говорит, что 90% заявок проверяют меньше чем за 24 часа.
Что такое MiniMax M3.1?
MiniMax M3.1 — следующее поколение семейства моделей M3 от MiniMax. По состоянию на октябрь 2026 года единственная доступная версия — MiniMax-M3.1-Flash-Preview, выпущенная 27 сентября 2026 года: мультимодальная модель для кодинга с контекстным окном на 1 000 000 токенов, вводом текста, изображений и видео, постоянно включённым размышлением и пятью уровнями усилий от низкого до максимального. Она доступна только по подписке M Plan от MiniMax и в приложении MiniMax Code.
Доступна ли MiniMax M3.1 через API?
Только с ключом подписки. M3.1-Flash-Preview работает на совместимых с OpenAI и Anthropic эндпоинтах MiniMax, но только с ключом подписки M Plan. Оплаты по факту использования нет, открытых весов нет, и в OpenRouter, Ollama Cloud или OpenCode Go её пока нет. MiniMax M3 по-прежнему доступна с оплатой по факту: $0,30 за миллион входных токенов и $1,20 за миллион выходных.
Как пользоваться MiniMax M3.1 в OpenCode?
Установите OpenCode v2, запустите его в папке проекта, выполните /connect, выберите “MiniMax Token Plan (minimax.io)” и вставьте ключ подписки M Plan. Затем выполните /models и выберите MiniMax-M3.1-Flash-Preview. Конфигурационный файл не нужен, хотя opencode.jsonc позволяет задавать уровни усилий для каждого агента и добавлять разрешения.
Работает ли MCP-сервер Figma с OpenCode?
Частично. Удалённый MCP-сервер Figma во время беты принимает только одобренные клиенты, а OpenCode в списке пока нет, поэтому подключение падает с HTTP 403. Настольный MCP-сервер Figma работает: включите его в Dev Mode в настольном приложении Figma и укажите OpenCode на http://127.0.0.1:3845/mcp. Для него нужна лицензия Dev или Full на платном плане, и он предлагает в основном инструменты только для чтения.
Нужен ли Mac, чтобы сделать приложение для iPhone?
Не обязательно. Нативная разработка в Xcode требует Mac, а Xcode 27 требует Apple silicon. С Expo сборку iOS-приложения делает EAS в облаке, а EAS Submit загружает его в App Store Connect с macOS, Windows или Linux. iPhone для тестов вам всё равно понадобится, а для публикации нужно членство в Apple Developer Program.
Сколько стоит опубликовать приложение в App Store?
Apple Developer Program стоит $99 в год или эквивалент в местной валюте (€99 в Германии). Apple не берёт денег за приложение или за отправку на проверку. Расходы на сборку зависят от инструментов; экономный набор из этого руководства обходится примерно в $363 за первый год, включая подписку MiniMax M Plan, при бесплатных тарифах OpenCode, Figma, Expo и Firebase.
Сколько длится проверка в App Store?
Apple говорит, что в среднем 90% заявок проверяют меньше чем за 24 часа. Самая частая причина задержек — правило 2.1, полнота приложения: падения, контент-заглушки, неполные сведения для проверки и битые ссылки, включая URL поддержки и политики конфиденциальности.
Что выбрать: SwiftUI, React Native (Expo) или Flutter?
Берите SwiftUI с Xcode 27, если приложение только для Apple и вам нужны новейшие возможности платформы. Берите Expo (React Native), если вам нужна одна кодовая база для iPhone и Android и вы работаете один: SDK 56 поддерживает iOS 16.4 и новее, имеет стабильные виджеты iOS и умеет собирать в облаке. Берите Flutter, если вы или ваша команда уже знаете Dart.
Чем отличается MiniMax M3 от M3.1?
MiniMax M3, выпущенная 1 июня 2026 года, общедоступна: открытые веса, опубликованные бенчмарки и цена за токены, работает у многих провайдеров. M3.1-Flash-Preview, выпущенная 27 сентября 2026 года, — превью только по подписке, без весов, цены и бенчмарков, с постоянно включённым размышлением и пятью уровнями усилий. У обеих контекст на 1 млн токенов и приём текста, изображений и видео.
Что такое Stash?
Stash — Find It Fast — бесплатное приложение для iPhone и iPad от Graham Miranda UG, которое помнит, куда вы что положили. Вы фотографируете место, даёте вещи имя и комнату, а потом ищете её по имени, комнате, заметке или расшифрованной голосовой заметке. Ещё есть напоминания о сезонных вещах, виджеты, работа без сети и синхронизация между iPhone и iPad. Приложение вышло в App Store 23 сентября 2026 года.
Собирает ли Stash мои данные?
В Stash нет рекламы, нет аналитического отслеживания, и она не продаёт данные. В гостевом режиме, без аккаунта, ваши комнаты, вещи, фотографии и голосовые заметки остаются на устройстве. Если вы создадите аккаунт, они синхронизируются через Google Firebase, чтобы быть доступными на iPhone и iPad, изолированно от других пользователей, а удалить аккаунт и данные можно в настройках или через веб-форму.
Итог
Создать приложение с нуля в 2026 году — уже не вопрос, умеете ли вы писать код. Агент вроде OpenCode v2 с моделью вроде MiniMax M3.1 напишет за вечер больше кода, чем вы прочитаете за неделю. Настоящая работа сместилась к краям: решить, чем приложение является, спроектировать его достаточно аккуратно, чтобы агент не понял его неправильно, проверить его скептически и сделать неблагодарную бумажную работу, которая превращает папку проекта в то, что посторонний человек может скачать.
Стек из этого руководства — тот, который я порекомендовал бы сегодня. Figma — для решений, которые видно. OpenCode v2 — потому что он открытый, скриптуемый, аккуратен с разрешениями и не привязан к одной модели. MiniMax M3.1 — потому что миллион токенов контекста и ввод видео необычно хорошо подходят для сборки приложений, если относиться к превью как к превью. И вся «рутина» (Firebase, TestFlight, метки конфиденциальности, лендинг, юридические страницы) — потому что именно с ней сталкиваются пользователи.
Stash — это как это выглядит, когда доходит до релиза: одно небольшое обещание, сдержанное хорошо. Скачайте Stash в App Store, или попробуйте демо в браузере сначала. А потом идите и делайте своё.
Строите своё первое приложение с ИИ? Мне интересно узнать, какой фреймворк вы выбрали, удалось ли вам подружить MCP-сервер Figma с вашим агентом и как вам MiniMax M3.1. Поправки и контрпримеры приветствуются; статья обновляется, когда картина меняется.
Раскрытие информации: Stash — моё собственное приложение, его выпускает моя компания Graham Miranda UG. Оно бесплатное, без рекламы и без встроенных покупок. В этой статье нет партнёрских ссылок, и ни одна из упомянутых компаний не спонсировала и не проверяла её до публикации.
Последнее обновление: 5 октября 2026 года.



