一个围绕 OpenAI / ChatGPT 账号资产管理构建的本地控制台,提供邮箱资源管理、新号注册、授权巡检、AuthSession 获取、同步导入与 sub2api 同步等能力。
当前仓库采用前后端分离架构:
FastAPI + SQLite + Alembic + Vue 3 / Ant Design Vue,并通过独立 Worker 执行注册、巡检、同步等异步任务。
这个项目主要解决的是一套账号资产的可视化管理问题,而不只是“跑脚本”:
- 把零散的邮箱、授权、代理、同步目标统一放到一个后台里管理
- 把注册、巡检、刷新授权、同步导入这些高频动作收敛成任务中心
- 把 OpenAI 账号与兼容文件、sub2api 导出/导入链路打通
- 把 SQLite、本地文件、Worker、前端操作台串成一套可持续维护的系统
如果你之前主要依赖单文件脚本、临时文本文件和手工同步,这个项目的价值就在于把这些流程变成一套可追踪、可回看、可配置的控制台。
以下截图来自当前真实运行中的页面,而不是静态示意图。
- 邮箱账号管理
- 支持邮箱资源入库、状态管理、标签管理、失败原因追踪
- 支持查看邮箱邮件列表与邮件详情
- OpenAI 账号管理
- 支持导入历史账号、巡检授权有效性、刷新授权、重新同步到 sub2api
- 支持拉取并缓存
AuthSession完整 JSON
- 注册中心
- 支持按任务下发批量注册
- 支持代理节点、同步目标、默认配置联动
- 支持失败分类、重试策略与任务明细追踪
- 同步导入
- 支持兼容历史
accounts.txt/ token 文件导入 - 支持把授权资产同步到 sub2api
- 支持兼容历史
- 系统配置中心
- 支持默认任务参数、时区、导出/导入策略等集中配置
- 任务中心 / Worker
- 所有注册、巡检、导入、同步类动作都走任务体系
- 便于审计、失败排查和异步执行
适合:
- 需要长期维护一批 OpenAI 账号资产的人
- 需要把邮箱、授权、代理、同步目标统一管理的人
- 希望把原本脚本化流程升级为可视化后台的人
不适合:
- 只想执行一次性临时脚本的人
- 不需要前后端控制台、任务中心、状态回写的人
- 不愿意维护本地 Python / Node / SQLite 环境的人
- 后端:FastAPI、SQLAlchemy、SQLite、Alembic
- 前端:Vue 3、Vben Admin、Ant Design Vue、Vitest
- 任务执行:独立 Worker 进程
- 包管理:
uv、pnpm
- Python 3.11+
- Node.js 20+
uvpnpm
在项目根目录执行:
python run_dev.py这个脚本会自动:
- 检查并初始化后端依赖
- 检查并初始化前端依赖
- 同时启动后端 API、Worker、前端开发服务
- 在你按
Ctrl+C时一次性关闭全部进程
启动后默认访问地址:
- 前端:
http://127.0.0.1:5666 - 后端:
http://127.0.0.1:8000
默认管理员账号:
- 用户名:
admin - 密码:
admin123456
如果你想分别控制三个进程,可以手动启动。
后端 API:
cd backend
cp .env.example .env
uv sync
uv run uvicorn app.main:app --reload --host 127.0.0.1 --port 8000Worker:
cd backend
uv run python -m app.worker.main前端:
cd frontend
COREPACK_ENABLE_STRICT=0 pnpm install
COREPACK_ENABLE_STRICT=0 pnpm -F @vben/web-antd dev- 在邮箱列表中维护邮箱账号、状态、标签和可用性
- 对 Outlook Graph 类型邮箱,可通过后台查看邮件列表与详情
- 在“注册中心”选择任务参数
- 绑定代理节点、同步目标、默认配置
- 交给 Worker 异步执行并在任务中心查看明细
- 在 OpenAI 账号列表发起授权巡检
- 对失效授权标记状态
- 对仍有效账号回填实际套餐信息,例如
free/plus
- 在 OpenAI 账号列表点击“获取 AuthSession”
- 成功后会展示完整 JSON,并缓存到数据库
- 再次查看时可直接读取缓存,也可以强制重新获取并覆盖
- 使用系统配置中的 sub2api 导出与自动导入设置
- 可以本地导出 bundle,也可以直接调用远端 sub2api 导入接口
.
├── backend/ # FastAPI 后端、数据库、Worker、业务模块
├── frontend/ # Vue 3 / Vben Admin 前端
├── .github/assets/ # README 使用的截图等静态资源
├── data/ # 本地运行数据(示例、导入源等)
├── tokens/ # 兼容历史 token / accounts 输出目录
├── run_dev.py # 一键启动前后端 + Worker
├── start.py # 旧式交互启动助手 / CLI 辅助入口
└── README.md
补充说明:
backend/app/是当前主业务代码目录- 根目录历史脚本已逐步收敛,后台主逻辑不再继续堆积到单文件脚本里
start.py更偏向辅助入口;日常开发建议直接使用run_dev.py
推荐优先使用以下配置文件:
- 根目录
.env.example- 主要保留历史兼容说明和部分兜底配置
- 后端
backend/.env.example- 当前后端实际使用的配置模板
关键配置包括:
- SQLite 数据库路径
- 前端源地址
- 默认管理员账号
- token 输出目录
- sub2api 导出与自动导入配置
当前数据库管理方式已经不是“直接带一个现成的 app.db 发布”,而是基于 Alembic 自动初始化。
首次启动后端时:
- 如果
backend/data/app.db不存在,会自动执行Alembic upgrade head创建数据库 - 如果数据库已存在且已经纳入 Alembic 管理,会自动执行迁移检查
- 如果数据库已存在但没有
alembic_version,系统会先对比当前 ORM 与现有表结构- 结构一致:自动
stamp head,把旧库纳入 Alembic 管理 - 结构不一致:拒绝强行接管,并抛出明确错误,避免误损数据
- 结构一致:自动
相关文件:
其中 backend/schema.sql 是当前迁移头版本导出的 DDL 快照,不是手写 SQL。重新导出命令:
cd backend
uv run python -m app.db.schema_export schema.sql如果你打算把项目开源,推荐这样处理:
- 不提交本地 SQLite 数据文件
- 例如
backend/data/app.db - 以及对应的
-wal、-shm文件
- 例如
- 保留 Alembic 迁移与
backend/schema.sql - 保留
.env.example和backend/.env.example - 让使用者首次启动时自动初始化数据库
这样做的好处是:
- 不会把你的本地数据、账号资产、历史任务一并公开出去
- 新用户拿到仓库后仍然能按当前表结构正常初始化
大部分注册、巡检、同步、刷新授权等动作都依赖 Worker 执行。
如果 Worker 没启动,任务会卡住,或者在部分页面里被前置拦截并提示 Worker 不在线。
项目里涉及 OpenAI / ChatGPT 相关链路时,通常需要稳定代理。当前系统已经逐步把“手填代理 URL”收敛为“选择已有代理节点”的方式,更适合长期维护。
这是为了兼容旧流程和旧资产格式,方便从脚本时代平滑迁移到后台化管理。
但日常开发和使用,优先看当前的前后端控制台与 backend/app/ 新架构。
可以。只要迁移文件和配置模板还在,首次启动后端时会自动初始化数据库。
如果你主要关注后端运行、迁移、CLI 与接口细节,请继续看:
请你在自己的环境中评估并遵守以下约束:
- OpenAI / ChatGPT 相关服务条款
- 邮箱服务商和代理服务商的使用规则
- 你所在地区的法律法规与数据合规要求
这个仓库更适合作为本地自管系统、研发工具和流程管理后台来理解与使用。


