apfel:把 Mac 內建 LLM 變成 OpenAI 相容的本地伺服器
The free AI already on your Mac. CLI tool, OpenAI-compatible server, and interactive chat — all on-device via Apple Intelligence. No API keys, no cloud, no downloads.
秒懂
- 它是什麼?
- apfel 是一款 Swift 寫成的命令列工具,讓 Apple Silicon Mac 上的 Apple FoundationModels 以 UNIX 工具、互動 REPL 或 OpenAI 相容伺服器三種形式現身。它不需要 API key,也不碰雲端,但前提是你的系統必須滿足 macOS 26 與 Apple Intelligence 的嚴格要求。
- 適合誰用?
- 如果你已經具備 macOS 26 Tahoe 以上、Apple Silicon,而且啟用了 Apple Intelligence,apfel 提供了一條把系統內建 LLM 接進現有 OpenAI SDK 或 shell 腳本的低摩擦路徑。它特別適合在意隱私、不想付 API 費用,或需要在離線環境做文字處理的開發者。
- 可以商用嗎?
- 可以。MIT 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 1 天前。
- 用什麼語言寫的?
- 主要是 Swift(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
蘋果內建模型,終於有了像樣的命令列介面
Apple Silicon Mac 從 macOS 26 開始內建了 Apple FoundationModels,這代表每個符合條件的裝置都藏著一個可以在本地運作的 LLM。問題是 Apple 沒有提供一個讓開發者直接從終端機呼叫它的工具。apfel 填補的正是這個缺口。它把 FoundationModels 包裝成三種介面:一個可以吃 pipe 的 UNIX 工具、一個互動式 REPL,以及一個監聽 localhost:11434 的 OpenAI 相容伺服器。目標使用者很明確:已經在 Mac 上寫程式、想要在腳本或應用程式裡使用本地 LLM,但不想為了開一個 OpenAI 帳號而把程式碼或文件送出裝置的人。整個專案以 Swift 6.3 撰寫,授權 MIT,安裝方式主要是 Homebrew。
三種模式,同一套裝置端推理核心
apfel 的核心機制是直接呼叫 Apple 的 FoundationModels framework,所有推論都在裝置上完成。文件強調「100% on-device」,沒有 API key、沒有雲端。這表示每一次 prompt 的處理都受限於 Mac 的神經網路引擎與統一記憶體。命令列工具是最基本的模式,支援 pipe 輸入、檔案附加、JSON 輸出與 exit code。互動式 REPL(apfel --chat)則提供一個快速測試環境,可以搭配 MCP 伺服器或不同的 system prompt。第三種模式 apfel --serve 把伺服器架在 http://localhost:11434/v1,這個位址刻意模仿 Ollama 的預設連接埠,讓任何原本指向 Ollama 的 OpenAI SDK 程式碼,只要改 base_url 就能直接切換到 apfel。這種設計降低了遷移成本,但同時也暗示 apfel 預設會佔用 11434 這個連接埠,如果使用者同時跑 Ollama 就會衝突。
從 brew install 到第一句問答
安裝 apfel 最直接的方式是 brew install apfel,更新則用 brew upgrade apfel。如果想從原始碼建置,需要 Command Line Tools 搭配 macOS 26.4 SDK 與 Swift 6.3,然後執行 git clone 與 make install,整個過程不需要 Xcode。使用上,單一 prompt 就是 apfel "What is the capital of Austria?"。文件特別提醒,如果 prompt 包含驚嘆號,要用單引號括起來,避免 zsh 或 bash 的 history expansion 干擾。pipe 模式很直覺,echo "Summarize: $(cat README.md)" | apfel 就能把檔案內容送進去。附加檔案用 -f 參數,支援文字、PDF 與圖片,系統會做裝置端的文字擷取與 OCR。伺服器模式則用 apfel --serve 在前景執行,或透過 brew services start apfel 在背景跑。啟動時可用環境變數 APFEL_TOKEN 設定 token,APFEL_MCP 指定 MCP 伺服器路徑。對外連線測試用 curl 打 /v1/chat/completions,model 名稱必須是 apple-foundationmodel。
檔案、JSON 與 schema:腳本友善的細節
apfel 在腳本整合上做了不少設計。--code 模式會只輸出程式碼,不加 prose 或 markdown fence,而且如果結果為空會以 exit code 7 結束,這讓它可以安全地接進 pipe 或寫入檔案。JSON 輸出用 -o json,方便搭配 jq 處理。更進階的是 --schema 參數,它接受一個 JSON schema 檔案,並保證輸出符合該 schema,文件稱之為 guided generation。這對需要結構化資料的程式很有用,例如從一段文字中抽出人物資訊並轉成固定格式。此外,--count-tokens 可以在送出大型 prompt 前先估算 token 用量,避免超過脈絡上限。--messages 參數接受一個 conversation JSON,並回傳下一輪 assistant 回覆,這讓多輪對話可以拆成多次單向呼叫。這些功能加起來,apfel 不只是聊天工具,它更像一個可以嵌進自動化流程的本地 LLM 引擎。
MCP 支援與 demos:把工具呼叫變成賣點
apfel 支援 Model Context Protocol,透過 --mcp 參數可以掛載外部工具伺服器。文件上的例子是 ./mcp/calculator/server.py,apfel 會自動發現工具、在需要時呼叫,並把結果帶回 prompt。stderr 會顯示工具名稱與參數,stdout 則輸出最終回覆。這種設計讓 apfel 可以執行需要即時計算或查詢的任務,而不只是靜態的文字生成。另一個值得一提的功能是 apfel demos,它會把一堆實際可用的 shell 腳本寫入指定目錄,例如 cmd(把英文轉成 shell 指令)、gitsum(產生 git 摘要)、port(找佔用連接埠的程式)。這些腳本不是教學範例,而是包在 binary 裡的真實工具,執行 apfel demos ./apfel-demos 後就能直接跑。這對想快速理解 apfel 能做些什麼的人來說,比閱讀文件更直接。
真正的限制:脈絡視窗與作業系統綁定
apfel 最明顯的限制來自它依賴的硬體與系統框架。文件明確指出,在 macOS 26 上裝置端脈絡視窗只有 4096 tokens,macOS 27 則提升到 8192,而且這個數字是執行時期讀取的。4096 tokens 大約等於三千個英文字詞,對中文來說可能更少。這代表你無法用 apfel 分析整份長文件,也無法進行需要大量背景知識的多輪對話。apfel 自己提供了 --count-tokens 與自動脈絡修剪機制來緩解,但這只是治標。另一個硬性條件是 macOS 26 Tahoe 以上、Apple Silicon 與啟用的 Apple Intelligence。如果你的機器是 Intel Mac,或使用者基於隱私考量關閉了 Apple Intelligence,apfel 完全無法運作。還有一個值得注意的點是,apfel 的品質完全取決於 Apple 的基礎模型,而 Apple 並沒有公開這些模型的詳細能力規格,使用者只能實測。
與 Ollama 的對比:同一個連接埠,不同的哲學
apfel 最常被拿來比較的對手是 Ollama。兩者都提供 OpenAI 相容的本地伺服器,而且 apfel 刻意選用 11434 這個連接埠,幾乎是明著說「我就是來當 Ollama 的替代品」。但背後的差異很大。Ollama 需要下載模型檔案,這些模型通常有數 GB 大小,而且推理時會佔用大量記憶體。apfel 則直接使用 Apple 內建的 FoundationModels,不需要下載任何東西,安裝後立即可用。這代表 apfel 的硬碟佔用極小,也少了模型管理的麻煩。但代價是模型選擇的自由度。Ollama 可以跑 Llama、Mistral、Qwen 等各種開源模型,使用者可以依照任務需求挑選不同大小的模型。apfel 只有 apple-foundationmodel 這一個選項,你無法換成其他模型,也無法調整量化等級或脈絡長度。如果你的工作仰賴特定模型的特性,apfel 不是合適的工具;如果你只想要一個免設定的本地推理端點,apfel 的零下載特性確實有吸引力。
維護與授權:小而活躍的專案
apfel 的授權是 MIT,這表示你可以自由使用、修改、甚至整合進商業產品,只要保留版權聲明。從 release 歷史來看,v1.10.0 在 2026 年 9 月釋出,距離 v1.9.0 只有一個月左右,v1.8 與 v1.9 之間則隔了約兩個月,顯示專案仍持續在更新。更新方式很簡單,brew upgrade apfel 即可。比較需要注意的是,apfel 依賴 Apple 每年更動的系統框架,如果 macOS 27 改變了 FoundationModels 的 API,舊版 apfel 可能無法在升級後的系統上正常運作。另外,文件提到 demos 腳本會隨版本更新,建議每次升級後重新執行 apfel demos 來刷新。整體而言,apfel 的維護節奏看起來穩定,但它的壽命與 Apple 對 FoundationModels 的支援政策綁在一起。如果 Apple 未來調整了裝置端模型的可用性,apfel 的功能範圍也會跟著變動。
編輯結論
如果你已經具備 macOS 26 Tahoe 以上、Apple Silicon,而且啟用了 Apple Intelligence,apfel 提供了一條把系統內建 LLM 接進現有 OpenAI SDK 或 shell 腳本的低摩擦路徑。它特別適合在意隱私、不想付 API 費用,或需要在離線環境做文字處理的開發者。但若你的主力是長文件分析、複雜多輪對話,或需要頂尖生成品質,4096 token 的脈絡上限與 Apple 基礎模型的表現會是明顯瓶頸。採用前,請先確認你的裝置真的能跑 Apple FoundationModels,並用 apfel --count-tokens 實際測量你的典型提示是否落在預算內。對那些已經訂閱雲端 LLM 服務、依賴最新模型能力的人來說,apfel 不會是替代品,它是一個特定硬體與作業系統組合下的免費補充。
社群筆記