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 開發筆記
更新紀錄: 首次發布