Mac上OpenClaw 2026版安装全攻略:依赖配置、模型接入与排错指南

在 Mac 上折腾 OpenClaw 的 2026 版安装,如果只跟着零散帖子走,大概率会在依赖环境或者模型配置这一步卡住。我前后在 Mac mini 和 MacBook Pro 上各部署过一次,遇到的坑包括 Control UI 起不来、模型名称报错、macOS 安全策略拦截第三方应用,甚至还有 Docker 升级后配置目录权限错乱。这篇文章就把完整流程和踩坑记录一次说清,适合想在本地跑个人 AI 代理、做自动化任务、接微信飞书,或者纯粹想研究代理框架怎么玩的人。

1. 安装 OpenClaw 前,先把定位和运行环境搞清楚

1.1 OpenClaw 不是又一个聊天机器人:它是带工具的代理框架

很多人第一次听说 OpenClaw,以为它跟 Claude Code、Codex 一样是个对话式 AI 工具。实际上它的定位更偏向“代理框架”:你可以让它调用外部工具、读取本地文件、执行命令、对接多个消息渠道,并基于长期记忆完成持续任务。简单类比,普通聊天机器人像一个接线员,你问一句它答一句;OpenClaw 更像一个实习生,你给它目标,它自己拆解步骤、调用工具、汇报结果。

这种差异在安装阶段就体现出来了。OpenClaw 对配置项的要求比普通聊天工具更多,尤其是模型层和渠道层,需要提前规划清楚。很多人装完发现“能聊但不会干活”,往往是没理解代理框架的配置逻辑,只配了模型没配工具权限。

我自己的习惯是:先明确要拿它做什么,再决定装什么依赖。如果你的目标只是跑一个本地聊天助手,那不需要这么重的框架;但如果你想让它在微信或飞书上自动帮你处理消息、定时跑脚本、写小说并持久化保存,那 OpenClaw 的架构价值就体现出来了。

1.2 机器配置与系统版本:什么 Mac 能跑得动

OpenClaw 本身的资源占用不算高,真正吃硬件的是模型推理部分。先看基础要求:

  • 芯片:Apple Silicon(M1 及以上)体验最好,Intel Mac 也能跑,但本地模型推理速度会有明显差距。
  • 内存:8GB 是底线,但只够跑 7B 以下小模型;16GB 可以流畅跑 7B~14B 模型;如果你要跑 32B 以上模型,建议 32GB 起步。我的 Mac mini M2 16GB 跑 14B 模型时,内存压力已经接近黄色。
  • 磁盘:预留 10GB 以上。镜像加依赖大概 2~3GB,模型文件动辄 4~8GB,聊天记录和向量库也会慢慢膨胀。
  • 系统版本:macOS 14 及以上比较稳。2026 版 OpenClaw 对系统没有特别激进的要求,但 Docker Desktop 或 OrbStack 新版本往往要求较新的 macOS,所以旧系统会连带受限。

有一个容易被忽略的点:如果你用 Docker 跑 OpenClaw,容器本身是 Linux 环境,模型推理一般不会直接在容器内做,而是通过 HTTP 调用宿主机上的 Ollama 或其他推理服务。这样设计有个好处:避免容器内 GPU 直通和驱动传递的麻烦,Apple Silicon 的 Metal 加速依然可以在宿主机正常用。

1.3 安装方式选型:Docker、一键脚本还是源码编译

我见过三类装法,各有适用场景:

方式优点缺点适合人群
Docker 部署隔离干净、升级回滚方便、不污染系统多一层虚拟化、磁盘占用略大绝大多数用户、生产环境
一键脚本启动快、资源占用低、文件都在用户目录升级要手动拉代码、依赖冲突风险高开发调试、内存敏感场景
源码编译可二次开发、能改前端编译耗时长、依赖坑多想贡献代码或深度定制的开发者

