所有文章
AI 硬件

macOS 27 fm 命令:Mac 自带免费本地 AI,但大陆用不了,管道还会丢文件

macOS 27 fm 命令:终端里免费调用苹果端侧模型。可复制的命令、fm serve 调用示例、管道丢文件的坑、上下文 4K/8K 看机型,以及中国大陆目前不能用的官方说明。

macOS 27 fm 命令:一台笔记本侧面拉开一个小抽屉,里面放着 Mac 自带的免费 AI 小工具

macOS 27 fm 命令是今年苹果塞进系统里、但没多少人注意到的一个小东西:升级到 macOS 27 之后,打开终端敲 fm respond "你的问题",Mac 上的端侧大模型就直接回答你。不用装 Ollama,不用 API key,也不花钱。苹果在 WWDC26 的 fm 命令行专场里原话是:这个工具“comes pre-installed with macOS 27”(随 macOS 27 预装)。

先说两个坏消息,省得你白折腾:第一,它用的是 Apple 智能的模型,中国大陆目前用不了;第二,把文件用管道喂给它时有个坑,写法不对它会悄悄丢掉你的文件内容,然后一本正经地编一段“总结”。下面都会讲。

先说结论

  • 它是什么:/usr/bin/fm,苹果 Foundation Models 的命令行入口。macOS 27(2026 年 9 月 14 日正式发布)自带,不用另装。
  • 花多少钱:零。默认的 system 模型在本机跑,断网也能用。
  • 擅长:总结你给它的文字、从文字里抽字段、改写、打标签、在脚本里给乱七八糟的文件名分类。
  • 不擅长:常识问答、写代码、算数、长文档。上下文窗口看机型,4,096 或 8,192 token。
  • 门槛:Apple 智能能用的地方它才能用。中国大陆不在其中。

第一次用:先同意协议,再看模型下好没有

macOS 27 fm 命令在你同意苹果的条款之前什么都不干,连 --help 都不给看。协议对这台 Mac 上所有用户生效,所以要 sudo。下面这些来自 fm(1) man page(苹果手册页的公开镜像):

sudo fm license          # 看条款,输入 y 同意
fm license --status      # 查这台 Mac 是否已同意

然后看模型到底下载好没有。模型是后台单独下载的。第三方网站 Mac Install Guide 在 macOS 27.0 上实测用的是:

fm available
# System model available                  -> 可以用了
# System model unavailable: modelNotReady -> 还在下载,过会儿再试

有个小出入:6 月测试版的 man page 里这个子命令叫 models,不叫 available。哪个不行就跑一下 fm --help,以你这台机器显示的为准。

占多大空间?苹果的 Apple 智能支持文档写的是:M3 及以上且至少 12GB 统一内存的 Mac 最多 14GB,其他 Mac 最多 8GB。两点容易被忽略:这是 Apple 智能整套模型,你用不用 fm 它都会下;而且好几家媒体在“储存空间”里实测看到 20GB 以上。苹果没有提供删除方法。256GB 的 Mac 用户,这一条比文章里别的都重要。

macOS 27 fm 命令速查

macOS 27 fm 命令速查表:license、available、respond、chat、schema、count-tokens、serve

下面是我觉得真正用得上的几条,全部出自苹果的演讲或 man page:

fm respond "把这段改成大白话:……"                     # 一句话出答案
fm respond --no-stream "……" > answer.txt              # 存文件时关掉流式输出
fm chat --instructions "你是一个说话简短的 Unix 老师"   # 交互聊天,里面可用 /save、/model
fm chat --continue                                    # 接着上次的对话
fm count-tokens "Hello world"                         # 看看占了多少上下文
fm schema object --name Invoice --string vendor --string due_date --double total > invoice.json
fm respond --schema invoice.json "$(cat invoice.txt)" # 让它按结构返回 JSON

--greedy 让输出更稳定,适合写脚本;--image 可以附一张图。聊天记录存在 ~/.fm/sessions/,设置在 ~/.fm/config.json。

管道丢文件:fm 悄悄无视你的内容

这一节是全文最值钱的部分,因为这是让 macOS 27 fm 命令自信地胡说八道最容易的方式。Mac Install Guide 试了大家最顺手的写法:

cat notes.txt | fm respond "用两句话总结一下"   # 别这么写

命令行上一旦带了提示词,管道进来的文字就被静默丢弃。退出码是 0,没有任何警告,模型去“总结”一份它根本没看到的文档。他们跑了三次,分别总结出一个叫 Alex 的人的故事、一篇讲定目标的文章、一篇讲运动的文章。文件里一个字都没有这些。

