Apfel:释放你 Mac 上已有的免费 AI
文章摘要
Apfel 是一个开源命令行工具,由开发者 franze 创建,旨在让用户轻松使用苹果在 macOS 中内置的 Apple Foundation Model(苹果基础模型)。该项目的核心理念是”你的 Mac 已经内置了 AI”——苹果在 macOS 中预装了一个语言模型,Apfel 只需通过 brew install apfel 一条命令即可解锁它,完全不需要额外下载、API 密钥或配置。这被宣传为通往本地 AI 的最快路径,且成本为零。
Apfel 利用的是 Apple 的 FoundationModels 框架(需要 macOS 26 Tahoe 或更新版本,Apple Silicon Mac,并且需要启用 Apple Intelligence)。该模型的两个硬性限制是:4096 token 的上下文窗口,以及非常严格的安全护栏——模型宁愿什么都不告诉你,也不会告诉你错误的东西(例如让它描述一种颜色可能会得不到回答)。
尽管模型较小且有这些限制,但对于特定的小任务来说表现令人印象深刻。开发者的主要用例是 shell 脚本辅助,而逐行解析日志文件也可以,但解析整个日志文件则需要文件非常小。该工具提供了多种使用模式:直接在命令行中提问、作为管道的一部分处理数据,以及一个可选的本地服务器模式。
GitHub 仓库位于 github.com/Arthur-Ficial/apfel。值得注意的是,该模型支持多种语言,包括中文、英文、法文、德文、日文、韩文等。有用户测试了德语功能,发现模型可以用德语生成食谱等内容,但在处理德语中的 Sie/Du(正式/非正式称呼)切换时表现不佳。
在安全方面,项目团队对社区反馈的响应速度非常快。有评论者指出本地服务器模式存在安全风险——恶意网页可能试图向 localhost 发送请求。尽管作者已经将服务器模式默认设为关闭,但在评论后的几小时内就发布了 v0.6.23 版本修复了这个安全向量,并添加了详细的服务器安全文档。
该项目引发了关于 Apple 内置模型能力和本地 AI 未来的广泛讨论。有人好奇是否可以将其作为更强大模型(如 Claude/Codex)的子代理使用,有人讨论了是否可以用它在发送给 Claude 之前先总结输入以减少 token 消耗。最令人惊讶的发现之一来自 Overcast 播客应用的开发者 Marco Arment,他构建了一个由约 48 台 16GB M4 Mac mini 组成的 Beowulf 集群来使用 Apple 的转录服务。
HN 评论精华
-
gigatexal:作为使用该模型一段时间的用户表示印象深刻,并感叹”我们是不是一直在忽视 Apple 的模型?想象一下如果他们把 Qwen 3.5 级别的模型内置到操作系统中,那会多酷。”他还提到 Overcast 的 Marco Arment 构建了约 48 台 Mac mini 的集群来使用 Apple 转录服务。后续讨论中有人引用 ATP 播客中 Marco 的访谈,称赞他完全不受时尚和潮流影响,只在新技术有真正好处时才采用。
-
swiftcoder:提出了一个有趣的问题——是否有人尝试将这个模型作为 Claude/Codex 等更强大模型的子代理使用?后续讨论中,LatencyKills 指出 4K 的上下文窗口是个问题,Claude 甚至在读取和总结一个小文件时就会超出这个限制。franze 回应说最初尝试用超级节省 token 的模式运行 OpenClaw 完全不行,但用于 shell 脚本效果很好。khalic 则建议尝试 Qwen coder 0.5B 来做小型本地任务。
-
brians:对本地服务器模式的安全性提出了重要关注。虽然大多数浏览器不允许从随机网站向 127.0.0.1 发送请求,但这个限制仍在完善中。btown 详细解释了 Chrome 142 和 Edge 140 已经推出了本地网络访问的权限对话框,Firefox 也在跟进。这个安全反馈导致 franze 在几小时内就发布了修复版本。
-
elcritch 和 HelloUsername:确认了该模型只在 macOS 26 Tahoe 上可用,不支持 Sequoia。HelloUsername 引用了官方要求:”Apple Silicon Mac, macOS 26 Tahoe or newer, Apple Intelligence enabled”。多位用户对必须升级到 Tahoe 表示遗憾,有人称 Tahoe 是”一场灾难”。
-
FinnKuhn:通过详细的聊天记录展示了模型在多语言方面的局限性。虽然模型可以用德语生成内容(如 Currywurst 食谱),但在处理德语中正式称呼(Sie)和非正式称呼(Du)之间的切换时表现很差,这是他之前在任何 LLM 中都没遇到过的限制,”甚至 DeepL 都能在它们之间切换”。