enchanted
Apple 生态原生 Ollama 客户端,支持 Llama/Mistral 多模态对话,数据完全本地
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Apple 生态原生 Ollama 客户端,支持 Llama/Mistral 多模态对话,数据完全本地
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否有过这样的困扰:想在自己的本地机器上跑一个 Llama 或 Mistral 大模型来做日常对话或代码辅助,却总觉得缺一个顺手的界面?直接用终端?体验太差。搭 Web UI?配置麻烦又要维护。用商业 API?数据隐私不放心。
Enchanted 正是为解决这个痛点而生:它是一款开源的 macOS / iOS / visionOS 应用,把 Ollama 私有化部署的大模型,用 ChatGPT 一样的优雅界面呈现给你。数据从不出你的设备,隐私完全自主掌控——这才是真正"自己的 AI"。
Enchanted:连接私有化大模型的原生 Apple 界面
Enchanted 由独立开发者 Augustinas Malinauskas 开发维护,项目托管于 GitHub(gluonfield/enchanted),采用 Apache-2.0 开源协议。截至目前已收获超过 5953 个 GitHub Stars,在 Ollama 生态的桌面/移动客户端中属于明星项目。
项目最初于 2023 年 12 月启动,作者当时希望为自己的本地 Ollama 服务器找一个体验流畅的客户端。在探索了市面方案后,发现现有工具要么过于简陋,要么依赖云端 API,最终决定自己动手打造一个满足隐私需求的原生应用。Enchanted 名字本身便传达了作者的愿景——为冷冰冰的本地模型注入魔法般的交互体验。
目前 Enchanted 已上架 App Store,支持 iOS 17+、macOS 14+ 和 visionOS,成为 Apple 全平台覆盖的 Ollama 客户端首选。
Enchanted 的核心功能围绕「连接私有 Ollama 服务器 → 发送提示 → 接收并优雅展示结果」这一链路展开,同时叠加了大量实用特性。
多模态交互:支持在对话中直接附加图片发送给支持视觉能力的模型(如 LLaVA、llava 等 CLIP 系列模型),实现真正的多模态对话体验。在 iPhone 上拍摄一张产品照片,让 Mistral 模型帮你写营销文案——整个流程在 Enchanted 内一气呵成。
语音输入与朗读:内置语音转文字(Speech-to-Text)支持,懒得打字时直接对着设备说话即可发起对话;同时支持文字转语音(Text-to-Speech),让模型生成的内容可以直接朗读出来,适合阅读长文本摘要或辅助视障用户。
Markdown 渲染:模型的代码输出、表格、列表都能以格式化形式呈现,而非生硬的纯文本。特别值得一提的是,代码块语法高亮完整,对开发者格外友好。
自定义 Prompt 模板:用户可以预先定义多套系统提示词模板(如「代码审查助手」「英语翻译官」等),针对不同任务一键切换,模板可在所有对话中复用。这是提升日常效率的杀手级功能。
对话历史管理:所有对话本地存储于 SwiftData,无需联网。历史记录会自动附加到后续 API 调用中,让模型理解上下文连续对话。macOS 版本还支持 Spotlight 快捷面板(Ctrl+⌘+K 呼出),随时随地发起提问。
深色/浅色模式:完整遵循 Apple 人机界面指南,提供系统级深色模式支持,与 macOS/iOS 整体视觉风格无缝融合。
图1:Enchanted macOS 客户端主界面
图2:macOS 深色模式下的对话界面
从代码结构来看,Enchanted 采用了经典的 Apple 平台开发范式:
主要技术栈:
Swift / SwiftUI:整个应用完全以 Swift 编写,UI 层采用 SwiftUI 声明式框架。Enchanted 目录下按职责清晰分层:Application/(入口)、Models/(数据模型)、Services/(核心服务)、UI/(界面组件,按平台分 iOS/macOS/Shared)。
OllamaKit:Ollama 官方维护的 Swift SDK,封装了与 Ollama REST API 的通信逻辑。Enchanted 通过 OllamaKit 与本地 Ollama 服务器(默认 http://localhost:11434)通信,支持自定义服务器 URL 和 Bearer Token,兼容 ngrok 等内网穿透方案实现远程访问。
SwiftData:Apple WWDC 2023 推出的新一代本地持久化框架,替代了传统的 Core Data。用于存储对话历史、用户设置、本地模型配置等。
服务模块解析:
OllamaService:Ollama 连接管理,含 getModels() 获取可用模型列表、reachable() 检测服务器连通性,支持动态切换服务端点。SpeechService:文字转语音,通过 Apple AVSpeechSynthesizer 实现。HotkeyService:全局快捷键(macOS Spotlight 入口)。Clipboard:剪贴板操作;HapticsService:触感反馈(iOS)。多平台支持实现:UI 层按 iOS/、macOS/、Shared/ 三个目录分别维护,利用 SwiftUI 的平台条件编译机制,共享核心逻辑的同时保证各平台原生体验。
多模态实现:通过 OllamaKit 的 imageSupport 字段判断当前模型是否支持视觉(CLIP/mllama 系列),支持时自动在输入界面展示图片附加按钮。
Enchanted 的使用门槛极低,但有一个必要前提:你必须自己运行一个 Ollama 服务器。这带来了两种使用路径:
路径一(推荐):Ollama 运行在本机,Enchanted 直接连接 localhost:11434,无需任何额外配置,完全离线可用。
路径二(远程):Ollama 运行在内网机器上,通过 ngrok 等工具将 11434 端口暴露为公网 HTTPS URL,Enchanted 填入该 URL 即可远程访问内网模型。
整个配置过程不超过 5 分钟。相比之下,如果想自己从头开发一个类似的客户端,需要熟悉 SwiftUI、Ollama API 协议、SwiftData,至少需要数周时间。
硬件需求:由于模型推理本身由 Ollama 承担,Enchanted 本身对设备性能要求极低——2GB 内存、200MB 存储即可流畅运行。Ollama 侧的 GPU 需求则取决于模型大小,通常 6B 参数模型 4GB 显存即可,13B 参数模型建议 8GB+。
Enchanted 并非银弹,存在几个需要注意的局限:
Ollama 强依赖:项目明确标注需要 Ollama v0.1.14 或更新版本,不支持直接连接其他推理后端(如 vLLM、Text Generation Webui)。对于已部署其他后端基础设施的用户,需要额外迁移成本。
非传统服务端项目:Enchanted 是原生客户端应用,不存在"部署到服务器"的概念。对于希望在服务器端部署 API 服务的场景,它完全不对口——这本质上是一个前端应用。
模型能力上限受限于 Ollama:Ollama 本身的模型库和推理性能就是 Enchanted 的天花板。当前 Ollama 对 GGUF 量化模型支持良好,但对某些特定架构模型的支持滞后于官方更新。
隐私的双刃剑:数据本地存储是优势,但同时也意味着没有云端同步——换设备后对话历史需要手动迁移。
Enchanted 的走红折射出一个正在壮大的趋势:在 AI 能力爆炸的同时,越来越多用户开始追求数据自主权。当 ChatGPT、Claude 等商业产品成为主流,一批开发者和极客坚持认为"自己的数据不该经过别人的服务器"。
Ollama 生态的繁荣(enchanted、Open Interpreter、Continue 等客户端的涌现)正是这一趋势的技术侧写。本地运行的开源大模型,配合精心打磨的交互界面,正在将「隐私 AI」从极客玩具变成普通用户可及的日常工具。Enchanted 在这一生态中的定位清晰:做 Apple 平台上体验最接近商业产品的本地 AI 客户端。
从增长曲线看,项目 Stars 从 2024 年初至今持续稳步上升,App Store 评分保持高位,GitHub 活跃度(持续提交、Issue 响应及时)均表明这不是一个"一发布就搁置"的快做项目。随着 Apple Intelligence 的普及和端侧 AI 能力的增强,类似 Enchanted 这样桥接本地模型与原生系统的工具,价值会愈发凸显。