Как Siri AI в iOS 27 вызывает приложения? App Intents, агенты, JSON и автоматизация
Пользователь говорит «найди A-1042». Тому, кто пишет JSON, вопрос не в том, умеет ли Siri болтать, а в том, станет ли фраза законным параметром Intent и выполнит ли ваше приложение побочный эффект в perform(). Этот текст разделяет App Intents, AI-агента, данные JSON и автоматическое выполнение.
Перед чтением
| Понятие | Одной строкой | Где живёт |
|---|---|---|
| App Intents | Действие, которое приложение регистрирует в системе | perform() + объект параметров |
| Siri AI | Диспетчер, который заполняет Intent из фразы | Только диспетчеризация — без побочных эффектов |
| AI Agent | Многошаговый цикл инструментов: предложить, выполнить, прочитать | LanguageModelSession + Intents |
| JSON Schema | Диаметр выполнения для параметров и состояния | Исходный файл в репозитории, не сноска Swift |
Сначала разделение: Siri доставляет объект, App Intents — дверь, агент — цикл, Schema — ворота перед execute. Сплющить четвёрку в «Siri открыла приложение» — и следующий шаг будет парсить прозу.
Сначала правильно спросить про «вызов приложения»
Сентябрь 2026. iOS 27 уже идёт с линейкой iPhone 18. Программный диаметр задан на WWDC 2026: Siri пересобрана на LLM, SiriKit устарел, вход для третьих сторон — только App Intents. насколько силён ИИ iPhone 18 спрашивал, насколько силён стек. Этот текст спрашивает одно — как Siri вызывает ваше приложение.
Если «вызвать приложение» значит «открыть интерфейс и прочитать абзац», вы спроектируете не то. Система слышит фразу, выбирает имя Intent, заполняет объект параметров и отдаёт его хост-perform(). Интерфейс может остаться закрытым.
- Пользователь говорит на естественном языке. Система должна отдать объект.
- Siri — диспетчер. Поиск заказа, возврат и почта по-прежнему в вашем приложении.
- Многошаговая автоматизация — не ещё одно окно чата. Это несколько законных вызовов Intent.
Поэтому гид идёт по пути выполнения: дверь → параметры → цикл агента → ворота Schema → Shortcuts / Spotlight. На каждом шаге один вопрос: объект законен?
Цепочка вызова: как фраза становится perform()
Старая Siri сопоставляла фразы и SiriKit. Новая Siri заполняет слоты: «A-1042», «верни это», «верни, если оплачено» становятся полями и попадают в уже зарегистрированный Intent.
Успешный вызов проходит минимум четыре шага:
- Услышать. На устройстве или в Private Cloud Compute речь / текст становятся намерением — не журналом чата.
- Выбрать кого. Система берёт имя из видимых App Intents. Нет регистрации — нет очереди.
- Заполнить. Сущности, виды на экране и индекс Spotlight сжимаются в объект параметров.
- Хост выполняет. Ваш
perform()делает побочный эффект и возвращает структурированный результат.
В JSON шаг LookupOrder выглядит примерно так:
{
"intent": "LookupOrder",
"app": "com.example.shop",
"source": "siri",
"parameters": {
"order_id": "A-1042"
}
}
source может быть siri, shortcut, spotlight или agent. Разные двери — одна форма объекта. Открыть UI — это представление, не сам вызов.
App Intents: единственная дверь, которую видит новая Siri
После WWDC 2026 новая Siri не видит приложение, которое не говорит на App Intents. У SiriKit есть окно миграции на два-три года, но новые возможности садятся только на Intents. Фразы пробуждения, свой словарь и старые файлы intent definition больше не главный путь.
Для системы Intent — диспетчеризуемый инструмент: имя, типы параметров, нужна ли подтверждение, открывается ли UI, к какой области относится. Siri, Shortcuts, Spotlight и агент на устройстве делят один каталог.
- Intent Schema: системные области (задачи, фото, связь, коммерция). Совпасть с областью — и Siri не нужна ваша замороженная фраза.
- Entity Schema: заказы, контакты и файлы попадают в семантический индекс Spotlight; личный контекст возвращается с атрибуцией.
- View Annotations: пометить видимый View как сущность, чтобы у «верни вот это» было к чему привязаться — без второго вопроса про ID.
- App Intents Testing: гонять Siri / Shortcuts / Spotlight по настоящим системным путям. Тестируете объекты, не слоганы.
Вы пишете AppIntent на Swift; система видит вызываемое описание. полный гид по AI Agent рисует «модель предлагает, хост выполняет». На iOS предложение часто приходит от Siri; выполнение всегда в вашем perform().
Открыть приложение — лишь одно представление. Поиск, смена состояния и передача между приложениями могут закончиться в фоне — если параметры законны и вы объявили подтверждение для разрушительных действий.
Параметры — объект JSON, а не фраза пробуждения
Старый путь считал естественный язык строкой поиска. Новый путь считает его заполнением формы. Если поле лежит прозой, perform() парсит снова — преимущество диспетчеризации потеряно.
У каждого Intent должен быть JSON Schema. Тип Swift — проекция. @Generable, облачные Structured Outputs, набор оценок и не-Swift-клиенты должны указывать на один источник.
Минимальный контракт LookupOrder может выглядеть так:
{
"$id": "https://example.com/schemas/intents/lookup-order.json",
"type": "object",
"properties": {
"intent": { "const": "LookupOrder" },
"parameters": {
"type": "object",
"properties": {
"order_id": { "type": "string", "pattern": "^A-[0-9]{4,}$" }
},
"required": ["order_id"],
"additionalProperties": false
}
},
"required": ["intent", "parameters"]
}
Ключевые слова — в учебник JSON Schema. Короткие имена свойств, жёсткий enum, массивы с maximumCount. зачем ИИ нужен JSON Schema уже писал: Schema — диаметр, а не фраза «пожалуйста, верни JSON».
Ошибочное заполнение Siri, устаревшая сущность или лишний ключ всё равно попадут в вашу функцию. Сжать объявление Intent, затем снова проверить тем же Schema перед execute. Отладка: форматирование, вытащить order_id через извлечение JSONPath, JSON Diff с объектом прошлой недели. Не клеить заказы пользователей на публичный сайт.
AI-агенты: автоматизация — цикл, а не один Intent
Пользователю редко нужен один шаг. «Найди A-1042 и верни, если оплачено» требует сначала LookupOrder, затем решения запустить CreateRefund. Это агент: предложить, выполнить, прочитать, предложить снова.
В стеке Apple цикл живёт в LanguageModelSession. Инструменты часто — App Intents или системные OCR / Spotlight. Каркас совпадает с облачным Function Calling: модель отдаёт имя и аргументы; хост проверяет и выполняет.
- Каталог по умолчанию — Intent'ы, которые видит система, а не длинный
tools[], который вы ведёте сами. - Вход и выход каждого шага — объекты. Проза со скриншота не может быть следующим параметром.
- PCC около 32K. Результаты инструментов съедают окно первыми. Обрезать до сессии.
- Цепочки между приложениями разрешены. На каждом шаге всё равно нужны законные параметры и своя политика подтверждения.
{
"agent": "on_device",
"goal": "refund_if_paid",
"plan": [
{
"step": 1,
"tool": "LookupOrder",
"arguments": { "order_id": "A-1042" }
},
{
"step": 2,
"tool": "CreateRefund",
"arguments": { "order_id": "A-1042", "reason": "duplicate" }
}
]
}
Минимальный план «верни, если оплачено» похож на блок выше. Модель может предложить шаг 2; хост пропустить нельзя. Если status не paid, amount вне диапазона или нет подтверждения, CreateRefund не должен выполняться. AI-агенты и поток JSON Schema — как выстроить ворота; MCP Tool Schema vs Function Calling — другое написание JSON инструментов. Apple пишет тот же словарь как App Intents.
Не пишите Siri и агент одним словом. Siri решает, кого вызвать. Агент решает, какой инструмент следующий. Оба передают объект как эстафету.
Schema — ворота перед execute, не приложение к документу
Guided Generation останавливает незаконные токены. Авторизацию, лимиты и второе подтверждение она не делает. Параметры, которые заполнила Siri, всё ещё могут потерять поле, взять неверный enum или указать на устаревшую сущность.
Сплющить четыре слоя в «Siri стала умнее» — и роли пропадают. Разделить:
| Слой | Что делает система | Без Schema |
|---|---|---|
| Siri AI | Превращает фразу в вызов Intent | Проза попадает в perform(); побочный эффект стартует |
| App Intents | Регистрирует вызываемые действия в системе | Новая Siri вас не видит; старые фразы не спасут |
| AI Agent | Вызывает инструменты несколько шагов в сессии | Состояние угадывают из лога чата; следующий шаг вяжет не тот объект |
| JSON Schema | Ничего не делает — это линейка | Если линейка живёт только в макросе Swift, облако и CI не измерят |
После успешного lookup состояние автоматизации тоже должно быть объектом, а не фразой «нашли»:
{
"automation": "refund_if_paid",
"trigger": "siri",
"state": {
"order_id": "A-1042",
"status": "paid",
"amount": 99.00
},
"next": {
"intent": "CreateRefund",
"allowed": true
}
}
allowed должен посчитать хост по Schema и бизнес-правилам. Модель может сказать «предлагаю возврат». Сама писать allowed: true она не имеет права.
Автоматическое выполнение: Shortcuts, Spotlight и между приложениями
Автоматизация в iOS 27 — не другой API. Это разные двери на одном каталоге Intent.
- Shortcuts — визуальный планировщик. Каждый тайл по-прежнему Intent; каждая передача по-прежнему объект параметров.
- Spotlight семантический индекс возвращает сущности, не веб-сниппеты. «Тот заказ с прошлой недели» должен разрешиться в
order_id. - Между приложениями цепочки допустимы, но каждая сторона проверяет свой
perform(). Не кормить следующий шаг прозой другой стороны. - Разрушительные действия подтверждать. Возврат, удаление, исходящая отправка: объявить политику подтверждения. Вернуть структурированный результат, не одно «OK».
Один и тот же LookupOrder можно сказать вслух, нажать на холсте Shortcuts или взять как инструмент агента. Schema у вас одна.
Если автоматизация упала, сначала смотрите объект: нет required, enum не из списка, сущность устарела. Не начинайте с переписывания фраз пробуждения.
Как выпускать в 2026
- Держать в репозитории
schemas/intents/иschemas/state/со стабильным$idи версией. - Писать JSON Schema до
AppIntent/@Generable. Тип — проекция, не источник. - Побочные эффекты (поиск, возврат, почта) — через Intent. Извлечение, сортировка, handoff — через Guided Generation.
- Новые объекты по умолчанию с
additionalProperties: falseи явнымenum. Для расширения — отдельныйmetadata. - Объявить подтверждение для возврата, удаления и исходящей отправки. Нелегальные параметры — в App Intents Testing, не только счастливый путь.
- Секреты и пользовательские поля смотреть только в браузере: форматирование, JSON Diff, без загрузки.
Каталог может быть тонким. Важно файлы раньше демо. Формулировки Siri изменятся. Диаметр должен стабилизироваться первым.
Частые ошибки
- Считать Siri AI ChatGPT. Она доставляет Intent. Побочные эффекты не выполняет и законность параметров не гарантирует.
- Опираться на фразы пробуждения без App Intents. Новая Siri вас не видит.
- Не проверять, потому что Siri уже заполнила поля. Пропавшие ключи, плохие enum и устаревшие сущности всё равно доходят до
perform(). - Писать только типы Swift, без JSON-источника. Облачное API, оценки и клиенты на других языках разъедутся.
- Широкий
type: object, чтобы не проектировать. Открытый объект — не ворота. Версионируйте или добавьте явныйmetadata.
FAQ
Может ли Siri в iOS 27 вызвать моё приложение без App Intents?
Новая Siri — нет. SiriKit ещё в окне миграции, но диспетчеризация на естественном языке, сущности на экране и многошаговые агенты видят только App Intents. Чтобы вас вызвали, зарегистрируйте действие и параметры.
Siri уже заполнила параметры. Всё равно проверять?
Да. Siri — диспетчер. Пропавшие поля, плохие enum и устаревшие сущности всё ещё могут дойти до вашего perform(). Сожмите объявление Intent и ещё раз проверьте тот же Schema перед execute.
Shortcuts и Siri — два API?
Нет. Они читают один каталог Intent. Разница в двери: голос, холст Shortcuts или цикл агента. Форма объекта должна совпадать.
Может ли агент на устройстве сам писать в базу?
Нет. Модель может только предложить имя и аргументы. Смена состояния, возврат и почта должны пройти через хост-perform() и вашу политику подтверждения.
Как смотреть этот JSON локально?
Отформатировать, сверить Schema на пропавший required или плохой enum, затем Diff с последней прошедшей версией. JSONSort делает это в браузере и ничего не загружает. Не клеите заказы и контакты на публичный сайт.
Вывод
В iOS 27 «Siri AI вызывает приложение» — это не открытие чата. Это превратить фразу в законный параметр Intent, дать хосту выполнить и при необходимости войти в многошаговый цикл агента.
App Intents — дверь, агент — цикл, JSON Schema — ворота перед execute. Сначала положите schemas/intents/lookup-order.json в репозиторий. Потом решайте, какие формулировки достойны демо.
Дальше читать
- Насколько силён ИИ iPhone 18 Apple Intelligence, Siri AI и агенты на устройстве
- Что такое AI Agent? Tool Calling и JSON Рантайм, вызовы инструментов и JSON-контракт
- Зачем ИИ нужен JSON Schema Structured Outputs, Function Calling и контракт
- AI-агенты и поток JSON Schema От Tool Calling к структурным воротам
- Локальный ящик JSONSort Формат, проверка, Diff
- Все статьи Ещё заметки про JSON и ИИ
Журнал: первая публикация