☰
一只龙虾帮我写代码:OpenClaw云服务器部署全记录(TaoToken 统一 Key 接入篇)
2026/10/18 18:46:07 网站建设 项目流程

1. 为什么要把 OpenClaw 部署到云服务器上

OpenClaw 是一个基于 Pi Agent 的 AI Agent 框架,能接入多种大模型,并通过飞书、Telegram 等消息渠道直接对话。简单说,它让 AI 从 IDE 侧边栏搬进了你每天开着的聊天窗口——消息即交互,不用切窗口。适合谁?适合那些日常泡在飞书里、想让 AI 帮忙 review 代码、分析报错、整理会议纪要的开发者。

我一开始是在本地 Mac 上跑的,用了两周发现一个问题:笔记本合盖就断线,飞书里发消息半天没响应。AI Agent 这种东西,本质是个常驻服务,它得 7×24 小时在线才有意义。于是决定把它迁到云服务器上。

云服务器部署 OpenClaw 的完整链路其实不复杂,但坑比较分散:Node.js 环境版本不对、systemd 服务文件路径写错、gateway 起不来、飞书插件装完扫不出二维码、模型请求的 endpoint 和 Key 不知道往哪改。这篇文章按我实际操作的顺序,从环境准备一路写到用一条飞书消息触发代码生成来验证部署成功,命令和配置都可以直接复制。

核心检索词先明确:OpenClaw 云服务器部署,指的是把 OpenClaw 这个 AI Agent 框架装到一台公网可访问的 Linux 服务器上,配好 Node.js 运行环境、gateway 守护进程、飞书机器人渠道,最后把模型请求统一指向一个可管理的 API 通道。整条链路跑通后,你在飞书里发一句话,服务器上的 Agent 就会调用模型生成代码并回传结果。

测试环境我用的是 Ubuntu 20.04 ARM 架构的云主机,1 核 1G 也能跑,但建议至少 2G 内存,Node.js 24 加上 gateway 常驻,内存太紧容易 OOM。下面从环境准备开始。

2. 云服务器环境准备与 Node.js 24 安装

OpenClaw 官方推荐 Node.js 24,版本不对会在openclaw onboard阶段报各种模块找不到的错。管理 Node 版本我推荐用 mise,比 nvm 轻量,切换也干净。

先装 mise:

curl https://mise.run | sh echo 'eval "$(~/.local/bin/mise activate bash)"' >> ~/.bashrc source ~/.bashrc mise doctor

mise doctor会输出当前 shell 激活状态,看到mise: ok就说明装好了。macOS 用户直接brew install mise即可。

接着用 mise 装 Node.js 24 并设为全局默认:

mise use --global node@24 node -v

正常会输出v24.x.x。如果node -v还是旧版本,检查~/.bashrc里那行 activate 有没有生效,重新source一次。

mise 的常用命令顺手记一下,后面配环境会用到:

# 配置基础环境工具 mise use -g terraform jq go # 执行特定版本命令 mise exec node@24 -- node -v

环境好了,装 OpenClaw 本体:

npm install -g openclaw@latest openclaw onboard --install-daemon

onboard会引导你做基础配置,--install-daemon会尝试生成 systemd 服务文件。这里就是第一个大坑——自动生成的服务文件里ExecStart的路径经常是错的,导致 gateway 根本起不来。先别急,我们手动修。

先确认 node 和 openclaw 的真实路径:

NODE_PATH=$(which node) OPENCLAW_PATH=$(which openclaw) echo "Node: $NODE_PATH" echo "OpenClaw: $OPENCLAW_PATH"

记下这两个路径,下一步写服务文件要用。然后手动创建正确的 systemd 服务:

sudo tee /etc/systemd/system/openclaw-gateway.service > /dev/null << EOF [Unit] Description=OpenClaw Gateway After=network.target [Service] Type=simple User=root WorkingDirectory=/root Environment="OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1" Environment="OPENCLAW_GATEWAY_PORT=18668" ExecStart=$NODE_PATH $OPENCLAW_PATH gateway --port 18668 Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF

注意ExecStart那行用的是刚才which出来的绝对路径,这是关键。OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1是允许内网 WebSocket 连接,云服务器上做端口转发时需要。

重载并启动:

sudo systemctl daemon-reload sudo systemctl restart openclaw-gateway sudo systemctl status openclaw-gateway | head -20