我的建议是:日常使用无脑选 Docker,除非你只有 8GB 内存的机器,容器多占的几百 MB 会让你难受。开发调试或想改 OpenClaw 内部逻辑时,再用源码方式。后面我会把 Docker 和一键脚本两条路径都写清楚。

2. 依赖环境配置:Homebrew、Git、Python、Node.js、Docker 逐个击破

2.1 Homebrew 和国内镜像配置

Homebrew 是 Mac 上装依赖的第一站。很多人在第一步就卡住,因为默认下载源在国外。安装命令本身很简单:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

如果你在终端里看到下载缓慢或连接超时,不要反复重试,直接把镜像源换掉。国内常用的是清华或中科大的 Homebrew 镜像,四行配置就能搞定:

export HOMEBREW_BREW_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/brew.git" export HOMEBREW_CORE_GIT_REMOTE="https://mirrors.tuna.tsinghua.edu.cn/git/homebrew/homebrew-core.git" export HOMEBREW_BOTTLE_DOMAIN="https://mirrors.tuna.tsinghua.edu.cn/homebrew-bottles"

建议把这三行写入~/.zshrc,后续brew install的速度会有质的提升。安装完成后跑一遍brew doctor,按提示清理权限或路径问题。这一步很多人跳过,结果后面装 Python 或 Git 时出现诡异报错,反而浪费时间。

2.2 Git 与 SSH 准备

Git 在 Mac 上自带,但版本往往偏老,建议用 Homebrew 更新:

brew install git git --version

装完后配置用户名和邮箱,再生成 SSH 密钥。如果你后面要从 GitHub 拉代码或私有仓库,这一步绕不开:

git config --global user.name "yourname" git config --global user.email "you@example.com" ssh-keygen -t ed25519 -C "you@example.com"

密钥生成后,把~/.ssh/id_ed25519.pub的内容加到 GitHub 或 GitLab 的 SSH Keys 里。有一个细节:第一次用 SSH 连接 GitHub 时,会提示确认 host key,输入 yes 回车即可,别被警告吓到。

2.3 Python 与 Node.js 的版本管理

OpenClaw 的插件体系和部分工具链依赖 Python 和 Node.js。建议不要直接用系统自带的 Python,也不要从官网下安装包,而是用版本管理工具统一管理。

Python 推荐 pyenv:

brew install pyenv pyenv install 3.11.9 pyenv global 3.11.9

Node.js 推荐 nvm:

brew install nvm mkdir ~/.nvm

然后在~/.zshrc里加:

export NVM_DIR="$HOME/.nvm" [ -s "/opt/homebrew/opt/nvm/nvm.sh" ] && \. "/opt/homebrew/opt/nvm/nvm.sh"

重新加载 shell 后执行:

nvm install --lts node -v

我踩过的一个坑是:系统里同时存在 Homebrew 的 Python、pyenv 的 Python 和 Xcode 自带的 Python,导致 pip 安装的包装错了环境。解决方案是确认which python3和which pip3指向同一个路径。

2.4 Docker 或 OrbStack:容器运行环境

如果你选择 Docker 方式安装 OpenClaw,容器环境必须提前就位。Docker Desktop 是大众选择,但资源占用感人,我自己后来换成了 OrbStack,启动速度快很多,内存占用也小。两者任选其一即可:

brew install --cask docker # 或者 brew install --cask orbstack

装完后验证一下:

docker run hello-world

看到Hello from Docker!就说明容器环境没问题。国内拉取官方镜像经常超时,需要给 Docker 配置镜像加速器。在 Docker Desktop 的设置 -> Docker Engine 里,把 registry-mirrors 加上:

{ "registry-mirrors": [ "https://docker.m.daocloud.io" ] }

然后应用并重启 Docker。这一步对 OpenClaw 镜像的拉取速度影响非常大。

3. 2026 版安装实操:两种常用路径的完整命令

3.1 用 Docker 部署并保持数据持久化

