如何在 Mac Mini 上使用 OpenClaw 运行本地模型

相信不少人和我一样,买了 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

  1. Extract the exact mathematical expression the user wants to calculate.

  2. Use your built-in shell tool to run this exact command, replacing `<expr>` with the expression: `python3 -c "print(<expr>)"`

  3. Wait for the shell tool to return the stdout output.

  4. 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 账单里解放出来吧!有踩坑或者不懂的地方,随时在评论区抓我!