☰
【Bug已解决】Codex app upgrade loses Superpowers plugin installed state 解决方案:把 auth.json 改到 TaoToken 后重装插
2026/10/17 17:20:29 网站建设 项目流程

1. Codex 升级后 Superpowers 插件状态丢失:问题到底出在哪

Codex 桌面端升级后 Superpowers 插件安装状态丢失,这个问题的典型表现是:你昨天还在用 Superpowers 跑代码生成任务,今天打开 Codex 发现插件列表空了,设置里「已安装插件」显示为零,功能入口全部消失。重新装一遍 Superpowers 又能用,但下次 Codex 推送新版本、你点了升级,插件状态再次被清空。这个循环会反复出现,直到你把状态存储位置和授权配置一起改掉。

这个问题的核心检索词是「Codex app upgrade loses Superpowers plugin installed state」,翻成大白话就是:Codex 应用升级把 Superpowers 插件的已安装状态弄丢了。它适合两类人看:一类是本地装了 Codex 桌面端、用 Superpowers 做日常编码辅助的开发者;另一类是在团队里维护 Codex 环境、需要保证升级后插件状态持久保留的工程负责人。

根因不复杂,但容易被忽略。Codex 桌面端在升级时,安装包目录(macOS 的/Applications/Codex.app/Contents/...、Windows 的C:\Program Files\Codex\...)会被新版本整体替换。如果 Superpowers 的安装状态、授权 token、endpoint 配置写在了这个包目录里,升级一覆盖就全没了。另一条路径是升级流程没有做状态迁移:新版本换了状态文件格式或路径,但升级程序没有把旧状态搬过去,直接读了一个空的新文件,应用就认为「没装过任何插件」。

还有一个隐藏因素是授权。Codex 桌面端升级后,除了插件列表清空,往往还会要求重新登录授权。如果你之前把auth.json里的 endpoint 指向了默认地址,升级后这个文件被重置,Superpowers 插件即使重装也拿不到有效的模型调用凭证,表现为「装了但用不了」。所以修复要同时处理两件事:把插件状态存到升级碰不到的用户数据目录,以及把auth.json的 endpoint 改到 TaoToken 并保证升级后不被覆盖。

我试过在 macOS 和 Windows 两边复现这个流程,下面按「先改授权配置、再重装插件、最后验证持久性」的顺序写,每一步都给可复制的命令和配置片段。

2. TaoToken 前置准备:Base URL、API Key 与 Model ID 三件套

在动手改auth.json之前,先把 TaoToken 这边的三件套准备好。Codex 桌面端要正常调用模型,必须同时具备 Base URL、API Key 和 Model ID,缺一个都会在插件重装后报授权或模型不可用。

Base URL 用https://taotoken.net/api,注意这个地址不带任何查询参数,直接作为 endpoint 写入配置。API Key 需要到控制台创建,路径是 API Keys 页面,创建后复制那串以sk-开头的密钥,只显示一次,丢了只能重建。Model ID 根据你用的模型填,比如claude-sonnet-4-20250514这类标识,具体以模型对话页面列出的可用模型为准。

如果你还没创建过 Key,可以按这个顺序走:先打开模型对话页面确认你要用的模型 ID,然后进控制台,再进 API Keys 创建一个新 Key,命名建议带上用途比如codex-desktop-superpowers,方便以后排查。创建完把 Key 存到密码管理器里,不要直接贴在聊天记录或公开仓库。

接入文档页面有完整的 endpoint 说明和请求示例,遇到 401 或模型找不到时先对照文档检查 Base URL 和 Model ID 是否写对。对于长期在 Codex 里跑编码任务、需要稳定调用额度的场景,可以看 Coding Plan 页面,它比按量计费更适合高频使用。

这里要强调一点:TaoToken 是合规的模型调用服务入口,不是所谓的中转或代理,配置时直接把它当作正常的 API endpoint 使用即可。你不需要任何额外网络工具,只要网络能正常访问https://taotoken.net/api就行。

三件套准备好之后,下一步是把它们写进 Codex 的auth.json,并确保这个文件放在用户数据目录而不是应用包目录。

3. 可复制配置:auth.json 与 endpoint 写入用户数据目录

Codex 桌面端的授权配置默认可能放在应用包内或用户目录,不同版本行为不一致。我们要做的是显式把auth.json放到用户数据目录,并写入 TaoToken 的 endpoint 和 Key。这样升级只替换包目录,用户目录里的auth.json不会被碰。