正确写法:把你的要求放进 --instructions,标准输入只放内容:

cat notes.txt | fm respond --instructions "用两句话总结输入的内容"

同一批测试里还有两个写脚本要注意的点。没同意协议时,fm 退出码是 69,提示写到 stderr,所以 output=$(fm respond ...) 拿到的是空字符串。加 set -e 或者检查 $?。另外让它给列表分类时,数一下返回的条数:苹果自己的文件整理演示里,十个文件名它漏了两个。

fm serve:本机一个免费的 Chat Completions 接口

macOS 27 fm 命令还有服务模式。man page 的说法是 fm serve 启动“a Chat Completions API server for Foundation Models”。苹果写了 --host、--port、--socket 三个参数,但没写默认端口,所以我一律显式指定。第三方测试用的是 1976:

fm serve --port 1976

另开一个终端:

curl -s http://127.0.0.1:1976/v1/models

curl -s http://127.0.0.1:1976/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"system","stream":false,
       "messages":[{"role":"user","content":"给这段话打 3 个标签:季度预算复盘会议记录"}]}'

"stream": false 不能省。根据 第三方测试,服务默认是流式返回,客户端要是等一个普通 JSON,收到的会是一串 SSE 事件。用 Python 调,只用标准库就行:

import json, urllib.request

body = {
    "model": "system",
    "stream": False,
    "messages": [
        {"role": "system", "content": "找出发件人和截止日期,用 JSON 回复。"},
        {"role": "user", "content": open("email.txt", encoding="utf-8").read()},
    ],
}
req = urllib.request.Request(
    "http://127.0.0.1:1976/v1/chat/completions",
    data=json.dumps(body).encode(),
    headers={"Content-Type": "application/json"},
)
print(json.load(urllib.request.urlopen(req))["choices"][0]["message"]["content"])

两个提醒。同一批测试发现它完全没有鉴权,所以别在你管不了的网络上绑 0.0.0.0。另外它不是 OpenAI 的完整替代品:带工具定义(tools)的请求,有人测出直接报错,有人测出把原始 JSON 塞在正文里。拿它接纯聊天脚本可以,接 Agent 框架别指望。真要在 Python 里深度用,苹果另有 SDK(pip install apple_fm_sdk,要 Python 3.10+、Xcode、Apple 芯片),那个支持工具调用。

上下文:4,096 还是 8,192,看你的 Mac

网上说 macOS 27 fm 命令“8K 上下文”,只对了一半。苹果 WWDC26 私有云计算专场的示例代码里,contextSize 的注释是“4096 on 26.0 / 8192 on 27.0 (newer devices)”,也就是新设备才是 8192;同一场的口播还说端侧模型是 4K。

macOS 27 fm 命令不同机型的上下文长度:M3 及以上且 12GB 内存为 8,192 token,M1、M2 为 4,096

第三方实测补上了细节:开源项目 apfel 的作者在 M3 Pro 上测到 8,192,在装 27.0.1 的 M2 MacBook Air 上是 4,096,苹果自己的 fm 直接拒绝了一个 4,039 token 的提示。这和苹果的存储分档(M3 及以上、12GB 以上内存下更大的包)对得上,但苹果没公布逐机型的表,所以这个划分算“实测”,不算“官方”。不管哪种,窗口都是指令、输入、回答加在一起。M1/M2 上大概就是两三页纸的量,别指望塞一份报告进去。先用 fm count-tokens 数一下。

能替你省哪些钱,哪些活还得上大模型

macOS 27 fm 命令适合做的事(总结、抽字段、打标签)和需要更大模型的任务对比

苹果给这个模型的定位就是总结、抽取、分类、短改写。Mac Install Guide 拿真实的新手终端问题去问,一题都没完全答对:它会教你用一个根本不存在的 Homebrew 命令;在跑 macOS 27 的 Mac 上问它最新的 macOS 是什么,它答 Sonoma。真正的总结任务它倒做得不错。这和苹果自己说的一致。

所以按钱来分工,我会这么分:

  • 交给 fm:脚本里那些本来可能要调付费 API 的“胶水”活。给 200 条笔记打标签、从每封收据邮件里抽日期和金额、给截图改名、把会议记录压成三条要点。每次调用成本:零。
  • 上更大的本地模型:需要更长上下文或真推理、但数据不想出本机的活。内存够的话,用 Ollama 或 LM Studio 跑 Qwen、DeepSeek。什么配置装得下什么,见我的 DeepSeek 本地部署。
  • 继续付费:写代码、做研究、错了会让你吃亏的事。每月 20 美元那一档在这里还是值的,最新价格看我的 AI 订阅和 API 价格对比。
