Mac Mini M4 Pro:
终极 OpenClaw 服务器
/** 如何选配、购买、部署并核算一台常开的 Mac Mini M4 Pro 作为 OpenClaw 主机 */
📊 Apple Silicon 上的社区实测区间(请在自己机器上复测)
| Model | tok/s | Context | Use Case |
|---|---|---|---|
| llama3.1:8b | ~30–50 | 128K | // Default conversational model |
| qwen2.5:14b | ~18–28 | 128K | // Stronger Chinese, longer context |
| gemma3:12b | ~20–30 | 128K | // Code + vision tasks |
| nomic-embed-text | n/a | 8K | // Embeddings, not chat generation |
⚡ 运行成本 —— 附计算过程,你可以用自己的电价重算
月度数字假设机器 24/7 处于该状态、电价 $0.12/kWh:瓦数 ÷ 1000 × 730 小时 × $0.12。请代入你自己的电价。真实的常开主机绝大部分时间在待机,只有很短时间满载,所以你的实际账单会接近待机那一栏而不是推理那一栏。想要实测而非估算,挂一个带能耗监测的智能插座跑一周。
⚙️ 24GB M4 Pro 的起步配置
🛍 推荐配件
1. 到底该买哪个配置
统一内存是唯一决定你能跑什么的参数,其余参数只决定跑得多快。一个 4-bit 量化模型大约需要每十亿参数 0.6 GB,再加上上下文窗口和 macOS 自身的余量。真正该决定你配置的是这道算术题而不是跑分——装不下的模型,再快的芯片也跑不起来。
| 配置 | 装得下什么 | 结论 |
|---|---|---|
| M4,16 GB | 8B 从容,14B 吃紧 | 如果你只跑一个 8B 对话模型、机器上不放别的东西,够用。 |
| M4 Pro,24 GB | 8B 和 14B,且留得下上下文 | 常开 Agent 主机的合理默认值。还能留出浏览器、Docker 和系统的余量。 |
| M4 Pro,48 GB | 32B 级模型 | 只有确实有 32B 的具体需求才值。做 Agent 任务时,一个提示词写好的 14B 通常在延迟上更划算。 |
| M4 Pro,64 GB | 能装下 4-bit 的 70B,但慢 | 装得下,但 70B 交互起来会很拖沓。买这个是为了批处理,不是为了聊天。 |
经验公式:4-bit 模型体积(GB)≈ 参数量(十亿)× 0.6。8B 约 5 GB,14B 约 9 GB,32B 约 20 GB,70B 约 40 GB。长上下文再加 2–4 GB,给 macOS 留大约 8 GB。一旦总量超过统一内存,macOS 就开始交换,吞吐会断崖式下跌——你花钱规避的是这个断崖,而不是那个每秒 token 数。
2. 从开箱到第一次响应
下面每条命令都在 Mac Mini 本机执行,SSH 进去或直接接键盘都行。全程约二十分钟,其中大部分时间在等模型下载。
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" # follow the printed instructions to put brew on your PATH, then: brew install node
OpenClaw 需要较新的 Node,在 macOS 上用 Homebrew 装是最省事的方式。
brew install --cask ollama open -a Ollama # start it once so the background service registers ollama pull llama3.1:8b
第一次拉取要下载好几 GB。在 Apple Silicon 上 Ollama 会自动使用 Metal,没有 GPU 开关需要设置。
ollama run llama3.1:8b "reply with the single word: ready"
这一步失败说明问题在 Ollama 而不是 OpenClaw。在这里隔离清楚,后面能少走很多弯路。
curl -fsSL https://openclaw.ai/install.sh | bash openclaw --version openclaw doctor
先确认版本号能打印出来再启动网关;装了一半的情况报错会很难懂。
3. 扛住重启、休眠和断电
桌面版 Mac 出厂时并不是一台服务器。有三个默认设置会让你的 Agent 掉线:它会休眠、断电后不会自己开机、开机后也没有任何东西去拉起网关。三个都要改,否则你一定会在最不合适的时候发现 Agent 连不上。
sudo pmset -a sleep 0 sudo pmset -a disablesleep 1 # confirm: pmset -g | grep -E 'sleep|disablesleep'
显示器休眠没问题,还能省电。真正会杀掉网关的是系统休眠。
sudo pmset -a autorestart 1
不设这一项,短暂停电之后机器就一直关着,UPS 也就白装了。
openclaw gateway install openclaw gateway start openclaw gateway status
`gateway install` 会替你写好并加载 launchd agent。自己手写 plist 在升级改变启动参数之前都能用,之后你就拥有了一份看起来没坏、实际已经坏了的副本。
sudo reboot # once it is back, from another machine on the network: curl -sf http://<mac-mini-ip>:18789/health && echo OK
这是唯一算数的测试。现在就做,别等三周后才发现这一环是断的。
4. 在自己机器上跑基准
公开的吞吐数字——包括本页给出的区间——对容量规划几乎没有用,因为它取决于量化方式、上下文长度和散热状态。自己测一遍只要两分钟,而且得到的是一个真能拿来做规划的数字。
ollama run llama3.1:8b --verbose "Write two paragraphs about tide pools."
看输出里的 eval rate 那一行:这才是生成阶段的每秒 token 数,决定回复「读起来」有多快。忽略 prompt eval rate,它衡量的是另一个快得多的阶段,虚高的宣传数字通常引用的就是它。
ollama run llama3.1:8b --verbose "$(cat some-long-document.txt) Summarise the document above."
上下文越长吞吐越低。要在你实际会用的上下文长度下测,而不是在空上下文下测。
sudo powermetrics --samplers cpu_power,gpu_power -i 1000 -n 10
会在请求执行期间以毫瓦为单位报告封装功耗。想要含电源损耗的墙上功率,带能耗监测的智能插座更诚实——powermetrics 看不到电源。
pmset -g thermlog
如果这里出现降频,说明你的持续吞吐低于峰值吞吐,原因就在风扇曲线。
什么时候 Mac Mini 是错的选择
- ✗你需要超过 64 GB 内存,或者需要只支持 CUDA 的工具链——去买或者租一台 NVIDIA 机器。
- ✗Agent 必须有一个固定公网地址可达。家里的 Mac 在 CGNAT 后面会很难受,VPS 更省事。
- ✗你只想要最便宜的常开主机、而且只跑小模型——树莓派 5 能以零头的价格做到。
- ✗你一周只跑一次批处理任务。按小时租 GPU 比买一台六天在空转的机器便宜。