# 项目完整链路说明
本文档面向 AI 与开发者,目标是让阅读者在最短时间内理解“项目做什么、怎么跑、数据怎么流、功能链路怎么串”,从而在新增功能时不漏逻辑、不误改边界。
使用建议:
这是一个 Chrome 扩展,用于自动执行一整套 OpenAI / ChatGPT OAuth 注册与登录流程。
它的核心价值不是“打开一个页面点几个按钮”,而是把下面这些环节串成一条完整可恢复的自动化链路:
sidepanel/sidepanel.html + sidepanel/sidepanel.js
职责:
职责:
职责:
分布在根目录和 background/ 下。
职责:
manifest.json 声明:
background.service_worker = background.jsside_panel.default_path = sidepanel/sidepanel.htmlbackground.js 通过 importScripts(...) 依次加载:
因此 background.js 现在更像:
data/step-definitions.js 提供共享步骤元数据。
background/steps/registry.js 负责把“步骤元数据”映射到“步骤执行器”。
这意味着:
orderchrome.storage.session保存运行态:
autoRunSessionIdchrome.storage.local保存持久配置与账号运行历史:
accountRunHistory(以邮箱为主键,保存该邮箱最近一次状态:成功/失败/停止)当启用了独立的账号运行历史本地同步配置时,账号运行历史会通过 scripts/hotmail_helper.py 整体同步写入 data/account-run-history.json 快照文件,便于开发者直接查看完整记录。
这条配置链路独立于 mailProvider 和 Hotmail 的接码模式。
后台通过 runtime message 向 sidepanel 广播:
LOG_ENTRYSTEP_STATUS_CHANGEDDATA_UPDATEDAUTO_RUN_STATUSICLOUD_LOGIN_REQUIREDICLOUD_ALIASES_CHANGEDcontent/utils.js 在脚本加载后会发送 CONTENT_SCRIPT_READY。
后台收到后会:
queueCommandflushCommandsendTabMessageWithTimeoutsendToContentScriptResilientsendToMailContentScriptResilient这保证了:
文件:
流程:
补充:
文件:
流程:
文件:
流程:
Try again / 重试 页面,会先自动点击 重试 恢复,再继续后续链路文件:
这两步共享验证码主流程:
补充行为:
2925 provider 会拉长单轮轮询窗口,并关闭 Step 4 / 8 的自动重发间隔,减少因邮件延迟过早判负。自动重新发送验证码次数现在使用 sidepanel 里的单一“验证码重发”配置;普通邮箱仍按 25 秒间隔节流,Hotmail / 2925 不走这个 25 秒间隔。Step 4 若启用先请求新验证码,会先消耗一次当前步骤的自动重发次数。
Auto 模式下,如果 Step 4 当前轮失败,后台会沿用当前邮箱回到 Step 1 重新开始当前轮,而不是立刻换邮箱开新尝试。
文件:
流程:
文件:
流程:
browsingData 补扫 cookies文件:
流程:
https://auth.openai.com/add-phone,则立即退出步骤 7 内部重试,不再继续第 2 / 3 次尝试https://auth.openai.com/add-phone,则统一回到步骤 7 重新开始授权流程文件:
流程:
add-phone / 手机号页,则立即判为 fatal 错误,不再把步骤 8 视为成功STEP8_RESTART_STEP7 恢复错误,则按有限次数回到 Step 7 重试文件:
流程:
文件:
流程:
认证失败:*、认证失败: timeout of 30000ms exceeded、回调 URL 提交失败: oauth flow is not pending 等失败提示并立即报错本轮将 Gmail 与 2925 的注册邮箱逻辑统一收敛为“共享别名邮箱链路”:
name@gmail.comname@2925.com当前行为约定:
获取 / 生成 时:
name+tag@gmail.comname123456@2925.comstate.email
gmailBaseEmailmail2925BaseEmailmanaged-alias-utils.js
统一承接 Gmail / 2925 的:
background/generated-email-helpers.js
在原有 Duck / Cloudflare / iCloud / Cloudflare Temp Email 生成链路之外,新增 Gmail / 2925 的共享生成接入。
background/signup-flow-helpers.js
负责在真正提交注册邮箱前做“复用已有完整邮箱 / 重新生成”的最终决策。
文件:
支持:
组成:
模式:
补充:
组成:
组成:
文件:
流程:
autoRunSessionIdrunAutoSequenceFromStep
add-phone / 手机号页 属于立即跳出的不可重试错误add-phone / 手机号页,会直接抛出 fatal 错误,不再先标记步骤成功add-phone,则自动回到步骤 7 无限重开add-phone / 手机号页 这类 fatal 错误,则不仅不会回到步骤 7 重开,也不会进入 controller 的下一次自动重试 attemptautoRunSessionId必须同时检查:
必须同时检查:
必须同时检查:
PERSISTED_SETTING_DEFAULTSnormalizePersistentSettingValue修改下列内容时,必须同步更新文档:
规范、边界、步骤接入方式变更
更新 项目开发规范(AI协作).md
新增共享恢复层:content/auth-page-recovery.js。
Step 4 在等待注册验证码页时,如果命中认证页 Try again / 重试 页,会先自动点击 重试 恢复,再继续回到密码页重提和验证码页确认流程。
Step 7 在识别到登录超时报错页时,不会在当前步骤内部点击 重试,而是直接返回可恢复失败,交给后续链路回到 Step 7 重跑。
Step 8 如果发现认证页已经进入登录超时报错/重试页,会直接报错并回到 Step 7 重新开始,而不是在 Step 8 内部点击 重试。
Step 9 在点击 OAuth 同意页 继续 后,会额外检查是否进入认证页重试页;若命中则先自动点击 重试 恢复,再重新执行当前轮的 继续 点击。