[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-1327":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":13,"lastSyncTime":29,"discoverSource":30},1327,"AutoTeam-F","ZRainbow1275\u002FAutoTeam-F","ZRainbow1275","更好的Autoteam，实现前端到后端全方位的加强，同时可以批量获取免费号",null,"Python",357,116,2,1,0,6,11,95,18,6.2,"MIT License",false,"main",true,[],"2026-06-12 02:00:26","\u003Cdiv align=\"center\">\n\n# AutoTeam-F\n\n**面向 ChatGPT Team 的账号轮转与认证同步工具 · Fix + Free 增强版**\n\n基于 [cnitlrt\u002FAutoTeam](https:\u002F\u002Fgithub.com\u002Fcnitlrt\u002FAutoTeam) 的 fork，修掉若干阻塞性 bug，新增 **批量生产免费号（Personal）** 能力，改善操作体验。\n\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.10+-3776AB?style=for-the-badge&logo=python&logoColor=white)](https:\u002F\u002Fpython.org)\n[![Playwright](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPlaywright-Chromium-2EAD33?style=for-the-badge&logo=playwright&logoColor=white)](https:\u002F\u002Fplaywright.dev)\n[![uv](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002Fuv-Package_Manager-DE5FE9?style=for-the-badge)](https:\u002F\u002Fdocs.astral.sh\u002Fuv\u002F)\n[![FastAPI](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FFastAPI-API_&_Web-009688?style=for-the-badge&logo=fastapi&logoColor=white)](https:\u002F\u002Ffastapi.tiangolo.com)\n[![Vue](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FVue_3-Frontend-4FC08D?style=for-the-badge&logo=vue.js&logoColor=white)](https:\u002F\u002Fvuejs.org)\n[![Docker](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FDocker-Ready-2496ED?style=for-the-badge&logo=docker&logoColor=white)](https:\u002F\u002Fwww.docker.com\u002F)\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow?style=for-the-badge)](LICENSE)\n\n\u003C\u002Fdiv>\n\n---\n\n## 致谢\n\n- 💚 感谢 [cnitlrt\u002FAutoTeam](https:\u002F\u002Fgithub.com\u002Fcnitlrt\u002FAutoTeam) 的前置工作 —— 没有原作者搭好的轮转\u002F同步骨架，就没有这个 fork。\n- 💙 感谢 [LinuxDo](https:\u002F\u002Flinux.do\u002F) 社区的支持 —— **\"学 AI，上 L 站\"**。\n\n`AutoTeam-F` 的 **F = Fix + Free**。\n\n---\n\n> **免责声明**：本项目仅供学习和研究用途。使用本工具可能违反 OpenAI 的服务条款。使用者需自行承担账号封禁、IP 限制等后果。\n\n> **⚠️ 重要更新（2026-04-30）：免费号自动注册路径当前已被 OpenAI 后端阻断**\n>\n> Round 11 真号自验证实：OpenAI 已调整 personal\u002Ffree workspace 的选择与 plan 下发逻辑。旧路径\"邀请进 Team → 主号 kick → personal OAuth → 拿 `plan_type=free`\"在 5 次外层重试 + 主动 POST `\u002Fapi\u002Faccounts\u002Fworkspace\u002Fselect` + session_token 注入跳过 \u002Flog-in 三层加固后**仍无法稳定拿到 free plan**：bundle 总是回落到 `plan_type=team`，`default_workspace_id` 也不再切回 Personal。\n>\n> 影响：下表标 🆕 的 **🆓 生产免费号（Personal）** 整条链路当前**事实失效**，点击\"生成免费号\"会跑完整套流程但最终 5 次全部 plan_drift，账号被标 STANDBY 留池（无 token 损失）。**Team 子号注册 \u002F 轮转 \u002F 巡检 \u002F OAuth 等其他全部能力不受影响。**\n>\n> 底层钩子保留：`oauth_workspace.py` \u002F `_run_post_register_oauth` 5 次重试 + session_token 注入 + plan_drift 累计的代码全部留底，等 OpenAI 再次调整或社区给出新绕过路径时直接复用。详见 `CHANGELOG.md` 与 `prompts\u002F0426\u002Fverify\u002Fround11-review-report.md`。\n\n## 特性\n\n| | 功能 | 描述 |\n|---|---|---|\n| 📧 | **自动注册** | 临时邮箱(`cf_temp_email` 或 `maillab` 双后端,SetupPage 4 步状态机指引切换 + 协议指纹嗅探防错配)+ Playwright 自动注册 |\n| 🆓 | **生产免费号** 🆕 ⚠️暂不可用 | 批量注册 → 主号踢出 → Personal OAuth，一条龙（**2026-04-30 起被 OpenAI workspace 路径变更阻断**，详见上方警告） |\n| 🔐 | **Codex OAuth** | 自动登录 Codex，Team \u002F Personal 双模式 |\n| 🔑 | **手动 OAuth 导入** | localhost 自动回调，失败可手动粘贴 |\n| 🔄 | **智能轮转** | 额度不足自动移出，旧号恢复后优先复用 |\n| ☁️ | **CPA 双向同步** | 本地 active 上传到 CPA，也可反向导入 |\n| 🖥️ | **Web 面板** | 仪表盘、同步中心、OAuth 登录、任务历史、日志、设置 |\n| 🛑 | **软停止任务** 🆕 | 随时中止跑到一半的批次，协作式退出不留半成品 |\n| 📊 | **失败分类** 🆕 | `register_failures.json` 持久化各类失败（手机号\u002F重复\u002F踢人\u002FOAuth 等） |\n| 🔧 | **自诊断** 🆕 | `\u002Fapi\u002Fadmin\u002Fdiagnose` + `\u002Fapi\u002Fadmin\u002Ffix-account-id` 一键定位 401 |\n| 🗑️ | **批量删除** 🆕 | Web 面板多选 + 一次性 kick + 删邮箱 + sync CPA |\n| 🔍 | **自动巡检** | 后台定时检查额度并触发轮转 |\n| 📤 | **导出认证** | 一键导出 Codex CLI 格式 auth.json |\n| 🐳 | **Docker** | 支持容器部署与数据持久化 |\n\n> 🆕 = 相对原仓库新增。其余承袭自 [cnitlrt\u002FAutoTeam](https:\u002F\u002Fgithub.com\u002Fcnitlrt\u002FAutoTeam)。\n\n**首次使用建议直接看**：[从零开始部署教程](docs\u002Fgetting-started.md)\n\n## 快速开始\n\n### 安装\n\n```bash\n# Linux\nbash setup.sh\n# 或手动: uv sync && uv run playwright install chromium\n\n# Windows \u002F macOS\nuv sync\nuv run playwright install chromium\n```\n\n支持 Linux、Windows、macOS。Windows\u002FmacOS 不需要 xvfb。\n\n### 启动\n\n```bash\n# Web 面板 + API（推荐）\nuv run autoteam api\n\n# 或直接轮转\nuv run autoteam rotate\n```\n\n首次启动会自动引导配置 临时邮箱后端(`cf_temp_email` \u002F `maillab` 双后端,**强烈推荐显式声明 `MAIL_PROVIDER`**)、CPA、API Key,并验证连通性。两种后端的差异见 [配置说明 · Mail Provider 切换](docs\u002Fconfiguration.md#mail-provider-切换)。\n\n> **推荐顺序**:`maillab\u002Fcloud-mail`(国内一键部署、社区活跃)→ `dreamhunter2333\u002Fcloudflare_temp_email`(经典 Cloudflare Workers 实现)。两者功能等价,根据部署条件选用即可。\n>\n> ⚠️ 如果你之前用的是上游 [cnitlrt\u002FAutoTeam](https:\u002F\u002Fgithub.com\u002Fcnitlrt\u002FAutoTeam) 的 \"cloudmail\",那其实是 [`maillab\u002Fcloud-mail`](https:\u002F\u002Fgithub.com\u002Fmaillab\u002Fcloud-mail)。本 fork 把它独立成 `MAIL_PROVIDER=maillab` 后端,需要在 `.env` 里显式设置(不再是默认)。详见 [docs\u002Fconfiguration.md#mail-provider-切换](docs\u002Fconfiguration.md#mail-provider-切换)。\n>\n> SetupPage \u002F Settings 提供 4 步状态机引导(provider → 服务器连接 → 域名归属 → 保存),通过 `\u002Fapi\u002Fmail-provider\u002Fprobe` 提前检测错配 \u002F 凭据 \u002F 域名归属;启动时还会做协议指纹嗅探,base_url 与 `MAIL_PROVIDER` 错配会**直接 abort**,避免\"登录成功 → 创建邮箱 401\"半成功假象([issue #1](https:\u002F\u002Fgithub.com\u002FZRainbow1275\u002FAutoTeam-F\u002Fissues\u002F1))。\n\n### Docker 部署\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FZRainbow1275\u002FAutoTeam-F.git && cd AutoTeam-F\nmkdir -p data && cp .env.example data\u002F.env\n# 编辑 data\u002F.env 填入配置（或启动后在 Web 页面配置）\ndocker compose up -d\n```\n\nLinux + Docker 访问宿主机服务，详见 [Docker 部署文档](docs\u002Fdocker.md)。\n\n### CLI 命令\n\n| 命令 | 说明 |\n|------|------|\n| `api` | 启动 Web 面板 + HTTP API（默认端口 8787） |\n| `rotate [N]` | 智能轮转，补满到 N 个（默认 5） |\n| `status` | 查看账号状态 |\n| `check` | 检查额度 |\n| `add` | 添加新账号 |\n| `manual-add` | 手动 OAuth 添加账号 |\n| `fill [N]` | 补满成员（Team 模式） |\n| `cleanup [N]` | 清理多余成员 |\n| `sync` | 同步认证文件到 CPA |\n| `pull-cpa` | 从 CPA 反向同步认证文件到本地 |\n| `admin-login` | 管理员登录 |\n\n> **生产免费号**通过 Web 面板的\"生成免费号\"按钮触发，对应 API：`POST \u002Fapi\u002Ftasks\u002Ffill { target: N, leave_workspace: true }`\n\n## Web 管理面板\n\n启动 `uv run autoteam api` 后访问 `http:\u002F\u002Flocalhost:8787`。\n\n| 页面 | 功能 |\n|------|------|\n| 📊 仪表盘 | 账号统计 + 状态表格 + 登录\u002F移出\u002F删除\u002F**批量删除** 🆕 |\n| 👥 Team 成员 | 全部 Team 成员（含外部成员） |\n| 🔁 账号池操作 | 轮转 \u002F 检查 \u002F 补满 \u002F 添加 \u002F **生成免费号** 🆕 \u002F 清理 |\n| 🔄 同步中心 | 同步账号、同步 CPA、拉取 CPA |\n| 🔐 OAuth 登录 | 生成认证链接；localhost 自动回调 + 手动粘贴兜底 |\n| 📜 任务历史 | 后台任务执行状态 + **实时停止** 🆕 |\n| 📋 日志 | 实时日志查看器 |\n| ⚙️ 设置 | 管理员登录 + 主号 Codex 同步 + 巡检配置 |\n\n## 修复了什么\n\n- **session_token 导入会存错 `account_id`** — 改以 `\u002Fbackend-api\u002Faccounts` 为权威来源 + `\u002Fsettings` 二次验证\n- **Codex OAuth \"Operation timed out\"** — Personal 模式下跳过 step-0 ChatGPT 预登录\n- **注册密码长度不足 12** — 密码生成器改为\"双词 + 3-4 位数字 + 符号\"，稳定 15-17 字符\n- **任务取消被静默吞掉** — `_run_task` 里 `reset()` 与 `task_id` 暴露顺序修正\n- **批量操作 300s 硬超时** — `_PlaywrightExecutor` 加 `run_with_timeout(timeout, func)`，按批次大小动态算\n- **Team fill 后面员数 401 未触发 fail-fast** — 连续 3 次 401\u002F403 直接中止，输出 body 片段而不是干等 180s\n- **邀请 seat 兜底失败时账号被静默丢失** 🆕 — `invite_member` POST\u002FPATCH 都加退避重试,PATCH 失败时保留 `usage_based`(codex-only) 席位,把 `seat_type` 落到 `accounts.json` 供下游差异化对待\n- **`cmd_check` 只扫 active,standby 永远没额度数据** 🆕 — `autoteam check --include-standby`(或 `POST \u002Fapi\u002Ftasks\u002Fcheck {include_standby:true}`)追加探测 standby 池,限速 1.5s + 24h 去重;401\u002F403 标记为 `auth_invalid`\n- **workspace 有席位但本地 auth 缺失的\"残废 \u002F 错位 \u002F ghost\"账号无人清理** 🆕 — `autoteam reconcile [--dry-run]`(或 `POST \u002Fapi\u002Fadmin\u002Freconcile?dry_run=1`)一键识别残废 \u002F 错位 \u002F 耗尽未抛弃 \u002F ghost,可通过 `RECONCILE_KICK_ORPHAN` \u002F `RECONCILE_KICK_GHOST` 控制是 KICK 还是打标记\n- **子号巡检在网络抖动 \u002F 5xx 时被错误标 auth_invalid → 整批号被踢** 🆕 — `check_codex_quota` 新增 `network_error` 分类(DNS \u002F Timeout \u002F SSL \u002F 5xx \u002F 429 \u002F 4xx 非 401\u002F403 \u002F JSON 解析失败 → 临时性故障),`_probe_standby_quota` 看到 `network_error` 不写 `last_quota_check_at`、不改 status,等下一轮立即重试,不再被 24h 去重屏蔽\n\n若你遇到 401 \"Must be part of this workspace\"，不用 logout 重登：\n\n```bash\nKEY=\"$(grep '^API_KEY' .env | cut -d= -f2)\"\ncurl -s -H \"Authorization: Bearer $KEY\" http:\u002F\u002Flocalhost:8787\u002Fapi\u002Fadmin\u002Fdiagnose | jq        # 看四个接口真实状态\ncurl -s -X POST -H \"Authorization: Bearer $KEY\" http:\u002F\u002Flocalhost:8787\u002Fapi\u002Fadmin\u002Ffix-account-id | jq  # 热修复\n```\n\n## 文档\n\n原仓库的文档在 `docs\u002F` 目录下，大部分仍然适用。\n\n| 文档 | 内容 |\n|------|------|\n| [从零开始部署](docs\u002Fgetting-started.md) | 完整首次部署教程 |\n| [配置说明](docs\u002Fconfiguration.md) | .env 配置项、管理员登录、认证文件格式 |\n| [Docker 部署](docs\u002Fdocker.md) | Docker Compose、数据持久化 |\n| [API 文档](docs\u002Fapi.md) | 全部 HTTP 端点、调用示例 |\n| [工作原理](docs\u002Farchitecture.md) | 轮转流程、状态机、项目结构、依赖 |\n| [常见问题](docs\u002Ftroubleshooting.md) | 安装\u002F登录\u002F轮转\u002FDocker\u002FWeb 面板问题 |\n\n## 适用场景\n\n- 需要维持固定数量的 Team 可用席位\n- 需要**批量生产免费号**并把 Codex 认证推到 CLIProxyAPI\n- 需要在 Web 面板里完成日常轮转、对账、OAuth 导入\n- 在原仓库踩到本文档「修复了什么」小节中的坑\n\n## 已知限制\n\n- **IP 风险** — VPS 的 IP 容易被 OpenAI\u002FCloudflare 标记，建议使用住宅代理\n- **并发限制** — 同一时间只允许一个 Playwright 操作\n- **验证码** — OpenAI 验证码有效期短，网络延迟可能导致过期\n- **软停止 ≠ 硬停止** — 点\"停止任务\"后，当前账号注册（~2 分钟）会跑完再退出，不中途打断浏览器\n- **Team 席位上限** — 免费号生产时，baseline + 本批新号 ≤ 4，超过会自动缩批\n\n更多详见 [常见问题](docs\u002Ftroubleshooting.md)\n\n## 友情链接\n\n- 原仓库 [cnitlrt\u002FAutoTeam](https:\u002F\u002Fgithub.com\u002Fcnitlrt\u002FAutoTeam)\n- 认证代理 [CLIProxyAPI](https:\u002F\u002Fgithub.com\u002Frouter-for-me\u002FCLIProxyAPI)\n\n感谢 **LinuxDo** 社区的支持！\n\n[![LinuxDo](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002F社区-LinuxDo-blue?style=for-the-badge)](https:\u002F\u002Flinux.do\u002F)\n\n---\n\n## Star History\n\n[![Star History Chart](https:\u002F\u002Fapi.star-history.com\u002Fsvg?repos=ZRainbow1275\u002FAutoTeam-F&type=Date)](https:\u002F\u002Fstar-history.com\u002F#ZRainbow1275\u002FAutoTeam-F&Date)\n","AutoTeam-F 是一个面向 ChatGPT Team 的账号轮转与认证同步工具，基于上游项目 cnitlrt\u002FAutoTeam 进行了改进。其核心功能包括批量生成免费号（目前此功能因 OpenAI 后端调整而暂时不可用）、自动注册、智能轮转以及 Codex OAuth 自动登录等。技术上，该项目采用 Python 语言开发，利用 Playwright 实现自动化操作，并通过 FastAPI 和 Vue.js 构建 Web 界面，支持 Docker 部署。此外，它还提供了手动 OAuth 导入、CPA 双向同步及失败分类等功能以优化用户体验。适用于需要高效管理多个 ChatGPT 账号的场景，如团队协作或个人多账号管理。","2026-06-11 02:43:04","CREATED_QUERY"]