本地 Codex 网关:节点轮换转发 + 行为指纹降智检测 + BPS 分流垫片。
不修改系统代理,不影响你本地的 Clash;macOS 与 Windows 解压即用。
| 它会做 | 它不会做 |
|---|---|
| 把 Codex 请求经本地出口原样转发到官方后端 | 不改你的系统代理 / 不动 Clash |
| 出口挂了自动换节点重试 | 不注入、不伪造、不玩凭据窗口 |
| BPS 垫片按模型分流:astra / sol 走 Excel 后端,其余回落到 serve 转发 | 日常转发不消耗额外额度 |
| 后台用行为指纹验真身(是否被降智),通知你 | — |
上游按(账号,出口,分钟)裁决 serving 模型,且
served字段会撒谎。本工具不追凭据注入,只做透明转发,再用行为归因给出最终裁决。
项目分两层,代理层必需,垫片层按需:
┌─ astra / sol ──▶ bps.openai.com(Excel 后端)
Codex ─▶ bps-shim ─────┤
(:17852) └─ 其它模型 ─────▶ ccodex-rotate (:17850) ─▶ 转发出口 (:17890) ─▶ chatgpt.com
│
└─ 降智检测:定期发 3 道随机数挑战做行为指纹归因
- 代理层 (ccodex-rotate):出口轮换、自动重试、降智检测、图形面板。必需。
- 垫片层 (bps-shim):把 Codex 请求按模型分流,astra / sol 直连 Excel 后端,其余走代理层。按需,可完全不用。
不用垫片时,Codex 直连代理层即可:
Codex ─▶ ccodex-rotate (:17850) ─▶ 转发出口 (:17890) ─▶ chatgpt.com
1. 下载解压 → 2. 双击启动 → 3. 打开面板 → 4. 导入节点 → 5. 重启 Codex,发消息
| 步骤 | 平台 | 操作 |
|---|---|---|
| 1. 下载 | 全部 | 到 Releases 下载对应压缩包 |
| 2. 启动 | macOS | 双击 start.command |
| 2. 启动 | Windows | 双击 start.cmd |
| 3. 面板 | 全部 | 自动打开 **http://127.0.0.1:17850/panel**(没节点也能进,先导入) |
| 4. 导入 | 全部 | 面板「订阅管理」粘贴订阅或节点链接(见下) |
| 5. 使用 | 全部 | 重启 Codex 应用 → 新建会话 → 发一条消息 |
各平台文件:
| 平台 | 文件 |
|---|---|
| Apple 芯片 Mac | ccodex-rotate-*-darwin-arm64.zip |
| Intel Mac | ccodex-rotate-*-darwin-amd64.zip |
| Windows x64 | ccodex-rotate-*-windows-amd64.zip |
| Windows ARM | ccodex-rotate-*-windows-arm64.zip |
首次打开面板会自动弹出三步教程,关掉后可在右上角「使用教程」再看。 想启用 BPS 分流,接着看下一节。
仓库 tools/bps-shim.py 把 Codex 的 responses 请求按模型分流,对客户端表现为一个普通 provider。
| 模型 | 去向 |
|---|---|
gpt-6-astra、gpt-5.6-sol(bps_models) |
直连 bps.openai.com(Excel 后端) |
| 其它模型 | 回落到 fallback_url,即代理层 serve 转发 |
-
启动垫片(需 Python 3,代理层建议同时开着):
python3 tools/bps-shim.py # 默认监听 127.0.0.1:17852 -
打开垫片面板:http://127.0.0.1:17852/ ,输入 token(或点设备登录走 OAuth),在面板里存好配置。
-
切换 Codex 到垫片:点垫片面板的开关,它会把 Codex 指向
bps(先快照原配置,关掉即还原)。也可手填~/.codex/config.toml:[model_providers.bps] name = "bps_excel" base_url = "http://127.0.0.1:17852/v1" wire_api = "responses" requires_openai_auth = true experimental_bearer_token = "BPS_MANAGED"
然后确保
model_provider = "bps",重启 Codex 生效。
配置文件 ~/.bps-shim/config.json,也可在垫片面板改:
| 项 | 默认 | 说明 |
|---|---|---|
default_model |
gpt-5.6-sol |
缺省模型 |
default_effort |
空 | flat reasoning_effort |
upstream_proxy |
http://127.0.0.1:17890 |
直连上游时经转发出口 |
fallback_url |
http://127.0.0.1:17850/backend-api/codex/responses |
非 BPS 模型的回落地址 |
bps_models |
["gpt-6-astra","gpt-5.6-sol"] |
走 Excel 后端的模型白名单 |
- 上游静默超 25 秒时发 SSE 心跳保活,长思考轮次不再被掐线。
- 上游无响应头时回诚实
502,不制造空200重连风暴。 - 对 BPS 模型附带画像头与
model_selection等转发约定;fallback 侧纯透传并读取本地账号凭证。
注意:脚本内路径(~/.bps-shim、~/.codex、token 文件)为作者环境硬编码,使用前需自行调整。垫片层与代理层相互独立。
打开 http://127.0.0.1:17850/panel。分页如下:
| 页 | 作用 | 关键按钮 |
|---|---|---|
| 运行概览 | 状态、出口、配额 | 换一个节点、恢复自动、Astra 提醒 |
| 降智检测 | 指纹检测开关 / 频率 / 记录 | 检测开关、保存频率、立即检测 |
| 订阅管理 | 增删订阅与节点 | 添加订阅、添加节点 |
| 节点列表 | 节点与健康状态 | 用于转发(固定该节点为出口) |
| 运行日志 | 时间 / 请求模型 / 实际模型 / 状态 / 节点 / 耗时 / 配额 | — |
节点状态徽标:
最近模型匹配:见过它 serving 正确最近模型不匹配:它 serving 错过(降智)未测:还没见过已标记可用:历史请求成功过,不代表持有凭据
面板「订阅管理」:
- 「订阅链接」框粘贴订阅地址 → 添加订阅
- 「自定义节点链接」框粘贴分享链接(
ss://vmess://vless://trojan://hysteria2://等)→ 添加节点
添加后即时生效,稍等片刻节点列表就会出现。
served 会撒谎时,用行为归因验真身:发 3 道随机数挑战,按
ModelTrace(MIT,指纹库已内置并署名)的数字指纹归因到 16 个模型;mismatch 即判降智并通知。
- 默认关闭,每轮消耗 3 次完整生成,按需开启。
- 面板可设频率(秒,≥ 60,默认 1800)、立即检测、查看上次结论与记录。
- mismatch 触发桌面 + 浏览器通知(30 分钟冷却);记录保留最近 50 轮。
- 归因算法与上游 Python 版逐位比对一致(Hellinger + 有序块特征,softmax 校准温度)。
502 一般是转发出口这一次没连上(节点掉线 / 超时)。
- 偶发 502:忽略即可,工具会自动换节点重试(默认最多 4 次)。
- 持续 502:面板点换一个节点;或在节点表对健康节点点用于转发;若之前固定过出口,点恢复自动。
- 某订阅大量节点不可用:到订阅管理清掉坏订阅,只留可达的。
- 生成中途断流(回复到一半断开):工具会标记该节点失败并自动切换,再发一条即可。
- 想更抗超时:调大配置里的
timeout_seconds(默认 120)与max_retries(默认 4)。
| 平台 | 路径 |
|---|---|
| macOS | ~/.ccodex-rotate/config.json |
| Windows | %USERPROFILE%\.ccodex-rotate\config.json |
常用项(可复制 config.example.json 作模板):
| 项 | 说明 |
|---|---|
subscriptions / nodes / proxies |
出口来源(订阅 / 分享链接 / 显式代理) |
listen |
本地反向代理地址(默认 127.0.0.1:17850) |
mixed_port / controller_port |
转发 17890 / 控制 17891 |
probe_model |
行为检测默认模型(默认 gpt-6-astra) |
trace_enabled / trace_interval_seconds / trace_model |
指纹检测开关 / 频率秒 / 检测模型(默认关 / 1800 / 跟随 probe_model) |
notify_enabled |
降智检出通知(默认 true) |
panel_password / panel_listen |
面板密码 / 管理端口分离(默认空,单端口无密码) |
max_retries / timeout_seconds |
失败重试次数 / 响应头超时秒 |
历史版本遗留的采集 / 注入 / 猎手配置项(
inject_state、state_lengths、collect_*、hunt_*、cookie_*、cred_*)已失效,会被忽略,可删可不删。
主程序同时提供 CLI,服务与面板也可完全用命令管理:
ccodex-rotate init # 创建默认配置
ccodex-rotate sub add <url...> # 添加订阅
ccodex-rotate node add <link...> # 添加节点分享链接
ccodex-rotate serve # 启动(Ctrl+C 停止并还原 Codex 配置)
ccodex-rotate collect # 跑一轮行为检测
ccodex-rotate status / nodes # 查看状态 / 节点
ccodex-rotate fetch-core # 下载 mihomo 内核(包内已内置,一般不需要)
ccodex-rotate restore # 还原 Codex 配置
python3 tools/bps-shim.py # 启动 BPS 分流垫片(默认 127.0.0.1:17852)./build.sh # macOS/Linux,产物在 dist/
build.bat # Windows- 行为检测每轮消耗 3 次完整生成,按需开启;日常转发不消耗额外额度。
- 上游 verdict 按(账号,出口,分钟)轮转;
served不可全信,行为归因是最终裁决。 - 启动窗口 Ctrl+C 退出会自动还原 Codex 配置;不修改系统代理与本地 Clash。
- 本工具与 OpenAI、Mihomo、ModelTrace 无隶属关系;mihomo 内核见
LICENSE.mihomo,指纹库来自 ModelTrace(MIT)。