1. OpenClaw 装完却“什么也不会干”的真实原因
你大概率遇到过这个画面:OpenClaw 的安装脚本一路绿灯,终端里敲openclaw --version也能正常回显版本号,可一旦让它执行任务,要么卡在Thinking...不动,要么直接抛出一句local proxy failed或者401 Unauthorized。装是装上了,但它像个没通电的机器人,站在原地不动。
先把结论说清楚:OpenClaw 本身是一个任务编排与工具调用框架,它自己不含任何大模型权重。它需要外接一个兼容 OpenAI 协议或 Anthropic 协议的模型服务端点,才能把“理解指令→规划步骤→调用工具”这条链路跑通。所以“装好了却不会干”几乎从来不是 OpenClaw 的 bug,而是配置断点——框架和模型服务之间的那根线没接对。
这根线由三个关键参数组成,缺一不可:
- API Key:身份凭证,决定你有没有权限调用模型。
- Base URL:请求端点地址,决定请求发到哪里。
- Model ID:模型映射名,决定实际调用哪个模型。
我见过太多人只填了 Key 就以为完事了,结果 Base URL 还停留在默认的https://api.openai.com/v1,而手里的 Key 根本不是那家的——请求自然被拒。也有人 Base URL 填对了,但 Model ID 写了一个服务端不存在的名字,返回model not found,OpenClaw 拿到空响应就静默卡住。
这篇内容面向的是已经完成 OpenClaw 安装、但第一次对话跑不通的开发者。我会按“定位断点→补齐配置→逐项验证”的顺序,把三个断点一个个拆开,每个都给出可复制的配置片段和验证命令。读完你应该能自己判断:到底是鉴权失败,还是端点没生效,还是模型名对不上。
适合谁看:刚装完 OpenClaw 想跑通第一次对话的人;从别的工具迁移过来、配置习惯不一样的人;以及被401、local proxy failed、reading choices这类报错卡住、不知道从哪下手的人。下面直接进入排查。
2. TaoToken 前置准备:拿到可用的 Base URL 与 Key
在动 OpenClaw 的配置文件之前,得先确保手里有一套确定可用的模型服务凭证。这一步很多人跳过,直接拿一个来源不明的 Key 去填,结果排查半天发现是 Key 本身的问题。所以先把源头理清楚。
TaoToken 提供的是兼容 OpenAI 与 Anthropic 协议的模型接入服务,对 OpenClaw 这类框架来说,它的价值在于:你不需要分别去对接多家模型厂商的鉴权方式,统一用一个 Base URL 加一个 Key,就能在配置里切换不同模型。这对排查特别友好——因为变量少了,出问题时更容易定位。
你需要准备两样东西:
第一,API Key。登录后在控制台的 API Keys 页面创建,格式通常是一串以特定前缀开头的长字符串。创建后立刻复制保存,因为部分平台只显示一次。地址是https://taotoken.net/api-keys,注意这个页面需要先登录。
第二,Base URL。这是最容易填错的地方。TaoToken 的 API 根地址是:
https://taotoken.net/api注意两点:一是不要在末尾多加/v1或/chat/completions,具体路径由 OpenClaw 或你使用的 SDK 自己拼接;二是这个地址不带任何查询参数,保持干净。很多人习惯性写成https://taotoken.net/api/v1,结果请求打到不存在的路径上,返回 404,OpenClaw 却报成连接失败,误导排查方向。
第三,确认模型 ID。不同服务商对同一个模型的命名可能不同。你需要到模型列表页确认当前账号可用的模型标识符,比如是gpt-4o还是带前缀的openai/gpt-4o。这个字符串必须和服务端注册的完全一致,大小写敏感。
把这三样记在一个临时文本里,接下来配置 OpenClaw 时会反复用到。如果你还没有 Key,可以先到模型对话页面体验一下接口是否正常,确认账号状态没问题,再去创建 Key。这一步花两分钟,能省掉后面半小时的无效排查。
提示:不要把 Key 直接写进会提交到 Git 的配置文件里。下面给的片段用占位符表示,你替换成真实值后,记得把该文件加入
.gitignore。
3. 可复制配置:OpenClaw 三处断点的正确写法
OpenClaw 的配置通常分散在几个文件里,具体路径取决于你的安装方式。常见的是项目根目录下的config.yaml或settings.json,以及用户目录下的~/.openclaw/config.toml。下面按三个断点分别给出片段,你对照自己的文件改。
3.1 断点一:API Key 与鉴权头
OpenClaw 读取 Key 的方式一般有两种:环境变量或配置文件字段。推荐用环境变量,避免明文泄露。在~/.openclaw/.env或项目.env里写:
OPENCLAW_API_KEY=sk-你的真实Key OPENCLAW_BASE_URL=https://taotoken.net/api然后在config.yaml里引用:
provider: name: taotoken api_key: ${OPENCLAW_API_KEY} base_url: ${OPENCLAW_BASE_URL} auth_type: bearerauth_type: bearer表示请求头用Authorization: Bearer <key>的形式。如果你用的是 Anthropic 协议端点,这里可能要改成x-api-key,具体看 OpenClaw 的 provider 文档。填错鉴权方式,服务端会直接返回 401,这是最常见的断点。
3.2 断点二:Base URL 与端点路径
Base URL 只写到根,不要带具体路径。如果你用的是 JSON 配置,写法如下:
{ "provider": { "baseUrl": "https://taotoken.net/api", "apiKeyEnv": "OPENCLAW_API_KEY", "timeout": 60000 } }timeout建议设成 60000 毫秒以上。OpenClaw 在规划多步任务时,单次请求可能包含较长的上下文,超时太短会在模型还没返回时就被掐断,表现为“卡住然后报错”,容易被误判成端点问题。
3.3 断点三:模型映射 Model ID
模型映射是第三个断点。OpenClaw 内部可能用别名引用模型,你需要把别名映射到服务端真实存在的 Model ID:
[models] default = "你的真实模型ID" planner = "你的真实模型ID" executor = "你的真实模型ID"如果 OpenClaw 支持多模型分工(planner 负责规划、executor 负责执行),确保每个别名都指向可用模型。任何一个映射写错,对应环节就会失败。写完后,三件套就齐了:Base URL + Key + Model ID。下面进入验证。
4. 逐项验证:确认第一次对话真的跑通
配置改完不代表生效,必须逐项验证。我习惯从底层往上测,先确认端点通,再确认鉴权过,最后确认模型能返回内容。
第一步,测端点连通性。用 curl 直接打模型列表接口:
curl -s -o /dev/null -w "%{http_code}\n" \ https://taotoken.net/api/models \ -H "Authorization: Bearer $OPENCLAW_API_KEY"返回200说明端点和鉴权都没问题。返回401是 Key 的问题,返回404是 Base URL 路径写错了。
第二步,测对话接口。发一个最小请求:
curl https://taotoken.net/api/chat/completions \ -H "Authorization: Bearer $OPENCLAW_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "你的真实模型ID", "messages": [{"role": "user", "content": "回复 OK"}] }'如果返回的 JSON 里有choices字段且内容正常,说明模型映射也对。如果报model not found,回去检查 Model ID 拼写。
第三步,在 OpenClaw 里跑第一次对话。执行:
openclaw run "列出当前目录的文件"观察输出。成功的话,你会看到它先规划、再调用工具、最后给出结果。如果卡在Thinking...,打开详细日志:
openclaw run "列出当前目录的文件" --log-level debug日志里会明确显示请求发往哪个 URL、带了什么头、服务端返回了什么。这一步是定位断点的关键——不要猜,看日志。
5. 常见报错对照排查:401、local proxy failed、reading choices
排查时最怕的是报错信息含糊。下面把几个高频报错和真实原因对上号。
401 Unauthorized:鉴权失败。九成是 Key 错了、过期了,或者auth_type写错。检查环境变量是否真的被加载——有时候你在.env里写了,但 OpenClaw 启动时没读那个文件。用echo $OPENCLAW_API_KEY确认。
local proxy failed:这个报错通常出现在 OpenClaw 尝试通过本地代理转发请求时。原因可能是 Base URL 指向了一个本地端口,但那个服务没起来;或者配置里残留了旧的代理设置。检查配置里有没有proxy字段,把它清掉,让请求直连https://taotoken.net/api。
reading choices相关报错:一般是服务端返回了非预期结构,OpenClaw 去读choices数组时读不到。常见原因是 Model ID 不存在,服务端返回了错误对象而不是正常响应。回到第 4 步的 curl 测试,确认模型名正确。
OAuth相关报错:如果你之前配过别的鉴权方式,配置里可能残留了 OAuth 流程的字段。OpenClaw 优先走了 OAuth 而不是 API Key。把oauth相关配置删掉,只保留api_key。
Codex 的auth.json冲突:如果你同时装了 Codex 类工具,它可能写了一个全局的auth.json,OpenClaw 误读了里面的凭证。检查~/.codex/auth.json是否存在,必要时临时改名,排除干扰。
排查顺序建议固定为:先 curl 测端点 → 再测对话 → 再看 OpenClaw 日志。这样能把问题范围从大到小锁定,不会在配置里瞎改。
6. 跑通之后:把 OpenClaw 接入日常编码流
第一次对话跑通只是起点。接下来你可以把 OpenClaw 接到实际的编码任务里,比如让它读代码库、生成改动、跑测试。这时候对模型服务的要求会更高——需要更长的上下文、更稳定的并发。
如果你打算长期用 OpenClaw 做 Agent 类任务,建议关注 Coding Plan 这类面向持续编码场景的方案,它在配额和并发上更适合高频调用。配置方式和你现在填的三件套一致,只是把 Base URL 和 Key 换成对应方案的凭证即可。
验证模型能力是否满足需求时,可以先用模型对话页面手动测几个复杂指令,确认返回质量再写进 OpenClaw 的配置。接入文档里有各协议的完整参数说明,遇到字段不确定时对照查一下,比反复试错快得多。
最后留一个实用习惯:每次改完配置,先跑一遍第 4 步的 curl 验证,再启动 OpenClaw。这个顺序能帮你把“配置问题”和“框架问题”彻底分开,排查效率会高很多。