Run a Local LLM with OpenClaw on Your Mac Mini
TL;DR · AI 摘要
在Mac Mini上运行本地LLM可节省高昂的API费用,使用OpenClaw和llama.cpp实现高性能本地部署。
核心要点
- 使用llama.cpp和量化模型可提升推理速度达70%。
- 推荐Mac Mini配置至少M2+处理器和24GB内存。
- 本地LLM在日常任务中表现与云端几乎无差异。
结构提纲
按章节快速跳转。
思维导图
用一张图看清主题之间的关系。
查看大纲文本(无障碍 / 无 JS 友好)
- 本地LLM部署
- 硬件要求
- M2+处理器
- 24GB内存
- 软件配置
- 安装llama.cpp
- 量化模型
- 性能优势
- 节省API费用
- 推理速度提升70%
金句 / Highlights
值得收藏与分享的关键句。
使用量化模型和llama.cpp可将推理速度提升70%。
本地LLM在日常任务如邮件、日历管理中表现与云端几乎无差异。
推荐至少24GB内存,否则可能遇到大上下文错误。
在 Mac Mini 上使用 OpenClaw 运行本地 LLM | Towards Data Science
大型语言模型
在 Mac Mini 上使用 OpenClaw 运行本地 LLM
厌倦了每月的 API 费用?按照本经过验证的指南,无需烦恼,即可在你的 Mac Mini 上设置一个高性能的本地 LLM。
Sam Black
2026 年 6 月 16 日
8 分钟阅读
分享
你购买 Mac Mini 是为了使用 OpenClaw。完美。
不幸的是,最近 Anthropic 已经将 OpenClaw 用户推向其按 token 计费的 API 1,这使得原本一次性硬件购买变成了一项(大额)持续费用 2。即使你使用 OpenAI,你每月仍需要支付相当多的费用。
💵💵 运行本地模型可以完全消除你 OpenClaw 代理的每月费用。 💵💵
然而,安装和配置所有内容可能会令人困惑,特别是如果你对本地 LLM 不熟悉的话。
在本文中,我将向你展示如何以最无痛的方式在你的 Mac Mini 上设置一个本地 LLM,以免费驱动你的代理。
即使你是初学者,也可以使用它。
🤨 “我听说过本地 LLM 的效果不如云端,这是真的吗?”
如果正确设置,本地 LLM 在执行电子邮件、日历管理、提醒、家庭 IoT 自动化和基本的互联网研究(你实际上使用 OpenClaw 执行的任务)等任务时,几乎与云端模型无异。
如果你需要执行更高级的任务,例如使用 OpenClaw 进行软件工程,底部有一个链接,说明如何设置一个备用模型。
⚠️ 注意:本指南不是完整的 OpenClaw 教程。它的目的是帮助你尽快将本地 LLM 与你的代理(s)一起运行。
硬件
本文是在具有以下规格的 Mac Mini 上进行测试的:
操作系统
macOS Tahoe
版本
26.3.1
处理器
M2
核心数
8
统一内存
24GB
如果你正在考虑购买 Mac Mini,我建议至少选择 M2+ 处理器和至少 24GB 的 RAM。虽然你可以使用 16GB 的内存,但资源将非常紧张,你可能会在处理更大的上下文时遇到错误。
设置
首先,使用官方指南安装 OpenClaw。如果你已经完成了这一步,可以跳过此步骤。
1. 安装 llama.cpp
我们将跳过使用 Ollama(推荐的本地提供商),并选择使用 llama.cpp。通过使用量化模型与 llama.cpp 结合,我们可以将推理速度提高多达 70%。
我们需要使用 metal 标志开启并关闭 cuda,从源代码构建 llama.cpp。这将处理一些优化,以确保模型在你的 Mac 上以最大速度运行。只需按照以下步骤操作。
1️⃣ 首先,从你的主目录开始,使用 brew 安装一些先决条件。
# 将以下内容粘贴到你的终端中
$ brew install cmake curl2️⃣ 然后,使用适当的标志构建 llama.cpp
# 克隆 llama.cpp
git clone https://github.com/ggml-org/llama.cpp
# 使用 Metal 加速配置构建
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现在,我们就可以使用 llama.cpp 了。
2. 下载本地 LLM
如前所述,从本地模型中获得良好性能的关键是量化。
量化使我们能够使用一个更大的、功能更强的模型,通过智能压缩使其适合更小的硬件。这使得量化后的模型能够保留其完整大小源模型的大部分性能。除非你拥有一块大型 GPU 或内存高达 80GB 以上的 Mac,否则量化是必不可少的。
盲目地遵循 OpenClaw 文档,同时尝试使用量化模型,会让你感到困惑和沮丧。
目前没有任何明确的指南可以清楚地说明如何让量化模型与代理(agent)配合使用。
下面是一个经过测试的配方,可以适用于你的代理。
模型选择:Qwen 3.5-9B
在这里,我们使用的是 Qwen 3.5(9B 参数版本)。
截至 2026 年 6 月,它在本地模型中表现优异,甚至超越了 Gemma 4-12B。它可以在 16GB 或 24GB 的 Mac 上运行,总共需要 6-8GB 的 RAM。用户也对它在 OpenClaw 上的表现评价很高。
请记住,代理需要更长的上下文,这将阻止我们即使进行了量化,也无法运行更大的 27B 版本。
1️⃣ 让我们下载模型
# 下载模型
curl -L -o models/Qwen3.5-9B-UD-Q4_K_KL.gguf \
"https://huggingface.co/unsloth/Qwen3.5-9B-MTP-GGUF/resolve/main/Qwen3.5-9B-UD-Q4_K_XL.gguf?download=true"2️⃣ 下载模板,保存到 templates 文件夹中。
mkdir templates && \
curl -o templates/qwen35.jinja \
"https://huggingface.co/froggeric/Qwen-Fixed-Chat-Templates/resolve/main/chat_template.jinja"非常重要,你必须使用与 OpenClaw 兼容的模板。没有这一步,任何事情都不会正常工作。
3. 启动 llama-server
llama-server 将作为我们的后端 API。OpenClaw 将使用这个 Web 服务,而不是直接调用 OpenAI 或 Anthropic 的 API。
我们已经安装了 llama-server 并下载了模型。现在让我们运行一个快速测试。
1️⃣ 运行快速测试
./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你应该看到类似以下的内容(没有错误)
srv llama_server: model loaded
llama_server: server is listening on http://127.0.0.1:8080
update_slots: all slots are idle2️⃣ 现在,让我们编写一个 launchd 守护进程,这样你的本地 LLM 服务器可以在重启后自动启动并保持可用。如果你熟悉 Linux,launchd 对 macOS 来说基本上就是 systemd。
将以下内容保存为 /Library/LaunchDaemons/com.openclaw.llama-server.plist。你需要使用 sudo 来执行此操作。
展开以下内容以生成
plist文件
❗确保将 YOUR_USERNAME 替换为你的实际用户名在 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>
现在,启用它。
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
现在我们已经成功加载了本地的LLM,并作为守护进程运行。接下来我们只需要重新配置OpenClaw。
### 4. 重新配置OpenClaw以使用本地模型
现在我们需要将这个本地模型添加到OpenClaw的配置中,以便网关可以使用它。
1️⃣ 在 `.openclaw/openclaw.json` 文件的“models”块中添加以下内容:
{ "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 } ] } /* REMOVE THIS COMMENT */ /* 你可以在这里添加其他提供者,比如anthropic */ } } }
> 注意:contextWindow和maxTokens的设置可能需要根据你的具体工作流程进行调整。
你还需要为代理设置默认模型:
"agents": { "defaults": { "model": { "primary": "local/qwen3-9b" }, "models": { "local/qwen3-9b": {} } } }
验证配置的准确性也很有帮助,运行以下命令来检查语法:
openclaw config validate
2️⃣ 重启网关,确保本地模型现在可用:
openclaw gateway restart
3️⃣ 测试OpenClaw是否已正确注册我们的本地模型:
openclaw models list --provider local
我们还可以运行一个简单的推理调用:
openclaw infer model run \ --model local/qwen3-9b \ --prompt "Reply with exactly: pong" \ --json
你应该会收到一个JSON对象作为返回。重要的是:确认响应中没有泄露的标签。不应该有,但为了安全起见,这一点尤为重要。
{ "ok": true, "capability": "model.run", "transport": "local", "provider": "local", "model": "qwen3-9b", "attempts": [], "outputs": [ { "text": "pong", "mediaUrl": null } ] }
我们现在已经验证了所有连接都正常工作。为了完全确认(或者如果你是第一个代理),让我们设置一个示例技能,并确保模型能够正确推理并执行工具调用。
### 5. 通过测试技能验证功能
让我们创建一个测试“python-calc”技能,这将允许我们测试本地模型是否可以正确推理并输出工具调用。
1️⃣ 运行以下命令来创建技能。这将为你的所有openclaw代理添加此工具。
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️⃣ 现在,我们可以运行一个示例代理调用,以验证工具是否能正确输出:
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.
太棒了!
实际上,我们能看到的速度可以达到每秒 20-70 个 token*。虽然这还达不到 Claude 的速度(每秒 130 个 token 以上),但对于一个硬件配置较低的 OpenClaw 代理来说,这已经相当合理了。
请记住,我们已经将思考模式设置为“高”,所以花费一点时间是正常的。
> 如果你不确定 openclaw 是否使用了你的模型,在另一个终端窗口中,通过运行 `tail -f /tmp/llama-server.err` 来查看 llama-server 的日志。
*实际速度可能因情况而异。
## 总结
运行本地的 LLM,尤其是使用自定义模板和量化时,可能会非常令人沮丧。第一次在朋友的 Mac 上设置这个过程花费了两天的时间来回调试!感谢 Jacob W. 的启发。
就到这里吧!希望这能为你节省大量 💸
如果确实如此,或者如果我帮你解决了某些头痛的问题,你也可以在这里给我买杯咖啡。
☕ 谢谢!
1. Boris Cherny 的一条推文,讨论对 OpenClaw 的“封禁”
2. 用户每月花费 420 美元在 API 费用上
3. 使用多个供应商与 OpenClaw
撰写人
查看 Sam Black 的所有文章
API
,
Llm
Llm 应用
本地 Llm
OpenClaw
分享这篇文章
- 在 Facebook 上分享
- 在 LinkedIn 上分享
- 在 X 上分享
Towards Data Science 是一个社区出版物。提交你的见解,以接触我们的全球受众,并通过 TDS 作者支付计划获得报酬。
将 href 更新为你的实际提交 URL
为 TDS 写作
✦ 结束 CTA ✦