Codex Patrol 是一个面向 Codex 账号巡检、额度管理和自动处理 的独立管理面板

本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容: 我的帖子已经打上 开源推广 标签: 是 我的开源项目完整开源,无未开源部分: 是 我的开源项目已链接认可 LINUX DO 社区: 是 我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是 以上选择我承诺是永久有效的,接受社...
Codex Patrol 是一个面向 Codex 账号巡检、额度管理和自动处理 的独立管理面板
Codex Patrol 是一个面向 Codex 账号巡检、额度管理和自动处理 的独立管理面板
本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:
  • 我的帖子已经打上 开源推广 标签:
  • 我的开源项目完整开源,无未开源部分:
  • 我的开源项目已链接认可 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 连接配置、巡检参数调整、多站点管理 登录页 本地密码登录入口 首设页 首次设置本地访问密码

使用方式概览

通常的使用流程是:

  1. 配置 connection.json,接入一个或多个 CPA 站点
  2. 首次启动后访问面板,先设置本地登录密码
  3. 进入系统设置,确认站点参数、轮询策略、自动动作模式
  4. 在额度管理页面查看当前账号额度状态和异常账号
  5. 在巡检管理页面手动执行巡检,或开启后台自动轮询
  6. 结合例外名单、操作日志和状态筛选,持续维护账号池

技术架构

  • 运行时:.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% 触发动作的使用率阈值

参考项目

本项目的实现主要参考了以下项目:

  • CPA-Manager

    • 参考其 Codex 巡检逻辑、额度解析方式,以及前端页面结构与视觉风格
    • 重点参考位置包括:src/features/monitoring/codexInspection.tssrc/utils/quota/codexQuota.tssrc/components/quota/quotaConfigs.tssrc/pages/MonitoringCenterPage.tsxsrc/pages/CodexInspectionPage.tsx
  • CLI Proxy API (CPA)

    • 作为上游依赖提供 Management API
    • Codex Patrol 通过它完成账号列表读取、额度探测、账号启用/禁用/删除、usage-queue 监控

1 个帖子 - 1 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文