讀完能做什麼
- 在 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 改同一組檔案;本教程只要求你一次只批一份計畫。
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 配置。