Technical Guide

05. CLI 入口:openclaw 命令怎么启动

从 package.json 和 openclaw.mjs 看 OpenClaw CLI 的启动路径、Node 版本检查和源码/打包模式。

这篇解决什么问题

你在终端输入:

openclaw gateway status

或:

openclaw agent --message "Hello"

到底先跑了什么?

这一篇只看入口,不展开每个子命令。

package.json 指向 openclaw.mjs

package.json 里有:

"bin": {
  "openclaw": "openclaw.mjs"
}

所以 npm 全局安装后,系统里的 openclaw 命令会指向仓库根目录的 openclaw.mjs

openclaw.mjs 先检查 Node 版本

源码里有:

MIN_NODE_MAJOR = 22
MIN_NODE_MINOR = 19

也就是至少 Node 22.19。

README 推荐 Node 24,或者 Node 22.19+。

如果版本不够,launcher 会打印升级提示并退出。这就是为什么安装前要先确认 Node 版本。

launcher 不只是转发

openclaw.mjs 做了不少启动前工作:

  • Node 版本检查;
  • 判断是否是源码 checkout;
  • 处理 Node compile cache;
  • Windows Node 24 compile cache deadlock 规避;
  • 子进程 respawn;
  • 打包产物和源码运行路径选择;
  • 信号转发和退出处理。

它不是业务逻辑核心,但它决定 CLI 能不能稳定启动。

子命令在哪里

真正命令实现不在 openclaw.mjs

后面会进入:

src/cli/
src/commands/

常见命令对应:

openclaw onboard        → setup / onboard commands
openclaw gateway ...    → gateway-cli / gateway commands
openclaw agent ...      → commands/agent
openclaw doctor         → commands/doctor
openclaw cron ...       → cli/cron-cli

具体文件要按命令名再查。

如果 CLI 启动失败怎么查

先按顺序查:

node -v
which openclaw
openclaw --version
openclaw doctor

如果是源码开发:

pnpm install
pnpm build
pnpm openclaw --version

如果连 openclaw --version 都失败,先不要看 Agent Runtime。问题还在 launcher / Node / 安装层。

下一篇看什么

下一篇进入 Agent Runtime。