看到active (running)就成功了。如果还是 failed,用journalctl -u openclaw-gateway -n 50看日志,八成是路径或者端口占用问题。

基础配置和状态检查命令:

# 配置 openclaw config # 查看状态 openclaw doctor # 打开面板 openclaw dashboard

openclaw doctor会逐项检查环境、gateway、渠道连接状态,排障时先跑它。

3. 把模型请求改到 TaoToken 统一通道(含可复制配置)

OpenClaw 默认会让你填各家模型的原始 endpoint 和 Key,管理起来很散。我的做法是把模型请求统一走 TaoToken 通道,一个 Key 管所有模型,切换模型只改 Model ID,不用到处换 Key。

TaoToken 的 API 地址是https://taotoken.net/api,官网在https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content=。先去控制台建一个 API Key,地址是https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite,Key 管理页在https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite。

拿到 Key 之后,OpenClaw 的模型配置走的是它自己的配置文件。找到 OpenClaw 的配置目录,一般在~/.openclaw/下,编辑config.json(如果没有就新建)。下面这段是可直接复制的 JSON 片段,把 Base URL、Key、Model ID 三件套都写全:

{ "models": { "default": { "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "model": "claude-sonnet-4-20250514", "maxTokens": 8192, "temperature": 0.7 } }, "gateway": { "port": 18668, "allowInsecurePrivateWs": true } }

三个字段对应关系要记牢:baseUrl填https://taotoken.net/api,apiKey填你在 TaoToken 控制台生成的 Key,model填你要用的 Model ID。OpenClaw 走的是 OpenAI 兼容协议,所以provider写openai-compatible就行。

如果你更习惯用环境变量管理密钥,OpenClaw 也支持。在 systemd 服务文件里加一行Environment:

Environment="OPENCLAW_MODEL_BASE_URL=https://taotoken.net/api" Environment="OPENCLAW_MODEL_API_KEY=sk-你的TaoToken密钥" Environment="OPENCLAW_MODEL_ID=claude-sonnet-4-20250514"

改完服务文件记得sudo systemctl daemon-reload && sudo systemctl restart openclaw-gateway。

这里有个细节:Model ID 要填 TaoToken 支持的模型标识,不是随便写的。去https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite查当前支持的模型列表,复制准确的 ID。填错了会在请求阶段报model not found。

配置改完,先别急着接飞书,用命令行验证一下模型通道通不通:

openclaw doctor

doctor里会有一项 model connectivity 检查,显示ok就说明 Base URL 和 Key 都对了。如果显示401,往下看第 5 节的排障。

4. 飞书机器人对接与一条消息触发代码生成验证

模型通道通了,接下来接飞书。OpenClaw 有现成的飞书插件:

npx -y @larksuite/openclaw-lark install

执行完会弹出一个二维码,用飞书扫码按提示配置即可。注意:一定要在 bash/zsh 这类 Unix/Linux 终端里执行,用某些非标准终端可能出现二维码渲染异常。

扫码配置完成后,检查设备列表:

openclaw devices list openclaw devices list --json

如果有待批准的设备,用:

openclaw devices approve <requestId>

requestId从devices list的输出里拿。

飞书这边还需要确认机器人权限。在飞书开放平台的应用管理里,确保机器人有接收消息、发送消息的权限,事件订阅地址指向你服务器的 gateway 端口。如果 dashboard 在内网,需要做端口转发让飞书能回调到你的服务器。

端口转发用 SSH 隧道:

ssh -N -L 18668:127.0.0.1:18668 root@服务器IP

防火墙放行端口:

sudo iptables -I INPUT 5 -p tcp --dport 18668 -j ACCEPT sudo apt install iptables-persistent -y sudo netfilter-persistent save sudo iptables -L INPUT -n --line-numbers | head -10

现在验证部署是否成功。打开飞书,找到你的机器人,发一条消息:

帮我写一个 Python 函数,读取 CSV 文件并返回按某列排序后的前 10 行

如果一切正常,几秒内机器人会回复一段完整的 Python 代码,包含csv模块的读取逻辑和排序。这条消息走的就是:飞书 → 服务器 gateway → TaoToken 通道 → 模型 → 返回飞书。整条链路跑通,说明 OpenClaw 云服务器部署成功。

再试一条更贴近实际开发的:

这段代码报 KeyError: 'timestamp',帮我看看问题在哪

把报错和代码片段一起发过去,Agent 会分析并给出修复建议。实测下来,这种"贴报错让它分析"的场景比翻文档快不少。

验证通过后,你可以把 gateway 设成开机自启:

sudo systemctl enable openclaw-gateway

这样服务器重启后 Agent 自动上线,不用手动拉。

5. 部署 OpenClaw 常见报错排查

部署过程中我踩的坑集中在几个报错上,逐个说。

401 Unauthorized:模型请求返回 401,说明 Key 不对或没生效。先确认config.json里的apiKey和 TaoToken 控制台里的一致,注意别把前后空格复制进去。如果用的是环境变量方式,检查 systemd 服务文件里Environment那几行有没有写对,改完必须daemon-reload再 restart,否则旧进程还在用旧变量。还有一种情况是 Key 被禁用或额度用完,去控制台确认 Key 状态。

local proxy failed / connection refused:gateway 起不来或者端口没监听。先sudo systemctl status openclaw-gateway看状态,failed 的话journalctl -u openclaw-gateway -n 50看日志。最常见原因是ExecStart路径写错,用which node和which openclaw重新确认绝对路径。其次是端口被占用,ss -tlnp | grep 18668看谁占着,换个端口或者杀掉占用进程。

reading choices 报错:这个通常出现在模型返回格式不符合预期时。OpenClaw 走 OpenAI 兼容协议,期望返回里有choices数组。如果 Base URL 填错(比如漏了/api或者多加了/v1),请求会打到错误的路径,返回格式就不对。确认baseUrl是https://taotoken.net/api,不要自己加/v1。另外 Model ID 填错也可能导致返回异常,去文档页核对准确的 ID。

OAuth / 设备授权失败:飞书扫码后设备一直 pending,或者 approve 时报错。先openclaw devices list --json看设备状态,pending 的用openclaw devices approve <requestId>批准。如果 approve 也失败,检查 gateway 是否在运行、飞书事件订阅地址是否可达。内网环境必须做端口转发,飞书回调不到你的服务器,授权流程就走不完。

二维码扫不出来:npx @larksuite/openclaw-lark install弹出的二维码显示异常。换 bash 或 zsh 终端重新执行,别用某些精简终端。如果服务器没有图形界面,二维码是以字符画形式输出的,确保终端字体等宽、窗口够宽。

gateway 反复重启:Restart=always下如果进程启动就崩,会陷入重启循环。看journalctl日志找崩溃原因,常见的是 Node 版本不对(必须 24)、内存不足(加 swap 或升配)、配置文件 JSON 格式错误(用jq . config.json校验)。

排障时记住一个顺序:先openclaw doctor看整体,再systemctl status看进程,最后journalctl看日志。三层定位,基本能覆盖九成问题。

6. 长期跑 Agent 的接入建议

部署跑通只是开始,真正让 OpenClaw 变成日常生产力工具,还得把模型通道管好。我的做法是长期编码和 Agent 场景统一走 Coding Plan,地址在https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite,一个通道覆盖代码生成、报错分析、文档总结这些高频操作,不用为每个场景单独配 Key。

如果你还在选模型阶段,想先对比不同模型在代码任务上的表现,可以用模型对话页快速试:https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite。试好了再把 Model ID 填回 OpenClaw 配置。

接入文档在https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite,里面有完整的 Base URL、鉴权方式和模型列表,配置时对着抄就行。API Key 管理在https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=openclaw_deploy&utm_campaign=rewrite,建议给 OpenClaw 单独建一个 Key,方便按项目追踪用量,出问题也好定位。

最后说个实用技巧:OpenClaw 的 gateway 日志里会记录每次模型请求的耗时和 token 用量,定期看一眼,能发现哪些场景在烧 token。比如让 Agent 做长文档总结时,如果没限制maxTokens,一次请求可能吃掉几千 token。在config.json里把maxTokens设成合理值,既省钱又避免超时。

整套流程走下来,从一台空服务器到飞书里能对话的 AI Agent,大概半小时。核心就三件事:Node.js 24 环境、正确的 systemd 服务文件、模型通道指向 TaoToken。剩下的飞书对接和验证,按步骤来不会卡太久。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询