Towards Data Science

Run a Local LLM with OpenClaw on Your Mac Mini

8.5内容质量

TL;DR · AI 摘要

在Mac Mini上运行本地LLM可节省高昂的API费用,使用OpenClaw和llama.cpp实现高性能本地部署。

核心要点

  • 使用llama.cpp和量化模型可提升推理速度达70%。
  • 推荐Mac Mini配置至少M2+处理器和24GB内存。
  • 本地LLM在日常任务中表现与云端几乎无差异。

结构提纲

按章节快速跳转。

  1. 介绍使用本地LLM替代Anthropic API以节省费用的方法。

  2. 推荐Mac Mini配置M2+处理器和24GB内存以确保性能。

  3. 通过brew安装依赖并构建llama.cpp以实现本地LLM部署。

  4. 使用Metal加速并关闭CUDA以优化模型运行速度。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • 本地LLM部署
    • 硬件要求
      • M2+处理器
      • 24GB内存
    • 软件配置
      • 安装llama.cpp
      • 量化模型
    • 性能优势
      • 节省API费用
      • 推理速度提升70%

金句 / Highlights

值得收藏与分享的关键句。

#LLM#OpenClaw#Mac Mini#llama.cpp
打开原文

在 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 安装一些先决条件。

code
# 将以下内容粘贴到你的终端中
$ brew install cmake curl

2️⃣ 然后,使用适当的标志构建 llama.cpp

code
# 克隆 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️⃣ 让我们下载模型

code
# 下载模型
 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 文件夹中。

code
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️⃣ 运行快速测试

code
./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

你应该看到类似以下的内容(没有错误)

code
srv  llama_server: model loaded
 llama_server: server is listening on http://127.0.0.1:8080
 update_slots: all slots are idle

2️⃣ 现在,让我们编写一个 launchd 守护进程,这样你的本地 LLM 服务器可以在重启后自动启动并保持可用。如果你熟悉 Linux,launchd 对 macOS 来说基本上就是 systemd。

将以下内容保存为 /Library/LaunchDaemons/com.openclaw.llama-server.plist。你需要使用 sudo 来执行此操作。

展开以下内容以生成

code
plist

文件

❗确保将 YOUR_USERNAME 替换为你的实际用户名在 XML 中。

code
<?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>

code

现在,启用它。

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

code

我们可以通过查看日志文件来确认服务是否正常运行。

tail -f /tmp/llama-server.err

code

现在我们已经成功加载了本地的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 */ } } }

code

> 注意:contextWindow和maxTokens的设置可能需要根据你的具体工作流程进行调整。

你还需要为代理设置默认模型:

"agents": { "defaults": { "model": { "primary": "local/qwen3-9b" }, "models": { "local/qwen3-9b": {} } } }

code

验证配置的准确性也很有帮助,运行以下命令来检查语法:

openclaw config validate

code

2️⃣ 重启网关,确保本地模型现在可用:

openclaw gateway restart

code

3️⃣ 测试OpenClaw是否已正确注册我们的本地模型:

openclaw models list --provider local

code

我们还可以运行一个简单的推理调用:

openclaw infer model run \ --model local/qwen3-9b \ --prompt "Reply with exactly: pong" \ --json

code

你应该会收到一个JSON对象作为返回。重要的是:确认响应中没有泄露的标签。不应该有,但为了安全起见,这一点尤为重要。

{ "ok": true, "capability": "model.run", "transport": "local", "provider": "local", "model": "qwen3-9b", "attempts": [], "outputs": [ { "text": "pong", "mediaUrl": null } ] }

code

我们现在已经验证了所有连接都正常工作。为了完全确认(或者如果你是第一个代理),让我们设置一个示例技能,并确保模型能够正确推理并执行工具调用。

### 5. 通过测试技能验证功能

让我们创建一个测试“python-calc”技能,这将允许我们测试本地模型是否可以正确推理并输出工具调用。

1️⃣ 运行以下命令来创建技能。这将为你的所有openclaw代理添加此工具。

mkdir -p ~/.openclaw/workspace/skills/python-calc

code

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

code

再次重启网关。

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."

code

大约一秒钟后,如果一切正常,我们应该会看到类似以下的内容:

The final answer is 1,923,408.

code

太棒了!

实际上,我们能看到的速度可以达到每秒 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 ✦