写了一个CPA的插件:Codex调度器

最近我写了一个 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 支持一下!

:yaoming:
救命,AI写的文章我自己都看不下去。。。但自己又懒得写,就这样吧

17 个赞

@xxxyyy

1 个赞

牛哇,下次试试

顶顶大佬

插件被官方因为safety boundary打回来了。正在修 :sweat_smile:

哈哈哈哈~
我也基于这个写了一个,然后还给帐号保留了一定的额度,避免一次把帐号打穿
可惜,现在已经死了2个号了 :cry:

1 个赞

可以可以!我最开始也是自用的
后来 @xxxyyy 说好多人都觉得cpa的fill first逻辑很蛋疼,我就调整了一下准备上架商店了 :yaoming:

暂时还没做每个账号留个底的功能,或许我们可以结合一下 :joy: 燃烧吧token

按现在这种封号情况来看,我感觉是徒劳的 :cry:
只要查你IP下面多个帐号,秒封

避免封号/401先不说,也能更好的最大化使用token不是吗 :troll:
(我目前是还没被封过一个号)

我自己也做了一个在之前谭友那个出来之前弄的,直接开关oath做到管理用哪个账号,逻辑上差不多。最后谭友的出来我就把自己的删了。然而之后我再加留5%甚至10%都做不到了不知道为啥。后来也懒得弄了401就重新登录也没出过问题

坐等上架

用这个插件的话还会尊重优先级吗 还是就完全由这个插件进行调度了

现在打击小号太厉害了,codex一用手机就被登出。手机一用codex就401,oauth还要手机号验证。不想玩了,退坑。

泥潭cpa号池的行为和国内api中转站的行为一样,肯定是各家重点打击对象。

研究了一下vibe coding,挣不到钱,我以为这个市场还会有几年前那种写一个网站写一个app就给几千刀的活,没找到,vibe coding只能肥openai和人类学,只能提升效率,不能开源赚钱:cry:

早废了,完全不带伪装,明着请求头里告诉Openai:我在反代,快封我号 了都
中转站伪装自己还在维护号池的套套罢了,用的时候嘎嘎出水

我一直用session affinity从未401过? 是我用的不够吗

routing:
  strategy: "round-robin"
  session-affinity: true
  session-affinity-ttl: "1h"

最近cpa过oauth每个都要我加手机号,这个手机号认证有办法绕过吗

别担心,还有相似指纹连坐同请求头连坐
账号频繁请求会跳KYC,多次跳过KYC还会触发模型降级,GPT-5.4