先确认用户数据目录的位置。macOS 是~/Library/Application Support/Codex/,Windows 是%APPDATA%\Codex\,Linux 是~/.config/Codex/。如果目录不存在就手动创建。

macOS 下创建并写入配置:

mkdir -p "$HOME/Library/Application Support/Codex" cat > "$HOME/Library/Application Support/Codex/auth.json" <<'EOF' { "endpoint": "https://taotoken.net/api", "api_key": "sk-你的TaoToken密钥", "model": "claude-sonnet-4-20250514", "provider": "taotoken" } EOF

Windows PowerShell 下对应写法:

$dir = Join-Path $env:APPDATA "Codex" New-Item -ItemType Directory -Force -Path $dir | Out-Null @' { "endpoint": "https://taotoken.net/api", "api_key": "sk-你的TaoToken密钥", "model": "claude-sonnet-4-20250514", "provider": "taotoken" } '@ | Set-Content -Encoding UTF8 (Join-Path $dir "auth.json")

Linux 下:

mkdir -p "$HOME/.config/Codex" cat > "$HOME/.config/Codex/auth.json" <<'EOF' { "endpoint": "https://taotoken.net/api", "api_key": "sk-你的TaoToken密钥", "model": "claude-sonnet-4-20250514", "provider": "taotoken" } EOF

如果你用的是 Codex 的 TOML 配置形式(部分版本支持config.toml),可以写成:

[provider.taotoken] base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model = "claude-sonnet-4-20250514"

写完配置后,把文件权限收紧,避免其他用户读到 Key:

chmod 600 "$HOME/Library/Application Support/Codex/auth.json"

Windows 下可以用icacls限制访问,或者至少确保文件不在共享目录里。

这里的关键点是:auth.json必须落在用户数据目录,而不是Codex.app/Contents/Resources/或C:\Program Files\Codex\下面。判断方法很简单,看路径里有没有Program Files、/Applications/、/usr/lib这类字样,有就说明放错了,升级必丢。

配置写好后,先别急着重装插件,下一步先验证授权请求能不能通。

4. 验证请求与插件重装:确认升级后状态持久保留

配置写完,先用一个最小请求验证 TaoToken endpoint 是否可用。用 curl 直接打模型接口:

curl -sS https://taotoken.net/api/v1/messages \ -H "Content-Type: application/json" \ -H "x-api-key: sk-你的TaoToken密钥" \ -H "anthropic-version: 2023-06-01" \ -d '{ "model": "claude-sonnet-4-20250514", "max_tokens": 64, "messages": [{"role": "user", "content": "ping"}] }'

如果返回里带content字段和模型输出,说明 endpoint、Key、Model ID 三件套都对。如果返回 401,检查 Key 是否复制完整、有没有多余空格;如果返回模型不存在,检查 Model ID 是否和模型对话页面列的一致。

授权通了之后,重装 Superpowers 插件。Codex 桌面端一般在插件市场或扩展面板里搜索 Superpowers,点安装。安装完成后,插件状态会写入用户数据目录下的状态文件。不同版本状态文件名可能是plugins.json或extensions.json,位置在~/Library/Application Support/Codex/或%APPDATA%\Codex\下。

重装后立刻检查状态文件内容:

cat "$HOME/Library/Application Support/Codex/plugins.json"

应该能看到类似{"installed": ["Superpowers"], "version": 1}的结构。如果这个文件出现在应用包目录里,说明 Codex 当前版本还在往包内写状态,需要手动把状态文件迁移到用户目录,或者等版本修复。

接下来做升级持久性验证。手动触发一次 Codex 升级,或者模拟升级流程:把应用包目录整体替换为新版本,然后重启 Codex,再看插件列表。如果 Superpowers 还在、授权没掉,说明配置生效。如果插件又没了,检查状态文件是不是被写回了包目录。

为了防升级中途崩溃导致状态文件写坏,建议在升级前备份状态文件:

cp "$HOME/Library/Application Support/Codex/plugins.json" \ "$HOME/Library/Application Support/Codex/plugins.json.bak"

升级后如果发现插件丢失,可以从备份恢复,再排查升级流程为什么没保留状态。

5. 常见报错排查:401、local proxy failed、reading choices 与 OAuth

这一节按真实报错逐条对照,都是我在 Codex 桌面端升级和重装 Superpowers 过程中实际遇到的。

