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

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

相信不少人和我一样,买了 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 账单里解放出来吧!有踩坑或者不懂的地方,随时在评论区抓我!

AI 时代程序员必备技能

Codex、Claude Code、Cursor、Hermes Agent、OpenClaw等工程化实战专栏 ,讲透 AI 如何接管脏活累活

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值