1. 国内跑 OpenClaw 的真实卡点:settings 里那两个字段
OpenClaw 是一个开源的本地 AI Agent 框架,能读写文件、执行命令、调用浏览器,适合想把自动化任务跑在自己机器上的开发者。它的默认配置指向海外模型服务,国内直连时经常卡在鉴权握手阶段,表现为启动后一直转圈、日志里反复出现连接超时。真正要改的其实就两个地方:settings 文件里的 endpoint 和 API Key。
我试过在本地和云主机上各部署一次,踩过的坑集中在三处。第一处是 endpoint 写成了网页控制台地址,OpenClaw 请求的是 API 路径,两者不是一回事。第二处是 Key 复制时带了首尾空格,YAML 解析后字符串不匹配,报 401 却不提示具体原因。第三处是模型 ID 没跟着换,endpoint 通了但模型名还是旧的,返回里 choices 字段为空。
这篇按可跟做的顺序走:先拿到统一 Key,再改 settings,然后启动验证,最后把常见报错逐条对照。全程只需要一个终端和一个文本编辑器,不需要额外装网络工具。
适合谁看:已经在本地或云服务器上装好 OpenClaw、但卡在配置阶段的开发者;想把 OpenClaw 接到统一模型入口、方便切换模型的人;以及被 401 和连接超时折腾过、想一次配对的人。
核心检索词先明确:OpenClaw 国内使用、OpenClaw settings 配置、OpenClaw endpoint 替换、OpenClaw API Key 设置。下面每一步都围绕这几个词展开,配置片段可以直接复制。
需要提前说明一点:OpenClaw 本身是执行框架,模型服务是它调用的外部能力。把 endpoint 指向一个国内可直连的统一入口,是让整条链路跑通的关键。TaoToken 在这里扮演的就是这个统一入口的角色,一个 Key 对应多个模型,省去逐个平台申请。
2. TaoToken 前置准备:拿统一 Key 与确认 Base URL
在改 settings 之前,先把两样东西准备好:API Key 和 Base URL。这两样填错任何一个,后面都会报错,所以这一步单独拎出来说清楚。
打开浏览器访问 https://taotoken.net/api ,这是 API 入口地址,注意它和官网首页不是同一个路径。注册登录后进入控制台,在 API Keys 页面创建一个新 Key。创建时建议起一个能认出来的名字,比如 openclaw-local,方便以后区分是哪个项目在用。Key 只在创建时完整显示一次,复制后先粘到临时文本里,别直接关页面。
Base URL 的写法要留意。OpenClaw 的 settings 里 endpoint 字段填的是基础地址,后面由框架自己拼接具体路径。所以填 https://taotoken.net/api 即可,不要手动加 /v1/chat/completions 这类后缀,加了反而会拼成重复路径。这一点和某些 SDK 的写法不同,容易搞混。
模型 ID 也要提前确认。进入控制台或文档页,找到模型列表,记下你要用的那个 ID,比如常见的对话模型 ID。OpenClaw 的 settings 里通常有一个 model 字段,填的就是这个 ID。三件套凑齐:Base URL、API Key、Model ID,缺一不可。
如果你用的是 Claude Code 这类工具,配置逻辑类似,但字段名不同。Claude Code 走的是环境变量或 settings.json,Base URL 同样填 https://taotoken.net/api ,Key 填刚创建的,Model ID 填对应模型。后面第五节会专门讲这类工具的报错对照。
关于 Key 的权限:建议按最小权限原则创建,只勾选需要的模型范围。如果只是本地测试,可以先给全量再收紧。控制台里可以随时禁用或删除 Key,泄露了立刻处理,不用慌。
准备好之后,把这三样写在一个便签里:
- Base URL:https://taotoken.net/api
- API Key:sk- 开头的那串
- Model ID:控制台里查到的模型标识
下一步就是打开 OpenClaw 的 settings 文件,把默认值替换掉。
3. 可复制配置:settings 文件逐字段替换
OpenClaw 的配置文件位置取决于安装方式。源码运行时一般在项目根目录的 config 或 settings 目录下,文件名可能是 settings.yaml、settings.json 或 config.toml。先找到它,用编辑器打开,对照下面的片段改。
先给一份 YAML 格式的完整片段,路径按你实际的来:
# settings.yaml model: provider: openai-compatible base_url: "https://taotoken.net/api" api_key: "sk-你的Key" model_id: "你的模型ID" timeout: 60 max_retries: 2 agent: workspace: "./workspace" allow_shell: true allow_file_write: true如果你用的是 JSON 格式,等价写法如下:
{ "model": { "provider": "openai-compatible", "base_url": "https://taotoken.net/api", "api_key": "sk-你的Key", "model_id": "你的模型ID", "timeout": 60, "max_retries": 2 }, "agent": { "workspace": "./workspace", "allow_shell": true, "allow_file_write": true } }TOML 格式的写法:
[model] provider = "openai-compatible" base_url = "https://taotoken.net/api" api_key = "sk-你的Key" model_id = "你的模型ID" timeout = 60 max_retries = 2 [agent] workspace = "./workspace" allow_shell = true allow_file_write = true几个字段的说明,用表格对照更清楚:
| 字段 | 填什么 | 常见错误 |
|---|---|---|
| provider | openai-compatible | 填成具体厂商名导致协议不匹配 |
| base_url | https://taotoken.net/api | 多加了 /v1 后缀 |
| api_key | sk- 开头的 Key | 带了首尾空格或换行 |
| model_id | 控制台查到的 ID | 用了旧模型名 |
| timeout | 60 秒起 | 设太短导致长任务被截断 |
改完之后,检查一遍引号。YAML 里字符串建议加引号,尤其是 Key 里可能含特殊字符时。JSON 里注意逗号,最后一项后面不要留逗号。TOML 里字符串用双引号。
还有一个容易忽略的点:如果项目里有 .env 文件,且代码优先读环境变量,那 settings 里的值可能被覆盖。检查一下有没有 OPENAI_API_KEY、OPENAI_BASE_URL 这类变量,有的话要么删掉,要么改成一致的值。环境变量优先级通常高于配置文件,这个坑不少人踩过。
改完保存,先别急着启动。用一条命令快速校验文件格式,YAML 用 python -c "import yaml; yaml.safe_load(open('settings.yaml'))",JSON 用 python -m json.tool settings.json,TOML 用 python -c "import tomllib; tomllib.load(open('config.toml','rb'))"。格式错了会直接报行号,比启动后看日志快得多。
4. 启动与验证:连通性命令和预期返回
配置改好后,启动 OpenClaw。源码运行一般是 python main.py 或 npm run start,具体看项目 README。启动后不要只看界面有没有出来,要确认模型请求真的通了。
最直接的验证方式是发一条最小请求。OpenClaw 通常带一个 CLI 或调试入口,可以这样测:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的Key" \ -H "Content-Type: application/json" \ -d '{ "model": "你的模型ID", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 16 }'预期返回是一个 JSON,结构里包含 choices 数组,choices[0].message.content 有内容,哪怕只是简短回复。如果返回里 choices 为空数组,说明模型 ID 不对或该模型未开通。如果返回 401,说明 Key 有问题。如果连接超时,说明 base_url 或网络链路有问题。
在 OpenClaw 内部验证,可以跑一个简单任务,比如让它读一个本地文件并总结。观察日志里有没有 outgoing request 记录,请求地址是不是 https://taotoken.net/api 开头。如果日志里显示请求打到了别的域名,说明配置没生效,回去检查环境变量覆盖问题。
成功状态下,你会看到类似这样的日志片段:
[agent] sending request to https://taotoken.net/api/v1/chat/completions [agent] model=你的模型ID status=200 [agent] response received, tokens=...status=200 是关键信号。如果一直卡在 sending request,多半是 timeout 设太短或网络抖动,把 timeout 调到 120 再试。如果反复重试后失败,看 max_retries 是不是设太大导致一直重试,先设成 0 看单次结果。
验证通过后,建议把这条 curl 命令存成一个脚本,比如 check.sh,以后换 Key 或换模型时先跑一遍,比启动整个 OpenClaw 快。这一步花两分钟,能省掉后面大量排查时间。
5. 常见报错逐条排查:401、proxy failed、choices 为空
这一节按真实报错对照,遇到哪个查哪个。
401 Unauthorized。最常见的原因是 Key 错了或带了空格。先确认 Key 是完整复制的,没有首尾空白。用 curl 单独测一次,排除 OpenClaw 配置解析问题。如果 curl 也 401,去控制台确认 Key 是否被禁用或删除。还有一种情况是 Key 创建后没保存,页面关了就得重新建。
local proxy failed 或 connection refused。这类报错说明请求根本没发出去,或者发到了错误地址。检查 base_url 是不是写成了 https://taotoken.net 而漏了 /api。也检查本机有没有设置 HTTP_PROXY、HTTPS_PROXY 环境变量,有的话可能把请求导向了不存在的本地端口。用 env | grep -i proxy 看一下,有就临时 unset 掉再测。
reading choices 报错或 choices 为空。这通常不是网络问题,而是模型 ID 不匹配。endpoint 通了,但请求的模型名服务端不认识,返回结构里就没有 choices。去控制台核对模型 ID 的准确拼写,注意大小写和连字符。换一个确认可用的模型 ID 再测。
OAuth 相关报错。如果你用的是 Claude Code 或类似工具,可能走的是 OAuth 流程而不是纯 API Key。这类工具需要同时配好三件套:Base URL 填 https://taotoken.net/api ,Key 填创建的 API Key,Model ID 填对应模型。缺任何一个都会在 OAuth 阶段失败。Claude Code 的 settings.json 里字段名可能是 ANTHROPIC_BASE_URL 和 ANTHROPIC_API_KEY,按文档对应填。
Codex 的 auth.json 配置。如果你用 Codex 类工具,auth.json 里同样需要 Base URL、Key、Model ID 三件套。文件路径一般在用户目录下的 .codex 或类似位置。改完重启工具,别只刷新界面。
Cline MCP 场景。Cline 通过 MCP 协议接模型时,配置里也要写全三件套。MCP 的配置文件通常是 JSON,字段名可能是 baseUrl、apiKey、model。注意 MCP 不允许直连生产数据库,配置时只填模型服务地址即可。
CC Switch 切换工具。如果你用 CC Switch 管理多个配置,切换后要确认当前激活的是哪个。有时候切了但没生效,是因为工具缓存了旧配置,重启一下。
排查顺序建议:先 curl 测通,再查 OpenClaw 配置,最后看工具特有字段。这样能把问题范围快速缩小到某一层,不用来回猜。
6. 把配置固化下来:换模型与长期使用建议
配置跑通之后,建议做两件事让后续更省心。
第一件是把 settings 里的敏感值抽出来。不要把 Key 硬编码在配置文件里提交到 Git。可以用环境变量引用,比如 YAML 里写 api_key: "${TAOTOKEN_API_KEY}",然后在启动脚本里 export。这样配置文件可以安全地进版本库,Key 单独管理。
第二件是准备一个模型切换的快捷方式。TaoToken 一个 Key 对应多个模型,换模型只需要改 model_id 一个字段。可以写个小脚本,用 sed 或 jq 替换 settings 里的 model_id,然后重启 OpenClaw。这样在不同任务间切换模型时,不用手动编辑文件。
长期编码或跑 Agent 任务的话,可以考虑用 Coding Plan 这类方案,把常用模型和额度固定下来,避免每次临时申请。入口在控制台的套餐页面,按需选择即可。
验证模型是否可用,除了 curl,也可以直接在模型对话页面发一条消息,看返回是否正常。这个方式最直观,适合不熟悉命令行的场景。
最后提醒一点:OpenClaw 的 allow_shell 和 allow_file_write 这类权限字段,测试阶段可以开,长期运行时按最小权限收紧。Agent 能执行命令是能力也是风险,配置时心里有数。
整套流程走下来,核心就是三件套对齐:Base URL 填 https://taotoken.net/api ,Key 用控制台创建的,Model ID 填准确。settings 改完先 curl 验证,再启动 OpenClaw,报错按第五节对照。配一次,后面换模型只改一个字段。