- 我的帖子已经打上 开源推广 标签: 是
- 我的开源项目完整开源,无未开源部分: 是
- 我的开源项目已链接认可 LINUX DO 社区: 是
- 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
- 以上选择我承诺是永久有效的,接受社区和佬友监督: 是
以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出
Codex Patrol
Codex Patrol 是一个面向 Codex 账号巡检、额度管理和自动处理 的独立管理面板。
它作为 CPA-Manager 的配套子项目存在,但运行上是独立的:通过 CPA Management API 获取账号列表、探测 Codex 额度、执行启用/禁用/删除动作,并提供一套专门针对 Codex 账号维护场景的轻量后台界面。
基于 .NET 10 Native AOT 构建,编译为单文件可执行程序,无外部运行时依赖,所有运行态数据保存在内存中,无需数据库。
项目仓库:https://github.com/kaixin1995/CodexPatrol
这个项目是做什么的
如果你手里有一批通过 CPA 管理的 Codex 账号,这个项目主要解决的是下面这些问题:
- 哪些账号已经失效,需要删除
- 哪些账号周额度已经接近耗尽,需要临时禁用
- 哪些账号之前被禁用了,但额度已经恢复,可以重新启用
- 哪些账号当前额度异常、刷新失败或上游返回错误,需要单独排查
- 多个站点下的 Codex 账号,如何统一查看、统一巡检、统一处理
换句话说,Codex Patrol 不是通用管理面板,而是一个更偏向 运维巡检 的专项工具。
适用场景
- 手里维护多组 Codex 账号,需要定期清理失效号
- 需要根据周额度使用率自动禁用高占用账号
- 想把账号额度、异常状态、启用状态集中展示
- 有多个 CPA 站点,希望按站点隔离管理
- 不希望引入数据库,只想要一个可执行文件直接运行
与其他项目的关系
项目 关系 作用 CLI Proxy API (CPA) 上游依赖 提供 Management API,Codex Patrol 通过它读取账号、探测额度、执行账号动作 CPA-Manager 参考来源 提供 Codex 巡检逻辑、额度解析思路,以及前端页面结构和视觉风格参考 Codex Patrol 当前项目 专注于 Codex 账号巡检、额度管理、自动动作和运行态监控版本兼容说明:当前项目使用并验证的上游版本为 CLI Proxy API v7.1.19。
为避免旧版本接口行为差异导致兼容性问题,建议优先使用该版本,不要直接按更旧版本假定兼容。
页面预览
额度管理
巡检管理
系统设置
操作日志
核心能力
- 巡检:批量探测 Codex 账号是否失效、额度是否超限、是否可恢复
- 自动处理:根据策略自动执行禁用、删除、恢复启用
- 额度管理:集中展示周额度、5 小时额度、代码审查额度等窗口
- 异常排查:快速筛出错误账号,支持单账号真实刷新
- 多站点隔离:不同 CPA 站点分别保存配置、账号、额度和例外名单
- 运行时可视化:查看实时进度、最近日志、自动轮询状态、活跃账号状态
功能概览
1. 账号巡检
对 Codex 账号执行健康探测,根据上游返回结果自动决策后续动作:
- 失效检测:账号返回
401时标记为失效,建议删除 - 额度超限检测:周额度达到阈值(默认 95%)时,建议禁用该账号
- 恢复检测:已禁用账号的周额度恢复可用时,建议重新启用
- 5 小时额度:仅 5 小时额度达到阈值但周额度仍可用时,默认保留不处理
- 异常容错:请求异常时默认保留,不自动处理
2. 自动处理策略
巡检完成后,可根据配置的策略自动执行动作:
模式 行为none
仅巡检,不执行任何动作
disable
对失效/超限账号统一执行禁用
delete
对失效账号执行删除,超限账号执行禁用
启用恢复
可单独开启,自动重新启用额度已恢复且当前被禁用的账号
3. 自动轮询
后台服务按可配置的间隔自动执行巡检:
- 可配置轮询间隔(默认 10 分钟,最小 5 分钟)
- 可配置探测并发数与批次间延迟
- 可配置操作执行并发数
- 可配置请求超时与失败重试次数
- 内置随机抖动(jitter),避免固定整点齐发
- 防重入:上一轮未结束时,不开启下一轮
4. 额度管理
独立页面展示每个 Codex 账号的额度使用情况:
- 周额度使用率与重置时间
- 5 小时额度使用率与重置时间
- 代码审查额度等其他限额窗口
- 套餐类型识别(Free / Plus / Team / Pro / ProLite)
- 兼容免费号仅有周额度的情况
- 支持按状态筛选:显示全部、仅禁用、仅启用、仅错误
- 支持手动刷新全部或单个账号额度
- 单个账号的"刷新额度"按钮默认走真实请求,不复用缓存
- 巡检完成后自动刷新额度缓存
5. 例外名单
可将指定账号加入例外名单,排除巡检:
- 例外账号不参与自动巡检
- 例外账号不参与批量手动巡检(可手动选择包含例外)
- 额度页面仍可查看例外账号的额度
- 例外名单持久化到本地配置文件,重启后保留
6. 多站点管理
支持同时管理多个 CPA 实例:
- 每个站点独立配置连接地址、管理密钥和巡检参数
- 每个站点独立维护例外名单和额度数据
- 仪表盘可切换查看不同站点的状态
7. 使用活动监控
后台持续拉取 CPA usage-queue,标记活跃账号:
- 实时追踪哪些账号最近有 API 调用
- 仪表盘展示账号活跃状态
- 辅助判断账号是否仍在使用
8. 登录保护
首次使用时设置密码,后续访问需登录认证:
- 密码以哈希形式存储在本地配置中
- 未设置密码时自动引导到首次设置页面
- API 接口同样受认证保护
9. 操作日志
内存中记录最近操作日志,可在页面中查看:
- 巡检探测记录
- 账号动作执行记录(禁用/删除/启用)
- 额度刷新记录
- 系统异常记录
页面导航
页面 功能 仪表盘 站点概览、账号状态总览、活跃账号监控 巡检管理 手动/自动巡检控制、巡检进度、结果查看 额度管理 所有账号额度详情、状态筛选、手动刷新 例外名单 添加/移除例外账号 操作日志 查看最近巡检和动作操作记录 系统设置 CPA 连接配置、巡检参数调整、多站点管理 登录页 本地密码登录入口 首设页 首次设置本地访问密码使用方式概览
通常的使用流程是:
- 配置
connection.json,接入一个或多个 CPA 站点 - 首次启动后访问面板,先设置本地登录密码
- 进入系统设置,确认站点参数、轮询策略、自动动作模式
- 在额度管理页面查看当前账号额度状态和异常账号
- 在巡检管理页面手动执行巡检,或开启后台自动轮询
- 结合例外名单、操作日志和状态筛选,持续维护账号池
技术架构
- 运行时:.NET 10,Native AOT 编译
- 后端:ASP.NET Core Minimal API
- 前端:嵌入式静态 HTML/CSS/JS
- 状态存储:进程内内存(
ConcurrentDictionary) - 持久化:
patrol-config.json(例外名单、站点配置)、connection.json(连接信息)、appsettings.json(业务参数)、quota-cache.json(额度缓存) - 序列化:
System.Text.Json+ Source Generator(AOT 兼容,不依赖反射)
快速开始
前置要求
- 已部署 CLI Proxy API (CPA) v7.1.19,并启用 Management API
- 文档与当前实现均以 v7.1.19 为兼容基线;如果使用更旧版本,可能出现接口字段或行为不一致的问题
配置
在可执行文件同目录下创建 connection.json:
{
"sites": [
{
"siteId": "default",
"name": "我的站点",
"enabled": true,
"cpaBaseUrl": "http://localhost:8317",
"managementKey": "你的管理密钥",
"provider": "codex"
}
]
}
也可通过环境变量 CPA_BASE_URL / CPA_MANAGEMENT_KEY 覆盖连接信息。
运行
# 开发模式
dotnet run --project src/CodexPatrol
# 发布(Native AOT 单文件)
dotnet publish src/CodexPatrol -c Release -r win-x64 -o ./publish
启动后访问 http://localhost:22014,首次使用时设置登录密码。
默认配置
参数 默认值 说明 监听地址0.0.0.0:22014
Web 服务监听地址
轮询间隔
10 分钟
自动巡检间隔
随机抖动
1~3 分钟
避免固定整点齐发
探测并发
3
同时探测的账号数
操作并发
4
同时执行动作的并发数
请求超时
15 秒
单次请求超时
重试次数
0
请求失败重试
自动动作
disable
自动禁用超限账号
额度阈值
95%
触发动作的使用率阈值
参考项目
本项目的实现主要参考了以下项目:
-
- 参考其 Codex 巡检逻辑、额度解析方式,以及前端页面结构与视觉风格
- 重点参考位置包括:
src/features/monitoring/codexInspection.ts、src/utils/quota/codexQuota.ts、src/components/quota/quotaConfigs.ts、src/pages/MonitoringCenterPage.tsx、src/pages/CodexInspectionPage.tsx
-
- 作为上游依赖提供 Management API
- Codex Patrol 通过它完成账号列表读取、额度探测、账号启用/禁用/删除、usage-queue 监控
1 个帖子 - 1 位参与者