生成模型:Claude Opus 4.6 (anthropic/claude-opus-4-6) Token 消耗:输入 ~140,000 tokens,输出 ~10,000 tokens(本章合计)
在深入阅读 OpenClaw 源码之前,你需要搭建一个完整的开发环境。本节将指导你完成从零到可运行的全部准备工作。
2.1.1 Node.js 22+ 与 pnpm 安装
OpenClaw 对运行时有明确的版本要求。package.json 中声明:
{
"engines": {
"node": ">=22.12.0"
},
"packageManager": "[email protected]"
}
推荐使用版本管理工具(如 nvm、fnm 或 volta)安装 Node.js,这样可以方便地在不同项目之间切换版本。
# 使用 nvm 安装 Node.js 22
nvm install 22
nvm use 22
# 验证版本
node --version # 应输出 v22.x.x
如果你的系统已经安装了 Node.js 但版本低于 22,OpenClaw 会在启动时报错。这个检查在 src/infra/runtime-guard.ts 中实现——assertSupportedRuntime() 函数会比对当前 Node.js 版本与 package.json 中的 engines.node 要求。
OpenClaw 使用 pnpm 10.x 作为包管理器。Node.js 16+ 内置了 Corepack,可以直接启用 pnpm:
衍生解释:Corepack 是 Node.js 内置的一个实验性工具,用于管理包管理器(npm、yarn、pnpm)的版本。它读取项目 package.json 中的 packageManager 字段,自动下载并使用对应版本的包管理器。这确保了团队中每个人使用完全相同版本的 pnpm。
如果 Corepack 不可用,也可以手动安装:
pnpm install 完成后,你会注意到根目录下出现了 node_modules/ 目录以及各子包的 node_modules/。由于 pnpm 的硬链接机制,实际的包文件存储在全局的 .pnpm-store 中,项目目录只包含符号链接,因此磁盘占用比 npm 小得多。
接下来构建项目:
构建命令 pnpm build 实际上执行了一系列步骤,定义在 package.json 的 scripts.build 中:
拆解这个构建流水线:
pnpm canvas:a2ui:bundle:打包 Canvas A2UI 前端代码
tsdown:核心 TypeScript 编译(使用 tsdown.config.ts 配置)
build:plugin-sdk:dts:生成插件 SDK 的类型声明文件
后续脚本:复制元数据、写入构建信息、生成 CLI 兼容层
构建产物输出到 dist/ 目录:
Web 控制台 UI 是一个独立的包,需要单独构建:
这个命令通过 scripts/ui.js 脚本执行,它会:
检测 UI 依赖是否已安装,未安装则自动运行 pnpm install
使用 Vite 构建 Lit Web Components
构建后的 UI 文件会被 Gateway 在启动时加载并通过 HTTP 提供服务(src/gateway/control-ui.ts),用户通过浏览器访问 http://127.0.0.1:18789 即可看到控制面板。
完整的一键构建命令:
构建成功后,你可以通过以下方式验证:
如果看到 openclaw 的命令行帮助信息,说明构建成功。
在日常开发中,你不需要每次修改都运行完整的 pnpm build。OpenClaw 提供了两种更高效的开发方式:
这背后调用的是 scripts/run-node.mjs,它会检查 dist/ 是否过期,如果过期则先自动重新构建,然后运行。
我们将在 2.4 节详细讨论这些开发循环工具。