背景
小龙虾 openclaw是开源项目,作为程序员肯定是想要通过源码来运行,这样对项目不爽的地方可以直接通过修改来改造。
克隆项目
我先fork项目 https://github.com/openclaw/openclaw 到自己的空间下面
我们再克隆fork的项目到本地
运行项目
项目的readme里面写的很清楚,可以通过下面命令来开发环境运行:
git clone https://github.com/openclaw/openclaw.git
cd openclaw
pnpm install
pnpm ui:build # auto-installs UI deps on first run
pnpm build
pnpm openclaw onboard --install-daemon
# Dev loop (auto-reload on TS changes)
pnpm gateway:watch
值得注意的是:
pnpm openclaw onboard --install-daemon
这个命令其实是一个初始化项目+帮项目安装到系统后台服务的命令,特别是 –install-deamon。
所以基本上这个执行向导走完之后,就可以打开我们的页面了。
pnpm gateway:watch
这个命令是可以监控我们项目文件修改来让改动实时生效。
所以你发现 即使你停止pnpm gateway:watch 还是能访问你的项目,甚至重启电脑,他还在,那怎么办呢?
为什么停止了 pnpm gateway:watch 还能访问网站?
关键在于执行的这一步: pnpm openclaw onboard --install-daemon
这里的 --install-daemon 参数非常重要。它的作用是向你的操作系统(如果你用的是 macOS 就是 launchd,Linux 则是 systemd)注册并安装一个后台守护进程(Daemon)。 这个守护进程会在后台自动、静默地把 Gateway(网关)服务跑起来。
当你随后运行 pnpm gateway:watch 时,你实际上是在终端前台又开了一个供开发调试用的实例(或者说你停掉前台的这个实例后,真正提供服务的是后台那个一直在运行的系统服务)。所以,即使你通过 Ctrl+C 关掉了 gateway:watch,由系统托管的后台进程依然在默默运行,这就是为什么你依然能打开网站的原因。
项目启动的原理是什么?
在当前的配置下,你的项目分为两层机制:
- 开发层:
pnpm gateway:watch主要是开发用的,它监听你的 TypeScript 文件变动并实时热更新。 - 系统服务层: 你通过
--install-daemon安装的后台服务是生产或持久化运行的标准方式。只要你的电脑开机,系统就会自动帮你把项目(Gateway)挂载在后台。
现在想要重启/管理项目,该怎么执行?
因为项目已经作为系统后台服务安装了,所以你需要使用 openclaw 的 gateway 服务管理命令来控制它。
你可以直接在终端项目目录下(使用你的 pnpm 前缀)执行以下命令:
重启项目:
pnpm openclaw gateway restart
查看项目当前的运行状态(看看后台服务是否在线):
pnpm openclaw gateway status
停止项目(停止后网站就打不开了):
pnpm openclaw gateway stop
再次启动项目:
pnpm openclaw gateway start
💡 额外建议:如何回到纯手动开发模式?
如果你现在处于开发阶段,不想让系统后台服务干扰你(或者不想每次改了代码还要去 restart),你可以卸载掉这个后台服务:
pnpm openclaw gateway uninstall
卸载后,后台服务就不复存在了。这时候你再运行 pnpm gateway:watch,项目就会完全跟着你这个命令的生命周期走——启动就能访问,按 Ctrl+C 停止后网站就会打不开,非常适合开发调试。
如果你想要把项目重新安装为系统的后台服务,你不需要重新走一遍完整的 onboard 初始化流程。你可以直接使用 gateway 的服务管理命令。
在项目目录下执行以下命令来重新安装服务:
pnpm openclaw gateway install
安装完成后,服务通常需要手动启动一下(或者重启电脑后它会自动启动),你可以立刻执行以下命令将其启动:
pnpm openclaw gateway start
另外补充一点: 如果你不仅想重新安装服务,还想把各项配置(比如大模型密钥、渠道等)都重新配置一遍,你依然可以像第一次那样运行完整的新手引导程序:
pnpm openclaw onboard –install-daemon