1. 为什么是“OpenClaw + 老Mac”而不是云端AI
1.1 老Mac跑本地AI,难在哪里
先交代背景。我手上这台Mac是2019款13英寸MacBook Pro,16GB内存,Intel Core i5四核,平时已经吃灰很久了。不是它不好用,而是新款M系列芯片出来后,这台机器的存在感实在太低:跑开发环境有点肉,看视频又大材小用,卖二手又不值钱。直到我开始折腾本地AI,才发现这种“性能过时但还能开机”的老设备,反而有它独特的价值。
本地AI这件事,很多人一听就想到“显卡要4090”“显存要24G”“没个几万块玩不动”。放在Windows平台上确实如此,但Mac的优势在于统一内存架构:CPU和GPU共享内存,即使没有独立显卡,你也可以把模型直接加载到内存里跑。对老Mac来说,最大的限制不是CPU算力,而是内存容量。16GB内存跑7B量级的量化模型是可行的,8GB内存则更适合3B到4B的小模型。只要肯在模型大小和量化精度上做取舍,老Mac完全可以承担起本地AI的日常使用。
但这里有个新问题:只是把模型跑起来不够,怎么让它干活?这时候就需要一个“AI代理助手”来把模型能力转换成实际动作。OpenClaw正好就是这个角色。
1.2 OpenClaw到底是什么角色
OpenClaw是一个开源的AI代理框架,你可以把它理解成“能把大模型接到真实环境里干活的中间层”。普通聊天工具是“你问一句、它答一句”,OpenClaw不太一样:你给它一个目标,它会自己拆解任务、调用终端命令、读写文件、访问网络接口,然后在关键节点停下来问你“这个命令是否可以执行”,确认后再继续。它不是一个模型,而是一个带权限管理和执行能力的“数字执行助理”。
我最早关注到OpenClaw,是因为它天然支持本地模型后端。相比那些只能绑定固定云端API的闭源Agent工具,OpenClaw可以接入Ollama、LM Studio,甚至NVIDIA NIM这类本地推理服务。这意味着你不需要把对话记录和任务内容发到外部服务器,整个链路都留在自己机器上。对重视数据隐私、或者想折腾离线自动化的人来说,这点非常关键。
另外,OpenClaw的配置思路和很多开源项目类似:初始化之后生成一个配置文件目录(我这边是 ~/.openclaw/),里面维护模型接入信息、技能插件和命令审批白名单。上手成本不高,但可玩性很强。老Mac本身性能有限,跑重负载的云端模型不现实,但把OpenClaw这种极轻量的代理框架架在本地小模型上,恰好是一套低配但完整的AI自动化方案。
1.3 什么样的用户适合这套组合
如果你属于下面任意一类,这个“老Mac跑OpenClaw”的组合就很值:
- 手头有吃灰的老Mac,正好想让它重新发挥点价值;
- 关注数据隐私,不想把任务内容、代码或笔记发给外部API;
- 想入门AI代理,但不想一上来就买云端服务或者租GPU服务器;
- 喜欢折腾命令行,愿意花一个下午把环境从零搭起来。
当然,这套方案也有不适合的场景:比如你要用大模型生成高质量长文、做复杂推理,本地小模型的表现确实不如云端大模型;再比如你追求“零配置开箱即用”,那直接装个带界面的大模型聊天工具更省事。OpenClaw的定位是“能干活的AI代理”,不是“最聪明的AI聊天框”,两者不能混淆。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 实操之前,先把老Mac这台“老伙计”摸清楚
2.1 检查硬件和系统:三条命令搞定
在动手装任何东西之前,先花三分钟确认你手上的机器到底是什么配置。不要凭印象,跑几条命令最靠谱:
bash复制system_profiler SPHardwareDataType
这条命令会列出芯片型号、内存大小、系统固件版本等关键信息。如果是Intel Mac,注意看“Processor Name”和“Memory”;如果是Apple Silicon,会显示“Chip”和“Memory”。
bash复制sw_vers
查看macOS大版本号。OpenClaw和Ollama对系统版本都有最低要求,太老的系统会导致安装失败。我个人建议至少在macOS 12 Monterey以上,越新越好。
bash复制df -h /
看根目录剩余空间。模型文件动辄4到8GB,加上OpenClaw本身的依赖和Python虚拟环境,至少预留20GB比较稳妥。
我遇到的真实情况是:2019款Intel MacBook Pro,16GB内存,512GB硬盘,系统是macOS 13 Ventura。这个配置在当年不算差,但放到现在跑本地AI,属于“能用但必须精打细算”的类型。
2.2 内存和磁盘空间,决定你能跑多大的模型
再强调一次:老Mac跑本地AI,内存是天花板。以Ollama支持的常见开源模型为例:
| 模型参数量 | 量化精度 | 实际加载占用 | 最低推荐内存 | 适合场景 |
|---|---|---|---|---|
| 3B | Q4_K_M | 约2.5GB | 8GB | 简单问答、摘要、关键词提取 |
| 7B | Q4_K_M | 约4.5GB | 16GB | 代码生成、结构化输出、任务规划 |
| 13B | Q4_K_M | 约8GB | 24GB,16GB会吃紧 | 复杂推理、长文本处理 |
| 8B(如Llama 3系列) | Q4_K_M | 约5GB | 16GB | 中等难度任务 |
如果你只有8GB内存的老Mac,老老实实选3B模型,别硬上7B。体验上的差异是:7B模型在8GB机器上一加载,系统就开始疯狂用交换内存,鼠标都卡,更别说让AI代理执行多步任务了。16GB机器跑7B量化模型则是够用的,但要注意关闭浏览器里那些常驻标签页。
2.3 老Mac跑本地AI的真实性能预期
说句实话,别指望Intel老Mac跑出M系列芯片那种速度。同样一个7B Q4模型,在M1/M2上生成速度可能达到每秒20到30个token,在2019款Intel四核上大概只有每秒5到10个token。这个速度对于“你问我答”的聊天来说能接受,但对于OpenClaw这种需要多轮工具调用的代理场景,每轮都要等模型输出,整体任务的耗时会被拉长。
不过,OpenClaw的很多操作并不依赖模型推理,比如文件读写、命令执行、脚本编排,这些瞬间就能完成。真正耗时的只有模型生成文本的环节。所以实际体验并没有想象中那么差,只要把任务拆得足够细,每步输出控制在几百个token以内,老Mac跑起来还是流畅的。
3. 一键搭建的整体思路:从依赖到模型一次搞定
3.1 为什么一定要写成一键脚本
OpenClaw环境的搭建过程,说复杂不算复杂,但步骤确实不少:要先装命令行工具,再装包管理器,然后是Node.js、Python、Ollama、模型下载,最后才是OpenClaw本身的安装和配置。任何一个环节报错,排查起来都挺费时间。我第一次手工搭的时候,光“Node版本不兼容”这个问题就折腾了一个多小时。
所以我做了一件事:把整个流程写成一个Shell脚本。脚本的好处不只是省事,更重要的是可以重复执行:跑一半失败了,修一下再跑,已经装好的组件会自动跳过,不用从头再来。后面换新机器、重装系统,把脚本扔上去就能复现同款环境。这就是“一键搭建”的真正意义。
3.2 一键脚本的核心组件清单
这套脚本的核心组件包括以下六块:
- Command Line Tools for Xcode:macOS上编译和运行很多工具的基础环境;
- Homebrew:macOS的包管理器,用来装Git、Node.js等依赖;
- Git:从GitHub拉取OpenClaw源码或安装脚本时要用;
- Node.js:OpenClaw的CLI基于Node.js运行,建议装18以上版本;
- Ollama:本地模型推理引擎,负责加载和运行模型;
- OpenClaw:AI代理框架本身。
各组件的逻辑关系是:Homebrew负责装底层工具,Node.js给OpenClaw提供运行环境,Ollama负责把模型跑起来,OpenClaw在最上层调用Ollama的接口完成AI代理任务。这个分层很清晰,出问题时也容易定位到底是哪一层出了问题。
3.3 需要避免的环境坑
老Mac上最常见的坑有三个。第一是Node.js版本太老,直接导致OpenClaw安装失败,解决方法是用nvm安装指定版本,而不是用系统自带的node;第二是Homebrew安装时会自动更新仓库索引,速度很慢,脚本里要设置跳过自动更新;第三是macOS系统自带的Python版本可能与部分工具不兼容,因此我用Homebrew单独装一个Python 3.11,避免影响系统环境。
另外,我在脚本中加入了一个环境检测函数:先检查当前系统是否满足版本要求,不满足就给出明确提示并退出,避免用户跑了一半才发现系统不支持。这种“前置校验”思路,在我后面几次重装时帮了大忙。
4. 核心实操:OpenClaw环境搭建全过程
4.1 环境准备:Command Line Tools与Homebrew
第一步,安装Command Line Tools。在终端里执行:
bash复制xcode-select --install
系统会弹窗询问是否安装,点击“安装”等待完成。很多人会在这步卡住,因为安装速度取决于网络状况,而且没有进度条。耐心等,不要中途关闭终端。如果执行后提示“already installed”,说明之前已经装过了,跳过即可。
第二步,安装Homebrew。为了加快速度,我建议设置国内镜像源(如果你在海外网络环境则无需处理),然后执行官方安装命令。不过要提醒一句:千万不要在root账户下直接运行Homebrew安装脚本,否则后续文件权限问题会让你头疼到怀疑人生。普通用户执行即可。
装完后验证:
bash复制brew --version
如果输出了版本号,说明基础环境OK。注意,如果你用的是Apple Silicon老Mac(M1/M2),Homebrew的安装路径是 /opt/homebrew,Intel Mac则是 /usr/local,后者和系统自带文件混在一起,更要小心权限问题。
4.2 安装Ollama并下载本地模型
Ollama是目前在Mac上跑本地模型最省心的方式,安装命令是:
bash复制brew install ollama
装完以后,需要把Ollama服务启动起来。如果你希望它一直在后台运行,可以用:
bash复制brew services start ollama
或者临时启动一次:
bash复制ollama serve
接下来下载模型。OpenClaw对模型的接口兼容性要求不高,只要Ollama能跑,OpenClaw就能通过HTTP接口调用。我选的是Qwen 2.5的7B指令版量化模型,命令如下:
bash复制ollama pull qwen2.5:7b
这一步会下载大概4.7GB的文件,取决于网络速度。如果你想更快验证流程,可以先用更小的模型,比如:
bash复制ollama pull llama3.2:3b
下载完成后,先手动跑一次测试,确认模型能正常回复:
bash复制ollama run qwen2.5:7b
输入一句“你好”,看到正常回复后按 /bye 退出。
4.3 安装并初始化OpenClaw
OpenClaw的安装方式取决于你拉取到的版本。我这边用的是npm方式:
bash复制npm install -g openclaw
这里有一个重要前提:Node.js版本必须足够新。我强烈建议用nvm管理Node版本,先安装nvm,再安装Node 20 LTS:
bash复制curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.zshrc
nvm install 20
nvm use 20
装完OpenClaw后,执行初始化命令:
bash复制openclaw init
初始化过程会引导你选择模型后端。这里要选“自定义/本地模型”或“Ollama”,不同小版本界面略有差异,但核心选项是一致的。初始化完成后,会在用户目录下生成 ~/.openclaw/ 文件夹,里面包含配置文件、日志目录和执行审批记录。
如果初始化时没有看到Ollama选项,也不要慌,后面可以直接改配置文件接入。
4.4 配置OpenClaw接入本地模型
OpenClaw的配置文件是JSON格式,我这边核心内容如下:
json复制{
"model": {
"provider": "ollama",
"baseUrl": "http://127.0.0.1:11434",
"modelName": "qwen2.5:7b",
"temperature": 0.3,
"maxTokens": 2048,
"requestTimeoutSeconds": 120
},
"execution": {
"approvalMode": "suggest",
"maxStepsPerTask": 20
}
}
几个关键参数解释一下:
baseUrl:Ollama的本地服务地址,不要改成localhost,直接用127.0.0.1更保险;temperature:控制模型输出的随机性,跑自动化任务建议保持在0.2到0.4之间,太高容易让代理“发挥过头”;maxTokens:单次生成的最大token数,老Mac内存有限,设置成2048可以避免长期占用大量内存;approvalMode:命令审批模式,suggest表示每次执行命令前都先问我;maxStepsPerTask:单个任务允许的最大执行步数,防止代理陷入死循环。
改完配置后重启OpenClaw,然后跑一个最简单的任务验证连通性:
bash复制openclaw run "告诉我当前系统的基本信息"
正常情况下,OpenClaw会先调用模型生成思路,然后执行 system_profiler 之类的命令,在关键步骤前等我确认,最后汇总结果。
4.5 把整个流程封装成 install-openclaw.sh
手工跑通以后,我把上面所有步骤封装成了一个Shell脚本。下面是精简过的主干部分,你在自己机器上使用前,把变量按需调整即可:
bash复制#!/bin/bash
set -e
# 目标模型
MODEL_NAME="qwen2.5:7b"
echo "[1/6] 安装 Command Line Tools..."
xcode-select --install 2>/dev/null || true
echo "[2/6] 安装 Homebrew..."
if ! command -v brew &>/dev/null; then
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
fi
export PATH="/usr/local/bin:/opt/homebrew/bin:$PATH"
echo "[3/6] 安装 nvm 并切换 Node 20..."
if [ ! -d "$HOME/.nvm" ]; then
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
fi
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
nvm install 20 || true
nvm use 20 || true
echo "[4/6] 安装 Ollama..."
if ! command -v ollama &>/dev/null; then
brew install ollama
fi
brew services start ollama || true
echo "[5/6] 拉取本地模型 $MODEL_NAME ..."
ollama pull "$MODEL_NAME"
echo "[6/6] 安装 OpenClaw..."
npm install -g openclaw
openclaw init
echo "环境搭建完成,开始验证..."
openclaw run "你好,请回复:环境正常"
这个脚本我实际用了好几次,重点做了三件事:幂等处理(已经装过的组件自动跳过)、环境变量补全(避免找不到Homebrew或nvm)、错误中断(set -e保证任何一步失败就直接停下,方便排查)。如果你用的是zsh,记得把脚本里对 .bashrc 的引用改成 .zshrc,不然重启终端后nvm可能失效。
5. 跑起来以后怎么调:模型参数与性能优化
5.1 模型量化等级怎么选
老Mac上跑本地模型,量化等级直接决定模型占多大内存、生成速度多快。Ollama拉取的模型默认是Q4_K_M量化,这是性能和质量的平衡点。如果你内存特别紧张,可以找Q3或Q2量化版本,但输出质量明显下降,中文尤其明显;反过来,Q8量化版本能保留更多细节,但内存占用会高出近一倍。
以7B模型为例,Q4_K_M大约占4.5GB,Q8大概占7.5GB。16GB内存的机器跑Q4没问题,但跑Q8就容易吃紧。我的建议是:先用Q4跑通流程,确认OpenClaw能完成实际任务,再考虑要不要换更高精度的量化版本。不要一上来就追求最好的模型质量,先把链路跑通更重要。
5.2 上下文窗口与并发参数
OpenClaw在跑多步任务时,会把历史消息一起发给模型,因此上下文窗口占用会随着任务推进不断变大。在老Mac上这非常致命:一个20步的任务,如果每步都回传上下文,最后几轮生成速度会明显变慢。因此我建议把上下文长度限制在一个合理范围。
Ollama本身支持在运行时设置上下文窗口,可以通过环境变量控制:
bash复制OLLAMA_CONTEXT_LENGTH=4096 ollama serve
4096对OpenClaw的多步任务来说足够用,比默认的8192或16384节省不少内存。另外在OpenClaw配置中,也可以调低 maxTokens,避免单次输出过长导致内存峰值过高。
还有一个容易忽视的点:Ollama默认会并发处理请求,但在老Mac上并发等于灾难。建议通过环境变量限制并发数:
bash复制OLLAMA_NUM_PARALLEL=1
这样一次只处理一个请求,保证交互稳定。
5.3 实测表现与调优心得
在2019款Intel MacBook Pro上,Qwen 2.5 7B Q4量化模型的实际表现是这样的:简单问答的生成速度大约每秒8个token,多步任务中每步的响应时间在5到15秒之间。跑OpenClaw的“总结当前目录文件列表”这类任务,整个过程大概40秒,还算能接受。
调优中效果最明显的是这几项:
- 关闭所有非必要后台应用,尤其是浏览器和微信,能释放3到4GB内存;
- 把macOS的“自动切换GPU”功能关掉,避免任务负载高时系统自动降频;
- 用
htop或活动监视器实时观察内存压力,一旦发现黄色或者红色,立刻缩小模型、减小上下文。
另外一个tip:如果OpenClaw在任务过程中卡住不动,很多时候不是模型挂了,而是命令审批在等你确认。因为OpenClaw默认不会在终端里打出明显的提示符,老Mac屏幕又小,很容易忽略。建议把 approvalMode 设置成 always 或者在自己的终端主题里把待确认状态高亮一下。
6. 老Mac上最容易踩的坑:问题排查实录
6.1 安装阶段的典型报错
报错一:node: command not found 或 command failed: npm install -g openclaw
原因基本都是Node.js没装或版本太老。先执行 node -v 确认版本,如果低于18,建议直接装nvm再装Node 20。不要用Homebrew强行升级系统自带Node,容易把系统依赖搞坏。
报错二:operation not permitted
多半是权限问题。检查你是否用了sudo执行命令。OpenClaw和Homebrew都不推荐用sudo安装,因为你本地跑AI代理,后面所有文件和命令都应该是当前用户权限。如果之前用了sudo导致文件归属混乱,可以执行:
bash复制sudo chown -R $(whoami) ~/.openclaw
把配置目录归属权改回来。
报错三:legacy exec approvals exist at ~/.openclaw/exec-approvals.json
这个提示我见过好几次,通常是OpenClaw升级后,旧版审批文件格式不兼容。处理方法很简单:先把旧文件备份,再让OpenClaw自动生成新的审批格式:
bash复制mv ~/.openclaw/exec-approvals.json ~/.openclaw/exec-approvals.json.bak
openclaw init
重新初始化后,之前记忆的执行权限会清空,需要重新审批一次。
6.2 启动与连接阶段问题
openclaw run 执行后报 ECONNREFUSED 127.0.0.1:11434,说明OpenClaw连不上Ollama。先确认Ollama是否在运行:
bash复制ollama list
如果提示could not connect,就手动跑 ollama serve 看有没有报错。常见原因是端口被其他程序占用,或者Ollama服务没起来。确认无误后,再检查OpenClaw配置里的 baseUrl 是否写对。
启动时报 model not found,说明配置的模型名和实际下载的不一致。用 ollama list 查看实际模型名称,比如你拉的时候叫 qwen2.5:7b,配置里就写 qwen2.5:7b,不要写成 qwen2.5-7b 之类。
6.3 系统层面干扰与安全提示
老Mac如果装过各种优化工具、清理软件,有时会弹出类似“未打开party.ape.helper,因其包含恶意软件”的提示。这通常是某些工具卸载不干净,把helper进程留在了系统里。遇到这类提示不要慌张,也不要随便从网上下载“修复工具”,正确做法是打开“系统设置-通用-登录项与扩展”,检查有没有可疑的后台进程,把它移除。同时检查“隐私与安全性”里的“允许从以下位置下载的App”,把未知来源选项调整为正常状态。
这种问题虽然不影响OpenClaw本身,但会让你的终端环境变得不稳定。我见过有人的Shell启动脚本被清理软件改过,导致nvm一直加不进去。排查时可以用一条命令检查你的Shell配置文件是否被改动:
bash复制vim ~/.zshrc
如果发现里面有不认识的内容,先备份再删掉。
6.4 常见问题速查表
| 现象 | 可能原因 | 快速解决 |
|---|---|---|
npm install -g openclaw 报node版本低 |
Node.js版本低于18 | 用nvm安装Node 20 |
brew install ollama 卡住 |
Homebrew在自动更新 | 设置 HOMEBREW_NO_AUTO_UPDATE=1 |
| OpenClaw连接Ollama失败 | Ollama服务未启动 | 执行 ollama serve 或 brew services start ollama |
| 任务执行慢 | 模型过大或后台应用占内存 | 换更小模型、关后台应用 |
| 审批提示文件格式过时 | OpenClaw升级 | 备份并删除 exec-approvals.json 后重新初始化 |
| 系统弹出未知进程提示 | 第三方清理软件残留 | 打开“登录项与扩展”移除可疑项 |
| 生成内容含乱码 | 量化精度过低 | 换Q4_K_M以上精度,或换支持中文更好的模型 |
| OpenClaw提示没有执行权限 | 缺少目录写入权限 | chown 当前用户拥有 ~/.openclaw |
7. 写在最后:老设备的新价值
折腾完这套OpenClaw环境,我最深的感受是:老Mac没你想的那么没用,本地AI也没你想的那么高门槛。关键是把预期放对位置——它不是用来替代云端大模型的,而是在你身边的、可控的、能实际干活的助手。
我现在每天用它做不少小事:整理临时目录里的文件、批量重命名、爬取网页正文转成Markdown、根据会议记录自动生成待办事项。这些任务都不需要多强的语言能力,但胜在数据全程不出本机,而且OpenClaw的命令审批机制让我对每一个操作都有掌控感。
最后分享一个小技巧:OpenClaw的配置目录不要一开始就乱动,先跑通一两个简单任务,熟悉它的日志输出和审批流程,再逐步增加技能插件。老Mac资源有限,不要一上来就堆一堆插件,每一个常驻技能都会占用额外内存。把这个环境当成一个可以随时重来的试验场,跑坏了就重新初始化,反而能让你更快摸清AI代理的运行逻辑。
如果你手头也有台吃灰的老Mac,不妨照着这篇文章搭一次。折腾的过程本身就是收获。