2026 版的 OpenClaw 镜像已经比较成熟,官方仓库一般会提供镜像地址。以常见的 ghcr.io 地址为例,部署流程如下。

先创建数据目录:

mkdir -p ~/.openclaw

然后启动容器:

docker run -d \ --name openclaw \ -p 3000:3000 \ -v ~/.openclaw:/root/.openclaw \ -e OPENCLAW_MODEL=qwen2.5:7b \ -e OPENCLAW_BASE_URL=http://host.docker.internal:11434/v1 \ ghcr.io/your-registry/openclaw:latest

这里有几个参数解释一下:

  • -d表示后台运行。
  • -p 3000:3000把容器的 3000 端口映射到宿主机,Control UI 就通过这个端口访问。
  • -v ~/.openclaw:/root/.openclaw是数据持久化的关键,所有配置、日志、记忆数据都写到宿主机目录,容器删了也不怕。
  • -e后面是环境变量,具体变量名以官方文档为准,但常见的就是模型名、API 地址、API Key 这几样。

启动后看日志:

docker logs -f openclaw

看到服务启动成功的字样,就可以访问http://localhost:3000了。

如果你用 Docker Compose 管理,可以写一个docker-compose.yml:

services: openclaw: image: ghcr.io/your-registry/openclaw:latest container_name: openclaw ports: - "3000:3000" volumes: - ~/.openclaw:/root/.openclaw environment: - OPENCLAW_MODEL=${OPENCLAW_MODEL} - OPENCLAW_BASE_URL=${OPENCLAW_BASE_URL} restart: unless-stopped

升级时用docker compose pull && docker compose up -d即可,比直接删容器重建优雅很多。

3.2 用一键脚本安装到用户目录

如果你不想用 Docker,官方或社区通常会提供一键脚本。一般长这样:

curl -fsSL https://get.openclaw.dev | bash

脚本会把二进制或源码安装到~/.openclaw/下,并把~/.openclaw/bin加入 PATH。安装完成后执行:

openclaw --version

如果提示找不到命令,手动把export PATH="$HOME/.openclaw/bin:$PATH"加入~/.zshrc。

启动方式是openclaw serve,默认监听0.0.0.0:3000。第一次启动会生成一个配置文件目录,里面会有示例配置和日志目录。这种方式的好处是资源占用小,适合在低配 Mac 上跑;缺点是升级要手动执行openclaw update或重新拉代码。

3.3 首次启动验证:CLI 对话与控制台 UI

安装完成后,先别急着接渠道,做两件事确认核心功能正常。

第一,命令行测试:

openclaw chat

如果能正常进入对话界面并收到模型回复,说明模型链路通了。如果在这一步就报错,后面接微信飞书大概率也是废的。

第二,打开 Control UI 验证 Web 界面。浏览器访问http://localhost:3000,应该能看到一个管理面板,里面有会话列表、模型状态、渠道配置入口等。

这里很多人会遇到openclaw control ui did not start的报错,我先剧透一个排查思路:先确认端口是否被占用,再看日志尾部,最后检查前端资源是否缺失。详细的排查链路我在第 6 节展开,这里不要慌,大概率是环境变量或端口冲突的问题。

4. 模型配置:本地模型和云端 API 的正确姿势

4.1 配置文件的推荐结构和环境变量

OpenClaw 的配置一般分散在两个地方:config.yaml和.env。简单来说,config.yaml管行为和渠道,.env管密钥和模型地址。这两个文件都在~/.openclaw/下。

一个典型的.env长这样:

OPENCLAW_MODEL=qwen2.5:7b OPENCLAW_BASE_URL=http://localhost:11434/v1 OPENCLAW_API_KEY=sk-xxxxx OPENCLAW_TEMPERATURE=0.8 OPENCLAW_MAX_TOKENS=4096

