1. 京东云上跑 OpenClaw 的真实痛点:模型入口太散
在京东云轻量主机上把 OpenClaw 跑起来,本身不算难,Node.js 装好、npm install -g openclaw一敲、openclaw gateway start一开,Web 控制台就出来了。真正让人头疼的是后面那一步:模型调用入口怎么统一。
我见过太多人的做法是——搜索用一个 Key,摘要用另一个 Key,写代码再换一个平台,配置文件里塞了三四套base_url和api_key。本地开发时还能忍,一旦搬到京东云主机上长期跑,问题就集中爆发:某个 Key 额度用完了,整个 Agent 卡死;某个接口地址变了,日志里全是超时;想换模型得改好几处配置,改完还得重启网关。
OpenClaw 的定位是一个可本地部署、带记忆和插件机制的智能体框架,它能通过自然语言完成文件管理、信息检索、内容处理、流程自动化这些实际操作。这意味着它一次任务里可能连续调用多次模型——先理解指令,再规划步骤,再执行工具,再总结结果。如果每次调用都走不同的入口,链路稳定性根本没法保证。
所以这篇要解决的核心问题很明确:在京东云环境里,把 OpenClaw 的模型调用统一到一个入口上。这个入口需要满足三个条件——国内网络能直连、支持多种主流模型、配置方式足够简单,改一处就能全局生效。
适合谁看?如果你已经在京东云买了轻量应用服务器,或者准备买一台来长期挂 OpenClaw;如果你受够了在多个平台之间来回切换 Key;如果你希望配置一次之后,后面加技能、换模型都不用动底层——那这篇的步骤你可以直接照着做。
下面我会先讲清楚 TaoToken 在这个链路里扮演什么角色,然后给出京东云侧的环境准备清单,接着是可直接复制的 settings 配置片段,最后用一次真实请求验证整条链路是否打通。整个过程控制在 5 分钟内完成配置部分。
2. TaoToken 作为统一模型入口的前置准备
TaoToken 在这里的角色,简单说就是一个兼容 OpenAI 接口规范的模型调用入口。你不需要在 OpenClaw 里为每个模型平台单独写一套适配逻辑,只需要把base_url指向它,把 Key 填进去,然后在model字段里写你要用的模型 ID 就行。
它的 API 地址是https://taotoken.net/api,这个地址在配置里会作为base_url出现。注意,配置时不要带任何多余的路径后缀,OpenClaw 内部会按 OpenAI 兼容格式拼接/v1/chat/completions这类端点。
在动手改配置之前,你需要先拿到两样东西:API Key和确认可用的模型 ID。
API Key 的获取入口在控制台的 API Keys 页面,登录后创建一个新的 Key,复制保存好。这个 Key 只会完整显示一次,关掉页面就看不到了。如果你之前已经创建过,直接复用也行,但建议为 OpenClaw 单独建一个,方便后面排查问题时区分调用来源。
模型 ID 这块,你可以在模型对话页面先试一下。选一个你打算在 OpenClaw 里用的模型,发一条简单消息确认能正常返回。这一步看起来多余,但实际上能帮你排除掉「Key 没问题但模型没权限」这类隐蔽问题。我试过在配置全部写完之后才发现某个模型 ID 拼错了,结果 OpenClaw 日志里只报一个笼统的调用失败,排查了半天。
京东云侧的环境准备清单如下:
| 项目 | 要求 | 检查方式 |
|---|---|---|
| 操作系统 | Ubuntu 20.04+ / Debian 11+ / CentOS 7+ | cat /etc/os-release |
| Node.js | 22.x 及以上 | node -v |
| npm | 随 Node.js 安装 | npm -v |
| 内存 | 建议 2GB 及以上 | free -h |
| 磁盘 | 系统盘 40GB 以上 | df -h |
| 安全组 | 放行 18789 端口 | 京东云控制台安全组规则 |
| 网络 | 能正常访问外部接口 | curl -I https://taotoken.net/api |
Node.js 版本这块要特别注意。OpenClaw 依赖 Node.js 22.x 及以上,如果你用系统自带的包管理器装,很可能装到的是 18.x 或 20.x。建议直接用 NodeSource 的源或者官方二进制包来装。检查命令很简单:
node -v npm -v如果输出的是v22.x.x和对应的 npm 版本,说明环境没问题。如果提示command not found,先装 Node.js 再往下走。
安全组这块,京东云轻量应用服务器的防火墙规则和云主机安全组是两层。你需要在控制台里确认 18789 端口在两层都放行了。很多人只改了系统内的ufw或firewalld,忘了云平台侧的安全组,结果本地curl 127.0.0.1:18789能通,外网访问就是超时。
网络连通性可以用一条命令快速验证:
curl -I https://taotoken.net/api如果返回HTTP/2 200或类似的成功状态码,说明京东云主机到 TaoToken 的网络是通的。如果卡住或报连接超时,先检查主机的 DNS 配置和出网规则。
3. 可复制的 settings 配置:把模型入口改到 TaoToken
OpenClaw 的配置文件路径根据系统不同有所区别:
- Linux / macOS:
~/.openclaw/config.json - Windows:
C:\Users\用户名\.openclaw\config.json
在京东云主机上,你用的是 Linux,所以配置文件在~/.openclaw/config.json。如果这个文件不存在,先执行一次openclaw onboard初始化,它会自动生成基础配置。
下面是一个完整的model配置片段,你可以直接复制替换掉原有的model字段:
{ "model": { "type": "openai", "api_key": "你的TaoToken API Key", "base_url": "https://taotoken.net/api", "model_name": "claude-sonnet-4-20250514", "max_tokens": 4096, "temperature": 0.7, "timeout": 60, "reasoning": false } }这里有几个关键点需要说明。
type写openai,因为 TaoToken 兼容 OpenAI 的接口规范,OpenClaw 会按这个协议去发请求。base_url写https://taotoken.net/api,不要加/v1后缀,OpenClaw 内部会自己拼。api_key填你刚才在控制台创建的那个 Key。
model_name这块,你可以换成任何在模型对话页面确认过可用的模型 ID。比如你想用 Claude 系列做代码任务,就填对应的模型 ID;想用其他模型做摘要,改这一个字段就行,不用动其他配置。
timeout建议设成 60。京东云主机到接口的网络延迟通常不高,但模型推理本身需要时间,尤其是长文本任务。设太短会导致请求被中断,日志里报超时错误。
reasoning设成false。这个字段在部分模型上开启后会导致返回内容为空,OpenClaw 社区里已经有不少人踩过这个坑。除非你明确知道自己在用什么模型、需要开启推理模式,否则保持false。
如果你用的是 TOML 格式的配置(部分 OpenClaw 版本支持),等价写法如下:
[model] type = "openai" api_key = "你的TaoToken API Key" base_url = "https://taotoken.net/api" model_name = "claude-sonnet-4-20250514" max_tokens = 4096 temperature = 0.7 timeout = 60 reasoning = false改完配置后,重启网关服务让配置生效:
openclaw gateway restart如果你之前已经启动过服务,这一步是必须的。OpenClaw 不会热加载模型配置,必须重启才能读到新的base_url和api_key。
重启后可以用状态命令确认服务是否正常:
openclaw gateway status如果输出里显示running并且端口是 18789,说明服务已经起来了。
还有一个容易忽略的点:如果你在京东云主机上同时装了多个 Node.js 版本,或者用nvm管理版本,要确认openclaw命令实际调用的是哪个 Node.js 环境下的安装。可以用which openclaw看一下路径,再用head -1 $(which openclaw)确认 shebang 指向的 node 版本。
4. 验证请求:从启动到首次调用成功
配置改完之后,不要急着去 Web 控制台点来点去。先用命令行做一次最小化验证,确认模型调用链路是通的。
OpenClaw 提供了一个直接调用模型的命令,可以用来测试:
openclaw model test --prompt "用一句话说明什么是智能体框架"如果配置正确,你会看到模型返回的文本内容。这个过程实际上就是 OpenClaw 用你配置的base_url和api_key发了一次标准的 chat completions 请求。
如果这条命令能正常返回,说明三件事都对了:网络通、Key 有效、模型 ID 正确。
接下来启动网关服务:
openclaw gateway start然后在浏览器里打开:
http://你的京东云公网IP:18789进入 Web 控制台后,在对话框里输入一条指令,比如:
帮我列出当前目录下的文件,并统计文件数量这条指令会触发 OpenClaw 的完整链路:理解指令 → 调用模型规划步骤 → 执行文件操作 → 调用模型总结结果。如果最终返回了文件列表和数量统计,说明整条链路已经打通。
你也可以在京东云主机上用curl直接验证接口连通性:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的TaoToken API Key" \ -H "Content-Type: application/json" \ -d '{ "model": "claude-sonnet-4-20250514", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 10 }'如果返回的 JSON 里有choices字段和内容,说明接口本身是通的。这一步能帮你把「OpenClaw 配置问题」和「接口本身问题」区分开。
验证通过后,你可以查看日志确认调用记录:
openclaw logs --follow日志里会显示每次模型调用的耗时、状态码和 token 消耗情况。如果看到200状态码和正常的响应时间,说明一切正常。
5. 本篇常见错误排查:401、local proxy failed 与空返回
配置过程中最容易遇到的几个报错,我按出现频率排一下。
401 Unauthorized
这是最常见的一个。日志里通常长这样:
Error: 401 Unauthorized - invalid api key原因无非三种:Key 复制时多了空格或换行、Key 已经被删除或过期、配置文件里的api_key字段没写对。排查方法是先用curl直接测一下 Key 是否有效:
curl -X POST https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer 你的Key" \ -H "Content-Type: application/json" \ -d '{"model":"claude-sonnet-4-20250514","messages":[{"role":"user","content":"test"}],"max_tokens":5}'如果这条命令也报 401,说明 Key 本身有问题,去控制台重新创建一个。如果这条命令能通但 OpenClaw 报 401,检查配置文件里的 Key 是不是被截断了,或者有没有多余的空格。
local proxy failed / connection refused
这个报错通常出现在base_url写错的情况下。比如写成了https://taotoken.net/api/v1,OpenClaw 再拼一次/v1/chat/completions,就变成了/api/v1/v1/chat/completions,接口自然找不到。
正确的写法就是https://taotoken.net/api,不带任何后缀。改完记得openclaw gateway restart。
还有一种情况是京东云主机的出网规则限制了 HTTPS 请求。用curl -I https://taotoken.net/api确认一下,如果这条命令都不通,那就是网络层的问题,跟 OpenClaw 配置无关。
reading choices 报错 / 返回内容为空
日志里可能出现:
Error: cannot read property 'choices' of undefined或者模型返回了 200 但内容为空。前者通常是接口返回格式不符合预期,后者多半是reasoning字段的问题。
先检查reasoning是否设成了false。如果已经是false还为空,把max_tokens调大一点试试,有些模型在max_tokens太小时会返回空内容。再不行就换一个模型 ID 测试,排除是特定模型的问题。
OAuth 相关报错
如果你在配置里混用了 OAuth 认证方式和 API Key 认证方式,可能会出现:
Error: OAuth token expired or invalidOpenClaw 的模型配置里,type写openai时走的是 API Key 认证,不需要 OAuth。如果你之前配置过其他认证方式,把model字段整个替换成上面给的 JSON 片段,不要保留旧的 OAuth 相关字段。
端口占用导致服务起不来
Error: listen EADDRINUSE: address already in use :::18789说明 18789 端口被别的进程占了。用这条命令找到占用进程:
lsof -i:18789然后 kill 掉对应进程,或者改 OpenClaw 的监听端口:
openclaw config set gateway.port 18790 openclaw gateway restart改完端口后,京东云安全组也要对应放行新端口。
CC Switch / Cline MCP / Codex auth.json 场景的配置要点
如果你同时在用 CC Switch 或 Cline 这类工具,它们的配置逻辑和 OpenClaw 类似,都需要三件套:Base URL、API Key、Model ID。Base URL 统一写https://taotoken.net/api,Key 用同一个,Model ID 按各工具支持的格式填。Codex 的auth.json里对应字段是api_base和api_key,写法略有不同但逻辑一致。
6. 把入口统一之后,后面的事就简单了
配置改完、验证通过之后,你在 OpenClaw 里加新技能、换模型、调参数,都只需要动model字段这一处。Skills 安装和网关管理这些操作不受影响,该怎么用还怎么用。
如果你打算长期在京东云上跑 OpenClaw,建议把开机自启配上:
echo "/usr/bin/openclaw gateway start" | sudo tee -a /etc/rc.local sudo chmod +x /etc/rc.local这样主机重启后服务会自动起来,不用每次手动登录去敲命令。
模型入口统一之后,还有一个实际好处:日志排查变简单了。所有模型调用都走同一个base_url,日志里的请求记录格式一致,出问题时一眼就能看出是网络问题、Key 问题还是模型本身的问题,不用在多个平台的日志之间来回切换。
如果你后面想换一个模型试试效果,直接改model_name字段,重启网关,完事。不需要重新申请 Key,不需要改base_url,也不需要动任何技能配置。