iOS 27 Siri AI 如何调用 App?App Intents、AI Agent、JSON 数据与自动化执行完整指南
用户说「帮我查一下 A-1042」。对写 JSON 的人,问题不是 Siri 会不会聊天,而是:这句话会不会变成一份合法的 Intent 参数,你的 App 会不会在 perform() 里执行副作用。本文把 App Intents、AI Agent、JSON 数据 和自动化执行拆开。
阅读前速览
| 概念 | 一句话 | 落在哪 |
|---|---|---|
| App Intents | App 向系统登记的可调用动作 | perform() + 参数对象 |
| Siri AI | 把一句话填进 Intent 的调度员 | 只调度,不执行副作用 |
| AI Agent | 多步工具循环:提议、执行、再读 | LanguageModelSession + Intents |
| JSON Schema | 参数与状态的运行时口径 | 仓库里的源文件,不是 Swift 附录 |
先记住分工:Siri 投递对象,App Intents 是入口,Agent 是循环,Schema 是执行前门禁。把四者写成「Siri 打开了 App」,下一跳就会在 parse 散文。
先把「调用 App」问对
2026 年 9 月,iOS 27 已经随 iPhone 18 系列出货。软件口径在 WWDC 2026 就定了:新 Siri 用 LLM 重建,SiriKit 弃用,第三方入口只剩 App Intents。iPhone 18 的 AI 到底有多强 写过「有多强」;本文只写一件事——Siri 怎么调用你的 App。
「调用 App」如果理解成「打开界面、念一段说明」,你会设计错。系统真正做的是:听懂一句话,选出 Intent 名,填好参数对象,交给宿主的 perform()。界面可开可不开。
- 用户说的是自然语言。系统交出来的必须是对象。
- Siri 是调度员。查单、退款、发信仍在你的 App。
- 多步自动化不是再开一个聊天窗口,而是多次合法的 Intent 调用。
所以这篇指南按执行路径写:入口 → 参数 → Agent 循环 → Schema 门禁 → Shortcuts / Spotlight。每一步都问同一句:对象合法吗?
调用链:一句话如何变成 perform()
旧 Siri 靠短语匹配和 SiriKit。新 Siri 靠填槽:把「A-1042」「退掉这个」「付过就退」写成字段,再投递给已经登记的 Intent。
一次成功的调用,最少经过四跳:
- 听懂。设备端或 Private Cloud Compute 把语音 / 文字收成意图,而不是一段聊天记录。
- 选谁。系统在能看见的 App Intents 目录里挑名字。没登记,就轮不到你。
- 填参。实体、屏幕上的 View、Spotlight 索引,都被压进参数对象。
- 宿主执行。你的
perform()跑副作用,再把结构化结果交回系统。
落到 JSON,LookupOrder 这一跳接近这样:
{
"intent": "LookupOrder",
"app": "com.example.shop",
"source": "siri",
"parameters": {
"order_id": "A-1042"
}
}
source 可以是 siri、shortcut、spotlight、agent。入口不同,对象形状应当相同。打开界面只是一种呈现,不是调用本身。
App Intents:新 Siri 能看见的唯一入口
WWDC 2026 之后,没讲 App Intents 的 App,新 Siri 看不见。SiriKit 有两到三年迁移窗口,但新能力只加在 Intents 上。唤醒词、自定义短语、旧的 intent definition 文件,不再是主路径。
对系统来说,一个 Intent 就是一条可调度的工具:名字、参数类型、是否需要确认、是否打开 UI、属于哪个领域。Siri、Shortcuts、Spotlight、设备端 Agent,共用这一张目录。
- Intent Schema:系统预置领域(任务、照片、通讯、商务)。对齐领域后,Siri 不必背你的唤醒词。
- Entity Schema:订单、联系人、文件进入 Spotlight 语义索引,个人上下文带回来源归属。
- View Annotations:把眼前的 View 标成实体。「把这个退掉」才有绑定对象,而不是再问一遍 ID。
- App Intents Testing:走真实系统路径测 Siri / Shortcuts / Spotlight。测的是对象,不是广告词。
你在 Swift 里写 AppIntent,系统看到的是一份可调用描述。AI Agent 完整指南 把「模型提议、宿主执行」画进循环;在 iOS 上,提议往往来自 Siri,执行永远在你的 perform()。
打开 App 只是一种呈现。查单、改状态、跨 App 接力,都可以在后台完成——前提是参数合法,并且你声明了破坏性动作是否需要确认。
参数是 JSON 对象,不是一句唤醒词
旧路径把自然语言当成检索词。新路径把自然语言当成填表。字段一旦写成散文,perform() 只能再 parse 一次,等于把调度优势丢掉。
每个 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。AI 为什么需要 JSON Schema 写过:Schema 是口径,不是 prompt 里的「请返回 JSON」。
Siri 填错、实体过期、多出键,都会进你的函数。Intent 声明收紧,执行前再用同一份 Schema 校验。调试时先 格式化 看结构,用 JSONPath 提取 抽出 order_id,和上周能过的对象 JSON Diff。不要把用户订单贴到公共站点。
AI Agent:自动化不是一次 Intent,而是一个循环
用户很少只做一步。「查一下 A-1042,付过就退」需要先 LookupOrder,再决定 CreateRefund。这就是 Agent:提议、执行、读结果、再提议。
Apple 栈上的循环发生在 LanguageModelSession 里,工具常常就是 App Intents,或系统自带的 OCR / Spotlight。骨架和云端 Function Calling 相同:模型只发名字和参数,宿主校验并执行。
- 工具目录默认是系统能看见的 Intent,不是你自己维护的
tools[]长名单。 - 每一步的输入输出都是对象。截图散文不能当下一跳的参数。
- PCC 约 32K,工具结果先吃窗口。先裁再进 session。
- 跨 App 串联可以,每一步仍要合法参数和各自的确认策略。
{
"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" }
}
]
}
一次「付过就退」的最小计划,形状接近上面。模型可以提议 step 2,但不能跳过宿主。status 不是 paid、amount 越界、缺少确认,CreateRefund 就不该执行。AI Agent 与 JSON Schema 工作流 写门禁怎么排;MCP Tool Schema vs Function Calling 是另一套工具 JSON 写法。Apple 用 App Intents 表达同一本字典。
不要把 Siri 和 Agent 写成同一个词。Siri 决定「调用谁」;Agent 决定「下一步调哪个」。两者都把对象当接力棒。
Schema 是执行前的门禁,不是文档附录
Guided Generation 挡住非法 token;它不替你做权限、限额和二次确认。Siri 填好的参数,仍然可能缺字段、枚举写错、实体过期。
把四层压成「Siri 变聪明了」,职责就丢了。拆开之后:
| 层 | 系统在做什么 | 没有 Schema 会怎样 |
|---|---|---|
| Siri AI | 把一句话变成 Intent 调用 | 散文进 perform(),副作用先跑起来 |
| App Intents | 向系统登记可调用动作 | 新 Siri 看不见你;旧短语救不了你 |
| AI Agent | 在 session 里多步调用工具 | 状态从聊天记录猜;下一步接错对象 |
| 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 和跨 App
iOS 27 上的自动化,不是另一套 API。它是同一张 Intent 目录上的不同入口。
- Shortcuts 是可视化的规划器。每一步拖的仍是 Intent,交出的仍是参数对象。
- Spotlight 语义索引返回实体,不是网页摘要。「上周那笔订单」必须能解析成
order_id。 - 跨 App 可以串,但每一方自己校验
perform()。不要把对方的散文结果直接当下一跳参数。 - 破坏性动作要确认。退款、删除、对外发送,声明确认策略;结构化返回结果,不要只回「OK」。
同一条 LookupOrder,用户可以用嘴说,可以在快捷指令里点,也可以被 Agent 当作工具。你只维护一份 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 填好了就不校验。 缺字段、错误枚举、过期实体仍会到达
perform()。 - 只在 Swift 里写类型,不保留 JSON 源。 云端 API、评测和跨语言客户端很快会对不上。
- 用宽
type: object逃避设计。 开放对象不是门禁。真要扩展,用版本号或显式metadata。
FAQ
没有写 App Intents,iOS 27 的 Siri 还能调用我的 App 吗?
新 Siri 不能。SiriKit 还在迁移窗口里,但新的自然语言调度、屏幕实体、多步 Agent,都只认 App Intents。想被调用,先登记动作和参数。
Siri 已经填好参数,还要校验吗?
要。Siri 是调度员。缺字段、错误枚举、过期实体仍可能到达你的 perform()。Intent 声明收紧,执行前再用同一份 Schema 验一次。
Shortcuts 和 Siri 是两套 API 吗?
不是。它们读同一张 Intent 目录。差别在入口:嘴、快捷指令画布,或 Agent 循环。对象形状应当相同。
设备端 Agent 能直接改数据库吗?
不能。模型只许提议名字和参数。改状态、退款、发信必须经过宿主的 perform(),并受你的确认策略约束。
这些 JSON 怎么在本地看?
先格式化看结构,对照 Schema 找缺的 required 或错的 enum,再和上一版能过的对象 Diff。JSONSort 在浏览器本地做这些事,不上传数据。不要把订单或通讯录贴到公共站点。
结论
iOS 27 里,Siri AI「调用 App」不是打开一个聊天界面。它是:把一句话变成合法的 Intent 参数,交给宿主执行,必要时再进入多步 Agent 循环。
App Intents 是入口,Agent 是循环,JSON Schema 是执行前门禁。先把 schemas/intents/lookup-order.json 写进仓库,再决定哪些话术值得演示。
延伸阅读
- iPhone 18 的 AI 到底有多强 Apple Intelligence、Siri AI 与设备端 Agent
- AI Agent 是什么?Tool Calling 与 JSON 运行时、工具调用与 JSON 契约
- AI 为什么需要 JSON Schema Structured Output、Function Calling 与契约
- AI Agent 与 JSON Schema 工作流 从 Tool Calling 到结构化门禁
- JSONSort 本地工具箱 格式化、校验、Diff
- 全部文章 更多 JSON 与 AI 开发笔记
更新记录: 首次发布