1. 京东云主机跑 OpenClaw 的真实场景与踩坑点
OpenClaw 是 2026 年比较主流的 AI 自动化助理平台,能挂 skill、接群聊机器人、跑定时任务,适合想在自己云主机上搭一套 7×24 小时常驻助理的人。它本身不绑定某一家云厂商,只要是一台能出网、能开端口的 Linux 主机就能跑。我这次选的是京东云,原因很直接:账号现成、按量计费便宜、控制台防火墙规则改起来顺手。但真上手你会发现,京东云和网上那些一键部署教程的默认路径、镜像、端口策略都不太一样,照抄很容易卡在“服务起来了但面板打不开”或者“模型 Key 写进去了但请求 401”。
这篇就按我实际跑通的顺序来:先在京东云开一台 2 核 2G 的云主机,装好 Node.js 22 和 OpenClaw,然后把大模型 APIkey 写进配置文件,再通过 TaoToken 的统一 Key 通道把模型调用验证通,最后挂载 skill 目录、触发一次真实 skill 看结果。全程命令可直接复制,配置文件字段我会标清楚路径。适合谁?适合手里有一台云主机、想自己掌控数据和调用链路、又不想被单一模型厂商绑死的开发者和小团队。
先说清楚一个前提:OpenClaw 调用大模型走的是 OpenAI 兼容协议,所以只要你的 Key 服务商提供/v1/chat/completions这种标准接口,就能接。TaoToken 在这里的角色就是统一 Key 通道——一个 Key 对应多个模型 ID,省得你在配置文件里塞一堆不同厂商的 baseUrl 和密钥。下面所有配置我都用 TaoToken 的地址来写,你换成自己的也能跑。
京东云这边我踩过的第一个坑是安全组。默认新建的云主机只开了 22 端口,OpenClaw 默认的 18789 面板端口和它内部网关用的端口都得手动放行,否则你在浏览器里怎么刷都是超时。第二个坑是内存,2G 是底线,1G 的机器npm install阶段就可能被 OOM Killer 干掉。第三个坑是 Node 版本,OpenClaw 2026 版要求 Node 22 以上,京东云默认镜像里的 Node 往往是 16 或 18,得自己升。
2. TaoToken 前置准备:拿统一 Key 与确认 Base URL
在动服务器之前,先把 Key 拿到手,不然后面配置文件写一半还得回来找。TaoToken 的入口在官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,注册登录后进控制台。控制台里能看到 API Keys 管理页,点新建,起个名字比如openclaw-jd,生成后那串sk-开头的就是你的统一 Key。注意:这串 Key 只在生成时完整显示一次,复制好存到密码管理器里,后面写配置文件要用。
Base URL 这块要记准,OpenClaw 的 provider 配置里填的是https://taotoken.net/api,不要带任何路径后缀,也不要加 UTM 参数。有些教程会让你填/v1,但 OpenClaw 内部会自己拼/v1/chat/completions,你多写一层就变成/v1/v1/...,直接 404。这个我实测过,填错就是reading choices报错的前兆。
模型 ID 怎么选?进控制台的模型列表页,能看到当前可用的模型标识,比如claude-sonnet-4-5、gpt-4o这类。OpenClaw 配置文件里的model字段填的就是这个 ID,不是显示名。如果你后面要跑 coding 类任务,可以顺带看下 Coding Plan 页面,长期编码场景用套餐比按量划算,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite 。但这一步不是必须的,先把按量的 Key 跑通再说。
还有一点,TaoToken 的 Key 是统一通道,意味着你同一个 Key 可以调不同模型,切换模型只改配置文件里的model字段,不用换 Key、不用换 baseUrl。这对 OpenClaw 这种要在多个 skill 里用不同模型的场景特别省事。比如总结类 skill 用便宜的快模型,代码类 skill 用强模型,配置文件里各写各的 model ID 就行。
拿 Key 的过程中如果遇到控制台打不开或者登录态失效,先检查浏览器是不是拦了第三方 cookie,这个跟服务器部署无关,但很多人卡在这。Key 拿到后先别急着上服务器,可以在本地用 curl 测一下通不通,命令我放在下一节验证部分,你可以先跳到那里看一眼格式。
3. 京东云主机环境初始化与 OpenClaw 可复制配置
先开机器。京东云控制台进云主机创建页,镜像选 Ubuntu 22.04 或 24.04 都行,规格 2 核 2G 起步,系统盘 40G。创建完进安全组,放行 22 和 18789,协议 TCP,来源先写0.0.0.0/0方便调试,跑通后再收紧。然后用 SSH 连上去,依次执行下面的初始化命令。
# 更新系统包索引 sudo apt update && sudo apt upgrade -y # 安装 Node.js 22(NodeSource 源) curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install -y nodejs # 验证版本,必须 >= 22 node -v npm -v # 配置 npm 国内镜像加速 npm config set registry https://registry.npmmirror.com/ # 全局安装 OpenClaw npm install -g openclaw # 验证安装 openclaw --version装完 OpenClaw 后先别急着 init,因为默认的交互式初始化会问你一堆问题,在 SSH 里容易答错。我们直接手写配置文件。OpenClaw 的配置目录默认在~/.openclaw/,主配置文件是openclaw.json。先创建目录和文件:
mkdir -p ~/.openclaw nano ~/.openclaw/openclaw.json然后把下面这段 JSON 完整写进去。这是最小可运行配置,provider 指向 TaoToken,model 填你在控制台看到的模型 ID,apiKey 填你拿到的sk-开头的 Key。注意 JSON 里不能有注释,我下面用文字说明字段含义,你复制时只复制代码块内容。
{ "gateway": { "port": 18789, "host": "0.0.0.0" }, "models": { "default": "claude-sonnet-4-5", "providers": { "taotoken": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken统一Key", "models": [ { "id": "claude-sonnet-4-5", "maxTokens": 8192 }, { "id": "gpt-4o", "maxTokens": 4096 } ] } } }, "skills": { "dir": "/root/.openclaw/skills", "autoLoad": true } }字段说明:gateway.host写0.0.0.0是为了让外部能访问面板,如果你只想本机访问就写127.0.0.1。models.default是默认模型,skill 没指定模型时用它。providers.taotoken.models数组里列几个你常用的模型 ID,OpenClaw 启动时会校验这些 ID 是否可用。skills.dir是 skill 挂载目录,后面装 skill 就往这里放。
写完保存,然后启动网关服务。OpenClaw 2026 版用gateway子命令管理服务:
# 后台启动网关 openclaw gateway start --daemon # 查看状态,输出 running 即成功 openclaw gateway status # 生成面板访问 Token openclaw token generatetoken generate会输出一串 Token,复制它,然后浏览器访问http://你的京东云公网IP:18789?token=那串Token。如果面板能打开,说明网关和配置都加载成功了。打不开的话先看openclaw logs -f的实时日志,最常见的是端口没放行或者 JSON 格式错误导致启动失败。
这里补一个细节:京东云的安全组规则生效有几秒延迟,改完规则别立刻刷页面,等 10 秒再试。另外如果你用的是京东云的“轻量云主机”而不是标准云主机,防火墙入口在实例详情页的“防火墙”标签,不是安全组,别找错地方。
4. 验证模型调用与 skill 触发:从 curl 到真实动作
配置写完不代表模型能调通,得实际发一次请求。先在服务器上用 curl 直接打 TaoToken 的接口,绕过 OpenClaw 排除配置干扰:
curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken统一Key" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "messages": [{"role": "user", "content": "只回复两个字:通了"}] }'如果返回的 JSON 里choices[0].message.content是“通了”,说明 Key 和 baseUrl 都没问题。如果返回 401,检查 Key 有没有多余空格;如果返回reading choices相关错误,多半是 baseUrl 多写了/v1或者模型 ID 拼错。
curl 通了之后,回到 OpenClaw 面板里发一条消息测试。面板的对话输入框直接打字,比如“帮我列三条京东云安全组最佳实践”,回车。如果模型正常回复,说明 OpenClaw 到 TaoToken 的链路通了。这一步失败的话,看日志里有没有local proxy failed,这个报错通常是 OpenClaw 内部代理没起来,重启网关openclaw gateway restart一般能解决。
接下来挂 skill。OpenClaw 的 skill 本质是一个带skill.json描述文件的目录,放在skills.dir下面,网关启动时自动加载。我以最常用的summarize和search两个 skill 为例,演示目录结构和触发方式。
# 进入 skill 目录 cd ~/.openclaw/skills # 创建 summarize skill 目录 mkdir -p summarize # 写 skill 描述文件 cat > summarize/skill.json << 'EOF' { "name": "summarize", "description": "对输入文本做摘要,支持中英文", "trigger": ["总结", "摘要", "summarize"], "model": "claude-sonnet-4-5", "entry": "index.js" } EOF # 写一个最简执行脚本 cat > summarize/index.js << 'EOF' module.exports = async function(input, ctx) { const res = await ctx.chat({ model: "claude-sonnet-4-5", messages: [ { role: "system", content: "你是摘要助手,输出不超过三句话。" }, { role: "user", content: input } ] }); return res.choices[0].message.content; }; EOF目录结构长这样:~/.openclaw/skills/summarize/skill.json和index.js同级。trigger数组里的词是触发关键词,用户在面板里发“总结一下这段文字”就会命中这个 skill。model字段指定这个 skill 用哪个模型,这里我故意用claude-sonnet-4-5,你也可以换成gpt-4o测试多模型切换。
写完重启网关加载 skill:
openclaw gateway restart openclaw skills listskills list能列出已加载的 skill 就说明挂载成功。然后在面板里发“总结:京东云主机部署 OpenClaw 需要放行 18789 端口并配置 TaoToken 统一 Key”,如果返回一段摘要,说明 skill 触发链路完整跑通了。这一步是整个流程的验收点,前面所有配置都是为了这一刻。
如果你要接更多 skill,比如文档解析、联网搜索,逻辑一样:建目录、写skill.json、写执行脚本、重启。skill 之间可以指定不同模型,这就是统一 Key 通道的好处——一个 Key 覆盖所有 skill 的模型调用,不用为每个 skill 单独配密钥。
5. 本篇常见报错排查对照
部署过程中我遇到和收集到的报错集中在下面几类,按现象对号入座。
401 Unauthorized。现象是 curl 或面板请求返回 401。原因通常是 Key 复制时带了空格、换行,或者 Key 已失效。排查:echo -n "sk-你的Key" | wc -c看长度对不对,重新生成 Key 再试。注意 TaoToken 的 Key 是统一通道,一个 Key 能调多个模型,不存在“这个 Key 只能调某个模型”的情况,所以 401 一定是 Key 本身的问题。
local proxy failed。现象是面板发消息后日志里出现这个,模型不回复。原因是 OpenClaw 内部代理进程没起来,常见于网关启动时配置文件有语法错误但没报出来。排查:openclaw doctor做健康检查,它会指出配置哪一行有问题;然后openclaw gateway restart。如果还不行,把openclaw.json贴到 JSON 校验工具里过一遍,多半是少了个逗号或引号。
reading choices 报错。现象是请求返回的 JSON 结构不对,解析choices字段失败。原因几乎都是 baseUrl 写成了https://taotoken.net/api/v1,多了一层。改成https://taotoken.net/api即可。这个错在换模型 ID 时也容易出现,比如模型 ID 拼成了显示名。
OAuth 相关报错。如果你在配置里误加了某些需要 OAuth 的 provider 字段,OpenClaw 会尝试走 OAuth 流程然后失败。OpenClaw 接 TaoToken 不需要 OAuth,只需要 apiKey。排查:检查openclaw.json里 provider 下有没有多余的oauth、clientId字段,删掉。
面板打不开但服务 running。现象是gateway status显示 running,浏览器访问超时。原因九成是京东云安全组没放行 18789,或者gateway.host写成了127.0.0.1。排查:先在服务器上curl http://127.0.0.1:18789看本地通不通,本地通就是安全组问题,本地不通就是 host 配置问题。
skill 不触发。现象是发了触发词但 skill 没执行。原因可能是skill.json的trigger数组没匹配上,或者autoLoad没开,或者改完 skill 没重启网关。排查:openclaw skills list看 skill 在不在列表里,不在就是没加载;在列表里但不触发,检查触发词是否完全匹配。
6. 后续怎么用:把统一 Key 通道用顺手
跑通之后,日常维护其实很轻。模型切换只改openclaw.json里models.default的值,或者改某个 skill 的model字段,改完openclaw gateway restart就行,不用动 Key。TaoToken 控制台里可以看每个 Key 的调用量和余额,建议给 OpenClaw 单独建一个 Key,方便归因和限额。
skill 生态这块,OpenClaw 社区有现成的 skill 仓库,你可以把别人的 skill 目录直接拷到~/.openclaw/skills/下,改改skill.json里的模型 ID 就能用。因为走的是统一 Key,你不需要为每个 skill 单独申请密钥,这是最省心的地方。如果某个 skill 要跑长任务,建议在skill.json里指定一个便宜的快模型,把强模型留给真正需要的场景。
面板的 Token 建议定期换,openclaw token generate重新生成后旧 Token 失效,记得更新浏览器书签。京东云主机如果长期跑,开个快照策略,配置文件和 skill 目录都在~/.openclaw/下,备份这个目录就够了。
最后留一个实用技巧:把openclaw logs -f挂在一个 tmux 窗口里常驻,出问题第一时间能看到实时日志,比事后翻文件快得多。模型调用和 skill 触发的所有细节都会打在日志里,包括请求的模型 ID 和返回状态,排查时非常有用。