源码方式升级 OpenClaw 后,最难受的不是pnpm build报错,而是pnpm openclaw doctor明明跑完了,一让模型回话却弹401 Unauthorized。如果你也是git pull、pnpm install、pnpm build一路顺利,最后卡在openclaw.json的模型凭证上,可以先打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 创建一把新 Key,再回来改配置。TaoToken 在这里不是让你绕过什么限制,而是把升级后失效的旧模型地址和旧 Key 重新对齐到统一 API 兼容通道;升级前备份的 skill、工作区、插件目录都能继续用,问题通常只在模型供应商那几行。
1. 源码升级后先看 401:openclaw.json 里的模型凭证没跟上
1.1 为什么 git pull、pnpm build 都过了,调用模型还是 401
源码升级最容易给人一个错觉:代码拉到了最新,依赖装完了,构建也绿了,OpenClaw 就应该一切正常。但模型调用走的是另一条链路,它读的是openclaw.json里的 provider、baseUrl、apiKey、model这些字段。新版本如果调整了配置 schema,旧字段可能被保留但不生效,或者 doctor 只做了检查、没有真正迁移,于是启动不报错,一发请求就 401。
401 的直白含义是“认证没通过”。在 OpenClaw 升级场景里,它很少是模型本身坏了,更常见的是三件事没同步:Key 还是旧供应商的 Key,Base URL 还指向旧版默认地址,模型 ID 仍是旧配置里的名字。新版本可能把模型请求统一到某个 provider 段落下,而你的旧凭证还写在另一个已经被弃用的位置,工具读不到,自然给你一个 401。
还有一种情况是pnpm openclaw doctor跑过,但输出里提示了“配置版本需要迁移”或“凭证引用需要刷新”,你直接回车跳过了。doctor 的检查不等于修复,它只是先告诉你哪里不对。真正让旧凭证完成迁移的动作,通常是后一步的--fix,或者你手动把openclaw.json的模型接口地址改对。
1.2 先判断是 Key 失效还是 Base URL 被新版本判为旧格式
先把openclaw.json里的模型段落找出来,不要急着整段删掉。看当前baseUrl或baseURL写到哪里,如果它还是上一个供应商的地址,或者指向一个很旧的本地路径,那 401 基本就有方向了。新版 OpenClaw 对模型接口地址的校验可能更严,旧格式会被判为无效,但错误不一定显示“地址无效”,而是直接落到认证失败。
再看 Key 的来源。如果 Key 是以前在别的地方申请的,升级后可能因为供应商字段改名而读不到;如果你把 Key 写在环境变量里,还要确认 OpenClaw 启动时是否真的继承了那个变量。很多 401 不是 Key 本身无效,而是进程读到的 Key 是空字符串,或者读到的是另一个旧变量。
判断顺序可以按这个走:先看 doctor 输出有没有配置迁移提示,再看openclaw.json里模型段落的 Base URL 和 Key 字段,最后在工具内发一条最小请求。只要 Base URL 和 Key 能确认,剩下的就是模型 ID 是否和模型广场一致。这个顺序能避免你反复重装依赖,重装对 401 通常没有帮助。
2. 别急着重装:用 pnpm openclaw doctor 复查升级后的配置迁移
2.1 源码升级四步里 doctor 才是检查凭证的那一步
推荐的源码升级路径是:
git pull pnpm install pnpm build pnpm openclaw doctor前三步解决代码、依赖和构建,第四步才进入配置和凭证检查。很多人跑完pnpm build就直接启动 OpenClaw,结果模型调用失败,又回头怀疑构建有问题。实际上pnpm openclaw doctor就是给升级后的环境做体检,它会检查配置版本、模型供应商、凭证引用、工作区路径这些容易在升级中错位的东西。
如果 doctor 提示openclaw.json需要迁移,或者提示某个 provider 字段已废弃,先不要关掉终端。把提示里的文件路径记下来,因为它可能不是你当前项目根目录下的那一份。OpenClaw 在不同安装方式下,配置可能放在用户目录、项目目录或专门的配置目录里,改错文件会让人以为改了没生效。
2.2 doctor 报配置版本不一致时,先备份 openclaw.json
改任何配置文件之前,先留一份副本:
cp openclaw.json openclaw.json.bak如果 doctor 给出的路径不是当前目录,就把路径替换成实际路径再备份。备份的意义不只是防手滑,也方便对照新旧字段。你把旧文件和新文件放在一起,能清楚看到新版把模型凭证放在了哪个层级,是model、models.default还是providers下面。
配置版本不一致时,不要直接把旧文件覆盖新文件。新版本可能新增了必填字段,旧文件整段覆盖回去会让 doctor 再次报错。正确做法是保留新版本的骨架,只把模型接口地址、Key 和模型 ID 搬到新版本认识的位置。如果 doctor 支持--fix,也可以让它先做一次迁移,再在迁移后的文件上微调。
3. 去 TaoToken 建 Key,再改 openclaw.json 的 Base URL
3.1 打开官网创建 API Key,模型 ID 以模型广场为准
打开 TaoToken 完成注册登录,进入控制台创建 API Key。复制出来的 Key 在本文里统一写成YOUR_API_KEY,不要把它提交到 Git,也不要写进公开的示例文件。模型 ID 不要沿用旧配置里的名字硬填,去模型广场看当时可用的列表,以列表里显示的 ID 为准。
拿到 Key 之后,回到openclaw.json。你要改的不是 OpenClaw 的业务逻辑,也不是 skill 目录,而是模型供应商的接入信息。把模型接口的 Base URL 指向:
https://taotoken.net/api这个地址末尾不要加/v1,也不要带任何查询参数。工具里填的是 Base URL,具体路径由 OpenClaw 自己拼接。很多人把官网落地页和接口地址混在一起,结果把带 UTM 的链接填进配置,模型请求自然通不过。
3.2 openclaw.json 中要改的字段:baseUrl、apiKey、model
下面是一段结构示意,不同 OpenClaw 版本的字段名可能是baseUrl、baseURL、api_key或modelId。不要整段覆盖你的文件,只把对应字段的值替换成这里的目标值:
{ "model": { "provider": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "YOUR_API_KEY", "model": "YOUR_MODEL_ID" } }如果你文件里写的是baseURL,就保留baseURL,只把值改成https://taotoken.net/api。如果写的是apiKey,就填从官网创建的那把 Key。model或modelId填模型广场当时列表里的 ID,不要编造日期后缀,也不要把示例里的YOUR_MODEL_ID原样留着。改完后保存,先不要启动大项目。
这里再强调一次地址区分:注册、创建 Key、看模型广场、看用量,用的是官网落地页 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= ;填进openclaw.json的模型接口 Base URL 只用https://taotoken.net/api。两者不要互换,也不要把 UTM 参数带到接口地址上。
3.3 不要整段覆盖:skill、工作区、插件目录保持原样
升级后排障最容易误伤的是工作区。openclaw.json里除了模型供应商,可能还有工作区路径、skill 搜索目录、插件开关、日志级别。你只需要动模型凭证相关字段,其他段落保持原样。如果 doctor 提示某个 skill 目录需要重新索引,按提示做索引,不要直接把整个配置重置。
升级前备份的 skill 和工作区可以继续用。OpenClaw 新版本一般会兼容旧工作区结构,真正需要迁移的是配置里的凭证引用。把模型请求切到 TaoToken 兼容通道后,OpenClaw 仍然按原来的方式加载 skill,只是模型调用出口换了地址和 Key。这样你之前的提示词、工具描述和工作流不会因为 401 被推翻重来。
4. 跑 pnpm openclaw doctor --fix 完成凭证迁移
4.1 --fix 适合修什么,不适合修什么
保存openclaw.json后,运行:
pnpm openclaw doctor --fix--fix适合处理旧字段迁移、凭证引用刷新、配置版本升级这类结构化问题。它会按照新版本的 schema 把旧配置往新位置搬,减少手动改错层级的机会。但它不适合修网络问题,也不适合修模型 ID 拼写错误。如果 Key 本身复制少了字符,或者 Base URL 多写了/v1,doctor 不会凭空帮你猜到正确值。
运行--fix时注意看输出。如果它提示覆盖了某个字段,回到openclaw.json确认新值是不是你刚才填的https://taotoken.net/api和YOUR_API_KEY对应值。有些迁移会保留旧字段名但清空值,这种情况下需要你重新补一次 Key。迁移完成后,再运行一次不带--fix的pnpm openclaw doctor,看还有没有残留警告。
4.2 迁移后发最小请求验证,不要直接开大项目
验证时不要一上来就跑完整项目,先发一条最小请求。比如在 OpenClaw 里让它只回一个ok,或者执行一个不依赖外部工具的小任务。这样能快速区分是模型接入问题,还是项目里的工具调用问题。如果最小请求返回正常,说明 Key、Base URL、模型 ID 这条链路已经通了。
如果最小请求仍然 401,先不要改业务代码。回到openclaw.json,确认 doctor 迁移后模型段落里的 Base URL 没有被改回旧地址,Key 也没有变成空值。再看启动 OpenClaw 的终端是不是在另一个目录,读的是另一份配置。确认这些之后,再去排查环境变量覆盖和旧进程缓存。
5. 仍然 401 的对照排查:Key、/v1、模型 ID、旧进程
5.1 Key 少了字符或被环境变量覆盖
从控制台复制 Key 时,前后很容易带上空格或换行。把 Key 粘贴到openclaw.json后,检查首尾有没有多余字符。更隐蔽的是环境变量覆盖:你在文件里填了YOUR_API_KEY对应值,但启动脚本里又设置了另一个旧 Key,OpenClaw 可能优先读环境变量。此时文件看着没错,实际请求带的还是旧凭证。
排查方法是看 OpenClaw 启动时的环境。可以在启动命令前打印相关变量,确认没有旧 Key 残留。如果你不确定它读文件还是读环境变量,就先把环境变量里的旧值清掉,重启终端后再试。不要同时保留两套凭证,否则 401 会反复出现,而且每次看起来都像配置没生效。
5.2 Base URL 多写 /v1 或误加查询参数
openclaw.json里的 Base URL 应该是:
https://taotoken.net/api不要写成https://taotoken.net/api/v1,因为工具会自己拼具体接口路径,多一层/v1可能变成重复路径。也不要加?utm_source=...这类官网链接参数。官网落地页用于注册、看模型广场和看用量,配置里只填纯接口地址。把这两个地址分开记,能省掉很多莫名其妙的 401 和 404。
5.3 模型 ID 与 TaoToken 模型广场不一致
模型 ID 必须和模型广场当时列表里的 ID 对上。旧配置里的模型名可能已经下线,或者只是显示名而不是调用 ID。出现 401 时,有些网关会先做鉴权再校验模型,所以模型 ID 错了也可能表现为认证失败。打开官网模型广场,复制当前可用的模型 ID,再回填到openclaw.json。
不要自己给模型名加日期后缀,也不要把示例占位符YOUR_MODEL_ID留在配置里。模型列表会变化,本文不会写死某个 ID;你以模型广场当时显示的为准。改完 ID 后,同样先发最小请求验证,不要直接跑大项目。
5.4 配置缓存与旧进程还在使用旧凭证
OpenClaw 可能把配置缓存到内存或临时目录,升级后如果旧进程没有完全退出,新改的openclaw.json不会生效。把相关进程停掉,重新打开终端,再启动一次。如果用了后台守护方式,也要确认旧进程真的被杀掉,而不是新进程和旧进程同时跑。
清理缓存时只清 OpenClaw 自己的缓存目录,不要误删工作区和 skill。重启后先跑pnpm openclaw doctor,看它读到的配置路径和值是不是你改的那份。确认无误再发请求,这样 401 如果还在,问题就集中在 Key 或模型 ID 上,范围会小很多。
6. 验证通过后去控制台核对,再决定长期走模型对话还是 Coding Plan
6.1 看这次请求有没有记上账
最小请求返回正常后,打开 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content= 进控制台,看这次调用有没有记上用量。如果控制台能看到请求记录,说明 OpenClaw 已经走了新的 Base URL 和 Key。如果看不到,但工具又返回成功,可能是你还在走旧的本地缓存或另一个供应商,需要回头检查进程和配置路径。
看用量时顺便确认模型 ID 是否正确。控制台记录里的模型名和你填的 ID 对得上,后面的计费和排查才有意义。把这次升级后的配置路径、Key 来源、模型 ID 记在一个只有自己可见的笔记里,下次再升级 OpenClaw 时,直接对照这几项,不用重新从 401 开始猜。
6.2 长期写代码选 Coding Plan,先拿 Key 再接入
如果你只是偶尔在 OpenClaw 里问几句,先在 TaoToken 模型对话 用同一把 Key 发一条测试消息,确认模型 ID 和 Base URL 没填错。如果准备把 OpenClaw 当成日常写代码工具,可以打开 Coding Plan 看套餐是否够用;Key 在 控制台 API Keys 创建。Claude Code 环境变量对照见 接入文档。
下次再遇到 OpenClaw 源码升级后的模型 401,先查openclaw.json里的 Base URL 是不是https://taotoken.net/api,Key 是不是从官网新建的,模型 ID 是不是来自模型广场,最后再跑一次pnpm openclaw doctor --fix。升级前排障靠猜,升级后排障靠对照这几项,通常几分钟就能把模型请求接回来。