模型 / 数据集
gluonfield/enchanted avatar
gluonfield/enchanted

Enchanted:用 Ollama 自建模型填补苹果生态的 ChatGPT 客户端空缺

Enchanted is iOS and macOS app for chatting with private self hosted language models such as Llama2, Mistral or Vicuna using Ollama.

5,999 个 Star426 个 ForkSwiftApache-2.0
GitHub

秒懂

它是什么?
Enchanted 是一款面向 iOS、macOS 与 visionOS 的开源应用,它把 Ollama 托管的本地大语言模型包装成类似 ChatGPT 的界面。本文分析它的工作机制、部署方式、局限与替代方案。
适合谁用?
Enchanted 适合已经运行 Ollama、并且主要在苹果生态内使用 LLM 的个人开发者或隐私敏感用户。它不适合没有自建服务器能力的人,因为应用本身不包含任何模型推理功能,所有对话都必须通过外部 Ollama 端点。
能商用吗?
可以。Apache-2.0 是宽松许可证:你可以使用、修改并销售基于它的软件,只需保留版权和许可证声明。
还在维护吗?
在维护。仓库最近一次提交在 70 天前。
用什么语言写的?
主要是 Swift(依据 GitHub 的语言统计)。

以上回答依据项目的 GitHub 数据(最近同步于 2026年9月15日)和我们的分析,不构成法律意见。

开源项目深度解析

苹果生态里的私有模型聊天客户端

Enchanted 解决的是一个具体问题:苹果设备上没有一款同时覆盖 iPhone、Mac、Vision Pro 的开源聊天界面,能直接对接本地或私有托管的 Ollama 服务。它把 Llama 2、Mistral、Vicuna 这类模型包装成类似 ChatGPT 的交互界面。目标用户是已经运行 Ollama 服务器、且不愿把对话发送到第三方云服务的开发者或隐私敏感用户。README 强调所有功能离线可用,但前提是你的 Ollama 服务器可达。它并非模型运行器,只是一个前端。

从 Ollama API 到多端界面的数据流

应用本身不包含推理能力,所有对话都通过 HTTP 请求发送到你在设置中指定的服务器端点。Ollama 默认监听 11434 端口,Enchanted 兼容该 API。README 列出的一些功能揭示了其数据流:对话历史会包含在 API 调用中,这意味着每次请求都会携带上下文,而不是由客户端维护独立状态。历史记录存储在设备本地,这符合隐私定位。多模态功能(如图像附件)依赖 Ollama 侧对视觉模型的支持,Enchanted 只负责传输图像数据。整体架构是典型的客户端服务器模式,客户端很薄,服务器承担全部计算。

安装与连接:两条路径,一个前提

使用 Enchanted 前必须满足:Ollama 版本不低于 v0.1.14。README 给出两种连接方式。第一种是公网可访问的 Ollama 服务器,你只需在 App 设置中填写服务器端点即可。第二种是 Ollama 运行在你自己电脑上,这时需要用 ngrok 将本地服务暴露到公网,命令为:ngrok http 11434 --host-header="localhost:11434"。然后复制 ngrok 显示的 Forwarding URL,形如 https://b377-82-132-216-51.ngrok-free.app,把它填入 App 设置。应用本身从 App Store 下载,项目也提供源码,但 README 未提及侧载或 TestFlight 流程。注意,ngrok 免费版 URL 是临时的,重启后地址会变化,需要重新配置。

界面功能:从 Spotlight 到自定义模板

Enchanted 的界面功能覆盖日常使用场景。macOS 上提供 Spotlight 面板,快捷键是 Ctrl+Command+K,方便从任何位置呼出。你可以为每次对话设定系统提示词,也可以编辑已发送的消息内容,或者用不同的模型重新提交。对话支持删除单条或全部清空。文本转语音(朗读)功能已内置。Markdown 渲染支持表格、列表和代码块,这对阅读模型输出很重要。自定义提示词模板可以保存并在任何对话中复用,README 中的演示视频展示了这一流程。这些功能说明它不是一个最小可用的聊天框,而是考虑了实际工作流的客户端。

