Apfel:释放你 Mac 上已有的免费 AI

查看原文 HN 讨论

文章摘要

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 评论精华

  1. gigatexal:作为使用该模型一段时间的用户表示印象深刻,并感叹”我们是不是一直在忽视 Apple 的模型?想象一下如果他们把 Qwen 3.5 级别的模型内置到操作系统中,那会多酷。”他还提到 Overcast 的 Marco Arment 构建了约 48 台 Mac mini 的集群来使用 Apple 转录服务。后续讨论中有人引用 ATP 播客中 Marco 的访谈,称赞他完全不受时尚和潮流影响,只在新技术有真正好处时才采用。

  2. swiftcoder:提出了一个有趣的问题——是否有人尝试将这个模型作为 Claude/Codex 等更强大模型的子代理使用?后续讨论中,LatencyKills 指出 4K 的上下文窗口是个问题,Claude 甚至在读取和总结一个小文件时就会超出这个限制。franze 回应说最初尝试用超级节省 token 的模式运行 OpenClaw 完全不行,但用于 shell 脚本效果很好。khalic 则建议尝试 Qwen coder 0.5B 来做小型本地任务。

  3. brians:对本地服务器模式的安全性提出了重要关注。虽然大多数浏览器不允许从随机网站向 127.0.0.1 发送请求,但这个限制仍在完善中。btown 详细解释了 Chrome 142 和 Edge 140 已经推出了本地网络访问的权限对话框,Firefox 也在跟进。这个安全反馈导致 franze 在几小时内就发布了修复版本。

  4. elcritch 和 HelloUsername:确认了该模型只在 macOS 26 Tahoe 上可用,不支持 Sequoia。HelloUsername 引用了官方要求:”Apple Silicon Mac, macOS 26 Tahoe or newer, Apple Intelligence enabled”。多位用户对必须升级到 Tahoe 表示遗憾,有人称 Tahoe 是”一场灾难”。

  5. FinnKuhn:通过详细的聊天记录展示了模型在多语言方面的局限性。虽然模型可以用德语生成内容(如 Currywurst 食谱),但在处理德语中正式称呼(Sie)和非正式称呼(Du)之间的切换时表现很差,这是他之前在任何 LLM 中都没遇到过的限制,”甚至 DeepL 都能在它们之间切换”。