
🚩 2026 年「术哥无界」系列实战文档 X 篇原创计划 第 60 篇,OpenClaw 最佳实战「2026」系列第 30 篇 大家好,欢迎来到 术哥无界 | ShugeX | 运维有术。 我是术哥,一名专注于 AI 编程、AI 智能体、Agent Skills、MCP、云原生、AIOps、Milvus 向量数据库的技术实践者与开源布道者! Talk is cheap, let's explore。无界探索,有术而行。

图 1:OpenClaw 安装器架构总览
310,000 GitHub Star。63,800 fork。1,200+ 贡献者。
这是 OpenClaw 的数据:一个开源的自主 AI 代理,本地运行,支持 WhatsApp、Telegram、Discord 等 30+ 平台的消息集成。
但今天不聊它的功能,聊点更底层的东西:OpenClaw 安装器(install.sh)是怎么设计的?
你可能用过这条命令:
curl -fsSL https://openclaw.ai/install.sh | bash
回车一按,几秒钟,OpenClaw 就装好了。但你知道这个过程中发生了什么吗?
为什么 OpenClaw 能在 macOS、Linux、Windows 三大平台上丝滑运行?怎么处理不同系统没有 Node.js 的情况?权限不够怎么办? 翻开官方文档,发现这个安装器的设计确实有点东西:三套脚本、五种检测,自动降级。不是简单的 curl | bash,而是一套完整的工程解决方案.
你可能觉得,安装器嘛,能用就行。但对于一个 310K Star 的项目来说,安装器是用户的第一印象。第一印象不好,用户可能就直接放弃了.
而且 OpenClaw 的用户场景很复杂:
一套脚本不可能覆盖所有场景。这就是 OpenClaw 设计三套脚本的原因。
OpenClaw 官方提供了三个安装脚本:
脚本 | 平台 | 核心特点 |
|---|---|---|
install.sh | macOS / Linux / WSL | 标准安装,自动处理依赖 |
install-cli.sh | macOS / Linux / WSL | 本地安装,无需 root 权限 |
install.ps1 | Windows (PowerShell) | 支持 winget/Chocolatey/scoop |

图 2:三套脚本对比 - 各自的特点与适用场景
为什么是三套而不是一套?
设计思路很明确: 不同场景有不同的约束条件。
install.sh 是标准方案。它假设你有系统权限,可以直接安装 Node.js 到系统目录.但如果你在共享服务器上,没有 root 权限怎么办?
install-cli.sh 就是为了解决这个问题设计的。它下载一个独立的 Node.js 运行时,所有东西都装在 ~/.openclaw 目录下.这样就不需要系统权限,也不会污染系统环境。
而 Windows 呢?PowerShell 的生态和 bash 宵完全不同.硬塞进一个脚本只会更复杂.干脆单独写一套,用 winget/Chocolatey/Scoop 这些 Windows 原生的包管理器.
这是最常用、 install.sh. 让我们看看它到底做了什么。

