在 Mac mini 上把 OpenClaw 跑起来:从证书坑到 Qwen 接入(实战记录)
这篇记录的是我在一台 Mac mini(中国大陆网络环境)上安装并跑通 OpenClaw 的全过程:从一键安装开始,接入阿里 DashScope 的 OpenAI 兼容接口(Qwen),一路踩到 Node TLS 证书链问题,最后用 nvm 彻底解决,并成功进入 openclaw tui。
背景与目标
我想在本机快速体验 OpenClaw(一个可执行工具调用的 AI Agent 框架)。目标很明确:
- 在 macOS 上装起来
- 不依赖海外大模型(尽量不需要外网)
- 用 Qwen(DashScope 的 OpenAI-compatible 接口)作为模型后端
- 最终能启动到交互界面(TUI)
环境
- 设备:Mac mini
- Shell:zsh
- 网络:大陆网络(优先走国内接口)
- 模型:DashScope OpenAI-compatible(Qwen)
先说结论:能跑通的最短路径
- 用 nvm 安装 LTS Node(避免 Homebrew Node 的证书链坑)
- 用 npm 全局安装 OpenClaw
- 用 Custom Provider 接入 DashScope 的 OpenAI-compatible endpoint
- 跳过所有非核心集成(channels/skills 依赖/hook/Google Places/Notion 等)
- 用
openclaw tui启动
下面按实际踩坑顺序复盘。
Step 1:安装 OpenClaw
我最开始走的是「能最快开始」的思路:先把 OpenClaw 装起来再说。
安装方式有两条:
- 一键脚本(方便但依赖你当前 Node 环境)
- npm 安装(更可控,适合排障后固化)
后面事实证明:想稳定,最终还是应该落回「nvm + npm」这条路。
Step 2:确定国内可用的模型接入方式(Qwen / DashScope)
在 onboarding 时选择:
- Provider:Custom Provider
- Endpoint compatibility:OpenAI-compatible
- Base URL:
https://dashscope.aliyuncs.com/compatible-mode/v1 - API Key:DashScope Key
关键点:
- Base URL 只能填“服务根”,不要带具体路径(不要填
/models、不要填/chat/completions)
我中途就犯过一次错:把 Base URL 填成了 .../v1/models,导致验证直接 404。
Step 3:第一个大坑——NODE_EXTRA_CA_CERTS 指向不存在的证书文件
症状:
- OpenClaw / Node 请求报
fetch failed - 并出现类似:
- Ignoring extra certs ...
/opt/homebrew/etc/ca-certificates/cert.pem UNABLE_TO_GET_ISSUER_CERT_LOCALLY
- Ignoring extra certs ...
排查方式:
- 看环境变量:
printenv NODE_EXTRA_CA_CERTS - 查 shell 配置:
grep -n "NODE_EXTRA_CA_CERTS" ~/.zshrc ...
最终在 ~/.zshrc 找到类似:
export NODE_EXTRA_CA_CERTS=$(brew --prefix)/etc/ca-certificates/cert.pem
处理:
- 注释/删除这行
source ~/.zshrc
但这还没完。
Step 4:第二个大坑——curl 能通,但 Node 仍然 TLS 失败
我用 curl 打 DashScope:
curl <https://dashscope.aliyuncs.com/compatible-mode/v1/models> -H "Authorization: Bearer ..."
返回一大段 JSON —— 说明网络和 key 都没问题。
但 Node 继续失败:
node -e "fetch('.../models', { headers: { Authorization: 'Bearer ...' }})..."
仍然报 UNABLE_TO_GET_ISSUER_CERT_LOCALLY。
这意味着:
- 系统证书链 OK(curl 走系统链)
- 你当前 Node 的 TLS/证书链环境不 OK
我一开始用的是 Homebrew 的 Node(甚至还遇到 v23 这种非 LTS 线),换到 node@22 也仍然失败。
Step 5:最终解法——改用 nvm 的干净 Node(关键转折点)
这一步是全程的“破局点”。
安装 nvm:
curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/master/install.sh> | bash
加载 nvm(或重开终端):
export NVM_DIR="$HOME/.nvm"[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"
安装并切到 Node 22:
nvm install 22nvm use 22
验证 Node 是否已切换:
which node应该指向~/.nvm/...
再跑同样的 Node fetch 测试:
- 能返回大段 JSON
到这里就确认:TLS 问题被彻底解决。
Step 6:在 nvm 的 Node 下安装 OpenClaw
npm install -g openclaw@latest
安装完成后就可以继续 onboarding。
Step 7:onboarding 的关键选择(少折腾原则)
为了今晚“先跑起来”,我采用了一个非常有效的策略:
- 非核心集成全部跳过
具体包括:
- Channel:Skip for now
- Search:先选 DuckDuckGo(免 key)
- Skills:Yes(先启用基本能力)
- Missing dependencies:Skip for now
- Google Places / Notion / hooks 等:一律 No / Skip
这样可以最大概率避免再进入一轮“配置地狱”。
Step 8:启动与复盘
我在 onboarding 中选择了:Hatch in TUI。
所以之后启动不是直接 openclaw,而是:
openclaw tui
如果你只运行 openclaw 看到 Usage 帮助,说明 CLI 正常,但你还没进入交互模式。
最终结果
- OpenClaw 成功安装
- DashScope(Qwen)自定义 OpenAI-compatible endpoint 验证成功
- 成功进入
openclaw tui - 今晚目标达成
常用命令速记
- 进入交互:
openclaw tui - 重新配置:
openclaw onboard - 新开终端如果找不到命令:先
nvm use 22
陕公网安备61011302002223号