最近我写了一个 CPA 的 Codex 账号调度插件,在这儿跟大家分享一下,顺便说说它的来龙去脉和用途。
插件背景
事情的起因是这样的。最近 OpenAI 针对 CPA 这类反代(反向代理)软件做了一些限制,比较常见的表现就是账号被强制退出登录、接口返回 401 报错。
论坛里另一个帖子也讨论过这个问题,大家得出的结论是:现阶段最好别再轮询,改用 Fill First 模式来用 Codex 账号,可以有效缓解这种情况。
最近大家还是不要轮询了,最好fill first,不然一次一堆号401。
另外,之前有一篇帖子 Fork了CLIProxyAPI,增加了Codex账号权重选择,账号定时刷新,以及用量监控 是直接 Fork 整个 CPA 仓库来改调度逻辑的。不过我注意到 CPA 官方现在已经支持插件系统,还开放了调度器的 API,所以与其 Fork 整个仓库,不如做成插件——后续维护会方便很多。于是就有了这个插件。
解决的问题
插件地址在这里:
(目前已经发布 v0.1.0)
它主要解决的是 CPA 内部 Fill First 调度逻辑的问题。CPA 原生的逻辑是按账号 ID 顺序来选号的,可以理解成账号 1、账号 2、账号 3、账号 4 这样从头挨个用。但这套固定顺序在实际使用中会带来不少问题。
具体来说,Codex 账号有周额度、月额度,而且每个账号的 reset time 都不一样。如果死板地按 ID 顺序调度,就容易出现这种情况:有的账号眼看快到重置点了,额度还没怎么用;有的账号才刚刷新完,却被一直占着用。
这个插件要做的事其实很简单——在 CPA 原有 Fill First 逻辑的基础上,把 Codex 账号按周 reset time 或月 reset time 重新排个序。
调度逻辑
我没有给每个账号搞一套复杂的打分机制,而是用了一个更直观的规则:直接按 reset time 排序。
主要看两个时间:
- weekly reset time(周重置时间)
- monthly reset time(月重置时间)
说白了,就是让那些「额度更该先用掉」的账号排在前面,而不是一直死守着 CPA 内部的 ID 顺序去消耗账号。
打个比方,CPA 原本可能是这样用的:
账号 1 -> 账号 2 -> 账号 3 -> 账号 4
插件接管之后,会变成:
按 weekly reset time / monthly reset time 重新排序后的账号顺序
换句话说,它不是随机轮换账号,而是根据 Codex 额度真实的 reset time 来安排使用顺序。
使用前注意
先确保你的 CPA 已经升级到 v7.2.1 或更高版本。
另外,记得用 CPA 自带的 Management Center(地址一般是 http://localhost:8317/management.html)。我不太确定 CPA Manager Plus 现在有没有支持插件中心,保险起见,建议直接打开 CPA 官方原生的管理界面。等官方合并成功之后,在插件商店里应该就能找到这款插件了。
灰度账号的处理
最近还冒出来一批灰度测试账号,这类账号比较特殊:它们只有 monthly reset time,没有 5 小时额度和周额度限制。
针对这种账号,插件给了两种处理方式,可以自己选:
- 优先使用这批账号;
- 或者把它们当备用账号,同样按 monthly reset time 一起参与排序。
具体怎么用,看自己的账号情况来定就行。
其他功能
插件还自带一个管理页面,能查看每个 Codex 账号的额度状态、排序结果和调度日志。
目前支持:
- 查看 5 小时额度、周额度、月额度
- 查看 reset credits 信息
- 查看当前账号排序
- 手动刷新额度
- 给账号设置别名、备注、标签和分组
- 中英文界面切换
小结
一句话总结:这个插件的核心就是让 CPA 在挑 Codex 账号的时候,别再死守固定的 ID 顺序,而是按额度真实的 reset time 来排。
有问题欢迎提 issue,也可以直接提 PR。要是觉得好用,别忘了点个 star 支持一下!
![]()
救命,AI写的文章我自己都看不下去。。。但自己又懒得写,就这样吧
