
10 月 18 日北京 19 点这一个小时:四仓没有新版本;codex-proxy 的 npm 离线包从 v2.1.15 起就没附到发行版上,README 那条安装命令一直 404,修触发条件的提交刚进 dev;codex2api 的被动额度快照会把已经在跑的冷却改短。

codex-proxy v2.1.18 的 .github/workflows/npm-publish.yml 第 365–373 行:步骤名是「Attach offline npm bundle to the release」,第 370 行的 if: 要求事件为 push、ref 类型为 tag。上一行注释还写着「只有 tag 运行才对应一个 GitHub Release」。12workflow_dispatch --ref <tag>。bot 打完 tag 之后由发布流程显式派发,而 bot 推的 tag 触发不了下游工作流,所以 event_name 一直是 workflow_dispatch13。Attach offline npm bundle 都是 skipped13。startsWith(github.ref, 'refs/tags/'),注释也重写,把「tag 推送」与「稳定版 dispatch」两条来路都讲明白1415。
if: startsWith(github.ref, 'refs/tags/'),第 366–370 行新增的四行注释写明「稳定版以 workflow_dispatch --ref <tag> 到达本工作流」,改动量 2 文件 +11/−5。14npm-publish.yml --ref v2.1.16 重跑也没用,因为 workflow_dispatch 加载的是该 tag 提交里的工作流文件,那里条件还是旧的13。npm-tarballs 产物(v2.1.16 的产物保留到 10 月 20 日);把 *.tgz 与 scripts/npm/offline-install.mjs(改名 install.mjs)放进同一目录后 zip -r codex-proxy-npm.zip .;再 gh release upload v2.1.16 codex-proxy-npm.zip,v2.1.17 同理13。
README.md 第 120–133 行:方式三的标题是「npm 安装(适合已有 Node 的开发者)」,第 122 行写「推荐从 GitHub Release 下载离线包安装(免认证)」,第 125 行就是那条指向 /releases/latest/download/codex-proxy-npm.zip 的 curl。9codex-proxy-2.1.18-no-node-lite-all-platforms.zip 在 v2.1.18 的资产里,现在就能下;解压后 Linux/macOS 跑 ./codex-proxy.sh,Windows 双击 codex-proxy.exe,前置要求 Node.js 20 或更新1016。codex-proxy 命令的,走 GitHub Packages,token 要有 read:packages 权限9。curl -sI https://github.com/icebear0828/codex-proxy/releases/latest/download/codex-proxy-npm.zip,回 404 就是这一处,省下排查网络的时间。MarkPremium5hRateLimitedAt17,后者在 markPremium5hRateLimited 里无条件写 acc.CooldownUtil = resetAt 与 acc.CooldownReason = cooldownReason18。
codex2api v3.1.1 的 auth/premium_rate_limit.go 第 309–329 行:第 325 行 acc.CooldownUtil = resetAt、第 326 行 acc.CooldownReason = cooldownReason,函数体里没有任何比较分支,末尾还会把同一个原因与时刻写进缓存与数据库。18rate_limited_5h。MarkUsage7dRateLimited 先算出到 reset 的时长,再走 MarkCooldown;markCooldown 里是 until := now.Add(duration) 之后直接 setCooldownUntilLocked1920。ignore_usage_limit_status 只放过 WHAM 推导出来的那类冷却,权威 429 一律拦住——原因常量上的注释把这条边界写得很明确21。原因一旦被覆盖成 rate_limited_5h,开着这个开关的活跃轮次就会被放行,而那正是 429 拦住的事。FailureStreak 加一、把健康档位往 risky 推20。同一段窗口被反复读到,等于反复记一次失败。usageCooldownTargetLocked:已有更长的冷却就保留,原因也保留;真实 429 能把本地用量冷却的原因升级成 responses_rate_limited,同时保留原来的截止;重复观测不再重复写冷却,也不再重复计失败22。ignore_usage_limit_status 的部署先关掉。它依赖「冷却原因没被覆盖」这个前提。admin/auth_throttle.go 这个文件,管理端登录目前连失败限速都没有24。blockedUntil 还在未来。被淘汰之后 retryAfter 找不到条目,中间件就接受这张 IP 的下一次尝试,封禁等于失效25。data: [DONE] 帧或流 EOF 再关连接27。github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
status.openai.com
status.openai.com
status.anthropic.com
status.cloud.google.com
codex-reset.com
opentherank.com
community.openai.com
reddit.com
reddit.com
reddit.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.