1. OpenClaw 更新升级踩坑记:从旧版到新版,npm/pnpm/git 三种方式怎么选
OpenClaw 是一个本地优先的 AI Agent 运行框架,你可以把它理解成一个「住在你电脑里的智能助手调度中心」——它负责把大模型的推理能力、本地工具调用、文件读写、终端命令串成一条可执行的工作流。适合谁用?适合那些不满足于网页版对话、想让 AI 真正动手操作本地项目的人,比如自动整理代码仓库、批量处理文档、跑定时任务。
但 OpenClaw 迭代很快,旧版本经常出现工具调用协议不兼容、Gateway 启动失败、模型列表拉不到等问题。我见过太多人卡在「更新」这一步:npm 全局包装了新版,但 CLI 还是旧路径;pnpm 源码构建完了忘了 link;git pull 之后没重新 build,跑起来还是老逻辑。更麻烦的是,更新完还要把模型接入配置改到 TaoToken 上,否则请求发不出去。
这篇就按「更新升级 → 配置 TaoToken → 验证连通」的完整链路走一遍。三种安装方式(npm、pnpm、git)我都会给可复制命令和版本校验方法,最后用一次真实的 API 调用确认整条链路通了。你不需要从头读,按自己当前的安装方式跳到对应小节即可。
先说一个前置判断:你到底是用哪种方式装的?在终端跑which openclaw,如果路径里有node_modules且是全局目录,多半是 npm;如果指向你自己 clone 的源码目录,那是 git/pnpm;如果完全找不到,可能是安装脚本装的。搞清楚这个,后面才不会白忙。
2. TaoToken 前置准备:Base URL、API Key 与模型 ID 三件套
在动 OpenClaw 配置之前,先把 TaoToken 这边的三件套准备好。所谓三件套,就是 Base URL、API Key、Model ID——任何 OpenAI 兼容的客户端接入,缺一不可。
Base URL 用https://taotoken.net/api,注意这里不带任何多余路径,OpenClaw 的 provider 配置里通常会自动拼接/v1/chat/completions这类后缀。API Key 去控制台的 API Keys 页面创建,建议单独建一个给 OpenClaw 用的 Key,方便后续排查和吊销。Model ID 则取决于你想调哪个模型,在模型对话页面能看到当前可用的模型标识。
这里有个容易忽略的点:OpenClaw 的配置文件分两层,一层是 Gateway 级别的gateway.yaml,一层是 provider 级别的模型接入配置。很多人只改了 provider,忘了 Gateway 的默认模型指向,结果启动后还是走旧模型。所以下面配置片段我会把两处都写清楚。
另外提醒一句,API Key 不要硬编码进会提交到 git 的配置文件里。OpenClaw 支持从环境变量读取,推荐用TAOTOKEN_API_KEY这个变量名,配置里写${TAOTOKEN_API_KEY}占位。这样即使配置文件被同步,Key 也不会泄露。
准备好这三样,再往下走更新流程。顺序很重要:先更新 OpenClaw 本体,再改配置,最后验证。反过来做的话,旧版本可能不认新配置字段,你会以为是配置写错了,其实是版本没跟上。
3. 可复制配置:npm/pnpm/git 三种更新方式与 TaoToken 接入片段
这一节是全文最核心的操作区。先按你的安装方式选更新命令,再改配置文件。
3.1 npm 全局安装的更新
如果你是用 npm 全局装的,更新命令很直接:
# 查看当前版本,记下来方便回滚 openclaw --version # 更新到最新版 npm update -g openclaw # 如果 update 没生效,强制装最新 npm install -g openclaw@latest # 再次校验版本 openclaw --versionnpm update -g有时候因为缓存或 semver 范围限制不会升到最新,这时候用@latest强制指定更稳。更新完一定要重新跑一次--version,确认版本号变了。
3.2 pnpm 源码方式的更新
源码安装的更新分三步:拉代码、装依赖、重新构建并 link。
cd /path/to/openclaw # 拉取最新代码 git pull origin main # 安装依赖(pnpm 项目必须用 pnpm) pnpm install # 重新构建 pnpm build # 重新链接到全局 pnpm link --global # 校验 openclaw --version这里最常见的坑是pnpm build失败但没注意,直接 link 了旧的构建产物。构建日志里如果有 TypeScript 报错,先解决再 link。
3.3 git 方式的更新与回滚
git 方式和 pnpm 高度重合,区别在于你可能需要切分支或 tag:
cd /path/to/openclaw git fetch --all --tags git checkout main git pull origin main pnpm install && pnpm build && pnpm link --global如果新版有问题要回滚,用 tag 切回去重新构建:
git checkout v1.2.3 pnpm install && pnpm build && pnpm link --global3.4 TaoToken 接入配置片段
更新完本体,改配置。OpenClaw 的 provider 配置一般在~/.openclaw/config/下。下面是一个 OpenAI 兼容 provider 的 JSON 片段,路径和字段名按你本地实际文件调整:
{ "providers": { "taotoken": { "type": "openai-compatible", "baseUrl": "https://taotoken.net/api", "apiKey": "${TAOTOKEN_API_KEY}", "models": [ { "id": "your-model-id", "name": "TaoToken Main" } ] } }, "defaultModel": "taotoken/your-model-id" }对应的环境变量在 shell 配置里加一行:
export TAOTOKEN_API_KEY="sk-你的key"改完配置记得重启 Gateway,否则不生效:
openclaw restart openclaw statusstatus里如果显示 Gateway running 且 provider 已加载,说明配置层面没问题了。接下来进入验证环节。
4. 验证请求:用一次真实 API 调用确认 OpenClaw 连通性
配置改完不代表通了,必须发一次真实请求。OpenClaw 自带doctor和测试命令,但最可靠的还是直接触发一次模型调用。
先跑健康检查:
openclaw doctordoctor会检查 Gateway 状态、provider 可达性、模型列表能否拉取。如果这里报 provider unreachable,八成是 Base URL 写错或 Key 无效。
然后发一次最小请求。OpenClaw 一般有类似openclaw run或openclaw chat的子命令,具体看你的版本:
openclaw run --model taotoken/your-model-id --prompt "回复 OK 两个字母"预期结果是终端打印出模型返回的OK。如果返回的是 401,说明 Key 没读到,检查环境变量是否在当前 shell 生效(echo $TAOTOKEN_API_KEY)。如果返回reading 'choices'这类报错,通常是响应体不是标准 OpenAI 格式,多半是 Base URL 多写了或少了/v1,对照https://taotoken.net/api核对。
成功的话,你会在日志里看到一次完整的 request/response 往返,包含 model 字段和 usage 统计。这一步过了,说明 OpenClaw 更新 + TaoToken 接入整条链路是通的。想进一步验证多模型切换,可以去模型对话页面手动发几条,对比返回质量。
5. 本篇常见错排查:401、local proxy failed、reading choices、OAuth
更新和接入过程中,报错基本集中在下面几类。我按真实终端输出对照着说。
401 Unauthorized:最常见。原因有三种——Key 没导出到当前 shell、Key 被引号包住导致多了空格、Key 已过期。排查顺序:echo $TAOTOKEN_API_KEY看有没有值,再看配置文件里是不是${TAOTOKEN_API_KEY}而不是硬编码空字符串。如果是 OAuth 类型的 provider 报 401,检查 token 刷新逻辑,OpenClaw 新版对 OAuth 过期处理更严格。
local proxy failed:这个报错通常出现在你本地配了代理但代理没起来,或者 OpenClaw 读到了系统代理环境变量。检查HTTP_PROXY/HTTPS_PROXY是否指向了一个不存在的端口。清掉这两个变量再重启 Gateway 往往就好了。
reading 'choices' of undefined:响应体结构不对。OpenClaw 期望标准 OpenAI 格式的choices数组,如果 Base URL 配成了https://taotoken.net/api/v1而客户端又自动拼了一次/v1,就会打到错误路径返回非预期 JSON。统一用https://taotoken.net/api,让客户端自己拼后缀。
OAuth token expired:如果你用的是需要 OAuth 的模型接入,更新后旧 token 可能失效。重新走一次授权流程,或者改用 API Key 方式接入 TaoToken,后者更简单也更适合本地开发。
版本没更新成功:openclaw --version还是旧号。npm 用户检查npm ls -g openclaw看实际安装路径;pnpm 用户检查which openclaw是否指向源码目录;如果 PATH 里有多个 openclaw,用绝对路径调用确认。
排查时养成看日志的习惯,OpenClaw 的 Gateway 日志一般在~/.openclaw/logs/下,报错原文比终端摘要信息量大得多。
6. 升级后的下一步:把 OpenClaw 接进你的日常编码流
更新完、验证通之后,OpenClaw 才算真正可用。接下来可以做的事:把常用工作流写成 OpenClaw 的 task 配置,让它定时跑;或者接入 Coding Plan 做长期的代码辅助,把模型调用成本压下来。如果你还在对比不同接入方式,先去 API Keys 页面把 Key 管理起来,再翻一遍接入文档确认字段没写错。
我自己的习惯是每次升级后固定跑三件事:openclaw --version确认版本、openclaw doctor确认健康、发一次最小 prompt 确认模型通。这三步花不了一分钟,但能省掉后面半小时的瞎猜。你也可以把这套流程写成一个 shell 脚本,升级后一键执行。