Enchanted:把 Ollama 私有模型搬進蘋果生態的客戶端,但先想清楚伺服器怎麼開
Enchanted is iOS and macOS app for chatting with private self hosted language models such as Llama2, Mistral or Vicuna using Ollama.
秒懂
- 它是什麼?
- Enchanted 是一套 macOS、iOS、visionOS 與 Watch 用的 Ollama 相容聊天介面,定位是 ChatGPT 的私有替代品。本文根據其 README 與發布紀錄,拆解它的連線架構、安裝流程、真正限制與替代方案。
- 適合誰用?
- Enchanted 適合已經把 Ollama 伺服器跑在固定 IP 或內網、且需要蘋果多裝置介面的人。它的價值在於把私有模型的對話、歷史紀錄與多模態附件整合進 macOS、iOS、visionOS 與 Watch,而不是自己管理模型。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 70 天前。
- 用什麼語言寫的?
- 主要是 Swift(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
它解決什麼:私有模型缺一個像樣的前端
跑 Ollama 的人通常有兩種痛苦:一是只有指令列介面,二是想用 iPhone 或 Mac 的圖形介面,卻不願把對話丟給雲端服務。Enchanted 就是針對這個缺口。README 說得直白:它是「ChatGPT app UI that connects to your private models」。換句話說,它不負責跑模型,只負責把蘋果裝置上的輸入送到你自架的 Ollama 伺服器,再把回應顯示成 Markdown、表格或程式碼區塊。目標使用者是已經有能力架 Ollama、但不想自己寫 Swift 介面的工程師或隱私敏感者。它同時涵蓋 macOS、iOS、visionOS 與 Watch,這在開源 Ollama 客戶端中少見。
連線架構:你的 iPhone 永遠對著一台遠端伺服器
Enchanted 的資料流很單純:App 內指定一個 server endpoint,所有對話請求透過 HTTP 送到該位址的 Ollama API。README 強調「All features work offline」,但這個 offline 指的是對話歷史、語音輸入與文字轉語音不依賴蘋果的雲端,不是說模型推理在裝置上執行。實際上,每個 prompt 都要先到達 Ollama 伺服器,模型回應再傳回來。因此延遲完全取決於網路路徑。README 提供兩種案例:一是伺服器有公開 IP,直接在設定填位址;二是伺服器在家裡,用 ngrok 把 Ollama 的 11434 埠轉出去。後者等於把私有模型暴露在 ngrok 的暫時網址上,這對隱私是雙面刃,README 沒有討論認證或加密細節。
安裝與設定:App Store 下載,但伺服器才是門檻
Enchanted 本身可從 App Store 取得,README 附了連結。安裝後,設定只有一個關鍵欄位:server endpoint。最簡單的案例是 Ollama 伺服器已經有公開網址,直接在 App 設定填上即可。若是本機伺服器,README 給的指令是:先啟動 Ollama 並下載模型,然後安裝 ngrok,執行 `ngrok http 11434 --host-header="localhost:11434"`,再把輸出的 Forwarding URL(形如 `https://b377-82-132-216-51.ngrok-free.app`)填進 App。注意這個網址每次重啟 ngrok 都會變,所以不是固定方案。另外,README 註明需要 Ollama v0.1.14 或更新版本,舊版 API 可能不相容。整個過程不需要編譯 Swift,但你需要能操作 ngrok 與 Ollama 的指令列能力。
功能清單背後的取捨:多模態、歷史紀錄與快捷面板
README 列出的功能包含圖片附件、語音 prompt、文字轉語音、對話歷史儲存在裝置、Markdown 顯示、系統 prompt 設定、編輯訊息內容,以及 macOS 的 Spotlight 面板(快捷鍵 Ctrl+⌘+K)。這些功能看起來豐富,但要注意它們都依賴 Ollama 伺服器支援。例如圖片附件,README 的 iPhone 展示圖寫著 Multimodal,但 Ollama 本身對視覺模型(如 Llama 3.2 Vision)的支援是最近才加入,舊版 Ollama 可能無法處理。對話歷史儲存在裝置,代表你刪除 App 就失去紀錄,沒有雲端同步。Spotlight 面板是 macOS 的便利功能,但 iOS 與 Watch 上就沒有同等快捷入口。
真正的限制:它不是離線方案,也不是模型管理器
最容易被誤解的是「私有」與「離線」兩個詞。Enchanted 的私有是指對話不經過 OpenAI 或 Google,但你的請求仍然要離開裝置,到達你指定的伺服器。如果伺服器在公網,任何能連到那個網址的人理論上都能送請求,除非你另外加認證。ngrok 免費版的網址是公開的,README 完全沒提防護措施。再者,Enchanted 不負責下載模型、不管理模型版本、也不處理 Ollama 的模型切換,那些都要在伺服器端做。若你的使用場景是飛機上或完全沒有網路的環境,這個 App 不適用,因為推理必須在遠端。
替代方案:Ollama 官方 App 與其他客戶端的差異
Ollama 官方本身有 macOS 桌面 App(Ollama.app),它提供選單列介面與本機 API,但沒有 iOS 版本,也不強調多模態或語音輸入。Enchanted 的差異點在於跨蘋果裝置,特別是 visionOS 與 Watch,這是官方 App 沒有的。另一個替代是自製簡易網頁介面,例如 OpenAI 相容的 Chatbot UI,但那些通常要自己架設 Node.js 服務,且不會與蘋果系統的快捷鍵或 Spotlight 整合。Enchanted 的核心優勢是原生 SwiftUI 介面,能呼叫系統的語音與文字轉語音功能,這是網頁方案做不到的。缺點是它綁死 Ollama 協定,若你改用 llama.cpp 的 server 或 LM Studio,就無法直接使用。
維護與授權:停滯風險與 Apache-2.0 的含義
從發布紀錄看,v1.7.0 在 2024 年 5 月,v1.8.2 在 2026 年 6 月,中間隔了兩年,這個節奏不算活躍,但也不算死寂。README 開頭直接寫「Jaz is the new iteration of this project」,這是一個重要訊號:作者已經把重心轉到新專案,Enchanted 可能進入維護模式。採用前要評估:若 Ollama API 大幅改版,Enchanted 是否會跟上?授權是 Apache-2.0,代表你可以自由使用、修改與再散布,但要注意商標與專利條款,這不是法律建議。開源的好處是你可以在 Ollama API 變動時自行修補,但前提是你願意讀 Swift 程式碼。
結論:適合誰,不適合誰,先檢查哪三件事
適合已經把 Ollama 跑在固定 IP 或內網、且需要 iPhone 與 Mac 統一介面的人。不適合期待本機推理、或無法接受 ngrok 暫時網址的人。採用前先做三件事:確認 Ollama 版本高於 v0.1.14,測試伺服器端點能否從手機瀏覽器存取,並決定是否要為 ngrok 網址加上任何保護。Enchanted 的價值建立在 Ollama 的開放協定上,一旦 Ollama 改變 API,這個 App 的未來就繫於作者是否持續更新。目前作者已表明 Jaz 是後繼專案,所以你的長期風險不是功能不足,而是維護停滯。
編輯結論
Enchanted 適合已經把 Ollama 伺服器跑在固定 IP 或內網、且需要蘋果多裝置介面的人。它的價值在於把私有模型的對話、歷史紀錄與多模態附件整合進 macOS、iOS、visionOS 與 Watch,而不是自己管理模型。不適合沒有伺服器、或想完全離線的人,因為 App 本身不載入模型,所有推理都依賴遠端 Ollama。採用前先確認你的 Ollama 版本至少是 v0.1.14,並決定伺服器是否要透過 ngrok 或直接暴露。若你無法接受把內網服務交給 ngrok 的暫時性網址,或你的模型需要低延遲互動,這個 App 的架構會讓每個請求都繞過網路,體驗可能不如本機方案。
社群筆記