过去三年,AI 行业跑得极快。ChatGPT 定义了对话式交互,Gemini 把多模态推到前台,各类 Agent 和 AI Coding 工具几乎每个月都在刷新"效率天花板"。在这场竞速里,苹果像是一个迟到的选手——Apple Intelligence 自 2024 年公布后反复延期,功能分批上线,外界质疑声从未断过。
但"慢"不等于"缺席"。苹果选择了一条和主流 AI 巨头截然不同的路:不造一个万能聊天框,而是把 AI 像盐一样撒进系统每个角落。对开发者来说,这条路的入口不是一个大模型 API,而是一套框架、一组 Intent、一个隐私容器。
两种 AI 哲学的分叉
OpenAI、Google、Anthropic 的核心产品形态是一个入口——你打开网页或调用 API,所有能力都从那个入口流出。苹果的核心产品形态是散点分布——写作工具藏在 Notes 和 Mail 里,图像生成藏在 Messages 里,Siri 的语义升级藏在系统级 Intent 里。
这背后不是技术能力的差距,而是设计哲学的差异:
| 维度 | 主流 AI 巨头 | Apple Intelligence |
|---|---|---|
| 交互入口 | 单一聊天窗口 / API | 分散在各个 App 场景 |
| 计算位置 | 云端为主 | 本地优先,云端仅处理复杂请求(Private Cloud Compute) |
| 隐私模型 | 用户数据进入训练管线 | 请求不留存、不用于训练,经独立审计验证 |
| 开发者接入 | REST API + Token | App Intents + Core ML + SwiftUI 框架 |
苹果的"慢",很大程度是因为这条路线需要同时解决三个问题:本地模型要跑得动、隐私要可验证、场景要无缝嵌入。每一项都比"调大模型 API 返回 JSON"难得多。
Private Cloud Compute:苹果对"云端 AI 隐私"的回答
Apple Intelligence 的计算架构分两层:
- 本地层:iPhone / Mac / iPad 上的神经引擎和 GPU 直接运行约 3B 参数的轻量模型,处理日常写作、摘要、简单问答。
- 云端层:当请求超出本地能力(比如复杂推理、大范围知识检索),系统将请求发送到 Apple 自建的专用服务器集群——Private Cloud Compute。
关键区别在于:PCC 的服务器运行专门构建的操作系统,没有持久存储、没有日志、没有管理员 shell。请求处理完毕后,内存即被擦除。苹果还公开了 PCC 的虚拟机镜像供独立安全研究者审计——这在云端 AI 服务里是前所未有的透明度。
对开发者而言,你不需要直接对接 PCC。系统自动判断请求是否需要上云,你的 App 只需声明能力需求。
开发者入口:App Intents 是真正的 API
Apple Intelligence 对开发者最直接的接入点不是"调用 Apple 的大模型",而是让 Siri 和系统 Spotlight 能理解并执行你的 App 功能。这通过 App Intents 框架实现。
下面是一个完整可运行的 Swift 示例——为一个笔记 App 注册"创建笔记"Intent,让 Siri 可以直接响应"在 QuickNote 里写一条关于 AI 的笔记"这样的自然语言指令:
import AppIntents
// 1. 定义 App Entity——让系统知道"笔记"是什么
struct NoteEntity: AppEntity {
static var typeDisplayRepresentation = TypeDisplayRepresentation(name: "笔记")
static var defaultQuery = NoteQuery()
var id: UUID
var title: String
var content: String
var displayRepresentation: DisplayRepresentation {
DisplayRepresentation(title: "\(title)")
}
}
// 2. 定义 App Intent——让 Siri 能执行"创建笔记"动作
struct CreateNoteIntent: AppIntent {
static var title: LocalizedStringResource = "在 QuickNote 中创建笔记"
static var description = IntentDescription("用指定标题和内容创建一条新笔记")
static var openAppWhenRun: Bool = false
@Parameter(title: "标题")
var noteTitle: String
@Parameter(title: "内容")
var noteContent: String
@MainActor
func perform() async throws -> some IntentResult & ReturnsValue<NoteEntity> {
// 实际项目中这里调用你的数据层
let note = NoteEntity(
id: UUID(),
title: noteTitle,
content: noteContent
)
// 保存到本地数据库或文件系统...
print("✅ 笔记已创建: \(note.title) — \(note.content)")
return .result(value: note)
}
}
// 3. 定义 Entity Query——让 Spotlight / Siri 能搜索你的笔记
struct NoteQuery: EntityQuery {
func entities(for identifiers: [UUID]) async throws -> [NoteEntity] {
// 从数据库按 ID 查询,这里用模拟数据
return identifiers.map { id in
NoteEntity(id: id, title: "模拟笔记", content: "模拟内容")
}
}
func suggestedEntities() async throws -> [NoteEntity] {
// 返回最近笔记列表
return [
NoteEntity(id: UUID(), title: "AI 学习计划", content: "研究 Apple Intelligence"),
NoteEntity(id: UUID(), title: "周末待办", content: "买菜、跑步")
]
}
}
把这段代码加入你的 Xcode 项目后,还需要在 Info.plist 或项目配置中注册 Intent,并在 App Shortcuts Provider 中暴露:
struct QuickNoteShortcuts: AppShortcutsProvider {
static var appShortcuts: [AppShortcut] {
AppShortcut(
intent: CreateNoteIntent(),
phrases: [
"在\(.appName)里创建笔记",
"用\(.appName)写一条关于\(.parameterName)的笔记"
],
shortTitle: "创建笔记",
systemImageName: "note.text"
)
}
}
编译运行后,用户对 Siri 说"在 QuickNote 里写一条关于 AI 的笔记",系统会自动解析参数并调用 CreateNoteIntent.perform()。你不需要理解自然语言——Apple Intelligence 的语义层替你做了这件事。
本地模型集成:Core ML 的实战路径
如果你的 App 需要更直接的模型能力(比如文本分类、图像识别、摘要生成),Core ML 是苹果生态里最成熟的本地推理框架。以下是一个从 Hugging Face 下载模型并集成到 iOS 项目的完整流程:
# 1. 用 coremltools 将 Hugging Face 模型转换为 Core ML 格式
pip install coremltools transformers
# 2. Python 转换脚本(以 DistilBERT 文本分类为例)
python3 -c "
from transformers import AutoModelForSequenceClassification, AutoTokenizer
import coremltools as ct
model = AutoModelForSequenceClassification.from_pretrained('distilbert-base-uncased-finetuned-sst-2-english')
tokenizer = AutoTokenizer.from_pretrained('distilbert-base-uncased-finetuned-sst-2-english')
# 创建 traced model
import torch
sample_input = tokenizer('This movie is great', return_tensors='pt')
traced_model = torch.jit.trace(model, (sample_input['input_ids'], sample_input['attention_mask']))
# 转换为 Core ML
mlmodel = ct.convert(
traced_model,
inputs=[
ct.TensorType(name='input_ids', shape=ct.Shape(1, ct.RangeDim(1, 512))),
ct.TensorType(name='attention_mask', shape=ct.Shape(1, ct.RangeDim(1, 512)))
],
minimum_deployment_target=ct.target.iOS17
)
mlmodel.save('DistilBERTSentiment.mlpackage')
print('✅ 模型已保存')
"
转换完成后,将 .mlpackage 拖入 Xcode 项目,然后在 Swift 中调用:
import CoreML
func classifySentiment(text: String) -> String {
guard let model = try? DistilBERTSentiment(configuration: MLModelConfiguration()) else {
return "模型加载失败"
}
let tokenizer = NLTokenizer(unit: .word)
tokenizer.string = text
// 实际项目中应使用与训练一致的 tokenizer
// 这里简化为 word-level 分词 + padding
let tokens = tokenizer.enumerateTokens(in: text.startIndex..<text.endIndex) { _, _ in true }
.compactMap { range in String(text[range]) }
let inputIds = tokens.map { word -> Int32 in
// 简化映射,实际应查 BERT vocab 表
return Int32(abs(word.hashValue % 30000))
}
let paddedIds = inputIds + Array(repeating: 0, count: max(0, 512 - inputIds.count))
let attentionMask = inputIds.map { _ in Int32(1) } + Array(repeating: 0, count: max(0, 512 - inputIds.count))
let input = DistilBERTSentimentInput(
input_ids: MLMultiArray(shape: [1, 512], dataType: .int32, initializingWith: paddedIds),
attention_mask: MLMultiArray(shape: [1, 512], dataType: .int32, initializingWith: attentionMask)
)
guard let prediction = try? model.prediction(input: input) else {
return "推理失败"
}
return prediction.label // "POSITIVE" 或 "NEGATIVE"
}
注意:上面的 tokenizer 映射做了简化。生产环境中,你应该使用与 DistilBERT 训练一致的 WordPiece tokenizer(可通过
tokenizersSwift 包或预计算 vocab 表实现),否则推理精度会显著下降。
写作工具与摘要:系统级 AI 能力的借用
Apple Intelligence 最显性的用户功能是写作工具(Writing Tools)——重写、摘要、语气调整。开发者不需要自己实现这些能力,但可以引导用户在你的 App 内触发它们。
在 SwiftUI 中,只需为文本编辑器附加 writingToolsBehavior 修饰符:
import SwiftUI
struct NoteEditorView: View {
@State private var noteText = ""
var body: some View {
TextEditor(text: $noteText)
.writingToolsBehavior(.automatic) // iOS 18+ 自动启用系统写作工具
.frame(minHeight: 200)
.padding()
// 如果你想限制可用能力(比如只允许摘要,不允许重写):
// .writingToolsBehavior(.limited)
}
}
.automatic 让系统在用户选中文本时自动弹出写作工具面板;.limited 只允许摘要和列表生成,不允许全文重写;.none 则完全禁用。这个修饰符在 iOS 18 和 macOS 15 及以上可用。
接入前的检查清单
苹果的 AI 路线意味着开发者需要调整思路——你不是"调 API",而是"注册能力"。在决定是否接入 Apple Intelligence 之前,先跑一遍这个清单:
- 你的 App 有哪些高频操作可以被自然语言触发? 列出来,每个操作对应一个 App Intent。
- 你的数据是否适合本地处理? 如果是,Core ML + on-device 模型是首选;如果必须上云,评估是否需要走 PCC 通道(目前 PCC 仅服务系统级请求,第三方 App 的云端推理仍需自行解决隐私合规)。
- 你的最低支持版本是什么? Apple Intelligence 要求 iOS 18+ / macOS 15+,A17 Pro 或 M1 及以上芯片。如果你的用户群大量停留在旧系统,Intent 注册不会生效。
- 你是否需要自定义模型? 如果是,优先考虑 Core ML 转换而非在 App 内嵌入 PyTorch / TensorFlow 运行时——Core ML 在苹果硬件上的推理效率通常高出 2-5 倍。
- 隐私声明是否完备? 即便你只用本地模型,App Store 审核也要求你在隐私标签中声明"数据不关联用户身份"。
苹果的 AI 不是在造另一个聊天机器人。它在做的是让整个操作系统变成一个隐形的 AI 运行时——开发者要做的,不是写 prompt,而是写 Intent。这条路起步慢,但一旦跑通,用户不需要"打开 AI",AI 就已经在他们正在用的每一个 App 里了。