🔧 内网 Windows 极客指南:从零跑起 OpenClaw 离线开发环境
没有互联网,也能优雅地装上 Node.js、pnpm 和整个 OpenClaw 项目
—— 一份写给小白、也写给所有爱折腾的人的离线部署手记
你是否遇到过这种情景:公司的开发机在纯内网,不能连外网,但你却想从 GitHub 上 clone 一个酷炫的项目(比如OpenClaw)来跑起来、改代码、甚至成为贡献者?
或者你只是想在一台完全离线的 Windows 电脑上,把一套现代前端/Node.js 项目完整运行起来?
别怕。离线 ≠ 绝路。
今天这篇文章,我会带你一步一步,像蚂蚁搬家一样,从外网把需要的“干粮”全都搬到内网,最后在你的 Windows 机器上跑起pnpm install和openclaw onboard。
全文分为四个部分:
- 搬家的第一件行李 —— Node.js 本体
- 搬家的核心秘诀 —— pnpm + 依赖大礼包
- 最后的魔法 —— 本地仓库与离线安装
- 收尾 —— 构建 & 运行 OpenClaw
全程图文并茂、比喻生动,小白也能跟着做。我们开始吧!
📦 第一部分:搬家的第一件行李 —— Node.js
🧠 想一想:为什么先装 Node.js?
因为pnpm本身是一个 Node.js 写的工具,而 OpenClaw 项目也需要 Node.js 环境来运行构建脚本。所以Node.js 是一切的前提。
✅ 你需要做的(在外网电脑上)
找一台可以上网的电脑(Windows / macOS / Linux 都行,反正我们只下载安装包)。
- 打开浏览器,访问 Node.js 官网:
👉 https://nodejs.org/en/download/ - 找到Windows 64-bit的LTS 版本(比如
node-v22.14.0-x64.msi)。LTS = Long Term Support,意思是稳定、可靠,适合生产环境。
- 点击下载,得到一个
.msi安装包。
🚚 搬到内网
- 把下载好的
node-vXX.msi复制到U盘或内网共享文件夹。 - 然后在内网 Windows 机器上,双击安装。
- 安装过程中务必勾选“Add to PATH” —— 这样你才能在命令行里直接用
node命令。
✔️ 验证安装
在内网机器上打开命令提示符(cmd),输入:
node -v npm -v如果看到了版本号(比如v22.14.0和10.x.x),恭喜你,Node.js 已经安家落户了!
💡小贴士:如果以后你需要管理多个 Node 版本,可以顺便在外网下载nvm-windows(一个 Node 版本管理工具),然后像搬运其他文件一样搬进来。不过对于大多数项目,一个 LTS 版本就够了。
🐜 第二部分:搬家的核心秘诀 —— pnpm + 依赖大礼包
🤔 pnpm 是什么?为什么用它?
pnpm是一个比 npm 更快、更省磁盘空间的包管理器。OpenClaw 项目就是用 pnpm 来管理依赖的。
离线安装 pnpm 的难点在于:pnpm 本身需要从外网下载,而且项目依赖更是成千上万个小文件。
我们采用“大礼包”模式:在外网把所有依赖都下载好,然后整体打包,搬到内网直接解压使用。
🛠 在外网机器上(Linux / macOS 皆可)做准备工作
1. 安装 pnpm-airgap —— 一个专门为离线设计的工具
npminstall-gpnpm-airgappnpm-airgap会帮你把pnpm-lock.yaml里列出的所有依赖包,整整齐齐地下载到一个文件夹里,就像打包行李一样。
2. 克隆 OpenClaw 项目并进入目录
gitclone https://github.com/openclaw/openclaw.gitcdopenclaw3. 运行pnpm-airgap fetch
pnpm-airgap fetch这个命令会读取pnpm-lock.yaml,然后从 npm 官方仓库把所有需要的.tgz包下载到airgap-packages文件夹里。
这个过程可能需要几分钟,因为依赖数量可能很多,但只要做一次,以后都可以复用。
4. (可选)也下载 pnpm 本体
如果内网机器完全没有 pnpm,我们也可以把 pnpm 本身作为一个包带过去。
在外网执行:
npmpackpnpm会生成一个pnpm-xxx.tgz文件,这就是 pnpm 的离线安装包。
📀 打包并搬运
将整个openclaw项目目录(包括airgap-packages文件夹)压缩成一个.zip或.7z文件,复制到 U 盘,然后解压到内网 Windows 机器上。
🏚 第三部分:最后的魔法 —— 本地仓库与离线安装
🧙♂️ 为什么需要一个“本地仓库”?
直接pnpm install --offline有时候会失败,因为 pnpm 仍然期望通过http://registry.npmjs.org去检查包的元数据。
我们可以在内网模拟一个极简的 npm 仓库,把airgap-packages里的包“发布”到这个仓库里,然后让 pnpm 把仓库地址指向它——就像在外网一样顺畅。
✨ 方案 A:使用 pnpm-airgap 自带的“零依赖发布工具”(最推荐)
pnpm-airgap包里藏着一个神奇的小脚本bootstrap-publisher.js,它不需要额外安装任何软件,只需要 Node.js 就能启动一个简单的仓库。
在外网找到这个脚本
bootstrap-publisher.js一般位于全局安装的 pnpm-airgap 目录下:
- Linux/macOS:
~/.npm/node_modules/lib/node_modules/pnpm-airgap/lib/bootstrap-publisher.js - 或者在当前项目的
node_modules/pnpm-airgap/lib/里(如果你之前在外网项目里执行过pnpm install)。
把这个.js文件也复制到 U 盘里,和内网的项目文件放在一起。
在内网 Windows 上执行发布命令
打开 cmd,进入项目目录,运行:
node path\to\bootstrap-publisher.js airgap-packages http://localhost:4873解释一下:
airgap-packages是存放所有依赖包的文件夹路径。http://localhost:4873是这个临时仓库的地址(端口可以换,4873 是 Verdaccio 的默认端口)。
运行之后,终端会显示Registry started at http://localhost:4873,不要关掉这个窗口!它就是一个正在运行的本地仓库。
配置 pnpm 使用这个本地仓库
新开一个 cmd 窗口,执行:
pnpm set registry http://localhost:4873这样 pnpm 以后就会从你的本地仓库去下载依赖。
运行 pnpm install
cd openclaw pnpm install这时候 pnpm 会去http://localhost:4873拉取所有包,而你的本地仓库已经通过bootstrap-publisher.js提供了这些包,所以完全不依赖外网,速度飞快!
🔧 方案 B:搬运完整的 Verdaccio(适合长期团队)
如果你希望有一个更“正式”的私有 npm 仓库,可以搬运 Verdaccio。方法也很简单:
- 在外网任意目录执行
npm install verdaccio,得到一个node_modules\verdaccio文件夹。 - 把这个文件夹整个拷贝到内网。
- 在内网运行
npx verdaccio,它会启动一个仓库,默认地址也是http://localhost:4873。 - 记得修改配置文件
config.yaml,删掉所有uplinks配置,防止它试图联网代理。
不过对于个人或小团队,方案 A 已经足够优雅。
🎉 第四部分:收尾 —— 构建 & 运行 OpenClaw
1. 安装项目依赖
如果上一步已经成功执行了pnpm install,那么node_modules目录应该已经完整生成了。
2. 构建 UI 和主项目
pnpm ui:build pnpm build这些命令通常只是本地编译,不依赖网络(除非某些构建脚本会去下载额外的资源,但 OpenClaw 不会)。
3. 链接 CLI(可选)
如果你想在任意目录下使用openclaw命令:
pnpm link --global这会创建一个全局符号链接。
4. 运行引导流程
openclaw onboard --install-daemon现在,你应该能看到 OpenClaw 的配置向导,开始你的本地 AI 助手之旅了!🎈
⚠️ 常见坑与避坑指南
| 现象 | 可能原因 | 解决办法 |
|---|---|---|
pnpm: command not found | 内网没有安装 pnpm | 用之前外网打包的pnpm-xxx.tgz离线安装:npm install -g ./pnpm-xxx.tgz |
pnpm install卡住或报 404 | 本地仓库没有正确启动或地址配置错误 | 确保bootstrap-publisher.js窗口一直运行,并且pnpm get registry返回http://localhost:4873 |
构建时提示python或MSBuild缺失 | 某些原生模块需要编译工具 | 在外网下载Python 3.x安装包和Visual Studio Build Tools离线安装器,同样搬运进来安装 |
路径过长导致node_modules无法删除 | Windows 默认路径长度限制 | 使用robocopy或 7-Zip 的“压缩后删除”功能,或者启用 Windows 长路径支持(组策略) |
🧠 最后的最后:这份指南的精神
离线开发并不可怕,它只是把“即时下载”变成了“提前准备”。
只要你理解了一个现代 Node.js 项目运行所需要的三要素:
- Node.js 运行时—— 可以提前下载 .msi 安装包
- 包管理器(pnpm)—— 可以提前打包成 .tgz
- 项目依赖(所有第三方包)—— 可以用
pnpm-airgap fetch一次性全抓下来
然后利用一个本地仓库(哪怕只有几行 Node.js 代码的bootstrap-publisher.js),就可以在内网复现和外网几乎一模一样的开发体验。
希望这篇文章能帮到每一个被困在内网,却依然渴望敲代码、跑项目的你。
如果觉得有用,欢迎转发给你的同事 —— 独乐了不如众乐乐 😄
Happy offline coding!
—— 你的离线开发好伙伴