1. 为什么我要把 OpenClaw 装进 Node.js 环境
OpenClaw 是一个开源 AI 助手框架,能对接飞书、企业微信等平台,把大模型能力塞进日常办公流里。它本身跑在 Node.js 上,所以安装部署的第一步不是敲openclaw命令,而是先把 Node.js 和 npm 环境理顺。适合谁?适合想自己搭一个飞书机器人、又不想从零写消息路由的开发者,也适合手里有服务器、想跑一个长期在线 AI 助手的运维同学。
我这次的目标很明确:在一台 Linux 服务器上,用 nvm 管好 Node.js 版本,装完 OpenClaw,配好飞书应用凭据,再把模型请求统一走 TaoToken 的 Key,最后逐项验证消息能通、模型能回。整个过程踩过几个坑,比如 Node 版本不对导致 CLI 装不上、飞书 Webhook 路径写错导致消息无响应。下面按可复制的顺序拆开讲,你跟着做基本能一次跑通。
核心检索词先摆出来:OpenClaw 安装部署、Node.js 环境、npm 全局安装、飞书机器人接入、TaoToken 配置。这几个词会贯穿全文,你搜到这篇大概率就是卡在某个环节了。
2. 前置准备:Node.js、npm 与 TaoToken Key
2.1 Node.js 版本选择与 nvm 安装
OpenClaw 的 CLI 对 Node.js 版本有要求,实测 Node 22 LTS 最稳。别用系统自带的旧版本,容易在npm install -g阶段报EBADENGINE。用 nvm 管理版本,切换干净。
# 安装 nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash # 让 nvm 在当前 shell 生效 export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # 安装并切换到 Node 22 LTS nvm install 22 nvm use 22 nvm alias default 22 # 验证 node --version npm --versionnode --version输出v22.x.x,npm --version输出10.x以上,就算环境 OK。如果你在 Windows 上,建议走 WSL2,原生 PowerShell 也能装,但后面 systemd 和端口转发会麻烦一点。
2.2 为什么模型请求要走 TaoToken
OpenClaw 支持多种模型 provider,但如果你每个 provider 都单独配 Key,配置文件会散、换模型要改多处。TaoToken 提供统一的 API Key 和兼容 OpenAI 的接口地址,OpenClaw 里只要把baseURL指向它,换模型只改model字段就行。对飞书机器人这种要长期跑的服务来说,统一 Key 管理省心很多。
TaoToken 的 API 地址是https://taotoken.net/api,Key 在控制台生成。下面配置里会用到。
3. 可复制配置:安装 OpenClaw 与 config.toml 骨架
3.1 全局安装 OpenClaw CLI
npm install -g @openclaw/cli # 验证 CLI 是否可用 openclaw --version如果这一步卡住或报权限错误,先别急着sudo。用 nvm 装的 Node 不需要 sudo,报EACCES多半是之前用系统 npm 装过东西,清一下缓存再装:
npm cache clean --force npm uninstall -g @openclaw/cli npm install -g @openclaw/cli3.2 初始化项目与目录结构
openclaw init my-openclaw cd my-openclaw初始化后会生成一个基础目录,核心是config.toml。OpenClaw 新版用 TOML 做配置,比 JSON 好读,注释也方便。下面是我实测能跑的骨架,你按自己的飞书凭据和 TaoToken Key 替换占位符。
# config.toml [gateway] host = "0.0.0.0" port = 18789 [model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" model = "claude-sonnet-4-20250514" [feishu] app_id = "cli_你的飞书AppID" app_secret = "你的飞书AppSecret" verification_token = "你的VerificationToken" encrypt_key = "你的EncryptKey" webhook_path = "/webhook/feishu"几个关键点说明。base_url填 TaoToken 的 API 地址,注意不要带多余路径,OpenClaw 会自己拼/v1/chat/completions。model字段填你在 TaoToken 上能用的模型名,换模型只改这一行。飞书的verification_token和encrypt_key在飞书开放平台的事件订阅页面能找到,必须和平台侧一致,否则回调验证会失败。
3.3 飞书应用侧配置
去飞书开放平台创建企业自建应用,开启机器人能力。事件订阅里填请求地址:
http://你的服务器IP:18789/webhook/feishu如果服务器没有公网 IP,可以用内网穿透工具把 18789 暴露出去,但注意别把管理端口直接裸奔在公网。权限方面至少勾选「接收消息」和「发送消息」相关权限。配置完先别发布,等 OpenClaw 服务起来后再回来点验证。
4. 验证请求:启动网关与逐项检查
4.1 启动 Gateway 服务
openclaw gateway前台跑起来后,看到日志里出现Gateway listening on 0.0.0.0:18789就算启动成功。生产环境建议用 systemd 托管,避免 SSH 断开就挂。
# /etc/systemd/system/openclaw-gateway.service [Unit] Description=OpenClaw Gateway After=network.target [Service] Type=simple User=你的用户名 WorkingDirectory=/home/你的用户名/my-openclaw ExecStart=/home/你的用户名/.nvm/versions/node/v22.x.x/bin/openclaw gateway Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.targetExecStart里的路径用which openclaw查到的绝对路径,因为 systemd 不加载 nvm 环境。然后:
sudo systemctl daemon-reload sudo systemctl enable openclaw-gateway sudo systemctl start openclaw-gateway sudo systemctl status openclaw-gateway状态显示active (running)即可。
4.2 验证模型请求是否走通
先不接飞书,直接用 CLI 测模型:
openclaw chat输入一句「你好,介绍一下你自己」,如果返回正常文本,说明 TaoToken 的 Key 和base_url配置正确。如果报 401,检查 Key 有没有多余空格;报 404,检查base_url是不是写成了https://taotoken.net/api/v1,多写/v1会拼成/v1/v1/chat/completions。
4.3 验证飞书回调
回到飞书开放平台,点事件订阅的「验证」按钮。如果 OpenClaw 日志里出现收到 challenge 请求并返回成功,平台侧会提示验证通过。然后发布应用版本,在飞书群里 @机器人 发消息,看是否回复。
# 实时看网关日志 sudo journalctl -u openclaw-gateway -f日志里能看到消息进出的记录,方便定位是飞书没推过来,还是模型没返回。
5. 本篇常见错排查
5.1 npm 安装报 EBADENGINE
现象:npm install -g @openclaw/cli提示引擎不兼容。原因:Node 版本低于要求。解决:nvm install 22 && nvm use 22,再重装。别用--force跳过引擎检查,后面运行会出更奇怪的错。
5.2 飞书验证一直失败
现象:平台点验证没反应,或提示 token 不匹配。排查顺序:先看 OpenClaw 日志有没有收到请求,没收到就是网络或端口问题;收到了但返回失败,检查verification_token和encrypt_key是否和平台一致。还有一个容易忽略的点:webhook_path必须和平台填的路径完全一致,大小写敏感。
5.3 模型返回超时或 502
现象:openclaw chat卡很久然后报错。先确认服务器能不能访问https://taotoken.net/api,用 curl 测:
curl -I https://taotoken.net/api如果连不上,检查服务器 DNS 和出网策略。如果能连上但模型报错,把model字段换成 TaoToken 文档里明确支持的模型名,别自己拼。
5.4 systemd 启动后立刻退出
现象:systemctl status显示failed,日志里报openclaw: command not found。原因:systemd 不加载 nvm 环境,ExecStart用了相对路径。解决:用which openclaw拿到绝对路径填进去,或者写一个启动脚本先 source nvm。
6. 接入与长期运行的建议
如果你只是本地测试,前台跑openclaw gateway就够了。但要长期挂在服务器上给飞书群用,建议把 Key 管理、日志、重启策略都配好。TaoToken 的 Key 可以在控制台按项目分,OpenClaw 这边只填一个,换模型不动 Key,维护成本低。
需要生成或管理 Key 的话,直接去控制台操作:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
接入文档里有各语言和框架的调用示例,OpenClaw 这种 OpenAI 兼容的配置直接参考即可:https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
如果你后面要跑长期编码任务或 Agent 工作流,可以看 Coding Plan 的说明:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
想先验证模型对话效果,不装 OpenClaw 也能在网页上试:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite
最后提醒一句:飞书应用的app_secret和 TaoToken 的 Key 都属于敏感信息,别提交到 Git 仓库。config.toml加进.gitignore,服务器上权限设成600。我见过有人把配置推到公开仓库,Key 被扫走跑了一堆请求,这个坑别踩。