config.yaml则控制更复杂的逻辑,比如渠道配置、工具权限、记忆策略。新手经常犯的错误是:改了.env后忘了重启服务。环境变量只在启动时读取一次,不像config.yaml可以热加载,改完必须重启容器或进程。

4.2 通过 Ollama 接入本地模型

本地模型推荐用 Ollama 管理,安装简单,命令行也直接:

brew install ollama ollama pull qwen2.5:7b ollama serve

然后在 OpenClaw 的.env里配置:

OPENCLAW_MODEL=qwen2.5:7b OPENCLAW_BASE_URL=http://localhost:11434/v1

注意,如果你用 Docker 跑 OpenClaw,宿主机上的 Ollama 服务要映射到容器内部的地址。Docker Desktop 和 OrbStack 都支持host.docker.internal,所以这里要填:

OPENCLAW_BASE_URL=http://host.docker.internal:11434/v1

这是很多人第一次跑通时最容易卡住的地方:在容器里写localhost指向的是容器本身,根本访问不到宿主机的 Ollama。

资源评估方面,我的实测数据是:7B 模型在 16GB 内存的 M2 上,生成速度大概 20~30 token/s,够日常对话和简单任务;14B 模型速度会降到 10 token/s 左右,写小说时能感觉到明显停顿。如果你的 Mac 只有 8GB 内存,建议只用 7B 或更小的模型,否则系统会频繁使用交换空间,卡到怀疑人生。

4.3 云端 API 配置,以及 unknown model 报错的完整排查

如果你不想折腾本地模型,云端 API 是更省心的选择。OpenClaw 支持 OpenAI 兼容接口,所以 DeepSeek、NVIDIA NIM、各种中转服务都能接入。

以 DeepSeek 为例,.env配置如下:

OPENCLAW_BASE_URL=https://api.deepseek.com/v1 OPENCLAW_MODEL=deepseek-chat OPENCLAW_API_KEY=sk-你的key

这里必须强调一个我见过无数次的报错:agent failed before reply: unknown model: deepseek。这个报错几乎都是模型名填错导致的。DeepSeek 官方 API 的模型 ID 是deepseek-chat或deepseek-reasoner,而不是deepseek。同样的问题也出现在 NVIDIA NIM 上,每个端点的模型 ID 都不同,不能想当然。

排查步骤非常固定:

  1. 看报错信息里的模型名,跟服务商文档对照。
  2. 用 curl 直接测试 API 返回的模型列表:
curl https://api.deepseek.com/v1/models -H "Authorization: Bearer $OPENCLAW_API_KEY"
  1. 把返回的模型 ID 填到OPENCLAW_MODEL里。
  2. 重启 OpenClaw:docker restart openclaw。

还有一个小坑:很多 OpenAI 兼容接口的地址要以/v1结尾,漏了也会导致鉴权失败或模型找不到。

4.4 写小说等长文本场景的模型参数优化

OpenClaw 社区里很多人在用它写小说,这比普通对话更吃模型能力。写小说要的不是“答对问题”,而是“语言风格稳定、上下文不崩、情节连贯”,所以模型参数要针对性调整。

我的建议配置:

  • 温度调到 0.8~1.0。太低会写得机械重复,太高会逻辑混乱。
  • max_tokens尽量大,至少 4096。小说生成经常需要一次性输出长段落,截断会很破坏阅读体验。
  • top_p设 0.9,在随机性和连贯性之间取平衡。
  • 上下文长度要看模型支持能力。本地qwen2.5:7b支持 32K 上下文,但实际占用内存很大;云端 DeepSeek 支持更长上下文,写长篇小说更有优势。

在 OpenClaw 里,这些参数一般通过model_params配置:

model_params: temperature: 0.9 max_tokens: 8192 top_p: 0.9

我实测下来,本地模型写小说最大的问题不是生成质量,而是速度。7B 模型写 2000 字可能需要 3~5 分钟,你会等得失去耐心。所以如果你真的想用 OpenClaw 批量写长篇,云端 API 是更现实的选择,稳定性也更好。