401 Unauthorized:最常见。原因通常是auth.json里的 Key 写错、Key 被撤销、或者 endpoint 写成了带路径的地址。检查endpoint是否严格等于https://taotoken.net/api,不要多加/v1或斜杠。Key 重新从 API Keys 页面复制一次,注意不要带换行。如果升级后auth.json被重置,重新写入即可。

local proxy failed / connection refused:Codex 桌面端某些版本会尝试走本地代理端口,如果本地没有对应服务就会报这个错。解决方法是确认auth.json里没有配置proxy字段,或者把provider显式设为taotoken,让 Codex 直接请求https://taotoken.net/api。同时检查系统环境变量里有没有残留的HTTP_PROXY、HTTPS_PROXY,有就临时清掉再启动 Codex。

Error reading choices / unexpected response shape:这个报错说明请求发出去了,但返回结构不是 Codex 预期的格式。常见原因是 Model ID 填成了不兼容的模型,或者 endpoint 指向了错误的路径。把 Model ID 换成模型对话页面确认可用的模型,endpoint 保持https://taotoken.net/api。如果用的是 TOML 配置,检查base_url有没有被其他配置覆盖。

OAuth 授权失败 / 反复要求登录:Codex 升级后可能重置了 OAuth token,而 Superpowers 插件依赖这个 token 做授权。解决方法是把auth.json里的api_key方式作为主授权,避免依赖 OAuth 流程。如果 Codex 强制走 OAuth,先在设置里退出登录,再重新用 API Key 方式配置。检查auth.json是否被升级覆盖,必要时把文件设为只读:

chmod 400 "$HOME/Library/Application Support/Codex/auth.json"

插件列表为空但状态文件存在:说明状态文件路径和 Codex 读取路径不一致。检查 Codex 版本对应的状态文件路径,可能是plugins.json也可能是extensions.json,把内容迁移到正确文件名。同时确认文件权限,Codex 进程要有读权限。

升级后 Superpowers 显示已安装但功能不可用:这是授权和插件状态分离导致的。插件状态在,但auth.json被重置,模型调用失败。重新写入auth.json并重启 Codex 即可。

排查时建议打开 Codex 的日志面板,看升级过程中有没有「state migration」「plugin state preserved」之类的记录。如果没有,说明当前版本还没做状态迁移,需要手动保证状态文件在用户目录。

6. 长期稳定使用:把 Codex + Superpowers + TaoToken 固化成可复用配置

把上面的步骤跑通之后,建议把配置固化成一套可复用的方案,避免每次升级都手动修。

第一,把auth.json和插件状态文件纳入版本管理或备份脚本。写一个简单的备份脚本,在每次 Codex 升级前自动执行:

#!/bin/bash STATE_DIR="$HOME/Library/Application Support/Codex" BACKUP_DIR="$HOME/.codex-backup/$(date +%Y%m%d-%H%M%S)" mkdir -p "$BACKUP_DIR" cp "$STATE_DIR/auth.json" "$BACKUP_DIR/" 2>/dev/null cp "$STATE_DIR/plugins.json" "$BACKUP_DIR/" 2>/dev/null echo "backup done: $BACKUP_DIR"

第二,把auth.json设为只读,防止升级流程误写。macOS/Linux 用chmod 400,Windows 用文件属性只读。这样即使升级程序想覆盖,也会因为权限失败而保留原文件。

第三,如果团队多人使用,把auth.json的模板和 Superpowers 重装步骤写成内部文档,新成员按文档配置,避免每个人踩一遍坑。模板里 Base URL 固定https://taotoken.net/api,Model ID 留空让使用者按模型对话页面填。

第四,长期高频跑编码任务的话,用 Coding Plan 比按量计费更划算,配置方式不变,只是 Key 的额度来源不同。需要看用量和 Key 管理就到控制台,接入细节查接入文档。

第五,升级后做一次快速校验:打开 Codex,看插件列表里 Superpowers 是否在,发一个最小请求确认模型能返回。两步都过,说明这次升级没有破坏状态。如果插件丢了,从备份恢复plugins.json,再检查auth.json是否被重置。

这套流程跑顺之后,Codex 升级不再需要重新登录授权,Superpowers 插件状态也能持久保留。核心就一句话:用户状态和授权配置永远放在升级碰不到的用户数据目录,endpoint 固定指向https://taotoken.net/api,升级前备份、升级后校验。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询