2026/10/11 13:44:46

npm 非全局方式安装小龙虾 OpenClaw:用 nvm 隔离 Node.js 环境的完整实践

npm 非全局方式安装小龙虾 OpenClaw:用 nvm 隔离 Node.js 环境的完整实践 1. 为什么我坚持用 nvm 隔离 Node.js 来装小龙虾 OpenClaw很多人第一次装小龙虾 OpenClawopenclaw-cn时习惯性敲一句npm install -g openclaw-cn结果就是全局 node_modules 被塞进一堆东西C 盘空间悄悄变少换台机器或者重装系统后配置全丢。更麻烦的是你项目里其他依赖可能要求 Node 18而 OpenClaw 要 Node 22全局只有一个 Node 版本时两边互相打架。我自己的做法是用 nvmNode Version Manager把 Node.js 版本隔离开再把 openclaw-cn 当成项目级本地依赖装进指定目录通过node_modules/.bin直接调用可执行文件。这样全局环境零污染数据目录独立存放迁移时整个文件夹拷走就能跑。这篇就按这个思路从 nvm 安装、Node 版本切换、项目级 package.json 配置到.bin调用、启动脚本、卸载重装验证一步步给你可复制的命令。适合不想污染全局 npm、又想把小龙虾 OpenClaw 长期养起来的开发者。核心检索词就是 npm 非全局安装、nvm 隔离 Node.js、openclaw-cn 本地依赖。先说清楚 OpenClaw 是什么它是一个可本地部署的智能体运行框架openclaw-cn 是面向中文场景的包能接模型、跑工作流、开本地网关。适合谁想在自己机器上折腾 Agent、又不想把环境搞乱的人。下面进入正题。2. 前置准备nvm 安装与 Node.js 版本切换实操nvm 的作用一句话让你在同一台机器上装多个 Node 版本按需切换互不干扰。Windows 用 nvm-windowsmacOS/Linux 用 nvm-sh。这里两条路都给。Windows 下推荐用 nvm-windows 的安装包装完后在 PowerShell 里验证nvm version nvm list availablemacOS / Linux 用官方脚本curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash source ~/.bashrc nvm --version装好后安装 Node 22OpenClaw 要求 Node.js 22.22.0我实测 22 大版本即可nvm install 22 nvm use 22.22.1 nvm lsnvm ls会列出本机所有版本前面带星号的就是当前使用的。这里有个坑Windows 下nvm use需要管理员权限否则会报exit status 1: Access is denied。遇到就右键以管理员身份开终端再执行。切换完成后确认node -v npm -v输出v22.22.1和对应 npm 版本就对了。注意nvm 切换的是当前 shell 会话的 Node全局 npm 包是按版本隔离的这也是它比直接改 PATH 干净的地方。接下来建目录。我习惯把程序和数据分开方便备份mkdir -p F:/JProduct/OpenClaw/openclaw-cn mkdir -p F:/JProduct/OpenClaw/openclaw-dataopenclaw-cn放程序openclaw-data放数据、配置、workspace。这样以后重装系统只要openclaw-data还在你的“爬爬虾”就不会丢。3. 项目级安装 openclaw-cnpackage.json 与 .bin 调用配置进入程序目录初始化一个项目级 package.json这一步是关键——它让 openclaw-cn 只装在这个文件夹里不碰全局cd F:/JProduct/OpenClaw/openclaw-cn npm init -y然后安装 openclaw-cn 作为本地依赖npm install openclaw-cnlatest装完后目录结构大致是openclaw-cn/ ├── package.json ├── package-lock.json └── node_modules/ └── .bin/ └── openclaw-cn.cmdnode_modules/.bin里就是可执行入口。网上很多教程搞个桥接映射其实直接 cd 进去调用最省事cd F:/JProduct/OpenClaw/openclaw-cn/node_modules/.bin openclaw-cn --version如果你想让项目里能直接npx openclaw-cn可以在 package.json 里加 scripts。给你一份可复制的配置片段{ name: openclaw-local, version: 1.0.0, private: true, scripts: { start: openclaw-cn gateway --port 18789, version: openclaw-cn --version }, dependencies: { openclaw-cn: latest } }这样npm run start就会走本地.bin不会去找全局命令。数据目录通过环境变量指定。Windows 在系统属性 → 环境变量里加OPENCLAW_HOME F:\JProduct\OpenClaw\openclaw-data OPENCLAW_STATE_DIR F:\JProduct\OpenClaw\openclaw-datamacOS/Linux 写进~/.bashrcexport OPENCLAW_HOME/Users/you/OpenClaw/openclaw-data export OPENCLAW_STATE_DIR/Users/you/OpenClaw/openclaw-data然后改openclaw.json把 workspace 指到数据目录{ workspace: F:\\JProduct\\OpenClaw\\openclaw-data\\workspace, gateway: { port: 18789, mode: local } }注意 JSON 里 Windows 路径要用双反斜杠转义。模型选择上我这次接的是 DeepSeek在配置里填好对应 provider 和 key 即可。如果你还没拿到可用的 API Key可以去 TaoToken 的 API Keys 页面生成地址是 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw-nvm-local Base URL 用 https://taotoken.net/api Model ID 按你选的模型填。三件套Base URL Key Model ID缺一不可这是后面能跑通的前提。4. 启动脚本与版本校验跑通小龙虾 OpenClaw 网关在F:\JProduct\OpenClaw\openclaw-cn下建一个start.batecho off REM OpenClaw-CN 启动脚本 echo 启动 OpenClaw-CN... echo. set OPENCLAW_HOMEF:\JProduct\OpenClaw\openclaw-data set OPENCLAW_STATE_DIRF:\JProduct\OpenClaw\openclaw-data set OPENCLAW_GATEWAY_MODElocal cd /d F:\JProduct\OpenClaw\openclaw-cn call node_modules\.bin\openclaw-cn.cmd gateway --port 18789 pause双击运行看到网关监听日志后浏览器访问http://127.0.0.1:18789/能打开本地页面就说明跑通了。macOS/Linux 对应写个start.sh#!/bin/bash export OPENCLAW_HOME/Users/you/OpenClaw/openclaw-data export OPENCLAW_STATE_DIR/Users/you/OpenClaw/openclaw-data export OPENCLAW_GATEWAY_MODElocal cd /Users/you/OpenClaw/openclaw-cn ./node_modules/.bin/openclaw-cn gateway --port 18789版本校验单独跑一次确认装的是最新cd F:/JProduct/OpenClaw/openclaw-cn node_modules\.bin\openclaw-cn --version输出类似openclaw-cn/1.x.x就对了。想验证模型是否真的通可以在网关页面里发一条测试消息或者用 TaoToken 的模型对话页面先确认 Key 和模型可用 https://taotoken.net/model-chat?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw-nvm-local 。这一步能帮你把“配置问题”和“模型问题”分开定位。如果你打算长期跑 Agent 任务可以考虑 Coding Plan额度更稳 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw-nvm-local 。5. 常见报错排查401、local proxy failed、reading choices 与 OAuth装的过程中最容易撞的几个错我按真实报错给你对照。401 Unauthorized多半是 API Key 没填对或者 Base URL 写成了带路径的完整地址。检查三件套Base URL 用https://taotoken.net/apiKey 从 API Keys 页面复制完整Model ID 和 provider 匹配。改完重启网关。local proxy failed / ECONNREFUSED网关没起来或者端口被占。先确认openclaw-cn gateway进程在跑再换端口试node_modules\.bin\openclaw-cn gateway --port 18790reading choices of undefined这是模型返回结构不对通常是 Base URL 指错了端点或者模型名写错导致返回了错误对象。回到配置里核对 Model ID用模型对话页面单独测一次同样的 Key 和模型。OAuth 相关报错如果你用的是需要 OAuth 的 providertoken 过期会报这个。重新走一遍授权或者换成 API Key 方式接入。nvm use 报 Access is deniedWindows 权限问题管理员终端重跑。npm install 卡住或 404检查 registry必要时切回官方源npm config get registry npm config set registry https://registry.npmjs.org/排查顺序建议先--version确认程序在再确认环境变量再确认三件套最后看网关日志。这样能少走很多弯路。6. 卸载重装验证确认全局环境零残留最后做一次干净验证证明这套方案真的不污染全局。先卸载本地依赖cd F:/JProduct/OpenClaw/openclaw-cn npm uninstall openclaw-cn删掉node_modules和package-lock.json再确认全局没有残留npm ls -g --depth0列表里不应该出现 openclaw-cn。然后重装npm install openclaw-cnlatest node_modules\.bin\openclaw-cn --version版本正常输出说明重装成功。整个过程全局 npm 目录没动过数据目录openclaw-data也完好。以后换机器把openclaw-cn和openclaw-data两个文件夹拷过去nvm install 22后npm install一次就能恢复。这套流程我反复验证过核心就三点nvm 管 Node 版本、项目级装 openclaw-cn、.bin直接调用。接入文档在 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw-nvm-local 控制台在 https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentopenclaw-nvm-local 。把 start.bat 丢进开机启动你的爬爬虾就能一直养着了。