图 3:install.sh 的 5 步安装流程详解
官方文档把它拆成 5 个步骤.
脚本首先判断"我在哪"——是 macOS 还是 Linux 上运行?
# macOS 检测示例
if [[ "$OSType" == "Darwin" ]]; then
# macOS 特有逻辑
fi
如果是 macOS 且没有 Homebrew,脚本会自动帮你装上.这个设计有个细节: 不是报错退出,而是帮用户创造条件.
很多安装器会检查依赖缺失就报错退出,但 OpenClaw 选择直接帮你装.
这是安装器的核心.
# 检查现有 Node 版本
if command -v node &> /dev/null 2>&1; then
node_version=$(node --version | cut -d' ' - f1 | tr -d 'v')
# 版本比较逻辑
fi
关键点来了:
如果需要安装
注意那个 兼容 Node 22.16+ —— LTS 版本支持,没有强制要求用户升级到新版本.这背后有两个考量
如果系统没有 git,自动安装.
这一步很简单,但体现了同一个设计原则: 能自动解决就不报错.
这里有两种模式: npm 和 git.
npm 模式(默认)
npm install -g openclaw
一条命令搞定.适合绝大多数用户.
git 模式
git clone https://github.com/openclaw/openclaw.git ~/openclaw
cd ~/openclaw
pnpm install
pnpm build
# 然后安装 wrapper
为什么要有 git 模式?
代价是什么?
安装完成不是结束,还有收尾工作
# 检查配置问题
openclaw doctor --non-interactive
# 执行 onboarding(如适用)
# 设置环境变量,处理 sharp/libvips 问题
SHARP_IGNORE_GLOBAL_LIBVIPS=1
openclaw doctor 这个命令很有意思.它主动帮你检查环境配置有没有问题,而不是等你遇到报错再来排查.
这个设计很值得借鉴.
如果你在共享服务器上,没有 root 权限,install-cli.sh 是更好的选择.
它的设计思路是 完全独立, 不依赖系统环境.
不是用系统的 Node,而是下载一个独立的版本
# 下载固定版本的 Node LTS tarball
wget https://nodejs.org/dist/v${version}/node-v${version}.tar.gz
# 安装到本地目录
tar -xzf node-v${version}.tar.gz -C <prefix>/tools/node-v<version>
# 验证 SHA-256 校验和
sha256sum -c node-v${version}.tar.gz | sha256_expected
这个设计保证了版本一致性——每个人用的都是同一个 Node 版本,避免"我这能跑,他那不能跑"的问题.
和 install.sh 一样,自动安装.
# 使用本地 Node 安装
<prefix>/tools/node-v<version>/bin/npm --prefix <prefix> install openclaw
# 写入 wrapper
cat > <prefix>/bin/openclaw << 'EOF'
#!/bin/sh
<prefix>/lib/node_modules/openclaw/bin/openclaw.js "$@"
EOF
chmod +x <prefix>/bin/openclaw
所有东西都在 <prefix> 目录下(默认 ~/.openclaw).卸载? 删掉整个目录就行.干净利落.
Windows 的安装器更复杂一些,因为要处理 PowerShell、包管理器和 PATH 问题.
确认是 PowerShell 5+ 环境
Windows 上没有 Homebrew 这种东西,所以用三种方式
# 挀安装顺序
$managers = @('winget', 'choco', 'scoop')
foreach ($mgr in $managers) {
if (Get-command $mgr -ErrorAction SilentlyContinue) {
# 找到了,尝试安装
& $mgr install OpenJS.NodeJS.LTS
break
}
}
这是一个很实用的设计: 试完所有选项,用找到的第一个.
和 install.sh 一样,支持 npm 和 git 两种模式
Windows 特有问题: npm 安装后,命令不在 PATH 里.
# 添加到用户 PATH
$env:Path += ";$(npm prefix -g)\bin"
[Environment]::SetEnvironmentVariable('Path', $env:Path, 'User')
这个设计很贴心——自动更新 PATH,用户不用手动操作环境变量
两种模式怎么选?
维度 | npm 模式 | git 模式 |
|---|---|---|
安装速度 | 快 | 慢(需要构建) |
磁盘空间 | 小 | 大(包含源码) |
自定义能力 | 无 | 可修改代码 |
版本控制 | 只能用发布的版本 | 可用任意 commit |
适合场景 | 日常使用 | 开发调试/尝鲜 |
什么时候选 git 模式?
什么时候选 npm 模式?
安装器提供了丰富的配置选项
参数 | 说明 | 默认值 |
|---|---|---|
--install-method | npm 或 git | npm |
--version | npm 版本或 dist-tag | latest |
--beta | 使用 beta dist-tag | - |
--git-dir | git checkout 目录 | ~/openclaw |
--no-onboard | 跳过 onboarding | - |
--dry-run | 只打印操作,不执行 | - |
--verbose | 启用调试输出 | - |
变量 | 说明 |
|---|---|
OPENCLAW_INSTALL_METHOD | 安装方式 |
OPENCLAW_VERSION | 版本或 dist-tag |
OPENCLAW_NO_ONBOARD | 跳过 onboarding |
OPENCLAW_DRY_RUN | Dry run 模式 |
SHARP_IGNORE_GLOBAL_LIBVIPS | 控制 sharp/libvips 行为 |
命令行参数 适合一次性配置,直接跟在命令后面
# 安装 beta 版本
curl -fsSL https://openclaw.ai/install.sh | bash -s -- --beta
环境变量 适合 CI/CD 场景,可以在流水线里预设
# 在 CI 环境中预设
export OPENCLAW_NO_ONBOARD=1
curl -fsSL https://openclaw.ai/install.sh | bash
在 CI/CD 环境里,交互式安装是不可能的. OpenClaw 的安装器对此做了专门支持
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | \
bash -s -- --no-prompt --no-onboard
--no-prompt 跳过所有交互式确认
OPENCLAW_INSTALL_METHOD=git OPENCLAW_NO_PROMPT=1 \
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install-cli.sh | \
bash -s -- --json --prefix /opt/openclaw
--json 参数让输出变成 JSON 格式.这在 CI/CD 里特别有用——可以直接 jq 解析,提取版本号、安装路径等信息
- name: Install OpenClaw
run: |
curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | \
bash -s -- --no-prompt --no-onboard
这个配置可以直接复制到 CI/CD 流水线里
安装器设计得再好,也会遇到问题.官方文档列出了几个常见情况
错误信息 | 原因 | 解决方案 |
|---|---|---|
openclaw not found | PATH 没有包含 npm bin 目录 | 检查 $(npm prefix -g)/bin 是否在 PATH 中 |
npm EACCES 错误 | 没有全局 npm 目录写权限 | 脚本会自动切换到 ~/.npm-global |
sharp/libvips 问题 | 系统缺少 libvips 库 | 默认设置 SHARP_IGNORE_GLOBAL_LIBVIPS=1 |
Windows: "spawn git ENOENT" | 没安装 Git for Windows | 安装 Git for Windows |
Windows: "openclaw is not recognized" | PATH 没更新 | 添加 npm prefix 目录到用户 PATH |
网络超时 | 被防火墙拦截或网络不稳定 | 使用代理或切换镜像源 |
openclaw --version
openclaw doctor
openclaw gateway status
这个设计很聪明.当检测到 npm 全局目录没有写权限时,脚本会
~/.npm-global 目录整个过程对用户透明,不需要手动操作