5. 接入微信和飞书:让代理真正进入你的工作流

5.1 微信接入的方式、风险与控制节奏

OpenClaw 社区里最吸引人的功能之一就是接入个人微信。但这里我必须先把丑话说在前面:个人微信接入属于灰色地带,官方没有开放 API,基本都是通过 hook 方案模拟客户端操作,腾讯的风控随时可能命中。轻则提示异常登录,重则限制功能甚至封号。

如果你还是要试,记住几个原则:

  • 用一个小号,不要拿主号冒险。
  • 控制消息频率,不要短时间内大量群发或频繁回复。
  • 不要用代理做任何涉及支付、转账、验证码的操作。
  • 准备好随时掉线的心理预期,社区里很多人反馈每隔一两天就要重新扫码登录。

配置上,OpenClaw 的微信插件一般会要求扫码登录,然后会把登录状态保存在本地。具体命令因插件而异,但通常是在 Control UI 的渠道配置页面添加微信渠道,然后启动时终端会弹二维码,用微信扫码确认即可。

我的经验是:微信接入适合技术研究和个人玩具,不适合作为生产方案。如果你真想给团队或客户用,优先考虑企业微信机器人或企业微信群机器人。

5.2 飞书机器人从创建到联调

飞书的接入体验就正规多了,官方 API 完整,只要按步骤操作基本不会出问题。

第一步,在飞书开放平台创建一个应用,启用“机器人”能力,拿到 App ID 和 App Secret。

第二步,在事件订阅里配置回调地址。如果你是在本机测试,需要一个内网穿透工具把公网请求转发到http://localhost:3000。我用的是 ngrok,启动后拿到一个公网 HTTPS 地址,填到飞书的回调地址里。

第三步,在 OpenClaw 的config.yaml里配置飞书渠道:

channels: feishu: app_id: "cli_xxxxx" app_secret: "xxxxx" encrypt_key: "xxxxx" verification_token: "xxxxx"

配置完后重启 OpenClaw,在飞书群里 @机器人 发一条消息,如果机器人回复了,说明链路已经通了。如果没有回复,先看 OpenClaw 日志,常见原因是回调地址验证失败或事件订阅类型没选对,需要在飞书后台把im.message.receive_v1这个事件订阅加上。

5.3 多渠道并行时的会话隔离与身份区分

当你同时接入微信、飞书、网页 Control UI 后,会面临一个会话管理问题:不同渠道来的消息会不会串线?

OpenClaw 的会话隔离机制做得比较清晰,每个渠道都会生成独立的会话上下文,默认互不干扰。但如果你想让同一个用户在不同渠道共享记忆,需要在配置里开启用户身份映射。

我的建议是:让每个渠道保持独立的会话上下文,除非你有非常明确的跨渠道需求。否则飞书上的闲聊记录会污染微信里的工作对话记忆,代理的行为会变得不可预测。

实践中还有一个细节:多渠道接入后,日榜会话数量会快速膨胀。建议定期清理老会话,或者开启自动归档,避免启动时加载大量历史数据导致变慢。

6. 上线后最常见的四类故障与修复实战

6.1 Control UI 无法启动的排查链路

我在第 3 节提到过openclaw control ui did not start,这是社区里提问频率最高的错误之一。完整的排查链路是这样的:

第一步,检查端口占用:

lsof -i :3000

如果端口被其他进程占用,要么杀掉那个进程,要么改 OpenClaw 的监听端口。

第二步,看日志尾部:

docker logs openclaw --tail 100

如果日志里出现Missing frontend assets或dist directory not found,说明容器的静态资源没有构建或挂载。这种情况通常发生在从旧版本升级时,需要用官方提供的版本迁移命令重新生成前端资源。

