1. 先搞清楚 openclaw update 为什么提示不是 git checkout
你敲下openclaw update,终端回你一句Skipped: this OpenClaw install isn't a git checkout, and the package manager,然后就没有然后了。这个提示不是崩溃,也不是网络错误,它更像是一个「身份识别失败」的通知:更新脚本想用git pull的方式帮你升级,结果发现当前这份 OpenClaw 根本不是从 git 仓库克隆下来的,于是它选择跳过,把升级动作交还给包管理器。
要理解这件事,得先知道 OpenClaw 有两种常见的落地方式。第一种是git clone到本地某个目录,然后在里面跑构建、跑源码,这种安装天然带.git文件夹,openclaw update会走 git 分支切换加拉取的逻辑。第二种是通过 npm 全局安装,比如npm install -g openclaw,代码被塞进 npm 的全局node_modules里,没有.git目录,更新脚本检测不到版本控制信息,就会打印这句 Skipped。
所以这句话的完整含义是:更新器发现你不是 git 安装,它不打算用 git 的方式动你的文件,同时它把后续升级责任指向了 package manager,也就是 npm、pnpm、yarn 这类包管理工具。很多人看到 Skipped 以为是失败,其实它只是「这条路我不走」,你需要换一条路。
判断自己属于哪种安装,最直接的办法是看安装路径和有没有.git。在终端里执行:
which openclawWindows 上用:
where openclaw如果输出类似/usr/local/bin/openclaw或C:\Users\你的用户名\AppData\Roaming\npm\openclaw,基本可以判定是 npm 全局安装。如果输出指向你自己 clone 的某个项目目录,比如~/projects/openclaw/bin/openclaw,那大概率是 git 安装。再进一步,进到那个目录看有没有.git:
ls -a | grep .git有.git就是 git checkout,没有就是包管理器安装。这一步判断清楚,后面的修复路径才不会走偏。我见过不少人明明是 npm 装的,却硬去git pull,结果当然是not a git repository,问题越修越多。
这篇内容适合正在用 OpenClaw 做本地 Agent 或命令行工具、被 update 提示卡住的开发者。接下来我会先讲 npm 安装方式下的重装升级,再讲 git checkout 的校验步骤,最后把 endpoint 统一到 TaoToken 的配置片段和验证动作补齐,让你一次跑通更新流程。
2. npm 全局安装下的 openclaw update 修复与 TaoToken 前置准备
如果你确认自己是 npm 全局安装,那openclaw update报 Skipped 是完全正常的,正确做法是直接用 npm 升级,而不是跟 update 命令较劲。这里先把 npm 侧的修复路径讲透,再交代 TaoToken 的前置准备,因为很多人升级完发现模型调不通,问题其实出在 endpoint 没统一。
先处理 npm 升级。第一步建议把 registry 换成国内镜像,避免拉包超时导致你以为升级失败:
npm config set registry https://registry.npmmirror.com然后执行全局升级到最新版:
npm install -g openclaw@latest等终端出现xx packages are looking for funding之类的收尾信息后,验证版本:
openclaw --version如果版本号变了,说明升级成功。这里有个坑:有些环境里openclaw命令被旧版本占用,升级后--version还是旧的,通常是 PATH 里有多个可执行文件。用where openclaw(Windows)或which -a openclaw(macOS/Linux)看全部路径,把旧的删掉或调整 PATH 顺序。
升级完成后,OpenClaw 需要指向一个可用的模型服务 endpoint。TaoToken 在这里的角色是统一入口:你不需要在多个模型供应商之间来回切 Key 和 Base URL,把 endpoint 指到 TaoToken 的 API 地址,用一把 Key 就能调通对话和编码类模型。它的 API 地址是https://taotoken.net/api,注意这个地址不带任何查询参数,配置时直接填这个。
前置准备有三件事。第一,拿到 API Key。登录 TaoToken 控制台,在 API Keys 页面创建一个新 Key,复制保存,后面配置要用。第二,确认你要用的模型 ID,比如对话类或编码类模型,记下准确的模型名,配置里要填。第三,确认 OpenClaw 的配置文件位置。不同版本可能放在~/.openclaw/config.json、项目根目录的.openclaw/config.json,或者通过环境变量注入。你可以先用:
openclaw config path如果这个子命令不存在,就直接在用户目录下找.openclaw文件夹。找到配置文件后,把 Base URL 指向https://taotoken.net/api,Key 填你刚创建的,Model ID 填你要用的模型。这样升级和接入就串起来了,不会出现「升级成功但模型 401」的割裂感。
需要提醒的是,TaoToken 是合规的 API 聚合入口,配置时只填官方给的地址,不要自行拼接来路不明的中转地址。Key 也不要写进会提交到 git 的明文文件里,建议用环境变量或本地未跟踪的配置文件承载。
3. 可复制的 openclaw 配置片段:Base URL、Key 与 Model ID 三件套
这一节给你可以直接抄的配置。OpenClaw 的配置格式在不同版本间略有差异,但核心三件套不变:Base URL、API Key、Model ID。下面给 JSON 和 TOML 两种写法,你按自己项目的实际格式选一种,路径和字段名以你本地文件为准,不要盲目覆盖。
先看 JSON 版本,适合config.json或settings.json:
{ "provider": { "baseUrl": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥", "model": "你的模型ID" }, "models": { "default": "你的模型ID" } }如果你用的是 TOML 风格配置,比如config.toml:
[provider] base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model = "你的模型ID" [models] default = "你的模型ID"这里有几个细节要盯住。第一,baseUrl结尾不要多加/v1或斜杠,除非 OpenClaw 文档明确要求;TaoToken 的 API 根地址就是https://taotoken.net/api,路径拼接交给客户端处理。第二,apiKey建议不要硬编码在会进版本库的文件里,可以用环境变量引用,比如 JSON 里写"apiKey": "${TAOTOKEN_API_KEY}",然后在 shell 里 export。第三,model字段填的是模型 ID,不是显示名称,填错会报模型不存在。
如果你同时用 Claude Code 或 Cline 这类工具,它们的配置逻辑类似,也是 Base URL 加 Key 加 Model ID 三件套。以 Claude Code 的 settings 为例,常见写法是在配置里指定 API 端点和密钥:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥" } }Cline 的 MCP 配置里同样是把 endpoint 指向 TaoToken,Key 填进去,模型选你需要的。Codex 的auth.json也是类似结构,把 base URL 和 key 写对即可。这三个工具只要出现配置,就记住三件套缺一不可:Base URL、Key、Model ID。少一个,要么 401,要么模型找不到。
配置改完后,不要急着跑复杂任务,先用一个最小请求验证。OpenClaw 一般有openclaw chat或类似的子命令,你可以发一句最简单的「你好」看是否返回。如果返回正常,说明 endpoint 和 Key 都通了。如果报 401,先查 Key 有没有复制全、有没有多余空格;如果报模型不存在,查 Model ID 拼写;如果报连接失败,查 Base URL 是不是写成了带路径的地址。
另外,npm 升级后如果 OpenClaw 读的是旧配置文件,可能出现「配置改了但不生效」。这时候确认一下配置优先级:环境变量通常高于文件配置,项目级配置高于用户级配置。你可以用openclaw config show之类的命令打印当前生效配置,核对 Base URL 和 Model ID 是不是你刚写的那份。
4. git checkout 安装的校验与 openclaw update 正确姿势
如果你确认自己是 git clone 下来的,那openclaw update报 Skipped 就说明检测环节出了问题,需要手动校验 git 状态。这一节把 git 安装的校验步骤和更新姿势讲清楚,避免你在错误的分支或脏工作区上硬拉。
第一步,进到你的 OpenClaw 项目目录,确认它真的是 git 仓库:
cd /path/to/your/openclaw git rev-parse --is-inside-work-tree如果返回true,说明是 git 仓库。如果报not a git repository,那你其实不是 git 安装,回到第 2 节走 npm 路径。确认是 git 仓库后,看当前分支和远程:
git branch --show-current git remote -v正常应该是main或master,远程指向官方仓库。如果远程被你改成了自己的 fork,更新时拉的是你的 fork,可能落后于上游,需要先同步上游再拉。
第二步,检查工作区是否干净:
git status如果有未提交的修改,git pull可能冲突或被拒绝。建议先 stash 或提交:
git stash更新完再git stash pop。如果你有本地定制改动,不要直接丢弃,先备份。
第三步,拉取最新代码:
git pull origin main分支名按你实际的来。拉完后如果项目有依赖变更,重新安装依赖:
npm install如果项目用 pnpm 或 yarn,换成对应命令。然后重新构建(如果需要):
npm run build第四步,验证版本和功能:
openclaw --version再跑一个最小对话请求,确认模型 endpoint 仍然指向 TaoToken 且能通。git 安装的好处是你可以随时切到特定 tag 或 commit,比如:
git fetch --tags git checkout v1.2.3这样能锁定稳定版本,避免 main 分支的临时问题影响你。
这里有个常见误区:git 安装的用户看到 Skipped 后,跑去npm install -g openclaw@latest,结果系统里同时存在两份 OpenClaw,命令走的是 npm 那份,配置却改在 git 那份,怎么调都不对。判断命令实际走哪份,用which openclaw看路径,确保它指向你 git 目录里的可执行文件。如果不是,调整 PATH 或卸载 npm 全局那份。
还有一种情况是 git 仓库存在但.git被误删,比如你拷贝项目时漏了隐藏目录。这时候git rev-parse会失败,openclaw update也会报 Skipped。修复办法是重新 clone 一份,把配置迁移过去,而不是在残缺目录上硬修。
5. 本篇常见报错排查:401、local proxy failed、reading choices 与 OAuth
升级和配置过程中,除了 Skipped 本身,你还会撞上几类高频报错。这一节按真实错误信息对照排查,每条都给判断依据和处理动作。
先说 401。报错通常是401 Unauthorized或invalid api key。原因基本是 Key 不对:复制时漏字符、带了空格、Key 被撤销、或者配置里读的是旧 Key。处理办法是重新在 TaoToken 控制台生成一个 Key,替换配置里的值,然后确认环境变量没有覆盖文件配置。如果你用的是${TAOTOKEN_API_KEY}这种引用,检查 shell 里有没有 export,以及 export 的值是不是最新的。
再说local proxy failed。这个报错说明 OpenClaw 尝试走本地代理端口,但代理没起来或端口不对。常见于你之前配过本地转发,升级后配置残留。处理办法是检查配置里有没有proxy相关字段,把它清掉,让请求直连https://taotoken.net/api。同时确认系统环境变量里没有HTTP_PROXY、HTTPS_PROXY指向一个已经关闭的本地端口。清掉后重启终端再试。
reading choices这类报错通常出现在响应解析阶段,比如cannot read property 'choices' of undefined。这说明请求发出去了,但返回结构不是预期的 OpenAI 兼容格式。原因可能是 Base URL 写错,比如多写了/v1导致路径拼接成/v1/v1/chat/completions,或者 endpoint 指向了一个返回 HTML 错误页的地址。处理办法是核对 Base URL 就是https://taotoken.net/api,不要自行加路径;再用 curl 直接打一次接口,看返回是不是标准 JSON:
curl -s https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{"model":"你的模型ID","messages":[{"role":"user","content":"hi"}]}'如果 curl 返回正常而 OpenClaw 报 reading choices,那就是 OpenClaw 配置里的路径拼接问题,检查它有没有自动追加/v1。
OAuth 相关报错一般出现在 Claude Code 这类工具上,提示 token 过期或 OAuth 流程失败。如果你用的是 API Key 模式,就不该走 OAuth;检查配置里是不是同时存在 OAuth 凭据和 API Key,导致优先级混乱。把 OAuth 相关字段清掉,只保留ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY指向 TaoToken。如果工具强制走 OAuth 登录,确认你用的是支持 API Key 的版本或配置项。
还有一类是 npm 权限报错,比如EACCES或permission denied。这是全局安装目录权限问题,不要用sudo npm install -g硬上,容易把目录属主搞乱。正确做法是配置 npm 的全局目录到用户目录下:
npm config set prefix ~/.npm-global export PATH=~/.npm-global/bin:$PATH然后再执行npm install -g openclaw@latest。Windows 上一般不会有这个问题,但如果你用 WSL,同样按 Linux 处理。
排查时记住一个顺序:先确认安装方式(git 还是 npm),再确认命令走的是哪份可执行文件,然后确认配置三件套(Base URL、Key、Model ID),最后用 curl 验证 endpoint。这个顺序能覆盖绝大多数报错,不会让你在无关方向上浪费时间。
6. 更新完成后把 OpenClaw 接入 TaoToken 的验证与长期使用
更新跑通只是第一步,真正影响日常使用的是 endpoint 稳定性和 Key 管理。这一节把验证动作和长期使用建议补齐,让你的 OpenClaw 在升级后持续可用。
验证分三层。第一层是版本验证,openclaw --version确认升级生效。第二层是连通性验证,用 curl 直接打 TaoToken 的接口,确认 Key 和模型 ID 有效。第三层是端到端验证,在 OpenClaw 里跑一个真实任务,比如让它读一个本地文件并总结,或者跑一次代码补全,确认整条链路从 OpenClaw 到 TaoToken 再到模型返回都正常。三层都过,才算真正跑通。
长期使用上,建议把 Key 放在环境变量或本地未跟踪的配置文件里,不要提交到 git。如果你在多个项目里用 OpenClaw,可以给每个项目单独配一份配置,Base URL 都指向https://taotoken.net/api,Key 用同一个或按项目区分。模型 ID 按任务选,对话类任务和编码类任务可以用不同模型,配置里改model字段即可。
如果你同时用 Claude Code、Cline、Codex 这些工具,统一走 TaoToken 的好处是 Key 和 endpoint 一致,排查问题时不用在多个供应商之间切换。Claude Code 的 settings、Cline 的 MCP 配置、Codex 的auth.json,都按三件套填:Base URL 填https://taotoken.net/api,Key 填你的 TaoToken 密钥,Model ID 填你要用的模型。这样任何一个工具出问题,你都能用同一套 curl 命令验证,快速定位是工具配置问题还是服务端问题。
对于需要长期跑编码任务或 Agent 的场景,可以考虑用 Coding Plan 这类方案,把调用额度和模型选择统一管理,避免频繁换 Key。日常验证模型是否可用,用模型对话页面发一条消息就能确认。接入文档里有各工具的详细配置示例,遇到字段不确定时对照文档改,比猜字段名靠谱。
最后提醒一句:升级 OpenClaw 时,先判断安装方式再动手。npm 安装就用 npm 升级,git 安装就校验 git 状态后拉取。Skipped 不是错误,它只是告诉你走错了更新通道。把通道选对,再把 endpoint 统一到 TaoToken,整个更新和接入流程就能一次跑通。