读完能做什么
- 在 Apple 芯片 Mac 上装好 Xcode 27,用工具栏开编码 Agent,先
/plan再改仓库。 - 用 Foundation Models 的
LanguageModelSession写出第一段端侧摘要。 - 按任务选端侧系统模型、Private Cloud Compute、Core AI / MLX 或 Claude / Gemini 包。
- 用 Tool 和 Dynamic Profile 把会话收成 App 内 Agent,而不是再开一个聊天窗。
- 对照官方门槛处理地区、上下文超限和内存压力;本文步骤来自文档与 WWDC,不是本站实测。
先让 Xcode 27 改你的工程,再用同一套 Swift API 把模型放进 App。两件事不要混成一次「装 AI」。
前置:能装 Xcode 27 再谈苹果 AI
苹果在 Xcode 系统要求 把 Xcode 27 标成需要 macOS Tahoe 26.6 或更高,并带 iOS 27 到 macOS 27 的 SDK。Xcode 27 发布说明 写明:Xcode 27 只能在 Apple 芯片上安装运行。Intel Mac 可以当用户机,不能当这套教程的开发机。
2026 年 6 月苹果新闻稿 写:iOS 27、macOS 27 和 Xcode 27 的开发者 beta 从当天起可在 developer.apple.com 下载。Apple Intelligence 功能仍受地区限制。下面清单是开工顺序,不是「越新越好」。
- Apple 芯片 Mac,系统升到文档要求的 macOS 版本。
- 用 Apple Developer 账号从开发者站点安装 Xcode 27,不要用过期的 Xcode 26 碰 iOS 27 SDK。
- 打开系统设置,确认本机已打开 Apple Intelligence(地区不支持时,端侧会话会直接失败)。
- 新建或打开一个 iOS / macOS App 工程,最低部署版本跟你实际要调用的 API 走,不要抄过时教程里的 iOS 18。
- 工程能 Cmd+R 进模拟器之后,再开编码 Agent,也再 import FoundationModels。
内存档位是另一篇文章的问题。助手会自己拉模拟器时,16GB 和 24GB 差在压力曲线,见 Xcode 27 跑 AI 编程需要什么 Mac 配置。本文只要求:机器能装 Xcode 27,并且你愿意让它开着。
Xcode 27 怎么用:编码 Agent 从 0 到第一份计划
What’s new in Xcode 27 把编码 Agent 从侧栏聊天改成编辑器里的对话:可以分栏、可以并行多段任务。工具栏按钮开新对话;需要先想清楚再改文件时,用斜杠命令 /plan。
- 打开工程,点工具栏的编码 Agent,新建对话。对话以编辑器标签出现,不要期望它藏在旧版 Assistant 侧栏里。
- 第一句不要「把这个 App 重写成 SwiftUI」。写成:目标文件、不要动的模块、验收方式(测试或模拟器截图)。
- 输入
/plan。Agent 会先搜集上下文、必要时拉子 Agent,先出计划、不改文件。你在计划上批注后再允许实现。 - 实现过程看右侧 diff 和产物(截图、预览)。Agent 可以按发布说明启动模拟器、装 App、合成触摸。你仍要自己点构建和提交。
- 并行任务用编码助手侧栏查看未读消息。不要让两段 Agent 改同一组文件;仓库隔离见站内 Agent 文件实践,本教程只要求你一次只批一份计划。
Xcode 27 的 Agent 认识 Swift 和苹果框架,但它不是 Foundation Models。它改的是你的源码。把模型能力交给用户的,是下一节的 Swift API。两边可以同时开:左边 Agent 写代码,模拟器里跑你刚写的 respond(to:)。
若你更熟终端里的 Claude Code,那是另一套宿主机上的编码 Agent,仍要交 App Store 包就留在 Xcode。并行任务不要改同一组文件,边界见 AI Agent 文件隔离最佳实践。
Foundation Models:第一段可编译的 Swift
Foundation Models 框架页 把框架定义成「在 App 里用任意大语言模型的原生 Swift API」。端侧系统模型、Private Cloud Compute、以及符合 Language Model 协议的第三方包,都走同一套 Session。WWDC26 Apple Intelligence 指南 补充:多模态提示可以夹图片;Vision 的 OCR 和条码工具可给模型直接调用。
import FoundationModels
let session = LanguageModelSession(
instructions: "You summarize travel notes in three short sentences."
)
let response = try await session.respond(
to: "Notes: fly to Tokyo at 09:00, then Asakusa."
)
print(response.content)
把这段放进按钮或异步任务,不要放进同步 init。第一次编译如果找不到模块:在目标的 Frameworks 里确认已链接 FoundationModels,部署版本覆盖文档里的系统要求。
Session 是有状态的。每一次 respond(to:) 都会进 transcript。上下文撑满会抛错,不要指望无限聊。iOS 26.4 起可以查上下文大小和 token 数;超限就新开 Session,必要时只带走 instructions 和最后一条成功回复。这是官方会话里的恢复路径,不是「重启 App」。
本地 AI 怎么选:端侧、Core AI、MLX、PCC
What’s new in the Foundation Models framework 把选择摊开:端侧系统模型已重建,指令遵循更好,提示里可直接插图片。需要更大模型时用 PrivateCloudComputeLanguageModel,上下文约 32K token,带推理档。要把自己的权重量进设备,用开源的 Core AI 或 MLX 实现。Claude 与 Gemini 以 Swift 包接入同一协议。
| 路径 | 适合什么 | 你付什么 |
|---|---|---|
| SystemLanguageModel(端侧) | 摘要、分类、短对话、离线、要隐私 | 设备算力与电池;无云 API 账单 |
| Private Cloud Compute | 要推理、更长上下文、watchOS 27 上也要用苹果模型 | 符合小企业计划且首次下载低于 200 万时,新闻稿写明无云 API 费用; entitlement 仍要按文档申请 |
| Core AI | 把你自己的 LLM 跑在统一内存和 Neural Engine 上 | 包体、内存、热;没有按 token 发票,但有设备上限 |
| MLX Language Model | 试 Hugging Face 上 MLX-Community 的开源模型 | 下载与许可;GPU/ANE 占用 |
| Claude / Gemini 包 | 要前沿云模型、同一套 Tool / guided generation | 按 token 计费;密钥走 Keychain / OAuth,禁止写进包 |
PCC 的调用形状和端侧一样,只换模型实例。推理深浅用会话上的 reasoning 档位换延迟。独立研究员可以核验「提示不落盘」这类隐私声明,细节在 PCC 专题视频,不在这篇保姆步骤里展开。
import FoundationModels
let model = PrivateCloudComputeLanguageModel()
let session = LanguageModelSession(model: model)
let response = try await session.respond(
to: "Propose three origami projects from this journal.",
options: GenerationOptions()
)
print(response.content)
macOS 27 还提供 fm 命令行和 Python SDK,用来在终端里打端侧或 PCC,适合写脚本,不替代 App 内的 Swift Session。本地模型把统一内存和 Xcode、模拟器抢在一起时,先看 Apple Silicon 云 Mac Runner 内存洪峰与 swap,再决定模型是留在本机还是只在 Session 里换 PCC。
App 里的 AI Agent:Tool 与 Dynamic Profile
Xcode 里的编码 Agent 改仓库。App 里的 Agent 是「模型 + 工具 + 可切换的指令」。What’s new in the Foundation Models framework 用手工艺日记示例:先分析照片(端侧 + 写回日记的 Tool),再切到 PCC 做头脑风暴。过去你要为此维护多个 Session;现在用 Dynamic Profile,一次 Session 里用条件选出当前的 instructions、tools 和模型。
从 0 到 1 不要先上多 Agent 编排。按这个顺序验收:
- 一个 Session,固定 instructions,能
respond。 - 给模型一个你写的 Tool(例如把结构化结果写入 SwiftData)。模型决定何时调用,你决定副作用是否可撤销。
- 需要时加上系统工具:Vision 的 OCR / 条码,或 Spotlight 上的本地检索(RAG)。
- 两种模式再做成 Dynamic Profile:分析走端侧,规划走 PCC。同一时刻只有一个 Profile 生效。
系统级发现走另一条线:App Intents 把内容和动作交给 Siri / Spotlight,那是 WWDC 2026:iOS 27 与 Siri / Apple Intelligence 决策文的范围。本教程的 Agent 停在「你的 App 进程里」。质量不要靠感觉:Evaluations 框架用来统计改 prompt 之后好不好,替代不了单元测试,也替代不了你对 Tool 副作用的断言。
报错、地区、机器:卡住时先查哪一层
把失败分成四层,避免把「没开 Apple Intelligence」修成「换模型」。
- 装不上 Xcode 27:系统版本或 Intel 芯片。对照系统要求和发布说明,不要在论坛抄旧包。
- Session 立刻失败:地区未开 Apple Intelligence、模型未下载完、或部署版本不够。先在设置里看开关,再查可用性 API。
- 聊到一半抛错:上下文窗口。捕获超限错误,压缩 transcript 后新开 Session。
- 机器变黏:编码 Agent + 模拟器 + 本地模型叠在同一池统一内存。先关本地大模型,再考虑换 24GB 档,而不是先加 SSD。
第三方云模型还有账单和密钥:Session 与响应上的 usage 能看输入、缓存命中和推理 token。密钥禁止进 Git。这些不是 Foundation Models 的锅,是你选了按 token 计费的提供方。
FAQ
不会 Swift 能不能跟这套教程?
编码 Agent 可以起草 Swift,但你仍要能读 diff、跑测试、拒绝它改权限和钥匙串。不会读 Swift 就不要把 Tool 接到写文件或付款接口。
Foundation Models 是不是必须联网?
端侧系统模型按设计可离线。PCC 和 Claude / Gemini 要网络。新闻稿里的「无云 API 费用」只覆盖符合条件的 PCC,不是所有模型。
Xcode 的编码 Agent 和 App 内 Agent 是同一个东西吗?
不是。前者改你的源码和工作区;后者在用户设备上调用模型和 Tool。本教程两节都写,是因为搜索里常把它们叫成同一个「苹果 AI」。
小公司用 PCC 真的免费吗?
新闻稿和框架页写:加入 App Store 小企业计划、累计首次下载低于 200 万,PCC 上的下一代苹果 Foundation Models 无云 API 费用。资格、额度、iCloud+ 用户更高限额以开发者文档和 entitlement 为准,不要把这句话写进对用户的定价页。
必须买新 Mac 才能做本地 AI 吗?
必须是 Apple 芯片且能跑 Xcode 27。不一定要新买:16GB 能开工,助手长期占着模拟器时再评估 24GB。可以先在可换档的云 Mac 上跑同一工程,再决定本机下单。
小结
顺序固定:能装 Xcode 27 → 用 /plan 管住编码 Agent → 一段 LanguageModelSession → 按任务换端侧 / PCC / Core AI → 再用 Tool 和 Dynamic Profile 做成 App 内 Agent。每一步都能单独验收,不要在第一天同时接三个提供方。
编码 Agent 需要一台不合盖的 Apple 芯片 Mac
Xcode 27 的 Agent 会拉模拟器、跑预览;Foundation Models 的端侧和 Core AI 再吃同一块统一内存。笔记本合盖或睡眠会掐掉长计划。kvmboot 的云 Mac mini 是一直开着的 Apple 芯片机,适合把 Xcode 27 工程和第一段 Session 放在可 SSH 的环境里验证,内存档对照见 Xcode 27 跑 AI 编程需要什么 Mac 配置。