第三步,检查环境变量里的监听地址。如果你设置了HOST=127.0.0.1,从宿主机访问localhost:3000没问题,但如果是从其他设备访问会提示连接拒绝。正确做法是设成HOST=0.0.0.0。

第四步,如果上面都没问题,试一下清浏览器缓存。Control UI 是纯前端应用,有时候服务已经起来了,但浏览器缓存了旧的 JS 文件,导致页面空白。开隐身窗口访问是最快的判断方式。

6.2 容器升级后数据丢失或权限错乱

Docker 方式最容易出问题的时间点就是升级。我遇到过两次升级后所有配置都没了的情况,原因都一样:新容器启动时没有挂载数据卷,或者挂载路径变了。

解决方案很直接,升级前先备份:

tar -czf openclaw_backup_$(date +%Y%m%d).tar.gz ~/.openclaw

然后检查当前容器的挂载情况:

docker inspect openclaw | grep -A 5 Mounts

确认挂载源路径是~/.openclaw,容器内路径是/root/.openclaw。如果某个版本改了数据目录的默认位置,你需要在 docker run 命令里调整挂载目标。

另有一个权限问题:宿主机目录的属主和容器内用户不同,导致容器写文件时 Permission denied。解决方案是找出容器内运行用户,把宿主机目录的所有者改成同一个 UID/GID:

chown -R 1000:1000 ~/.openclaw

具体 UID 以容器说明为准,一般是 1000。

6.3 macOS 安全策略拦截第三方应用

使用一键脚本或源码方式安装 OpenClaw 时,可能会遇到 macOS 的 Gatekeeper 拦截,提示类似于“若要打开此 app,你需要从‘macOS 恢复’启动 Mac,并将‘安全策略’更改为‘完整安全’”。

这个提示容易出现在两种场景:一是你下载的二进制没有经过 Apple 公证;二是二进制的文件标记需要从互联网隔离中移除。

第一种情况比较难解决,如果提示需要改安全策略,说明这个二进制文件的可信度存疑。建议优先回到 Docker 方式或官方发布渠道下载。不要为了运行一个工具去调低系统安全策略,风险完全不成正比。

第二种情况可以用一个命令解除隔离标记:

xattr -d com.apple.quarantine /path/to/openclaw

如果 xattr 命令提示属性不存在,说明和 Gatekeeper 无关,问题在其他地方。

6.4 开机自启与内存占用控制

本地跑 OpenClaw 的一个痛点是:电脑重启后服务不会自动恢复。我的方案是写一个 launchd plist,让它开机自动启动 Docker 容器。

在~/Library/LaunchAgents/com.openclaw.plist里写入:

<?xml version="1.0" encoding="UTF-8"?>  Labelcom.openclaw.plistProgramArguments/usr/local/bin/dockerstartopenclawRunAtLoad

这里的/usr/local/bin/docker路径可能需要改成/opt/homebrew/bin/docker,取决于你是 Apple Silicon 还是 Intel。加载命令:

launchctl load ~/Library/LaunchAgents/com.openclaw.plist

内存控制方面,我建议给容器加内存上限:

docker update --memory=4g openclaw

这样即使 OpenClaw 内部出现内存泄漏,也不会把 Mac 拖死。本地模型进程 Ollama 也可以控制常驻策略,设置环境变量OLLAMA_KEEP_ALIVE=0,让模型在空闲一段时间后自动卸载,为 Mac 省出内存。

回到我在开头说的话:OpenClaw 的强大与否,七分在配置,三分在工具。我踩过最多坑的地方永远都是模型名称和端口映射这两件事,几乎占了所有排错时间的一半。如果你只有一台 8GB 内存的 Mac,别执着于跑本地 14B 模型,先用云端 API 把整条链路打通,等确认每一步都没问题了,再回过头来折腾本地推理。升级前备份配置目录,永远是一条保命法则。希望这份流程能让你少走几个弯路。