macOS 27 fm 命令、Ollama 跑 Qwen 或 DeepSeek、付费 AI 订阅的成本和适用场景对比

还有个折中玩法:fm 可以用 --model-provider 去连别的 Chat Completions 服务,同一条命令在苹果模型不够用时改去问你的 Ollama 模型。这个组合我没亲手跑过,参数在 man page 里,Ollama 的 OpenAI 兼容地址就是常见的那个:

fm respond --model-provider http://localhost:11434/v1 --model qwen3:8b "解释一下这段报错:……"

那 --model pcc,苹果更大的云端模型呢?WWDC 上演示过,有用量上限。但在 macOS 27.0 上,第三方测试者反馈命令行里用不了(“PCC inference is not available in this context”)。暂时别指望它。

大陆能不能用、机型和语言要求

macOS 27 只支持 Apple 芯片的 Mac,Apple 智能需要 M1 及以上(或 A18 Pro 的 MacBook Neo),见苹果官方说明。设备语言和 Siri 语言要设成同一种受支持的语言。Apple 智能跑不起来的话,fm 会报 appleIntelligenceNotEnabled,就到此为止了。

关于中国大陆,苹果原文写得很清楚:在中国大陆购买的设备,目前无法使用 Apple 智能;在中国大陆以外购买的设备,如果你人在中国大陆、并且 Apple 账户的国家或地区也是中国大陆,目前同样无法使用。苹果还说,在满足监管要求期间,新的 Apple 智能功能不会在中国大陆提供。也就是说国行 Mac 升级到 macOS 27 能看到 fm 这个命令,但跑不出结果。这里不讨论任何绕过的办法。

吃不吃内存

空闲时几乎不占,这一点 macOS 27 fm 命令挺让人意外的。Mac Install Guide 在 16GB 的 M3 MacBook Air 上测到,苹果的推理服务空闲时大约 450MB,生成回答时大约 650MB;fm serve 开着也不会让模型一直驻留内存。fm 程序本身只有 3.2MB。所以它不会和你的 Ollama 抢内存,真正的代价是硬盘空间,前面说过了。如果你在纠结跑本地 AI 该买多大内存,可以看 Mac 现在买还是等。

我的看法

macOS 27 fm 命令是个干杂活的免费小工,而且已经装在你的 Mac 里了。管道配 --instructions,要结构化就上 --schema,脚本里查退出码,输入别太长。别问它你没法核实的事实。更难的活,交给更大的本地模型,或者你本来就在付钱的那个订阅。

本文于 2026 年 10 月 22 日(北京时间)对照苹果 WWDC26 第 334、319 场、fm man page 和 Apple 支持文档 121115 核对。第三方实测结果都已注明。

macOS 27 fm 命令常见问题

fm 命令收费吗?

不收。默认的端侧模型不用 API key,没有按次计费,也没有请求次数限制,断网也能用。云端的 pcc 模型有用量上限。

哪些 Mac 能用 fm?

能装 macOS 27、能用 Apple 智能的 Apple 芯片 Mac(M1 及以上),并且所在地区和语言要支持 Apple 智能。

国行 Mac 能用 fm 吗?

目前不能。fm 依赖 Apple 智能,苹果官方说明在中国大陆购买的设备目前无法使用 Apple 智能。

fm available 显示 modelNotReady 怎么办?

模型还没在后台下完。插着电、连着 Wi-Fi 放一会儿,过段时间再跑 fm available。苹果没给预计时间。

fm serve 默认端口是多少?

苹果的 man page 没写默认值。自己用 --port 指定,比如 fm serve --port 1976,然后用模型名 system 调 http://127.0.0.1:1976/v1/chat/completions。

fm 的上下文有多长?

macOS 27 上新机型 8,192 token,老机型 4,096(苹果示例代码加第三方实测:M3 Pro 8,192,M2 4,096)。用 fm count-tokens 自己查。

fm 能替代 Ollama 或 ChatGPT 吗?

短总结、抽字段、打标签,很多时候可以。写代码、推理、长文档、事实问答,不行。

顺便看:5090 跑大模型值得买吗、AI 价格对比,以及 AI 硬件分类下的全部文章。

留下你的想法

你的邮箱不会公开。