截至 2026 年 9 月 14 日,iOS 27 已随秋季系统窗口落地。所谓「iOS 27 AI App」,不是再包一层云端聊天窗口,而是两条官方主线:用 Foundation Models 在 App 内生成、规划、调用工具;用 App Intents 把同一套能力交给 Siri AI、Spotlight 与快捷指令。先定闭环,再选模型——设备端、Private Cloud Compute、第三方 LLM 都走同一套 Swift API,但上架、隐私与地区可用性并不相同。
先对齐:iOS 27 AI App 到底在做什么
很多团队把「AI App」理解成:加一个输入框,把用户句子转发到 OpenAI / Gemini,再把回复贴回界面。这条路在 iOS 27 仍然能走,但已经不是苹果希望你交付的形态。WWDC 2026 的开发者叙事很明确:系统模型、Siri AI 与第三方模型,都应该通过 Foundation Models 的统一会话进入 App;用户在锁屏、Siri、屏幕内容上发起的动作,则必须经过 App Intents,而不是再维护一套 SiriKit。
用产品语言说:Foundation Models 负责「想清楚」——把自然语言变成结构化草稿、调用你的 Tool、在本地和云端模型之间切换。App Intents 负责「做出来」——创建任务、打开实体、改一笔记录,并让 Siri AI 能指着屏幕说「第三个」。两条线缺一不可。只做聊天,Siri 看不见你;只做 Intent、没有会话层,App 内的规划、摘要、多轮改稿会立刻变脆。
这也是本文和站内消费向文章的分界。功能清单、收费分层请看Apple Intelligence 免费与付费区别;Mac 上 Siri 能做什么见macOS 27 Siri AI 功能详解。下面只谈开发流程:从工程选型到一条可演示、可测试、可提审的闭环。
开工前:Xcode 27、设备分层与地区
先把环境钉死,再写第一行 import FoundationModels。iOS 27 SDK 随 Xcode 27 发布;模拟器能跑通会话骨架,但 Private Cloud Compute、真机工具调用次数与语音相关能力,经常和真机 / 地区不一致。苹果在 iOS 27 发行说明里写过:模拟器上 PCC 可能不可用,设备端模型在「工具调用 + 引导生成」组合下也可能过度调 Tool。这些不是边角,而是你排期时必须留的缓冲。
设备不要按「能不能装 iOS 27」来规划 AI 功能。iPhone 11 及更新机能升级系统,但 Apple Intelligence / 设备端 Foundation Models 仍从 iPhone 15 Pro / iPhone 16 一代起算;更强的设备端模型(常见说法是 AFM 3 Core Advanced,影响表现力语音与高精度听写)主要落在 iPhone 17 Pro / Air 这一档。iPad 侧大致是 M1 起用 Apple Intelligence,更新的设备端模型要更高内存的 M 系列。开发决策应写成三张表,而不是一句「最低 iOS 27」:
| 档位 | 典型设备 | 开发上能承诺什么 |
|---|---|---|
| 系统能装,无 Apple Intelligence | iPhone 11–15(非 Pro) | 不要把 AI 当主路径;给降级文案或云端自建 |
| 标准 Apple Intelligence | iPhone 15 Pro、16 全系 | 设备端会话、基础 Siri AI、多数 App Intents |
| 满血设备端模型 | iPhone 17 Pro / Air 等 | 可测高级语音与更重的本地推理,勿写成全量用户必达 |
地区是第二道闸。Siri AI 与部分系统级能力在中国大陆、欧盟等地仍可能受账号、语言、监管进度限制。大陆团队常见做法是:业务闭环用自己的模型或已合规的云服务,同时把 App Intents 与 Foundation Models 会话写成可开关模块,等系统能力开放再打开系统路由。不要在 App Store 截图里写「全程 Siri AI」,却只在美区账号下录过屏。
构建机方面,Xcode 27 与旧版稳定构建不建议挤在同一台日常笔记本上。beta / GM 并行时,把回归机和尝鲜机拆开,能少掉一半「昨天还能编、今天证书和模拟器抢路径」的事故。拆分思路可对照Xcode beta 与正式 Runner 分离。
Foundation Models:一条 API,三种落点
iOS 26 引入的 Foundation Models,在 iOS 27 被苹果扩成统一的原生 Swift API:设备端模型可吃图像输入,会话可指向服务器模型,也能挂自定义 Skills。官方新闻稿见 Apple Newsroom(2026-06)。对工程团队,真正要选的不是「要不要上 AI」,而是这一次推理落在哪。
| 落点 | 典型类型 | 适合做什么 | 别用来做什么 |
|---|---|---|---|
| 设备端 | SystemLanguageModel | 摘要、改写、表单抽取、短规划、离线草稿 | 超长文档、要联网检索的开放问答 |
| 苹果云端 | Private Cloud Compute 模型 | 更重推理、需要服务器模型但不想自建密钥 | 必须 100% 自有 VPC 审计的数据 |
| 第三方 / 自研 | 实现 LanguageModel + LanguageModelExecutor | Claude、Gemini、自建 MLX / Core AI | 把 API Key 写进客户端初始化器 |
iOS 27 的关键变化是:换模型不必换会话写法。苹果把第三方接入收成公开协议,WWDC26 session Bring an LLM provider to the Foundation Models framework 要求提供方用 Swift Package 分发,Executor 负责把 Transcript 翻成自己的消息格式,并处理 prewarm、流式输出与 KV cache。App 侧仍然是 LanguageModelSession。
成本上也有新杠杆:参加 App Store Small Business Program、累计首次下载低于 200 万的开发者,使用跑在 Private Cloud Compute 上的新一代 Apple Foundation Models 时,可以免云端 API 费用(以苹果当期条款为准)。这不是「无限免费推理」,而是把「试一把苹果服务器模型」的门槛压下来。超过门槛或要用 Claude / Gemini,就按提供商账单走。
第一步:LanguageModelSession 与结构化输出
会话对象是整条链路的起点。文档见 LanguageModelSession:一次会话维护一份 Transcript,超窗会抛 LanguageModelError.contextSizeExceeded。生产代码里不要每次按发送都 new 一个会话,也不要无限追加——规划阶段用短会话,执行阶段另开,比「一个上帝会话聊到底」稳得多。
import FoundationModels
@Generable
struct TaskDraft {
@Guide(description: "不超过 20 字的任务标题")
var title: String
@Guide(description: "ISO-8601 截止日期;用户没提就写 none")
var dueISO8601: String
var priority: Priority
}
@Generable
enum Priority {
case low, normal, high
}
let session = LanguageModelSession {
"""
你是待办 App 里的规划助手。
只产出 TaskDraft。禁止编造用户没提到的日历事件。
"""
}
let response = try await session.respond(
generating: TaskDraft.self,
to: Prompt("明天下午三点前交周报,标高优先级")
)
let draft = response.content
这一步的产品意义大于语法意义:@Generable 把模型从「会聊天」变成「能填表」。后面无论是写进 SwiftData、丢给 App Intent,还是再喂给下一轮规划,你拿到的都是类型,而不是要再解析一遍的 Markdown。iOS 27 发行说明也提醒过:@Generable 用在 enum 上可能冒出压不掉的 GenerationError 警告——看到警告先对照发行说明,不要误判成业务逻辑坏了。
图像输入按官方能力用在「收据解析、货架识别、屏幕内物体」这类任务,而不是把相册整库塞进上下文。会话超窗时,优先截断工具回传和旧轮次,而不是截断当前用户那一句。
第二步:工具、Skills 与 Dynamic Profiles
有了结构化输出,下一步是让模型能动你的业务,而不是只吐 JSON。Foundation Models 的 Tool 协议和 App Intent 不是自动同一件事:Tool 给会话用,Intent 给系统用。可以让 Tool 内部调用同一套 Store,但不要假设「写了 Intent,模型就看得到」。
iOS 27 为多阶段 Agent 加了 Dynamic Profiles。WWDC26 session Build agentic app experiences 的示范很具体:同一条会话在「头脑风暴 / 规划 / 审阅」之间切换时,profile 可以换模型、温度和推理深度——例如规划走 PCC + 更深 reasoning,审阅退回设备端模型以控制延迟和费用。profile 体会在每次 prompt 时重算,所以不要在 body 里做重 I/O。
enum PlanPhase { case brainstorm, plan, review }
func makeProfile(_ phase: PlanPhase) -> LanguageModelSession.DynamicProfile {
LanguageModelSession.DynamicProfile {
switch phase {
case .brainstorm, .plan:
return .init(model: .privateCloudCompute, tools: [SearchNotesTool(), ListCalendarTool()])
case .review:
return .init(model: SystemLanguageModel.default, tools: [ValidateDraftTool()])
}
}
}
性能上有两条容易踩的坑。第一,改写历史会打爆 KV cache,延迟立刻上去;能 append 就不要重写 Transcript。第二,设备端模型在「工具 + 引导生成」组合下可能连打 Tool,要用次数上限和「同一 Tool 连续失败就停」兜底。苹果提供了 Foundation Models Instrument 和评测框架,上线前至少用 20–30 条真实用户说法做回归,而不是只录一条发布会同款 demo。
Skills(自定义技能)适合把「公司内部口径、禁用词、领域词典」从 prompt 字符串里拆出去,便于运营改、便于按地区开关。不要把 Skills 当成第二个后端:它仍然跑在会话边界内,权限与日志要和 Tool 同一套审计。
第三步:App Intents 交给 Siri AI
App Intents 不是「 Shortcuts 小功能」,而是 iOS 27 里Siri 进入第三方 App 的唯一正门。苹果在 WWDC 2026 把 SiriKit 标成弃用,并给了大约两到三年的兼容窗口。还在用旧 Intent Extension 的团队,迁移优先级应高于「再调一调聊天文案」。协议与参数解析见 AppIntent。
iOS 27 这一代 Intents 要刻意用上的能力包括:系统 schema(打开、创建、搜索等常见动作尽量对齐,而不是全自创标题)、屏幕感知(让 Siri 能解析「这个」「第三个」)、流式 / 长任务结果,以及多轮补参。实体要能被 Spotlight 索引时,再考虑 IndexedEntity 与屏幕标注;视觉智能搜图则走 SemanticContentDescriptor + IntentValueQuery,不要硬塞进 LanguageModelSession。
import AppIntents
struct CreateTaskIntent: AppIntent {
static var title: LocalizedStringResource = "创建任务"
static var description = IntentDescription("把一件待办写入 App。")
@Parameter(title: "标题")
var title: String
@Parameter(title: "优先级")
var priority: String?
func perform() async throws -> some IntentResult & ProvidesDialog {
try await TaskStore.shared.create(title: title, priority: priority ?? "normal")
return .result(dialog: "已创建:\(title)")
}
}
写 Intent 时把「人话」和「机器契约」分开:title / description 给 Siri 和快捷指令画廊看;perform() 只做幂等、可审计的写入。需要用户确认的破坏性动作,显式要确认,不要让模型会话直接静默调用。参数解析失败时,让系统再问一句,比你在 dialog 里塞一段模型自由发挥更安全。
把模型接到 Intent:一条可上架闭环
到这里可以把两条线接起来。推荐的默认架构是模型只产草稿,Intent 才提交:
- 用户在 App 内说话 / 打字,或从 Siri 带一句自然语言进来。
LanguageModelSession产出@Generable草稿,必要时先走 Tool 读日历、笔记、库存。- UI 展示草稿,用户点确认——或对低风险动作设自动确认阈值。
- 构造对应
AppIntent并perform(),同一套 Store 也服务快捷指令与 Spotlight。 - 把执行结果写回 Transcript(工具输出),供下一轮改稿,而不是另起炉灶。
func commit(_ draft: TaskDraft) async throws {
var intent = CreateTaskIntent()
intent.title = draft.title
intent.priority = String(describing: draft.priority)
_ = try await intent.perform()
}
为什么不让 Tool 直接写库?因为 App Review、快捷指令画廊、Siri 建议和你自己的撤销栈,都更认 Intent 这条路径。模型幻觉写错截止日期时,你还可以在 UI 拦一层;如果 Tool 已经静默插入十条提醒,客服成本会高一个数量级。
跨模型切换放在 profile / session 工厂里,不要散落在 View。地区开关也放这里:大陆包可以默认走你已合规的第三方 LanguageModel,美区 / 日韩包优先设备端 + PCC。同一套 Intent 保持不变,用户从 Siri 进来时仍然打到 CreateTaskIntent。
测试、隐私与上架清单
AI 功能比普通 CRUD 更容易在审核和客服处翻车。发布前至少过一遍下面这张表:
| 检查项 | 怎么验 | 不通过就不要当 GA |
|---|---|---|
| 无 Intelligence 设备 | iPhone 15 非 Pro 或关闭 AI 的模拟档 | 主路径空白 / 崩溃 |
| PCC 不可用 | 模拟器、飞行模式、未登录 | 无限转圈,无降级 |
| 地区 / 语言 | 大陆 Apple ID、欧盟账号、仅中文系统 | 文案承诺了系统 Siri 却不可用 |
| 幻觉写入 | 模糊指令 + 诱导编造截止日期 | 未确认就写入日历 / 付款 |
| Intent 迁移 | 旧 SiriKit 路径仍能编过 | 只靠警告「以后再说」 |
| 密钥 | 包内搜索 sk- / Gemini key | 第三方模型 Key 打进 IPA |
隐私话术要和实现一致。设备端推理可以强调「默认不出网」;一旦走 PCC 或第三方,设置页必须写清。第三方提供方文档要求凭证进钥匙串,并考虑 App Attest,不要在 Session 初始化里塞裸 Key。日志只留草稿 schema 与 Intent 标识,不要把完整 Transcript 默认上传到自己的分析后台。
审核材料准备三样:一段 30 秒的「说话 → 草稿 → 确认 → 列表出现」屏幕录制(系统语言与截图地区一致);一份「无 AI 设备上的降级说明」;一张模型落点表(设备端 / PCC / 第三方)。消费者侧的 Siri 能力边界,可再对照WWDC 2026 Siri AI 解读,避免市场部文案跑到工程能力前面。
团队若还在用个人 Mac 跑 Xcode 27、真机矩阵和夜间回归,编排成本会很快超过模型本身。把稳定构建和 Agent 评测放到一台常开的 Apple Silicon 上,比每人升级一台满血笔记本更可控。
在云端 Mac mini 上把 iOS 27 AI 闭环跑稳
Foundation Models 的会话、模拟器、真机代理和 Xcode 27 工具链都吃内存与磁盘,还要求机器别休眠。Nuvcloud 云端 Mac mini 是独享 Apple Silicon 裸金属:统一内存适合并行编译与本地评测,SSH 常在,可按天开一台专门跑 iOS 27 SDK,而不必和设计稿、会议软件抢同一台办公本。
若你正在把 LanguageModelSession 和 App Intents 接成日更回归,先看 Nuvcloud 套餐与节点,让构建机和评测机 24/7 在线,把「笔记本合盖会话就断」从关键路径上拿掉。
延伸阅读
常见问题
不会 Swift 能做 iOS 27 AI App 吗?
系统级 Foundation Models 与 App Intents 的主路径是 Swift。跨平台壳可以继续用 Flutter / RN 做 UI,但会话、Tool 和 Intent 建议放在原生模块。否则 Siri AI 与设备端模型基本接不上。
Foundation Models 和直接调 ChatGPT API 有何区别?
前者是系统会话 API:可走设备端、PCC 或按协议接入的第三方,并和 Tool / 结构化输出、系统隐私提示对齐。后者是你自己的网络请求,灵活但拿不到设备端模型和系统级 Siri 分发,密钥与审核也要自己扛。
App Intents 会自动变成模型 Tool 吗?
不会。Intent 面向 Siri、快捷指令和系统建议;Tool 面向 LanguageModelSession。应让两边调用同一 Store,而不是指望框架自动桥接。
中国大陆现在能用系统 Foundation Models 吗?
以设备、系统语言和 Apple ID 地区为准,大陆 iPhone 上系统 Apple Intelligence / Siri AI 仍可能不可用。工程上应把系统模型做成可开关,并准备已合规的第三方 LanguageModel 实现,避免主路径空白。
必须上 Private Cloud Compute 吗?
不是。短摘要、表单抽取、本地草稿优先设备端。只有设备端质量不够、且你接受苹果 PCC 边界时再升级。小企业计划在符合条件时可能免除 PCC 的云 API 费用,仍须核对当期条款。
SiriKit 还能用多久?
WWDC 2026 已弃用,业界普遍按两到三年兼容窗口规划。新功能不要再加 SiriKit;存量路径应排进 iOS 27 迭代,而不是等编译警告变成硬错误。
模拟器测过就能提审吗?
不能当唯一证据。PCC、部分工具调用和语音相关能力在模拟器上与真机不一致。至少准备一档标准 Intelligence 真机,满血能力另做抽样,不要用最高配录屏代表全部用户。
Xcode 27 一定要买新 Mac 吗?
不一定买新办公本。需要的是一台能稳定跑 iOS 27 SDK、不休眠的 Apple Silicon。很多团队用云端 Mac mini 把 beta 构建和正式 CI 分开,比全员换机更便宜。