相信不少人和我一样,买了 Mac Mini 之后就打算把它当成完美的 OpenClaw 网关。
但理想很丰满,现实很骨感。最近 Anthropic 等大模型厂商的政策越收越紧,拼命把用户往按 Token 付费的商业 API 上轰。原本以为买硬件是一次性投资,结果硬生生变成了每个月的大额持续开销。就算你用的是 OpenAI,那流水的账单看一眼也肉疼。
其实,有一条完全免费、还能顺便把隐私拉满的终极解法:本地部署。
直接用本地大模型接管你的 OpenClaw 智能体,把每月的 API 费用打到 0 元!今天这篇干货手把手带你无痛、不踩坑地在 Mac Mini 上跑起高性能本地 LLM。
写在前面 : 本文不涉及 OpenClaw 的基础安装,而是专门教你如何丝滑地为现有的智能体套件更换一个"免费的本地大脑"。

硬件配置与一些心里话
这套方案我在自己的 Mac Mini 上反复测试过,配置如下:
系统: macOS Tahoe (Version 26.3.1)
芯片: Apple M2 (8核)
统一内存: 24GB
如果你正打算为了玩本地模型去开荒 Mac Mini,强烈建议 M2 芯片起步,内存直接上 24GB。16GB 内存不是不能跑,但 Agent 任务最大的特点就是"长上下文(Long Context)",内存一旦吃紧,分分钟报错给你看。
过来人的避坑血泪史: 很多人为了让 Agent 24小时随叫随到,会选择把 Mac Mini 当成全天候服务器开着。但如果你只有一台主力 Mac,平时还要兼顾办公,或者家里宽带没有公网 IP、网络偶尔不稳定,天天盯着本地编译和维护其实挺心累的。
这种情况下,更省心的方案是把 OpenClaw 和模型全天候挂在 Hostease 服务器云端,不仅不占本地电脑资源,还能享受企业级的高带宽和全天候稳定性,算下来比自己天天升级硬件、交电费还要划算。
核心部署四步走
第一步:源码编译 llama.cpp(榨干 Mac 性能)
玩本地模型大家习惯用 Ollama,但为了把 Mac 的硬件潜力榨干,我们这次选择 llama.cpp 。通过源码编译配合量化模型,在 Mac 上的推理速度直接暴涨 70%!
我们需要编译一套开启 Metal 硬件加速、同时剥离 CUDA 的专用程序。打开终端,直接复制以下命令:
1.用 Homebrew 安装编译必备的工具链:
Bash
brew install cmake curl
2.拉取源码,直接拉满 Mac 核心进行多线程编译:
Bash
克隆仓库
git clone https://github.com/ggml-org/llama.cpp
配置构建环境,开启 Metal 加速,关闭 CUDA
cmake llama.cpp -B llama.cpp/build \
-DBUILD_SHARED_LIBS=OFF \
-DGGML_METAL=ON \
-DGGML_CUDA=OFF
开始编译
cmake --build llama.cpp/build \
--config Release \
-j$(sysctl -n hw.ncpu) \
--clean-first \
--target llama-cli llama-mtmd-cli llama-server llama-gguf-split
第二步:下载"定制版"本地大模型
要在消费级硬件上跑大模型,"模型量化(Quantization)"是必修课。简单来说,就是把模型进行高保真压缩,让它能完美塞进 Mac 的统一内存里,同时智商不掉线。
如果盲目按照 OpenClaw 官方文档去硬啃原版模型,百分之百会卡死在内存溢出里。这里直接给你一套亲测最稳的"黄金配方":
首选:Qwen 3.5 - 9B
作为当前本地模型里的绝对黑马,千问 3.5 (9B参数版) 的实际表现已经把 Gemma 4-12B 甩在了身后。它在 16GB 或 24GB 的 Mac 上运行只需要吃 6-8GB 内存,处理起邮件回复、日程管理、IoT 智能家居联动等 Agent 任务游刃有余。
1.下载精简量化版模型(GGUF格式):
Bash
mkdir -p models
curl -L -o models/Qwen3.5-9B-UD-Q4_K_XL.gguf "https://huggingface.co/unsloth/Qwen3.5-9B-MTP-GGUF/resolve/main/Qwen3.5-9B-UD-Q4_K_XL.gguf?download=true"
2.下载 Agent 专属聊天模板(不配这个绝对翻车): Agent 对输出格式的要求极度严苛,必须用特定的提示词模板来规范。执行以下命令:
Bash
mkdir -p templates
curl -o templates/qwen35.jinja "https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/resolve/main/chat_template.jinja"
第三步:让 llama-server 后台常驻
接下来,我们用 llama-server 搭建一个本地 API 服务器。这样 OpenClaw 就能直接调用它,假装自己还在连着云端 API。
1.先手动跑一次,看看能不能通:
Bash
./llama.cpp/llama-server \
-m models/Qwen3.5-9B-UD-Q4_K_XL.gguf \
--chat-template-file templates/qwen35.jinja \
--temp 0.7 \
--top-p 0.9 \
--top-k 20 \
-c 64000 \
-ngl 20 \
--host 127.0.0.1 \
--port 8080
如果终端最后输出了 llama_server: server is listening on http://127.0.0.1:8080(http://127.0.0.1:8080) 且没报错,说明底层没问题了。
2.配置 macOS 系统级守护进程(实现开机自启): 总不能每次开机都手动敲一遍命令。我们用 macOS 的 launchd(类似于 Linux 的 systemd)让它常驻后台。 使用 sudo 权限创建并编辑配置文件 /Library/LaunchDaemons/com.openclaw.llama-server.plist:
注意: 别忘了把代码里的 YOUR_USERNAME 换成你 Mac 的实际用户名。
XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.openclaw.llama-server</string>
<key>UserName</key>
<string>YOUR_USERNAME</string>
<key>ProgramArguments</key>
<array>
<string>/Users/YOUR_USERNAME/llama.cpp/llama-server</string>
<string>-m</string>
<string>/Users/YOUR_USERNAME/models/Qwen3.5-9B-UD-Q4_K_XL.gguf</string>
<string>--chat-template-file</string>
<string>/Users/YOUR_USERNAME/templates/qwen35.jinja</string>
<string>--temp</string>
<string>0.7</string>
<string>--top-p</string>
<string>0.9</string>
<string>--top-k</string>
<string>20</string>
<string>-c</string>
<string>64000</string>
<string>-ngl</string>
<string>20</string>
<string>--host</string>
<string>127.0.0.1</string>
<string>--port</string>
<string>8080</string>
</array>
<key>WorkingDirectory</key>
<string>/Users/YOUR_USERNAME</string>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/llama-server.log</string>
<key>StandardErrorPath</key>
<string>/tmp/llama-server.err</string>
</dict>
</plist>
3.激活并放行服务:
Bash
sudo chown root:wheel /Library/LaunchDaemons/com.openclaw.llama-server.plist
sudo chmod 644 /Library/LaunchDaemons/com.openclaw.llama-server.plist
sudo launchctl bootstrap system /Library/LaunchDaemons/com.openclaw.llama-server.plist
不放心的同学可以输一嘴 tail -f /tmp/llama-server.err 查看实时日志,确认服务已经稳稳当当地跑起来了。
第四步:改写 OpenClaw 配置,完成"换脑"
万事俱备,最后一步就是修改 OpenClaw 的路由,把刚才搭好的本地模型接进去。
1.打开 .openclaw/openclaw.json,在 models 模块中追加本地服务信息:
JSON
{
"models": {
"providers": {
"local": {
"baseUrl": "http://127.0.0.1:8080/v1",
"apiKey": "sk-local",
"api": "openai-completions",
"models": [
{
"id": "qwen3-9b",
"name": "Qwen3.5 9B Local",
"contextWindow": 64000,
"maxTokens": 8192
}
]
}
}
}
}
2.把智能体(Agents)的默认大脑指向这个本地模型:
JSON
"agents": {
"defaults": {
"model": {
"primary": "local/qwen3-9b"
},
"models": {
"local/qwen3-9b": {}
}
}
}
3.格式检查并重启 OpenClaw 网关:
Bash
验证 JSON 配置语法对不对
openclaw config validate
重启网关服务
openclaw gateway restart
瞄一眼本地模型有没有成功挂载
openclaw models list --provider local
4.来一次基础测试,看看模型听不听话:
Bash
openclaw infer model run \
--model local/qwen3-9b \
--prompt "Reply with exactly: pong" \
--json
如果返回了标准漂亮的 JSON 报文,且里面没有夹杂奇奇怪怪的碎标签,说明你的底层链路彻底打通了:
JSON
{
"ok": true,
"capability": "model.run",
"transport": "local",
"provider": "local",
"model": "qwen3-9b",
"outputs": [
{
"text": "pong",
"mediaUrl": null
}
]
}
终极实战:测一测 Agent 的"硬实力"(工具调用)
本地模型最让人担心的就是"智商低",一让它调工具就装死。我们直接整点硬活,新建一个 Python 计算器工具(Skill),测试一下它的逻辑推理和工具调用(Tool Calling)能力。
1.一行命令创建测试 Skill:
Bash
mkdir -p ~/.openclaw/workspace/skills/python-calc
cat << 'EOF' > ~/.openclaw/workspace/skills/python-calc/SKILL.md
name: python-calc
description: A tool that evaluates mathematical expressions by executing a Python one-liner.
version: 1.0.0
Instructions
-
Extract the exact mathematical expression the user wants to calculate.
-
Use your built-in shell tool to run this exact command, replacing `<expr>` with the expression: `python3 -c "print(<expr>)"`
-
Wait for the shell tool to return the stdout output.
-
You MUST generate a final conversational response to the user containing the exact numeric result returned by the script.
EOF
2.重启网关,给 Agent 出道计算题:
Bash
openclaw gateway restart
openclaw agent --local --agent main --verbose on --thinking high --message "Use the python-calc skill to calculate 8664 multiplied by 222. Do not use skill_workshop. Tell me the final answer."
屏住呼吸等上几秒,如果你看到终端吐出了标准答案: The final answer is 1,923,408.
恭喜!你的本地全能 AI 智能体正式宣告毕业!
写在最后
在 Mac Mini M2 上跑完这一套流程,实际推理速度能稳在 20 - 70 tokens/second 之间。虽然跟云端全血版 Claude 的变态速度没法比,但对于一个零日常开销、数据百分百本地私有化的"数字管家"来说,这个速度已经完全够用了。
当然,折腾开源的乐趣就在于不断升级。如果你在后期的深度使用中,发现 Mac Mini 开始频繁发热,长文本让内存有些吃不消,或者想跟团队小伙伴一起共享使用,那么不妨考虑把整套环境无缝迁移到云端高配服务器上。保留开源架构的同时,还能享受全天候不间断的高清算力,体验会更上一层楼。
赶紧去终端里复制命令,把你的钱包从 Token 账单里解放出来吧!有踩坑或者不懂的地方,随时在评论区抓我!