多模态与跨设备:宣传与现实边界

README 提到应用支持图像附件,并展示 iPhone 上的多模态示例。但这里有个隐含边界:多模态能力完全取决于你所连接的模型。如果你使用 Llama 2 这类纯文本模型,图像附件可能不会被处理或产生无意义输出。跨设备同步方面,README 说历史记录存储在设备本地,这意味着 iPhone 和 Mac 之间不会自动同步对话。这与其他商业 ChatGPT 客户端不同,后者通常有云端同步。所以“跨所有设备”更多指应用覆盖多个平台,而非数据一致。Vision Pro 版本有独立演示视频,但功能是否与 iOS 版完全一致,README 未说明。

安全与隐私:本地存储的另一面

Enchanted 的隐私卖点是对话历史存在设备上,不经过第三方服务器。但必须区分“客户端本地”与“模型本地”。模型运行在你的 Ollama 服务器上,如果服务器是公网可达的(如 ngrok 示例),那么所有对话内容在传输过程中经过 ngrok 的中继服务器。ngrok 免费版不保证端到端加密,所以这并非完全私密。README 建议使用 ngrok 时添加 --host-header="localhost:11434",这能避免某些主机头校验问题,但不会增加安全性。如果你要真正隔离,应该让 Ollama 只监听本地网络,并用 VPN 或 Tailscale 等方案替代 ngrok。这个权衡在 README 中没有被强调,但它是实际部署时最重要的决策点。

维护状态与替代方案

仓库显示最近一次推送是 2026 年 7 月,最新版本 v1.8.2 发布于 2026 年 6 月,说明项目仍在活跃维护。但 README 开头有一句关键声明:Jaz 是该项目的新迭代。这意味着 Enchanted 本身可能进入维护模式,新功能开发转向 Jaz。许可证为 Apache-2.0,允许商用和修改,但需保留版权声明。替代方案中,最直接的是 Ollama 官方提供的桌面应用(如果存在),或者使用其他兼容 Ollama API 的客户端,例如 Open WebUI(基于 Web,跨平台)或 Mac 上的 Ollama 自带菜单栏工具。区别在于:Enchanted 是原生 Swift 应用,适合离线操作和系统集成(如 Spotlight),而 Web 方案更容易跨平台且无需安装。如果你需要 visionOS 支持,Enchanted 目前几乎是唯一选择,因为其他客户端很少覆盖该平台。

采用前的验证清单

在决定使用 Enchanted 之前,有几点需要你亲自确认。第一,确认你的 Ollama 版本,低于 v0.1.14 无法正常工作。第二,测试你的网络路径:如果你用 ngrok,先运行命令并确保 Forwarding URL 能返回 Ollama 的响应(访问 /api/tags 应返回 JSON)。第三,检查模型是否支持你想用的功能,尤其是图像输入。第四,考虑对话历史的同步需求:如果你经常在 iPhone 和 Mac 之间切换,本地存储可能造成割裂体验。最后,留意 Jaz 项目的发展,因为 Enchanted 的更新节奏可能放缓。这些验证不需要安装应用,只需检查你的服务器配置和模型能力即可完成。

编辑结论

Enchanted 适合已经运行 Ollama、并且主要在苹果生态内使用 LLM 的个人开发者或隐私敏感用户。它不适合没有自建服务器能力的人,因为应用本身不包含任何模型推理功能,所有对话都必须通过外部 Ollama 端点。若你只想要一个聊天界面且不愿管理服务器,应改用商业 API 客户端。若你接受自托管,但需要更细粒度的模型管理或本地推理,则应考虑其他工具。在采纳前,先确认你的 Ollama 版本不低于 v0.1.14,并验证 ngrok 转发或公网端点的安全性,因为 README 中的 ngrok 示例暴露了临时 URL,任何拿到该链接的人都能访问你的模型服务。

官方来源

  1. gluonfield/enchanted on GitHub
  2. Issues
  3. License: Apache-2.0
  4. README
  5. Releases
社区笔记

社区笔记