最近帮几个朋友部署 OpenClaw 的时候,发现一个很有意思的现象:大部分人的卡点根本不在 OpenClaw 本身,而是倒在了最前面的 Node.js 和 Git 环境上。有人是 Node.js 版本不对导致 Control UI 起不来,有人是 Git 没配好导致安装脚本拉取代码时直接报错,还有人连 node -v 都提示找不到命令。
如果你也是第一次接触这个命令行安装的流程,这篇文章就是为你准备的。我会把 OpenClaw 为什么依赖 Node.js 和 Git、这两个依赖到底怎么装才算"配置正确"、命令行安装的完整过程,以及我在实际部署中遇到的几个高频报错和排查思路,一次性讲清楚。全程用的是我自己实测过的方式,适合想在 Windows、macOS 或 Linux 上快速跑起 OpenClaw 的开发者。
1. 装 OpenClaw 之前,先搞明白它为什么绕不开 Node.js 和 Git
很多人一看到"命令行安装"四个字就开始紧张,其实没必要。命令行安装最大的优势是过程可控、日志透明,出了问题也能直接看到是哪个环节挂了。真正劝退新手的,是环境依赖——尤其是 Node.js 和 Git 这两样,几乎决定了你后续能不能顺利把 OpenClaw 跑起来。
1.1 OpenClaw 的运行时和代码拉取机制
先明确一点:OpenClaw 是一个基于 JavaScript/TypeScript 生态构建的 AI Agent 编排框架。这意味着它的核心代码是靠 Node.js 这个运行时来执行的,没有 Node.js,整个框架连启动都做不到,openclaw 命令根本不会被系统识别。
Git 的角色也很关键。OpenClaw 的迭代速度很快,官方推荐的最新版本、插件、子模块都是通过 Git 仓库分发的。安装脚本在第一次执行时要做的核心动作,就是从 Git 仓库把代码拉取到本地,然后依托 npm(Node.js 自带的包管理器)安装各种依赖。所以你会发现,安装 OpenClaw 的全过程,本质上就是"Git 拉代码 + npm 装依赖 + Node.js 跑服务"这三件事。
1.2 命令行安装流程中的依赖分工
为了让你心里有底,我把安装流程拆开看一下。命令行安装 OpenClaw 时,系统会依次执行这些动作:
- 检查 Node.js 和 npm 版本,确认是否满足最低要求
- 使用 Git 克隆或拉取 OpenClaw 的官方代码仓库
- 进入项目目录,执行
npm install安装所有依赖包 - 通过 Node.js 启动初始化程序,生成配置文件
- 读取启动命令,运行 OpenClaw 的核心服务
看到这里你应该明白了:Node.js 和 Git 不是可选项,而是"启动链条"上的必经环节。任何一个出了问题,后面全是连环报错。比如 Git 没装好,第 2 步就卡住;Node.js 版本过低,第 4 步可能会报 API 不兼容;npm 环境变量不对,第 3 步直接报 Command not found。
1.3 版本选择的心得
理论上 Node.js 只要满足官方要求的最低版本就能跑,但我个人建议直接上 Node.js 20 LTS 或 22 LTS。原因很简单:OpenClaw 这种依赖很重的项目,用偏新的大版本往往能规避一些因 API 弃用导致的问题。我第一次部署时用的是 Node.js 18,结果 Control UI 启动时提示某个依赖包需要更高的 Node 版本,切到 22 LTS 之后一切正常。Git 则没有太多讲究,只要不是十年八年没更新的老古董,2.30 以上基本都没问题。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 环境准备实操:Node.js 和 Git 的安装细节与验证方法
依赖装好是什么意思?不是说你装了一遍就完事了,而是装完之后你能在命令行里稳定地调出它们,并且版本号符合要求。我把三个主流系统的安装方式都列出来,你可以照着操作。
2.1 Windows 环境:推荐的安装路径
Windows 下安装 Node.js 和 Git,最省心的方式是直接下载官方安装包,但我优先推荐用 winget 命令安装,因为后续升级和卸载都很干净。
bash复制# 安装 Node.js 22 LTS
winget install OpenJS.NodeJS.LTS
# 安装 Git
winget install Git.Git
如果你已经装了 Node.js 但版本比较老,建议先用 winget upgrade 升级,或者直接去官网下载对应 LTS 版本的 MSI 安装包覆盖安装。安装完成后,关键的一步是重新打开一个命令行窗口,让 PATH 环境变量生效。很多人装完还是在旧窗口里执行 node -v,结果报"不是内部或外部命令",然后以为没装上——这个坑我踩过不止一次。
2.2 macOS 环境:用 Homebrew 一行搞定
macOS 上如果你还没装 Homebrew,先去装 Homebrew,装好之后用以下命令:
bash复制brew install node@22 git
需要注意,Homebrew 安装的 Node.js 可能不是默认的 PATH 版本,安装完会提示你运行 brew link --overwrite node@22。我建议你按照终端里的提示操作,否则命令行里跑 node -v 可能还是老版本。
2.3 Linux 环境:按发行版选择合适的源
Ubuntu/Debian 系:
bash复制sudo apt update
sudo apt install -y git curl
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
CentOS/RHEL/Fedora 系:
bash复制sudo dnf install -y git
curl -fsSL https://rpm.nodesource.com/setup_22.x | sudo bash -
sudo dnf install -y nodejs
2.4 配置完成后必须做的三项验证
装好不等于配置好。我在生产环境中总结了一套"三连验证",每一步都很简单:
bash复制node -v
npm -v
git --version
正常输出类似这样:
text复制v22.13.1
10.9.2
git version 2.47.1
如果这三条命令都能正常输出版本号,说明 Node.js、npm、Git 已经进入了当前用户的环境变量,OpenClaw 安装的前提条件算是真正达标了。如果某条命令提示找不到,优先检查两件事:一是 PATH 是否包含对应安装目录,二是是否在安装后重开了终端。
下面是一个快速参考表:
| 检查项 | 命令 | 预期结果 | 失败时的常见原因 |
|---|---|---|---|
| Node.js 版本 | node -v |
v20 或 v22 | 未重开终端 / 未加入 PATH |
| npm 版本 | npm -v |
10.x 以上 | Node.js 安装不完整 |
| Git 版本 | git --version |
2.30 以上 | Git 未安装或未配置 PATH |
2.5 多版本切换:用 nvm 管理 Node.js
如果你平时还要开发其他项目,不同项目要求的 Node.js 版本不一样,那我强烈建议用 nvm(Windows 用户用 nvm-windows)来管理。安装 nvm 之后,你可以随时切换版本,比反复卸载重装高效太多。
bash复制# 安装指定版本
nvm install 22.13.1
# 切换并使用
nvm use 22.13.1
# 确认当前版本
node -v
实际踩坑提醒:Windows 下 nvm 切换版本后,偶尔会出现 npm -v 仍然指向旧版本的情况,这是因为 npm 的缓存路径没有跟着切换。解决办法是在切换完 Node 版本后,执行 where npm 看路径指向,必要时手动删除旧路径下的 npm 或用 nvm uninstall 清理旧版本。
3. 命令行安装 OpenClaw 的完整过程记录
环境准备好之后,安装 OpenClaw 本身反而很快。官方推荐的方式是通过 npm 全局安装 CLI 工具,然后使用 CLI 初始化项目。我把完整过程记录下来,你跟着做就行。
3.1 安装 OpenClaw CLI 工具
如果官方文档提供了一键安装脚本,通常长这样:
bash复制curl -fsSL https://get.openclaw.dev/install.sh | bash
但我个人更推荐用 npm 全局安装,因为这种方式对版本的控制更清晰,后续升级、回滚都方便:
bash复制npm install -g @openclaw/cli
npm 会把命令行工具安装到全局 node_modules 目录下,并在系统 PATH 中创建 openclaw 命令的软链接。安装完成后,先验证命令是否可用:
bash复制openclaw --version
这一步如果提示 openclaw: command not found,多半是 npm 的全局 bin 目录没有加入 PATH。你可以在终端里执行 npm config get prefix 查看 npm 全局目录,然后把输出的路径(例如 C:\Users\你的用户名\AppData\Roaming\npm)加入系统 PATH。
3.2 初始化 OpenClaw 项目
CLI 工具就绪后,在你想存放项目的目录下执行初始化命令:
bash复制openclaw init my-agent
cd my-agent
init 命令会做几件事:从官方模板仓库拉取项目骨架、安装基础依赖、生成默认配置文件。整个过程如果网络状况正常,大概一两分钟就能完成。如果卡在拉取模板这一步,多半是 Git 的问题,可以手动执行 git config --global user.name 和 git config --global user.email 补上配置,再重试。
3.3 配置模型和 Token
OpenClaw 的默认配置写在项目根目录的 .env 或 config 目录下。你需要编辑配置文件,填入你要使用的模型 API Key 和模型名称。以配置 OpenAI 兼容的模型为例:
bash复制# .env
OPENAI_API_KEY=sk-你的密钥
OPENAI_MODEL=gpt-4o-mini
如果你用的是 DeepSeek、本地 Ollama 或其他提供商,把对应的模型名填写准确。这里最容易踩的坑在第 4 节重点讲。
3.4 启动核心服务
初始化完成后,执行启动命令:
bash复制openclaw start
看到类似 Server is running at http://localhost:3000 的输出,说明核心服务已经起来了。此时在浏览器中访问这个地址,你会看到 Control UI 的控制界面。如果在安装了 Node.js 22 的情况下 Control UI 仍然起不来,多半是端口被占用或依赖没有装完整,后面会详细展开。
3.5 验证 Agent 是否能正常回复
服务起来之后,不要急着关终端。在 Control UI 里新建一个会话,发送一句测试消息。如果 Agent 能正常回复,恭喜你,OpenClaw 的核心链路已经跑通了。如果提示 agent failed before reply,那基本可以确定是模型配置或网络访问的问题,排查思路同样在下一节。
4. 部署中最容易踩的三个坑:完整排查链路
每次帮别人排查 OpenClaw 部署问题,我都能遇到几个高度一致的高频报错。这里我把真实场景和排查链路写出来,你可以直接按顺序检查,避免自己在网上搜半天。
4.1 场景一:Node.js not found 或 node is not recognized
这个报错出现在执行安装脚本或 openclaw 命令时。
排查思路是这样的:
- 先在当前终端执行
node -v,确认是否能正常输出。如果不行,说明 Node.js 没有被正确识别 - 执行
where node(Windows)或which node(macOS/Linux),确认 node 可执行文件的路径是否存在于 PATH 中 - 检查是否在 Node.js 安装之后没有重开终端。这个概率很高,尤其是 Windows 下用安装包装完 Node.js,旧终端窗口的环境变量不会自动刷新
- 如果是 Windows 用户,检查系统环境变量中 PATH 是否包含
C:\Program Files\nodejs\ - 如果装了 nvm,执行
nvm list查看当前使用的版本,确认没有切换到空版本
多数情况是第 3 步。我之前帮一个朋友远程排查,折腾了十分钟,最后发现就是没重开终端。装完依赖之后重开一个全新的命令行窗口,这是性价比最高的一步。
4.2 场景二:agent failed before reply: unknown model: deepseek
这个报错看起来像是 OpenClaw 内部出了问题,但根源几乎都在配置文件的 model 名称写错了。
以 DeepSeek 为例。很多人看到文档里写"支持 DeepSeek",就在配置文件里填 model=deepseek,但实际 API 要求的模型标识是 deepseek-chat 或 deepseek-reasoner。你填了一个不存在的模型名,API 自然无法识别。
排查思路:
- 打开
.env或config文件,找到model相关的配置项 - 对照你正在使用的服务商官方文档,确认正确的模型标识
- 注意区分模型标识和模型展示名。比如 OpenAI 的展示名是
gpt-4o-mini,实际 API 的 model 参数也必须是这个,不能多空格、不能大小写错误 - 改完配置后,重启
openclaw服务,再次测试
顺带说一句,如果你用的是 OpenClaw 的 Zero Token 模式(不配置外部 API,直接用框架自带的能力),遇到这个报错大概率是因为没有在配置中明确指定内置模型的标识。建议切换到具体的 provider 配置,别用默认值。
4.3 场景三:Control UI did not start
这个报错通常出现在 openclaw start 之后,控制界面没能正常监听端口。
按照这个顺序排查:
- 检查终端输出的日志,定位是 Node.js 进程崩溃,还是端口被占用
- 如果是端口被占用,执行
lsof -i :3000(macOS/Linux)或netstat -ano | findstr :3000(Windows),找到占用进程后停掉或修改 OpenClaw 的端口配置 - 如果进程崩溃,查看崩溃日志里的堆栈信息,重点看是否有
SyntaxError或ERR_MODULE_NOT_FOUND - 遇到
ERR_MODULE_NOT_FOUND时,多半是依赖没装全,重新执行npm install,还不行就删除node_modules和package-lock.json后重新安装 - 检查 Node.js 版本。某些依赖包在 Node.js 18 以下的版本上会直接抛异常,切到 Node.js 20 或 22 再试
实测下来,端口占用和 Node.js 版本过低占据了 Control UI 启动失败原因的七成以上。端口占用很好解决,改端口就行;Node.js 版本过低则需要你切换 Node 版本,这也是我建议直接用 22 LTS 的原因。
4.4 场景四:npm install 过程网络超时
安装依赖时卡住并提示网络错误,在国内环境尤其常见。
我这里给一个稳妥的做法,通过 npm 镜像源加速:
bash复制npm config set registry https://registry.npmmirror.com
配置完成后重新执行 npm install,速度会明显提升。如果你用的是公司内网环境,还可以考虑配置企业内部 npm 源。这种方式不影响后续发布到 npm 的流程,只为下载依赖时加速,实测对 OpenClaw 这种依赖多又杂的项目特别管用。
4.5 一个容易被忽略的 Git 问题
很多人以为 Git 装好了就万事大吉,实际上还有一种情况:Git 虽然能用,但全局配置里没有 user.name 和 user.email。openclaw init 在拉取模板并通过 Git 创建本地仓库时,如果缺了这两项配置,会直接失败。
提前执行:
bash复制git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
配置完后用 git config --global --list 检查,确保有输出。这步不是给官方仓库提交代码用的,只是为了让你本地的 Git 仓库能正常工作。
5. 装好之后的进阶玩法:本地模型、接入微信和飞书、NVIDIA NIM
OpenClaw 跑通只是起点。根据现在的生态情况,多数人装它不只是为了体验网页上的对话,而是想接自己的本地模型、接入微信/飞书,或者结合 NVIDIA NIM 这类推理服务。我挑几个实际可操作的配置方法说一下。
5.1 接入本地模型:让 Agent 离线可用
如果你不想依赖云端 API,想要完全本地的模型推理,最常见的方式是把 OpenClaw 和 Ollama 配合使用。先安装 Ollama 并拉取模型,然后在 OpenClaw 的配置里把模型提供方设为 Ollama:
bash复制# 安装并启动 ollama
ollama pull llama3.1
在 .env 中做如下修改:
bash复制OPENAI_API_BASE=http://localhost:11434/v1
OPENAI_MODEL=llama3.1
重启 OpenClaw 后,模型请求就会走本地推理。记得先确认 Ollama 服务确实在监听 11434 端口,可以在浏览器打开 http://localhost:11434 看是否返回信息。
5.2 接入微信和飞书:让 Agent 走进工作流
这一步是很多人关心的,因为把 OpenClaw 接进微信或飞书后,就相当于给了它一个"员工账号",可以在日常对话和工作中直接调用它。官方的接入方式一般有两种:通过 Webhook 桥接,或者通过各平台的机器人开放接口。
以飞书为例的大致流程是:
- 在飞书开放平台创建应用,启用机器人能力
- 获取 App ID 和 App Secret
- 在 OpenClaw 的配置中设置飞书机器人的凭证
- 启动 OpenClaw 后,把回调地址填到飞书的事件订阅中
- 在飞书中直接私聊机器人,测试是否正常响应
微信的接入链路稍微复杂一些,因为微信的机器人接入方案受到更多限制。目前社区里比较常见的做法是通过个人微信的 hook 方案或企业微信的开放 API 接入。如果你只是体验,建议先试企业微信,流程更标准、更稳定。
5.3 配置 NVIDIA NIM:使用云端 GPU 推理服务
NVIDIA NIM 是近期热度很高的推理服务方案。如果你打算在 OpenClaw 中使用 NIM 托管的模型,配置方法和 OpenAI 兼容接口类似,核心在于把 base URL 和模型名填对:
bash复制OPENAI_API_BASE=https://your-nim-endpoint.integrate.nvidia.com/v1
OPENAI_MODEL=your-model-name
具体的 endpooint 地址和模型名,以你在 NVIDIA 账户中创建的服务实例为准。配置完成后同样需要重启服务才能生效。
5.4 写小说、生成故事等创作场景的配置心得
很多朋友装 OpenClaw 是冲着"写小说"来的,这部分我对这类场景说一点配置心得。创作场景和普通问答有一个明显区别:你需要控制模型输出的稳定性和风格一致性。如果在 OpenClaw 中给 Agent 配置了系统提示词,建议把角色设定、写作风格、禁止事项写得足够具体。实测下来,同一个模型在提示词清晰和模糊两种情况下的输出质量差异非常大。
另外,如果你用的是本地模型,生成小说这类长文本时建议在配置中调大 max_tokens,否则生成到一半会被截断。OpenClaw 的配置项中一般有对应参数,按需调整就行。还要注意上下文长度,长篇小说写作很吃上下文窗口,建议选上下文窗口大的模型,或者分段续写。
写在最后的经验之谈
命令行安装 OpenClaw 这件事,本质上就是一个"环境依赖 + 命令执行 + 配置校验"的过程。只要 Node.js 和 Git 这两块地基打牢了,后面的操作基本都是水到渠成。我个人在多次部署中最大的感受是:遇到报错别慌,先看日志、再查配置、最后才怀疑环境,大部分问题都出在这三步之内。
还有一个小技巧:每次改完配置文件,记得重启 OpenClaw 服务,别以为配置文件会自动热更新。至少在我目前用到的版本里,配置文件只在启动时加载,不改配置重启的话,改了什么都是白改。
如果你在安装过程中遇到了我上面没提到的报错,不妨先按这个顺序自查:node -v、npm -v、git --version,把这三条命令的输出确认好,再重新执行 openclaw init 和 openclaw start。很多看似莫名的问题,最后查下来都是环境变量的锅。把基础打牢,后面的路会顺很多。