图 4:常见问题排查流程与解决方案
OpenClaw 本地运行,但它的能力很强: 浏览网页、执行 shell 命令、读写文件、串联各种技能 这种能力也带来了风险.根据 Malwarebytes 的安全分析,OpenClaw 被设计成可以"大胆操作"——这意味着它会自主决定下一步行动,而不会每次都等待人类确认.
以下建议来自 Microsoft 的官方安全指南:
如果你打算在生产环境运行 OpenClaw,Docker 是一个不错的隔离方案:
# 创建隔离网络
docker network create --internal openclaw-net
# 运行容器
docker run -d --network openclaw-net \
-v openclaw-data:/data \
openclaw/openclaw
--internal 模拟内网.默认阻止容器访问外网.如果需要特定访问,可以单独配置.
看完这些细节,OpenClaw 安装器的设计可以总结成几个关键词: 自动检测、智能降级、本地优先. 不是"要求用户满足条件",而是"帮用户创造条件".没有 Node.js? 帮你装.没有 Homebrew? 帮你装.权限不够? 用本地安装方案.这种思路让用户体验从"先解决依赖,再安装"变成"一条命令搞定".
这套设计思路值得其他工具借鉴:
your-tool doctor.主动帮用户检查问题你在 CI/CD 里用过类似的安装方式吗?有没有踩过自动化配置的坑?评论区聊聊你的经验
好啦,谢谢你观看我的文章,如果喜欢可以点赞转发给需要的朋友,我们下一期再见!敬请期待!