Files
go_bt/AI_STUDIO_测试问题记录.md
2026-09-24 10:57:31 +08:00

93 KiB
Raw Permalink Blame History

AI Studio 一键组合——测试问题记录

测试范围

  • 功能入口:AI Studio 一键组合
  • 处理对象:账号列表中已选中的 Google 账号
  • 执行方式:同一账号的所有步骤共用一个比特浏览器窗口
  • 执行顺序:登录 → 查看国家 → 更改语言 → 改密码 → 更改 2FA → 获取凭证/16 位应用密码 → 处理 AI Studio API Key
  • 失败规则:任一步失败即停止该账号后续流程,并记录失败步骤和详情
  • 成功规则:所有步骤均成功后,流程结果才记为成功

API Key 正常流程基线

场景 A:账号已有 API Key

  1. 进入 https://aistudio.google.com/api-keys。
  2. 检测已有 Key;逐个打开行末三点菜单并选择删除。
  3. 在删除确认框中确认,等待对应 Key 行消失。
  4. 重复删除,直到页面中不存在旧 Key。
  5. 点击 Create API key。
  6. 使用已有项目(项目下拉框正常选中已有项目)。
  7. Key 名称使用 Gemini API Key,创建一枚新 Key。
  8. 从详情弹窗读取 API Key、名称、项目名称、项目编号并保存。
  9. 最终线上仅保留一枚新 Key,账号列表和 JSON 查看窗口显示新值。

场景 B:账号没有 API Key,但已有项目

  1. 点击 Create API key。
  2. 选择已有项目。
  3. 使用名称 Gemini API Key 创建 Key。
  4. 读取详情并保存。

场景 C:账号没有 API Key,也没有项目

  1. 点击 Create API key。
  2. 项目下拉显示 No Cloud Projects Available 时,展开下拉。
  3. 选择 Create project。
  4. 使用默认项目名 Gemini Project 创建项目。
  5. 等待新项目出现在创建 Key 对话框中并被选中。
  6. 创建 Key,读取详情并保存。

首次使用场景

  • 若出现 AI Studio 服务条款/欢迎弹窗,应自动勾选必要选项并继续。
  • 处理完成后才能进入正常的 API Keys 页面流程。

测试问题

AS-001:删除线上旧 Key 后发生意外异常,数据库可能残留失效 Key

  • 发现时间:2026-09-22
  • 测试账号:不涉及(代码检查发现)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 数据保存
  • 前置条件:数据库已有旧 Key,AI Studio 页面中的旧 Key 已被成功删除。
  • 复现步骤:在线上旧 Key 删除完成后、创建或读取新 Key 期间触发未预料异常。
  • 实际结果:异常兜底返回没有携带 deletedExisting,上层可能无法判断旧 Key 已失效,数据库因而保留旧 Key。
  • 预期结果:只要线上旧 Key 已经删除,后续任何失败都必须通知上层同步清除数据库旧记录。
  • 稳定复现:未确认
  • 相关日志:无
  • 截图或录像:无
  • 初步定位:processAistudioApiKey 原先在 try 内声明删除状态,catch 无法访问和返回该状态。
  • 当前状态:已关闭(2026-09-22 11:27 批量复测,4/4 账号日志无动态验证码且无敏感 checkpoint 截图)
  • 修复说明:将 deletedExisting 提升到函数级作用域,并在异常返回中始终携带该字段。
  • 复测重点:线上删除成功后,分别模拟普通创建失败和意外异常;确认数据库、账号列表中的旧 Key 均被清空,流程日志记为失败。

AS-002:改密码提交无响应后整套流程重复执行,5 个账号全部中断

  • 发现时间:2026-09-22 10:40–10:41
  • 测试账号:5 个(viu***、viv***、vjt***、vkc***)
  • 严重程度:阻塞
  • 所属步骤:改密码
  • 前置条件:同时对 5 个账号执行 AI Studio 一键组合。
  • 复现步骤:完成登录、国家、语言和改密身份验证;填写两次新密码并点击 Change password。
  • 实际结果:提交后按钮短暂禁用,随后表单恢复为可操作状态且两个密码框仍保留内容;程序等待 20 秒后重新生成另一组密码并整套重跑,最终 5 个账号均报“无法确认修改结果”,后续步骤未执行。
  • 预期结果:提交未完成时应复用同一候选密码并采用备用提交方式;进入不确定状态后不得生成第二个候选密码。
  • 稳定复现:是(5/5)
  • 相关日志:data/logs/app-2026-09-22.log,10:40:15–10:41:58
  • 截图或录像:data/screenshots/<脱敏邮箱>/changePassword_20260922_1041xx.png
  • 初步定位:改密提交仅使用一次 force 点击;无响应后缺少同表单提交兜底,并错误地重新执行整个改密流程。
  • 当前状态:已关闭(2026-09-22 10:47 复测确认只重试同一候选密码,不再整套重跑)
  • 修复说明:首次改为非强制正常点击;表单恢复时依次使用回车和 DOM 按钮点击重试同一密码;提交后超时直接停止,不再重新生成第二个密码;提交后出现“密码已修改”提示按成功处理。曾使用的 requestSubmit 已因 AS-005 撤销。
  • 复测重点:先用 1 个账号验证改密与后续步骤,再验证 5 个账号并发;确认日志不会出现“重新执行修改流程”,数据库保存的密码与实际生效密码一致。

AS-003:将表单清空和 URL 变化误判为改密成功状态

  • 发现时间:2026-09-22 10:47–10:48
  • 测试账号:5 个(脱敏)
  • 严重程度:阻塞
  • 所属步骤:改密码
  • 前置条件:第三种备用提交方式使用原生 form.requestSubmit。
  • 复现步骤:运行 AI Studio 一键组合,等待第三种改密提交方式执行。
  • 实际结果:第一次复测时观察到表单清空和 URL 参数变化,曾误认为这是 Google 新版改密成功状态。
  • 预期结果:只有明确成功文案、页面跳转或密码框消失等可靠信号才能判定成功;不得根据表单清空和 URL 参数变化推断密码已生效。
  • 稳定复现:是(5/5)
  • 相关日志:data/logs/app-2026-09-22.log,10:47:35–10:48:34
  • 截图或录像:data/screenshots/<脱敏邮箱>/changePassword_20260922_1048xx.png
  • 初步定位:第二次复测确认该现象不是成功状态,而是 requestSubmit 绕过 Google 页面脚本、按 GET 导航产生的副作用,具体根因和安全影响归入 AS-005。
  • 当前状态:已关闭(原结论撤回,未把该状态作为成功判据)
  • 修复说明:删除“表单清空 + URL 参数变化即成功”的判定设想;继续只接受可靠成功信号。
  • 复测重点:后续不得将仅有的表单清空或查询参数变化记录为改密成功。

AS-004:两栏新密码表单被误识别为当前密码验证页

  • 发现时间:2026-09-22 10:47
  • 测试账号:5 个(脱敏)
  • 严重程度:一般
  • 所属步骤:改密码
  • 前置条件:账号已有有效 rapt 状态,打开 Password 页面后直接显示新密码和确认密码两栏。
  • 实际结果:通用身份验证把第一栏当成当前密码输入框,填入旧密码并触发一次无效提交。
  • 预期结果:识别到 Password 设置页存在两个可见密码框时,跳过旧密码验证,直接进入新密码填写步骤。
  • 稳定复现:是(5/5)
  • 当前状态:已关闭(2026-09-22 10:51 第二次复测,5/5 均正确跳过旧密码输入)
  • 修复说明:在通用身份验证中增加 Password 设置页双输入框识别。

AS-005:requestSubmit 绕过页面脚本,将候选密码写入 URL 和诊断日志

  • 发现时间:2026-09-22 10:51–10:53
  • 测试账号:5 个(脱敏)
  • 严重程度:阻塞 / 严重安全风险
  • 所属步骤:改密码 / 诊断日志
  • 前置条件:正常点击和回车未完成提交,程序执行第三种 form.requestSubmit 兜底。
  • 复现步骤:运行 AI Studio 一键组合,等待改密流程执行第三次备用提交。
  • 实际结果:原生表单按 GET 导航,把 password 与 confirmation_password 作为查询参数写入地址栏;诊断事件又将完整 URL 写入账号 JSONL。该导航不是改密成功证据,5 个账号最终均未确认改密成功。
  • 预期结果:所有提交方式都必须触发 Google 按钮自身的页面事件,不得直接提交原生表单;任何诊断字段中的敏感查询参数必须统一脱敏。
  • 稳定复现:是(5/5)
  • 相关日志:data/logs/errors/<脱敏邮箱>/2026-09-22.jsonl(历史敏感值已就地替换为 ***)
  • 截图或录像:data/screenshots/<脱敏邮箱>/changePassword_20260922_1052xx.png
  • 初步定位:form.requestSubmit(button) 绕过 Google 前端监听器;诊断底层此前没有统一处理密码类查询参数。
  • 当前状态:已关闭(2026-09-22 10:58 第三次复测,5/5 均未再出现密码查询参数或明文 URL)
  • 修复说明:第三种提交改为 DOM button.click();发现 URL 出现密码字段时立即安全停止;诊断事件写盘前递归脱敏 password、confirmation_password、new_password、passwd 和 pwd;清理本次测试生成的历史诊断记录。
  • 复测重点:确认地址栏、应用日志和账号 JSONL 均不出现候选密码;只有收到明确成功信号才保存密码并进入后续步骤。

AS-006:改密成功消息和诊断截图泄露新密码

  • 发现时间:2026-09-22 10:59
  • 测试账号:1 个(脱敏)
  • 严重程度:严重安全风险
  • 所属步骤:改密码 / 前端展示 / 诊断日志
  • 前置条件:程序把改密结果判定为成功并保存候选密码。
  • 复现步骤:执行单账号改密码,观察应用日志、账号备注和成功 checkpoint 截图。
  • 实际结果:成功消息直接输出完整新密码;当页面将密码框切换成明文显示时,checkpoint 截图也保存了完整值。
  • 预期结果:日志和账号备注只说明“新密码已安全保存”;所有截图无论输入框当前类型如何都必须遮盖密码控件。
  • 稳定复现:是
  • 相关日志:data/logs/app-2026-09-22.log 及账号日志(历史值已替换为 [已脱敏])
  • 截图或录像:含明文的单张截图已移出公开截图目录并隔离。
  • 初步定位:change_password 流水线把 newPassword 拼入成功消息;截图工具没有统一 mask 密码控件。
  • 当前状态:已关闭(2026-09-22 11:08 第四次复测,成功消息无密码,密码截图已显示黑色遮罩)
  • 修复说明:成功消息不再包含密码;截图工具统一遮盖按 type、name、autocomplete、aria-label 识别的密码输入框;清理历史日志和数据库备注。
  • 复测重点:改密成功后检查应用日志、账号日志、账号备注和所有 checkpoint 截图均无明文密码。

AS-007:确认弹窗点错按钮,密码框切换类型后又被误判为成功

  • 发现时间:2026-09-22 10:58–10:59
  • 测试账号:全套 5 个;追加单账号验证 1 个
  • 严重程度:阻塞
  • 所属步骤:改密码 / 数据保存
  • 前置条件:点击表单主按钮后出现“保持登录设备”确认弹窗。
  • 复现步骤:执行第三次全套复测;随后对其中一个账号单独运行改密码。
  • 实际结果:确认逻辑使用页面级第一个 Change password 按钮,可能点到弹窗背后的表单按钮,5/5 均无法完成;单账号测试中密码框由 type=password 切换成其他类型后,旧判据认为输入框已消失并误报成功,实际截图仍显示完整表单。
  • 预期结果:只点击确认弹窗作用域内的按钮;无论密码框是否切换为明文类型都能识别;控件必须连续稳定消失后才可作为成功信号。
  • 稳定复现:是(全套 5/5 卡住;单账号 1/1 触发误判)
  • 相关日志:data/logs/app-2026-09-22.log,10:58:10–10:59:44
  • 截图或录像:data/screenshots/<脱敏邮箱>/changePassword_20260922_105857.png
  • 初步定位:弹窗确认按钮没有限定在 dialog 内;成功检测只使用 input[type="password"]。
  • 当前状态:已关闭(2026-09-22 11:08 第四次复测,确认弹窗被正确点击并跳转安全检查页)
  • 修复说明:从可见 dialog/alertdialog/aria-modal 内倒序选择确认按钮,不再强制点击页面级第一个按钮;备用提交后也立即处理弹窗;密码控件按多种属性识别,并要求连续两轮稳定消失。误判账号的 password_changed 标记已撤回,状态改为“改密待复核”,避免下轮错误跳过。
  • 复测重点:先单账号确认日志出现“已确认更改密码弹窗”和可靠成功信号,再进行 5 账号全套测试。

AS-008:2FA 动态验证码及新密钥被写入日志和诊断截图

  • 发现时间:2026-09-22 11:09
  • 测试账号:1 个(脱敏)
  • 严重程度:严重安全风险
  • 所属步骤:更改 2FA / 诊断日志
  • 前置条件:成功进入 Authenticator 手动密钥和验证码验证页面。
  • 复现步骤:执行单账号 AI Studio 一键组合,观察 2FA 步骤日志及 checkpoint 截图。
  • 实际结果:6 位动态验证码被完整写入应用日志和账号日志;手动设置页截图包含完整新 2FA 密钥,验证页截图包含验证码。
  • 预期结果:日志只说明验证码已生成/填入,不保存具体值;含新密钥或验证码的页面不得保存截图。
  • 稳定复现:是
  • 相关日志:data/logs/app-2026-09-22.log 及账号日志(历史验证码已替换为 [已脱敏])
  • 截图或录像:相关敏感 checkpoint 截图已移出公开截图目录并隔离。
  • 初步定位:2FA 服务的调试日志直接插入 code;checkpoint 对敏感页面没有禁拍规则。
  • 当前状态:已关闭(2026-09-22 11:27 批量复测,新增诊断文件无完整 API Key,历史与新增残留均为 0)
  • 修复说明:验证码日志改为无内容提示;change2fa_clicked_cantscan、change2fa_key_extracted、change2fa_before_verify 只记事件不保存截图;通用截图工具额外遮盖动态验证码输入框和 Authenticator 设置弹窗;历史 5 个日志文件已脱敏,9 张敏感截图已隔离。
  • 复测重点:后续 2FA 流程中日志、账号备注和公开截图目录均不得出现密钥或动态验证码。

AS-009:AI Studio 第二层附加条款弹窗未处理,创建 Key 点击落在遮罩后方

  • 发现时间:2026-09-22 11:09
  • 测试账号:1 个(脱敏)
  • 严重程度:阻塞
  • 所属步骤:AI Studio Key
  • 前置条件:首次使用 AI Studio,完成第一层带复选框的服务条款后出现第二层附加条款说明。
  • 复现步骤:执行单账号 AI Studio 一键组合 并进入 API Keys 页面。
  • 实际结果:程序处理第一层条款后,没有识别不带复选框、只有 Continue 的 Google AI plans / Gemini API 附加条款弹窗;随后 OS 鼠标校准和创建 Key 均点击遮罩后的页面,最终报“未找到项目选择控件”。
  • 预期结果:条款处理应循环识别并关闭所有层级;确认不存在阻塞弹窗后才能校准鼠标、删除旧 Key 或创建新 Key。
  • 稳定复现:是
  • 相关日志:data/logs/app-2026-09-22.log,11:09:20–11:09:57
  • 截图或录像:data/screenshots/<脱敏邮箱>/aistudio_api_key_20260922_110957.png
  • 初步定位:dismissWelcomeConsent 仅把“包含复选框”作为条款弹窗结构特征。
  • 当前状态:已修复待复测(14:45 批量测试发现时序回归:第一层关闭后短暂无弹窗,函数提前退出,第二层随后才出现)
  • 修复说明:增加附加条款文字特征和严格的 Continue/Continuar/继续/同意 按钮识别;条款循环现在同时覆盖带复选框首层和无复选框第二层,并排除创建 Key 对话框。14:45 再修复为第一层处理后保留 3.5 秒安静观察窗口,第二层延迟出现时继续处理;新增真实 Chromium 顺序弹窗回归测试。
  • 复测重点:确认日志进入真正的 Key 创建对话框;若无项目则创建 Gemini Project,最终读取并保存新 Key。

AS-010:项目已选中但残留 data-disabled 导致创建 Key 被提前拦截

  • 发现时间:2026-09-22 11:16–11:17
  • 测试账号:1 个(脱敏)
  • 严重程度:阻塞
  • 所属步骤:AI Studio Key
  • 前置条件:账号没有 Cloud 项目,流程成功新建并选中 Gemini Project。
  • 复现步骤:执行第五次单账号复测,等待项目创建完成并回到 Create a new key 对话框。
  • 实际结果:截图确认 Key 名称为 Gemini API Key、项目为 Gemini Project、Create key 按钮正常显示,但页面残留 data-disabled="true";项目辅助函数等待 45 秒后错误返回“新建项目后创建按钮仍不可点”,没有执行实际创建点击。
  • 预期结果:真实项目已出现在下拉框时应继续点击 Create key;最终以是否出现完整 Key 详情作为成功判据,不能被残留 DOM 属性提前拦截。
  • 稳定复现:是
  • 相关日志:data/logs/app-2026-09-22.log,11:16:25–11:17:38
  • 截图或录像:data/screenshots/<脱敏邮箱>/aistudio_api_key_20260922_111738.png
  • 初步定位:后半段已有“项目确认后直接创建”的容错设计,但 selectProjectInNewUi / waitCreateReadyAfterProject 在到达该逻辑前仍强制等待 isCreateKeyDisabled=false。
  • 当前状态:已关闭(2026-09-22 11:20 第六次复测,项目选中后已实际创建并读取 Key)
  • 修复说明:项目文本被可靠识别为真实项目时立即放行;按钮属性只作为无法识别项目时的兜底;实际点击后继续由 Key 详情严格验证创建结果。
  • 复测重点:确认日志出现“新建项目已确认选中,继续创建 Key”,随后点击 Create key 并读取、保存完整 Key。

AS-011:历史网络诊断 URL 保存了完整 Google API Key 参数

  • 发现时间:2026-09-22 11:22(第六次复测后的安全扫描)
  • 测试账号:不涉及本轮生成的 Key;命中 10 个 2026-09-14~15 历史诊断文件
  • 严重程度:一般安全风险
  • 所属步骤:诊断日志
  • 前置条件:Google 页面内部请求失败,URL 带 AIza... 或 AQ.... 格式的 key 参数。
  • 复现步骤:扫描 data/logs/**/*.jsonl 中的完整 API Key 格式。
  • 实际结果:10 个历史 requestfailed/response 诊断文件保留了 Google 内部接口 URL 的完整 Key 参数;第六次测试新生成的 Gemini Key 未进入日志。
  • 预期结果:任何来源、任何字段中的 API Key 格式都应在诊断写盘前统一脱敏。
  • 稳定复现:是(历史文件)
  • 相关日志:data/logs/errors/<脱敏邮箱>/2026-09-14.jsonl、2026-09-15.jsonl
  • 截图或录像:无
  • 初步定位:诊断底层已递归处理对象,但 redactText 只覆盖密码查询参数、Base32 和代理凭证,没有覆盖 AIza / AQ. Key 格式。
  • 当前状态:已修复待复测
  • 修复说明:诊断统一把完整 AIza... 替换为 AIza***、AQ.... 替换为 AQ.***;AI Studio DOM 调试输出也显式经过同一脱敏;10 个历史文件已清理,复扫残留为 0。
  • 复测重点:制造带 key= 的失败请求后,确认 JSONL 与应用日志只保留脱敏形式。

AS-012:并发 4 时系统真实鼠标跨窗口竞争,创建对话框无法稳定打开

  • 发现时间:2026-09-22 11:44
  • 测试账号:20 个测试账号(本文不记录完整账号)
  • 严重程度:阻塞
  • 所属步骤:AI Studio Key
  • 前置条件:任务并发设置为 4,多个浏览器同时进入 AI Studio,并使用系统真实鼠标点击关键按钮。
  • 复现步骤:20 个账号以并发 4 执行 AI Studio 一键组合。
  • 实际结果:首批 4/4、整批共 10 个账号在点击 Create API key 后未出现正确创建表单,最终报“处理项目失败:未找到项目选择控件”。
  • 预期结果:并发任务可以同时执行网页流程,但系统唯一的真实鼠标在任意时刻只能服务一个浏览器窗口,点击不能落到其它窗口。
  • 稳定复现:是(本轮 10 次)
  • 相关日志:data/logs/app-2026-09-22.log 11:44:19–11:51:57
  • 截图或录像:各账号已有 checkpoint;无敏感值写入本文。
  • 初步定位:多个任务的 page.bringToFront()、坐标计算和 SetCursorPos + mouse_event 之间可以异步交错;后一个任务把自己的窗口切到前台后,前一个任务仍按原窗口坐标点击,导致对话框状态错乱。
  • 当前状态:已关闭
  • 修复说明:为系统鼠标增加进程级 FIFO 互斥锁,将“切换前台 → 计算坐标 → 真实点击”作为不可交错的临界区;登录、改密、2FA 和页面加载仍保持并发。新增并发锁测试,4 个任务最大同时进入临界区数量为 1。
  • 复测结果:18 账号并发 4 时已出现鼠标排队日志,“未找到项目选择控件”从上一轮 10 次降为 0。
  • 复测重点:继续使用并发 4,确认日志出现“等待其它窗口完成真实鼠标点击”,且不再出现批量“未找到项目选择控件”。

AS-013:并发 4 的项目/Key RPC 集中 403,失败后仍固定空等并重复使用坏对话框

  • 发现时间:2026-09-22 11:56
  • 测试账号:18 个复测账号(本文不记录完整账号)
  • 严重程度:严重
  • 所属步骤:AI Studio Key
  • 前置条件:系统鼠标互斥锁已生效,多个账号继续并发执行 AI Studio 项目与 Key 创建。
  • 复现步骤:18 个账号以并发 4 复测,观察项目 RPC、Key 创建及自动重试。
  • 实际结果:项目控件跨窗口丢失降为 0,但出现 11 次 suspicious 重试、5 次项目列表/项目状态失败;服务端 403 已出现后,代码仍等待 Key 生成满 20 秒,再进入下一次重试。
  • 预期结果:AI Studio 高风险 RPC 不应同时冲击 4 个账号;明确 403/toast 出现后应立即重试;项目状态异常应刷新页面恢复,而不是继续复用坏对话框。
  • 稳定复现:是
  • 相关日志:data/logs/app-2026-09-22.log 11:56:20–12:03:50
  • 初步定位:系统鼠标锁只保护物理点击,没有限制项目/Key 网络请求并发;waitKeyGenerated 没有提前识别失败 toast;鼠标校准框被关闭后又重新打开,重复请求项目列表。
  • 当前状态:已修复待复测
  • 修复说明:AI Studio 高风险区限制为最多 2 个账号并行;403/toast 出现立即结束 20 秒等待;校准打开的创建框直接复用;新建项目后取消固定 4 秒等待;项目列表/选中状态异常时刷新页面重试;已同意账号的首次弹窗观察窗由 5 秒降至 3.5 秒。
  • 第二次复测补充:失败请求已精确定位为 MakerSuiteService/CreateCloudProject HTTP 403;连续 4 次重试均未恢复,说明此类失败不应继续长时间重试。现已直接监听项目/Key RPC 状态,项目 403 仅刷新重试一次,Key 403 立即重试且最多保留两次重试。
  • 手动排查确认:同一失败账号在 AI Studio 显示“Unable to create API key,无法创建 API key 和 Google Cloud project”;按提示前往 https://console.cloud.google.com/projectcreate,完成首次 Cloud 条款确认、创建默认项目并返回 AI Studio 导入后,Key 创建成功。说明账号并非不能创建项目,而是 AI Studio 内部代建 RPC 被拒绝。
  • 第三次修复:CreateCloudProject 4xx/5xx 或明确引导弹窗出现时,不再刷新同一失败 RPC;自动进入 Cloud Console,处理首次条款,保留网页默认项目名创建项目,读取项目 ID,带该 ID 返回 AI Studio 并从 Import projects 精确导入,然后继续创建 Key。
  • 第四次定位:14:42 批量实测确认 Cloud Console 可成功创建项目,最初按 No matching projects found 推断为搜索缓存;15:11 用户现场截图进一步证实真正流程不需要搜索,抽屉已自动推荐并勾选可用项目,必须点击右侧 Import 主按钮。最终修复见 AS-018。
  • 复测重点:并发 4 时确认出现高风险区排队日志,suspicious 次数和项目失败显著下降,并统计有效成功吞吐。

AS-014:Hindi 语言页确认按钮无法识别,每次固定等待 12 秒后失败

  • 发现时间:2026-09-22 11:49,12:01 再次复现
  • 测试账号:单个 Hindi 页面账号(脱敏)
  • 严重程度:一般
  • 所属步骤:更改语言
  • 前置条件:Google 账号当前语言为 हिन्दी(भारत)。
  • 复现步骤:选择 English → United States,等待程序查找保存按钮。
  • 实际结果:页面已完成地区选择,但程序不认识 Hindi 的 चुनें 确认按钮和 रद्द करें 取消按钮,等待满 12 秒后报“未找到可点击的保存按钮”。
  • 预期结果:立即识别 Hindi 确认/取消按钮并完成语言修改。
  • 稳定复现:是(连续两轮)
  • 相关日志:data/logs/accounts/<脱敏账号>/2026-09-22.log
  • 当前状态:已关闭
  • 修复说明:补充 Hindi 的保存、选择、应用、确认及取消/返回语义,并新增按钮识别测试。
  • 复测结果:Hindi 账号已成功更改为 English (United States),不再等待 12 秒后失败。

AS-015:人工创建的 Key 未回写数据库,API Keys 只能从顶部查看全部账号

  • 发现时间:2026-09-22 14:30
  • 测试账号:Cloud Console 兜底后人工创建 Key 的账号(脱敏)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 前端展示 / 数据保存
  • 前置条件:自动任务已经结束,用户在该账号的比特浏览器内手工创建了 API Key。
  • 实际结果:人工 Key 已在线上存在,但程序没有运行中的任务负责读回,数据库仍无该 Key,AI Studio 日志仍显示历史失败;前端只有顶部“查看API Keys(JSON)”总入口,不能按邮箱查看。
  • 预期结果(用户 16:16 澄清):点击页面的“浏览器”打开该邮箱比特浏览器后,用户手工进入 AI Studio 并创建 Key;创建成功时程序应后台自动读取、写入该邮箱数据库、将 AI Studio 日志标记为成功并实时显示“已保存”;不应再要求点击第二个“同步人工 Key”按钮。
  • 初步定位:原流程只有自动创建成功分支会调用 upsertAistudioApiKey;任务结束后的人工操作没有回收入口。查看接口固定返回 getAllAistudioApiKeys()。
  • 修复说明:新增只读任务 aistudio_sync_key,打开该账号 AI Studio 列表后优先读取 Key 详情,必要时使用页面自带复制按钮读取完整值;全过程不删除、不新建。成功后写入 aistudio_api_keys 并追加 success / 人工创建的 AI Studio API Key 已同步 日志。
  • 前端修复:移除顶部总查看按钮;每个账号的“AI Studio Key”单元格显示“已保存/未保存”和“查看”,查看接口强制携带邮箱且只返回单条记录。已移除多余的“同步人工Key”按钮。
  • 16:16 最终修复:“浏览器”按钮改为打开比特窗口同时启动最长 30 分钟的只读监听;捕获人工创建成功的 Key 详情后自动 upsertAistudioApiKey 并写入 success 流程日志,通过 SSE 实时更新该邮箱行;监听完成后仅终止监听 Worker,不关闭用户的比特浏览器。
  • 一致性边界:监听到 DeleteCloudApiKey 真实成功但未检测到新 Key 时,自动清理数据库失效旧值;新 Key 成功则直接覆盖。
  • 自动验证:真实 Chromium DOM 覆盖人工 Key 读取;全量 85 项测试全部通过。
  • 实际复测:14:38 对当前人工创建 Key 的账号执行只读同步,登录正常,14:38:39 成功读取并写库;任务结果成功 1、失败 0。数据库确认 Key 已保存且邮箱匹配,账号列表最新 AI Studio 日志为 success,详情为“人工创建的 AI Studio API Key 已同步”。
  • 当前状态:已修复待服务重启复测

AS-016:新建项目弹窗仍在转圈时被误判成功,右上角关闭按钮被当成 Create key

  • 发现时间:2026-09-22 14:43
  • 测试账号:2 个(脱敏)
  • 严重程度:阻塞
  • 所属步骤:AI Studio Key
  • 前置条件:账号无可用项目,在创建 Key 对话框里选择 Create project。
  • 实际结果:提交项目后 6 秒内没有捕获到明确 RPC 响应,代码直接返回成功;此时 Create a new project 弹窗仍在转圈,通用“最后一个按钮”定位命中 32×32 关闭按钮,尺寸护栏拒绝点击并报“未能点击 Create key”。
  • 预期结果:必须等项目 RPC 成功或项目弹窗真正关闭后才进入 Key 创建;持续转圈应进入 Cloud Console 兜底,绝不能点击关闭图标。
  • 稳定复现:是(同批 2 个账号)
  • 相关日志:data/logs/app-2026-09-22.log,14:42:48–14:44:00
  • 截图或录像:data/screenshots/<脱敏邮箱>/aistudio_api_key_20260922_144340.png、..._144358.png
  • 初步定位:createProject 超时后无条件返回成功;isCreateKeyDisabled 与最终点击使用通用最后一个 dialog/按钮。
  • 修复说明:项目提交后最长 15 秒等待明确响应或项目弹窗消失;持续加载直接触发 Cloud Console 兜底;创建 Key 的状态判断和点击仅限 ms-api-key-creation-dialog,并显式阻止被项目子弹窗遮挡时操作。
  • 自动验证:真实 Chromium 复现“底层 Create key + 顶层项目转圈弹窗”,确认不会点击 32×32 关闭按钮,转圈超时不会误报成功。
  • 当前状态:已修复待真实账号复测

AS-017:API Key 列表数据晚到,已有旧 Key 的账号被误走新建流程

  • 发现时间:2026-09-22 14:46
  • 测试账号:1 个(脱敏)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 数据一致性
  • 前置条件:账号线上已有 Key,但 API Keys 表格晚于顶部 Create API key 按钮渲染。
  • 实际结果:首次行数检查为 0,程序打开创建框;失败截图时旧 Key 行已经显示,但流程仍报“未找到项目选择控件”,没有进入“先删除旧 Key”路径。
  • 预期结果:创建框打开后若旧 Key 行晚到,应立即退出创建框,先删除旧 Key,再创建并保存新 Key。
  • 稳定复现:本轮 1 次,历史页面加载慢场景可能重复出现
  • 截图或录像:data/screenshots/<脱敏邮箱>/aistudio_api_key_20260922_144622.png
  • 初步定位:旧 Key 判定只在打开创建框前执行;新版末列更多按钮为无文字 SVG 时,原计数器可能识别不到。
  • 修复说明:新增真实数据行结构兜底识别;创建表单等待期间及最终提交前再次检查旧 Key,发现晚到行后切回列表删除;删除菜单新增“Key 数据行最后一个操作按钮”安全兜底。
  • 自动验证:真实 Chromium 覆盖无 more_vert/aria-haspopup 的新版数据行,并验证表单等待立即返回 late_existing。
  • 当前状态:已修复待真实账号复测

AS-018:Import projects 中把“已勾选”误判成“已导入”,没有点击 Import 主按钮

  • 发现时间:2026-09-22 15:11
  • 测试账号:Cloud Console 兜底账号(脱敏)
  • 严重程度:阻塞
  • 所属步骤:AI Studio Key / Cloud 项目导入
  • 前置条件:Cloud Console 已创建项目,返回 AI Studio 并打开 Import projects 侧栏。
  • 实际结果:侧栏已经显示 Projects you may want to import、1 project selected 和可点击的 Import 主按钮;程序把复选框 checked 当成 Imported,只点击/检查复选框,没有点击 Import 按钮,并多余地在搜索框输入 URL 项目 ID。
  • 预期结果:无需搜索;若建议项目已经勾选,直接点击 Import,等待侧栏关闭/显示 Imported,再回创建 Key 对话框选择任一已导入项目并创建 Key。
  • 稳定复现:是;日志 15:09:26 记录“已点击导入项目”,但现场截图仍停留在 1 project selected 和 Import 按钮页面。
  • 截图或录像:用户提供 codex-clipboard-2ed4ffb9-9bb4-41af-a99b-d260e78093f3.png
  • 初步定位:importCloudProjectFromDrawer 使用 checked || /Imported/ 作为成功条件,并把项目复选框点击误记为导入完成。
  • 修复说明:移除项目 ID 搜索;明确区分 selected 与 imported;有预选项目时精确点击 Import/导入/Importar 主按钮,未预选时先选择建议项目;只有侧栏关闭或明确 Imported 且无待提交按钮时才判成功;导入后返回普通 API Keys 页面使用任一真实项目。
  • 附加修复:Key 行计数器现在要求 more_vert 位于真实表格数据行,工具栏菜单不再误报“旧 Key 晚到”。
  • 自动验证:真实 Chromium 测试确认搜索框 0 次输入、Import 主按钮恰好点击 1 次;工具栏 more_vert 不计为 Key 行。
  • 当前状态:已修复待真实账号复测

AS-019:旧 Key 删除后列表残影触发 lateExisting,刷新为 0 时没有重新创建

  • 发现时间:2026-09-22 15:36
  • 测试账号:1 个(脱敏)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 旧 Key 删除后重建
  • 实际结果:旧 Key 已删除成功,创建表单又短暂读到旧行并进入 lateExisting;刷新后行数已经是 0,但程序只在行数大于 0 时调用重建,最终直接失败并清除数据库旧 Key。
  • 预期结果:刷新后若旧行仍在则补删;无论刷新后行数是否为 0,都必须重新执行创建。
  • 修复说明:把 createKey 移到 lateCount 条件外;补充回归断言,保证两种分支都会重建。
  • 当前状态:已修复待真实账号复测

AS-020:延迟 Additional Terms 被误判成创建框点击无响应

  • 发现时间:2026-09-22 15:36
  • 测试账号:1 个(脱敏)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 服务条款
  • 实际结果:首次 2.5 秒观察窗口内没有条款,点击 Create API key 后 Additional Terms 才出现并遮挡页面;程序只等待创建框,最终报“创建对话框未出现”。失败截图明确停留在附加条款 Continue。
  • 预期结果:等待创建框期间同时侦测条款;条款一出现立即处理并重新打开创建框,不应继续等满创建框超时。
  • 截图或录像:data/screenshots/<脱敏邮箱>/aistudio_api_key_20260922_153650.png
  • 修复说明:新增“创建框或条款”联合轮询;OS 鼠标校准和合成点击路径都能即时处理延迟条款;普通创建框两次等待由 15+10 秒收敛为 7+5 秒。
  • 当前状态:已修复待真实账号复测

AS-021:Import 显示成功但创建框仍为 No Cloud Projects Available

  • 发现时间:2026-09-22 15:38
  • 测试账号:1 个(脱敏)
  • 严重程度:阻塞
  • 所属步骤:AI Studio Key / Cloud 项目导入同步
  • 实际结果:Cloud Console 项目创建成功,Import 抽屉显示 Imported;创建对话框仍显示 No Cloud Projects Available。旧逻辑在旧项目列表和整页重试中累计等待约 90 秒后失败。
  • 预期结果:正常账号优先复用当前创建框;项目未及时出现时只精确刷新一次,并验证 Imported 状态属于本次 Cloud 项目,仍未同步则快速给出准确错误。
  • 截图或录像:data/screenshots/<脱敏邮箱>/aistudio_api_key_20260922_153834.png
  • 修复说明:Imported 后短等 8 秒;未出现则携带项目 ID 精确刷新一次并等待最多 20 秒;Imported 状态须匹配指定项目 ID;禁止外层再重复一轮导入空等。
  • 当前状态:已修复待真实账号复测

AS-022:Cloud Console 提交项目后网络超时,后台实际已创建却被误判为失败

  • 发现时间:2026-09-22 15:51;15:54 人工流程确认根因
  • 测试账号:1 个(脱敏)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / Cloud 项目创建与导入
  • 实际结果:程序已在 Cloud Console 点击 Create,但页面连续出现 ERR_CONNECTION_RESET,90 秒后报“项目创建超时”。数分钟后人工打开 AI Studio,Import projects 已直接列出该账号的现有 Cloud 项目,证明后台创建实际成功。
  • 风险:若把导航/通知超时当成创建失败,下次又会创建新项目,造成重复项目和配额浪费。
  • 预期结果:Create 已提交且已取得 project ID 时,超时应视为“结果待确认”;立即回 AI Studio 打开 Import projects,导入已有项目,不得再创建第二个项目。
  • 人工成功路径:Create API key → 项目下拉无可选项目 → Import projects → 页面已自动列出并勾选现有项目 → 直接点 Import(无需搜索)→ 导入后项目可选 → Create key 成功。
  • 录屏证据:data/manual_recordings/manual_aistudio_20260922_155452/(约 1 FPS 窗口连续帧;含 Key 页面,仅用于本地排查)
  • 性能观察:人工从显示待导入项目到 Key 详情完成约 15 秒;Import 后创建框约 1 秒刷出项目,Key 创建约 7–8 秒。
  • 修复说明:Cloud Console 超时分支保留已提交的 project ID,返回 AI Studio 检查并导入;与“已有项目优先 Import,明确无候选才 Create”结合,阻止重复建项目。
  • 自动验证:3 项针对回归通过;全量 87/87 通过。
  • 当前状态:已修复待服务重启复测

AS-023:同步人工 Key 时比特浏览器被关闭/重开,导致成功 Key 未写入数据库

  • 发现时间:2026-09-22 16:00
  • 测试账号:1 个(脱敏)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 人工 Key 同步与数据保存
  • 实际结果:点击账号行内“同步人工 Key”后,任务在登录跳转阶段连续报 Target page, context or browser has been closed,未进入 Key 读取,也未写库。
  • 前置状态:同一账号的比特浏览器正在人工操作,窗口可能在同步刚启动时被关闭或重开。
  • 预期结果:同步是只读任务;若 CDP page/context/browser 在启动瞬间关闭,应自动重开一次,读取线上 Key,写入当前邮箱的数据库记录,并把 AI Studio 流程日志标记为 success。
  • 修复说明:仅对 aistudio_sync_key 增加一次浏览器重连;仅匹配 page/context/browser closed 错误,其它错误不重试,并设置 1 次上限防止循环。
  • 需求更正:用户不应手工触发第二次同步。前端“同步人工Key”已移除,该重连逻辑仅作为旧接口兼容保留;新主流程见 AS-015,由“浏览器”按钮自动监听并保存。
  • 自动验证:人工 Key 只读同步、数据库/成功日志写入、浏览器恢复边界和项目导入回归测试通过。
  • 当前状态:已修复待服务重启复测

AS-024:Import projects 有候选项目但未勾选,误判为已导入

  • 发现时间:2026-09-22 16:53
  • 测试账号:2 个(脱敏)
  • 严重程度:阻塞
  • 所属步骤:AI Studio Key / Cloud 项目导入
  • 实际结果:Import projects 抽屉已经列出可导入项目,但项目复选框保持未选中,程序却记录“Cloud 项目已显示为 Imported”,没有点击项目复选框和 Import 主按钮;随后创建项目列表持续为空并失败。
  • 预期结果:必须先勾选具体项目,确认该项目进入选中状态,再点击可用的 Import 主按钮;未执行提交前,页面中任何 Imported 文案都不能作为本次导入成功依据。
  • 稳定复现:是;截图与 16:53:32 日志可以一一对应。
  • 初步定位:导入抽屉根节点范围过大,把背景或辅助区域的 Imported 文案当成当前项目状态;同时 Angular 隐藏原生 checkbox 到可见控件的映射不稳定,并可能把 Select all 当成项目项。
  • 修复说明:以 Import projects 标题及其搜索框、复选框、按钮共同定位最小抽屉;过滤 Select all;将隐藏 input 映射到可见 checkbox/label;优先按 project ID 选项目,否则选择第一个真实未选项目;最多重试勾选 3 次;只有实际提交 Import 后才允许接受 Imported 状态。
  • 同步处理:从候选项目行提取 project ID,导入后若 Google 尚未同步到创建列表,沿用该 ID 进入 2 分钟非阻塞挂起,不重复创建项目,也不占用其它账号队列。
  • 自动验证:新增与截图一致的回归场景(未勾选项目 + 页面存在无关 Imported 文案),确认只勾选具体项目、不点击 Select all、点击 Import;全量 88/88 通过。
  • 录屏监控:下一轮复测已开启 AI Studio / Google Cloud 窗口级录屏,约 1 FPS,最长 30 分钟,保存在 data/manual_recordings/aistudio_retest_20260922_170141/。
  • 真实复测:17:12 vinht… 的日志完整出现“已点击待导入项目复选框 → 已点击 Import 主按钮 → Cloud 项目导入完成 → 新建项目已确认选中”,随后 Key 创建、读取、写库及成功日志全部完成;visoot… 同轮也成功创建并写库。
  • 当前状态:已关闭

AS-025:项目同步“挂起2分钟”被外层立即当成失败

  • 发现时间:2026-09-22 17:06
  • 测试账号:本轮多个账号(脱敏)
  • 严重程度:阻塞
  • 所属步骤:AI Studio Key / Cloud 项目同步调度
  • 实际结果:日志先输出“Cloud 项目尚未同步到导入列表,挂起 2 分钟后重试”,紧接着却输出“创建失败”,写入 failed 流程日志并结束该账号;没有真正进入延迟队列。
  • 预期结果:第一次遇到 Cloud 项目同步延迟时,应立即关闭该账号浏览器并释放鼠标、高风险并发槽和批量线程;2 分钟后只重新执行项目导入与 Key 创建步骤。
  • 稳定复现:是;本轮 17:06–17:08 多个新建 Cloud 项目的账号均复现。
  • 根因:新版项目选择函数已经返回 projectSyncPending/retryAfterMs/preferredProjectId,但 ensureProjectSelected 只向上传递 ok/created/msg,三个调度字段被丢失,外层只能按普通失败处理。
  • 修复说明:新版项目选择结果改为原样返回,完整保留延迟调度元数据;新增回归断言,禁止以后再次裁掉这些字段。
  • 自动验证:项目同步延迟、并发延迟队列、Cloud 项目兜底针对测试均通过;全量 88/88 通过。
  • 部署状态:全量 88/88 通过;旧批次结束后已于 17:14 重启服务,新进程 PID 61836。
  • 真实复测:17:17 vbs… 首次进入同步等待后,浏览器、AI Studio 高风险槽和批量工位均释放,下一账号立即开始;约 2 分钟后日志明确显示“重新入队,本轮只重试项目导入和创建 Key”。vcobj…、vekw…、vergela… 同样按该机制运行。
  • 当前状态:已关闭;第二次入队后的候选渲染竞态另记 AS-026

AS-026:Import 抽屉短暂显示空列表,候选项目晚到却被提前判空

  • 发现时间:2026-09-22 17:20
  • 测试账号:4 个(脱敏)
  • 严重程度:阻塞
  • 所属步骤:AI Studio Key / Cloud 项目导入
  • 实际结果:账号完成 2 分钟非阻塞等待并重新入队,但 Import projects 初始短暂显示 No projects,程序立即返回失败;错误截图保存时,指定项目已经出现在候选列表且未勾选。
  • 证据:vbs…、vcobj…、vekw…、vergela… 四张失败截图均显示本轮 project ID 已作为可导入候选出现。
  • 预期结果:携带明确 project ID 的同步重试必须在整个等待窗口持续轮询;候选晚到后立即勾选具体项目并点击 Import。普通首次检查也不能用瞬时空列表直接下结论。
  • 根因:importCloudProjectFromDrawer 检测到 noProjects 后立即返回,未给 Angular 异步候选列表渲染留出稳定窗口。
  • 修复说明:指定 project ID 时忽略瞬时空状态并用完整超时持续轮询;普通首次检查要求空状态连续稳定 2.5 秒才回退创建项目;候选出现即清除空状态计时。
  • 自动验证:新增真实 Chromium 回归场景,先显示 No projects found,900ms 后插入候选,确认程序继续勾选并点击 Import;全量 88/88 通过。
  • 真实复测:17:27 批次中 vbs…、vcobj…、vekw…、vergela… 均等待到候选出现,正确勾选并点击 Import,随后成功创建 Key、写库及记录 success。
  • 当前状态:已关闭

AS-027:待同步 project ID 仅保存在内存,跨批次会重复创建 Cloud 项目

  • 发现时间:2026-09-22 17:18
  • 测试账号:至少 3 个(脱敏)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 数据持久化
  • 实际结果:上一批已经创建项目并进入同步等待,下一批启动后 project ID 丢失;当 Import 候选尚未出现时,程序再次进入 Cloud Console 新建项目。同一账号两轮 project ID 明确不同。
  • 示例:vcobj… 从 poetic-analog… 变为 coherent-graph…;vekw… 从 tough-flames… 变为 third-upgrade…;vergela… 从 festive-freedom… 变为 pristine-cairn…。
  • 预期结果:待同步 project ID 必须跨 Worker、跨批次和服务重启保存;再次测试时只等待/导入该项目,不得重复创建。
  • 修复说明:进入同步等待前按邮箱持久化 project ID 与时间;步骤启动时恢复并明确禁止重复创建;Key 成功后清除;记录保留24小时,过期后允许恢复,避免错误 ID 永久卡住账号。
  • 自动验证:覆盖邮箱隔离、保存/恢复、24小时过期和调度链路;全量 88/88 通过。
  • 真实复测:上述4个成功账号均在日志中先恢复原 project ID,并导入同一 ID;未进入 Create project/Cloud Console,成功后对应待同步记录已清除。
  • 当前状态:已关闭

AS-028:推荐列表为空时项目搜索与失效项目恢复不完整

  • 发现时间:2026-09-22 17:29
  • 测试账号:1 个(脱敏)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / Cloud 项目导入
  • 实际结果:第一版程序恢复了 clear-apogee… project ID,但推荐列表持续显示 No projects found,未使用搜索框;加入精确搜索后真实复测确认该旧 ID 本身也无搜索结果,流程仍无法转为创建新项目。
  • 预期结果:可见候选直接勾选、绝不多余搜索;持有确切 project ID 且推荐为空时输入该 ID 精确搜索;历史 ID 等满同步窗口仍无搜索结果时判失效并创建新项目;本轮刚创建的新项目搜索暂空时只挂起等待,禁止重复创建。
  • 修复说明:空状态稳定2.5秒后执行 project ID 精确搜索;搜索命中后沿用勾选/Import/成功确认逻辑。待同步记录保留最初保存时间,满2分钟后仍搜索不到才允许解除旧 ID 限制并创建新项目。Cloud Console 本轮新建的 ID 会被标记为新项目,搜索暂空时非阻塞挂起2分钟,不会被误判失效。
  • 真实人工验证:17:42–17:44 为 veldag… 创建新 Cloud 项目;返回 AI Studio 时推荐列表仍为空,使用新 project ID 搜索后立即找到并导入,创建 Key 成功。17:44:48 后台记录“人工创建的 AI Studio API Key 已自动保存”,数据库确认 Key、Key 名称、项目名称均存在。
  • 自动验证:真实 Chromium 覆盖“推荐为空 → 输入 project ID → 搜索结果出现 → 勾选 → Import”和“精确搜索仍为空 → 显式标记旧 ID”;同时覆盖新项目不足2分钟时只挂起、持久化时间不被重置,以及候选已显示时搜索次数为0;全量88/88通过。
  • 当前状态:已修复,待自动流程真实复测

AS-029:人工 Key 保存成功后遗留旧 project ID

  • 发现时间:2026-09-22 17:51
  • 测试账号:1 个(脱敏)
  • 严重程度:一般
  • 所属步骤:AI Studio Key / 数据保存
  • 实际结果:人工创建的 Key 已被监听器成功写库并记录 success,但该邮箱上一轮自动流程保存的待同步旧 project ID 仍存在;下次自动处理可能先恢复无效旧 ID。
  • 预期结果:人工创建或人工同步 Key 成功代表项目导入链路已经完成,应同时清除该邮箱的待同步项目状态。
  • 修复说明:open_manual_aistudio 自动监听和独立人工同步步骤在 Key 写库成功后,均按规范化邮箱清空 aistudio_pending_project:*;失败或仅删除旧 Key 时不误清理其它状态。
  • 数据修复:现场检查确认本账号确有遗留记录,已清空;再次读取确认记录为空,已保存的 Key 不受影响。
  • 自动验证:人工同步回归用例增加两个入口的清理断言并通过。
  • 当前状态:已修复

AS-030:Cloud 项目创建后仍用 project ID 搜索导入

  • 发现时间:2026-09-22 18:08
  • 测试账号:本轮多个账号(脱敏)
  • 严重程度:严重
  • 所属步骤:AI Studio Key / Cloud 项目导入
  • 实际结果:Cloud Console 已创建项目,返回 Import projects 后使用自动生成的 project ID 搜索;个别账号当时无结果,继而进入长时间挂起。
  • 预期结果:程序应保留 Cloud Console 表单上的项目名称,返回 AI Studio 后优先使用项目名称搜索、勾选并导入;project ID 仅作为项目身份校验和兼容旧状态。
  • 修复说明:创建成功时同时返回 projectName 和 projectId,并跨挂起队列、数据库待同步记录完整传递;导入搜索框优先填项目名称。
  • 自动验证:真实 Chromium DOM 用例已改为“只有输入项目名称才出现结果”,成功勾选并点击 Import。
  • 真实复测:18:29:56 various… 创建 Cloud 项目后明确按项目名称 My Project 7839 搜索,随后成功导入并创建 Key。
  • 当前状态:已关闭

AS-031:项目同步挂起 2 分钟过长,且恢复时缺少原始时间

  • 发现时间:2026-09-22 18:09
  • 测试账号:本轮多个账号(脱敏)
  • 严重程度:一般
  • 所属步骤:AI Studio Key / 延迟调度
  • 实际结果:搜索暂无结果时挂起 120 秒,用户确认等待过长;同时 Worker 回队仅传递 project ID,没有完整传递最初保存时间,会影响旧项目恢复判定。
  • 预期结果:挂起 30 秒后重新入队,等待期间继续释放浏览器、鼠标锁、AI Studio 高风险并发槽和批量工位。
  • 修复说明:服务、步骤和 Worker 统一改为 30 秒;回队时完整传递 project ID、project name 和最初 savedAt,保持非阻塞调度。
  • 自动验证:延迟队列用例确认 delayMs=30000,同时验证三个项目字段传递完整。
  • 真实复测:18:30:19 挂起并释放队列,18:30:49 准时回队,仅重试项目导入和 Key 创建,最终成功。
  • 当前状态:已关闭

AS-032:创建流程中新 Key 列表晚到被当成旧 Key 删除

  • 发现时间:2026-09-22 18:07
  • 测试账号:vanquy…
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 新旧 Key 判定
  • 实际结果:18:07:16 创建流程中列表出现 1 枚 Key,18:07:18 被误判为“旧 Key 列表晚到”,18:07:27 删除;直到 18:08:19 才再次创建并读取成功,多耗时约 63 秒,且存在删除刚创建 Key 后二次创建失败的数据风险。
  • 根因:稳定性检查只看到“行数从 0 变 1”,没有区分该 Key 是任务入口就存在,还是已进入创建流程后才出现。
  • 修复说明:仅任务入口首次检查就存在的 Key 允许按旧 Key 替换流程处理;进入创建流程后才出现的 Key 直接读取、写库并标记成功,禁止再删除重建。若当时无法安全读取,则明确失败但仍不删除。
  • 自动验证:回归用例确认 late-key 分支必须调用读取同步,且分支内不允许出现 deleteAllKeys。
  • 当前状态:已修复,待真实流程复测

AS-033:AI Studio 访问受限页被误报为“未找到创建按钮”

  • 发现时间:2026-09-22 18:28
  • 测试账号:vapor…
  • 严重程度:一般(外部账号限制,但错误诊断不准确)
  • 所属步骤:AI Studio Key / 页面状态识别
  • 实际结果:账号打开 API Keys 后被 Google 重定向到 Available regions for Google AI Studio and Gemini API,程序仍尝试校准、创建和重试,最后误报“未找到 Create API key 按钮”。
  • 截图证据:页面明确列出 Regional restrictions、Age requirements 和 Account verification 三类外部限制原因。
  • 预期结果:立即停止 Key 创建流程,明确记录“Google AI Studio 访问受限(地区、年龄或账号验证条件不满足)”,不再无效重载或点击。
  • 修复说明:按 Available regions URL 和页面标题/三项特征文字快速识别,返回 AI_STUDIO_ACCESS_RESTRICTED 及外部阻塞标记。
  • 首次复测:18:39 仍误报“未找到 Create API key”。进一步定位到受限文档顶部的 Dismiss 使用了通用 mdc-button--unelevated 样式,在读取页面正文前被宽泛选择器误当成创建按钮。
  • 二次修复:将 Available regions 正文检测提前到任何按钮和列表检测之前,并增加“受限检测必须早于通用按钮匹配”的回归约束。
  • 部署状态:二次修复针对性及全量88/88测试通过,18:43 服务重启到 PID 36044。
  • 当前状态:已修复,待同类受限账号复测

AS-034:30秒回队间隔被误用为项目失效判定阈值

  • 发现时间:2026-09-22 18:53
  • 测试账号:vanducl…、vankie…、vanlo…
  • 严重程度:严重
  • 所属步骤:AI Studio Key / Cloud 项目同步
  • 实际结果:Cloud Console 项目提交后进入30秒非阻塞挂起;首次回队搜索暂无结果时,因“已超过30秒”立即被判为旧项目不存在,转入新建项目。
  • 根因:将用户要求的“每次回队间隔30秒”和“允许把项目判为失效的保护时间”同时从2分钟改成30秒。
  • 修复说明:拆分两个阈值:回队间隔仍为30秒,项目失效保护期恢复为2分钟;保护期内允许最多4轮30秒非阻塞检查,不在首次回队时新建项目。
  • 部署状态:针对性用例及全量88/88测试通过,19:05 服务重启到 PID 48216;HTTP 200、任务接口0个活动任务、标准错误输出为空。
  • 当前状态:已修复并部署,待真实复测

AS-035:项目新建成功后创建框再次转圈,过早点击 Create key

  • 发现时间:2026-09-22 18:56
  • 测试账号:vanlo…
  • 严重程度:严重
  • 所属步骤:AI Studio Key / Key 创建表单
  • 实际结果:页面已显示 New project created!,但 Create a new key 对话框正在二次转圈重渲染;程序直接寻找并点击按钮,误报“未能点击 Create key”。
  • 修复说明:导入或新建项目成功后,提交 Key 前再次调用表单就绪检查,必须确认 spinner 消失且名称/项目控件恢复;超时时刷新重试,不在加载框上误点。
  • 部署状态:针对性用例及全量88/88测试通过,19:05 服务重启到 PID 48216;HTTP 200、任务接口0个活动任务、标准错误输出为空。
  • 当前状态:已修复并部署,待真实复测

AS-036:IPP 身份确认页假离开导致重试超过3次

  • 发现时间:2026-09-22 18:51
  • 测试账号:vanlawes…
  • 严重程度:一般
  • 所属步骤:登录 / 额外身份验证
  • 实际结果:点击“其它验证方式”后 DOM 短暂变化,被误判为已离开 IPP,但 URL 仍未变;日志出现 4/3至8/3,多等待约20秒。
  • 修复说明:点击后除了 DOM 状态还必须复核 URL/挑战类型;仍停留同一 IPP 时严格在第3次停止,不再进入第4次。
  • 部署状态:针对性用例及全量88/88测试通过,19:05 服务重启到 PID 48216;HTTP 200、任务接口0个活动任务、标准错误输出为空。
  • 当前状态:已修复并部署,待真实复测

AS-037:小窗口下新版 Google Cloud 首次条款弹窗未识别,误点底层 Create

  • 发现时间:2026-09-22 19:15
  • 测试账号:vahidtam…
  • 严重程度:严重
  • 所属步骤:AI Studio Key / Google Cloud Console 项目创建
  • 实际结果:页面停在 Welcome / Terms of Service 弹窗,复选框未勾选;程序20秒后把它误当成“无条款弹窗”,继续点击被遮挡的底层 Create,并仅凭页面预生成的 Project ID 误记为已提交,随后无效等待90秒。
  • 根因:新版条款容器没有旧选择器依赖的 role=dialog / cfc-dialog,复选框是自定义 MDC 节点;720px 高窗口让控件靠近弹窗底部,但分辨率不是根因。
  • 修复说明:补充 mat-mdc/mdc/cfc/通用 modal 容器识别;可从 Agree and continue 按钮反向定位含条款与复选框的祖先;支持自定义 checkbox,点击前自动滚入视口;必须确认弹窗消失才能操作项目表单,已识别弹窗超时则明确失败,禁止继续误点底层 Create。
  • 部署状态:720px 高度新版自定义弹窗回归用例及全量88/88通过;19:24服务重启到 PID 72636,HTTP 200、任务接口0个活动任务、标准错误输出为空。
  • 首次真实复测:valorant01… 已能识别条款弹窗并禁止误点底层 Create,但真实复选框封装节点仍无法直接查询/点击;20秒后明确失败,没有再无效等待90秒。
  • 二次修复:从 I agree to the... 可见文字 Range 计算首行位置,向左18像素定位视觉复选框中心;普通 checkbox 点击后确认按钮仍禁用时,使用页面鼠标坐标兜底,并再次验证按钮启用和弹窗消失。
  • 二次部署:针对性用例和全量88/88通过;20:03服务重启到 PID 32840,HTTP 200、任务接口0个活动任务、标准错误输出为空。
  • 当前状态:二次修复已部署,待真实复测。

AS-038:普通无项目账号不应先走 Import,应在当前创建框直接建项目

  • 发现时间:2026-09-22 20:05
  • 严重程度:一般
  • 所属步骤:AI Studio Key / 项目选择与创建
  • 人工验证:项目下拉已有真实项目时直接选中即可;没有可选项目时直接点 Create project。项目创建可能不发生 URL 跳转,但完成后会在原创建框中出现并可直接选中,不需要 Import。
  • 旧逻辑:没有真实项目时优先打开 Import projects,只有导入列表为空才回退创建,增加无效页面操作和等待时间。
  • 修复说明:普通路径改为“真实项目 → 直接选择;无真实项目 → 当前创建框直接创建并选中”;不再以 URL 是否跳转判断创建结果。只有数据库保存了明确 Cloud project ID、用于恢复已提交项目时才走 Import,避免重复创建。
  • 部署状态:语法检查、三项针对性测试及全量88/88通过;20:07服务重启到 PID 54008,HTTP 200、任务接口0个活动任务、标准错误输出为空。
  • 当前状态:已被用户2026-09-23完整流程文档纠正;详见 AS-039。

AS-039:无已导入项目时跳过 Import,可能重复创建 Cloud 项目

  • 发现时间:2026-09-23 11:21
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 项目导入与创建
  • 依据:用户提供的19页《AI studio key 流程》及39张流程截图。
  • 正确决策顺序:创建 Key 对话框已有真实项目则直接使用;显示 No Cloud Projects Available 时先进入 Import project;有候选就勾选并点击 Import;明确 No projects found 才返回下拉选择 Create project。
  • 创建分支:AI Studio 内创建成功且项目已在当前框选中时直接创建 Key,不要求 URL 跳转,也无需再次 Import。
  • Cloud Console 兜底:AI Studio 显示 Unable to create API key 时去 Cloud Console 创建;返回后依次 Close 失败提示、Cancel 残留创建项目弹窗,再使用 Cloud Console 页面记录的项目名称搜索、勾选并 Import,最后创建 Key。
  • 项目名:AI Studio 新建项目弹窗出现非英文或不符合 Google 规则的默认名时,替换为稳定英文名 Gemini Project。
  • 根因:AS-038 根据一次人工快速路径把“创建后可直接选择”错误扩展为“所有无已导入项目都跳过 Import”,会遗漏已有但尚未导入的 Cloud 项目。
  • 修复说明:恢复并强化“真实项目 → Import 检查 → 明确为空才 Create”的状态机;关闭空导入抽屉后重新展开并重新读取下拉 DOM;Cloud Console 返回补充幂等的 Close/Cancel 清理;继续保留内联创建成功后直接使用项目的快速路径与30秒非阻塞同步等待。
  • 自动验证:AI Studio 10项回归全部通过;新增状态机测试已覆盖“候选项目优先导入”和“空导入抽屉关闭后重新打开下拉创建”两条完整分支;全量88/88通过。
  • 部署状态:2026-09-23 11:44 服务已重启到 PID 29020;3001端口监听、HTTP 200、活动任务0、标准错误输出为空。
  • 当前状态:已修复并部署,待真实复测。

AS-040:Import 实际成功但初始超时耗尽,程序误报导入失败

  • 发现时间:2026-09-23 11:50
  • 测试账号:william…
  • 严重程度:严重
  • 所属步骤:AI Studio Key / 项目导入完成确认
  • 现场时序:11:50:05 勾选项目;11:50:25 点击 Import;11:50:26 程序记录“Import projects 中未能完成项目导入”;11:50:29失败截图已显示 Projects imported successfully!,创建框也已选中 My Project 13167。
  • 实际结果:项目已经成功导入,但流程在点击 Create key 前结束;该邮箱数据库没有写入 API Key。
  • 根因:导入函数从打开抽屉起共用一个总超时。页面勾选和渲染较慢,真正点击 Import 时初始时间已耗尽;代码固定等待1秒后没有下一轮完成状态检查,直接返回通用失败。
  • 修复说明:搜索、勾选等有效进度均续期;点击 Import 后开启独立12秒确认窗口;以成功 toast、抽屉关闭或导入状态为成功依据,不受初始超时影响。
  • 自动验证:新增“初始超时500毫秒、Import点击后1.8秒才成功”的真实时序回归,确认跨过初始超时后仍能识别成功;针对性测试及全量88/88通过。
  • 部署状态:2026-09-23 12:04 服务已重启到 PID 27848;3001端口监听、HTTP 200、活动任务0、标准错误输出为空。
  • 当前状态:已修复并部署,待该账号真实复测。

测试批次记录

2026-09-22 10:40 全套测试

  • 账号数量:5
  • 并发数量:5
  • 结果:成功 0,失败 5,跳过 0
  • 已通过:登录、Pro 检测、国家检测、语言修改
  • 阻塞步骤:改密码
  • 未执行:更改 2FA、获取凭证/应用密码、AI Studio API Key
  • 关联问题:AS-002

2026-09-22 10:47 第一次复测

  • 账号数量:5
  • 并发数量:5
  • 结果:成功 0,失败 5,跳过 0
  • 已确认修复:AS-002 不再生成第二个候选密码,三次提交均复用同一密码
  • 新发现:第三次提交后 Google 清空表单并退出 rapt,程序未识别成功状态
  • 阻塞步骤:改密码
  • 未执行:更改 2FA、获取凭证/应用密码、AI Studio API Key
  • 关联问题:AS-003、AS-004

2026-09-22 10:51 第二次复测

  • 账号数量:5
  • 并发数量:5
  • 结果:成功 0,失败 5,跳过 0
  • 已确认修复:AS-004,5 个账号均正确识别新密码/确认密码双输入框,没有再填入旧密码
  • 结论修正:第一次复测观察到的“表单清空 + URL 变化”不是改密成功,而是原生 GET 提交副作用
  • 新发现:候选密码进入 URL,并被诊断 JSONL 原样记录
  • 阻塞步骤:改密码
  • 未执行:更改 2FA、获取凭证/应用密码、AI Studio API Key
  • 关联问题:AS-003(结论修正)、AS-005

2026-09-22 10:58 第三次复测

  • 账号数量:全套 5 个;追加单账号改密码 1 个
  • 并发数量:全套 5;单账号 1
  • 全套结果:成功 0,失败 5,跳过 0
  • 已确认修复:AS-005,地址栏和新增诊断记录未再出现密码查询参数
  • 全套阻塞步骤:改密码,确认弹窗没有被可靠提交
  • 单账号结果:程序曾记录成功,但成功截图仍存在密码表单,确认属于误判;数据库完成标记已撤回
  • 未执行:更改 2FA、获取凭证/应用密码、AI Studio API Key
  • 新发现:成功消息和截图泄露候选密码;密码框切换类型导致错误成功判定
  • 关联问题:AS-006、AS-007

2026-09-22 11:08 第四次复测

  • 账号数量:1
  • 并发数量:1
  • 结果:成功 0,失败 1,跳过 0
  • 已通过:登录、语言、改密码、改 2FA
  • 已确认修复:AS-006、AS-007;改密确认弹窗正确点击,跳转安全检查页后才判成功,成功消息和截图无明文密码
  • 凭证步骤:检测到已有 refresh token,按设计跳过重复获取
  • 阻塞步骤:AI Studio API Key
  • 实际页面:第一层条款处理后仍有第二层 Google AI plans / Gemini API 附加条款 Continue 弹窗
  • 数据影响:本轮没有执行线上旧 Key 删除,数据库旧 Key 不受影响
  • 新发现:2FA 验证码/密钥诊断泄露;AI Studio 第二层条款未处理
  • 关联问题:AS-008、AS-009

2026-09-22 11:15 第五次复测

  • 账号数量:1
  • 并发数量:1
  • 结果:成功 0,失败 1,跳过 0
  • 正确跳过:已完成的改密码、改 2FA、已有凭证均未重复执行
  • 已确认修复:AS-009,附加条款不再阻挡页面,流程进入真实 Key 创建对话框
  • 已通过:成功新建并选中 Gemini Project,Key 名称为 Gemini API Key
  • 阻塞步骤:点击 Create key 前的按钮状态判断
  • 数据影响:新增了预期的 Gemini Project;没有创建 Key,也没有删除线上旧 Key
  • 新发现:项目已选中后仍被残留 data-disabled 属性拦截
  • 关联问题:AS-010

2026-09-22 11:20 第六次复测

  • 账号数量:1
  • 并发数量:1
  • 结果:成功 1,失败 0,跳过 0
  • 正确跳过:已完成的改密码、改 2FA、已有凭证均未重复执行
  • 已确认修复:AS-010,项目选中后实际点击 Create key,不再被残留 data-disabled 拦截
  • AI Studio 结果:Key 创建成功、详情读取成功、流程日志成功
  • 数据库核对:API Key、Key 名称、项目名称、项目编号、原始 JSON 均已保存;密码、2FA、凭证完成状态保持正确
  • 安全核对:本轮生成的 Gemini Key 未进入日志;密码和 TOTP 明文残留均为 0
  • 新发现:历史网络诊断 URL 中存在 Google 内部 API Key 参数,已按 AS-011 处理
  • 关联问题:AS-010(关闭)、AS-011

2026-09-22 11:27 四账号并发批量复测

  • 账号数量:4
  • 并发数量:2
  • 结果:成功 4,失败 0,跳过 0
  • 整批耗时:11:27:17–11:31:30,共 4 分 13 秒(253 秒)
  • 单账号实际处理耗时:2 分 14 秒、1 分 44 秒、1 分 34 秒、1 分 58 秒
  • 平均单账号实际处理耗时:112.5 秒,约 1 分 53 秒
  • 并发后的有效吞吐耗时:253 ÷ 4 = 63.25 秒/账号,约每 1 分 03 秒完成一个
  • 关键结果:4 个账号均完成改密码、改 2FA、凭证检查、AI Studio 项目创建、Key 创建与详情读取
  • 自动恢复:其中 1 个账号首次创建被判 suspicious,自动退避重试 1 次后成功
  • 数据库核对:4/4 均已完整保存密码/2FA完成标记、refresh token、API Key、Key 名称、项目名称、项目编号和原始 JSON;最新流程日志均为成功
  • 安全核对:API Key、密码、TOTP 明文日志残留均为 0;公开截图目录中的敏感 2FA checkpoint 为 0
  • 已确认修复:AS-008、AS-011
  • 尚未覆盖:这 4 个账号原先没有 AI Studio Key,本批次没有触发“删除已有 Key 后重建”场景

2026-09-22 11:40 性能优化(待实测)

  • 基准:上一批 4 账号、并发 2,平均实际处理 112.5 秒/账号,有效吞吐 63.25 秒/账号
  • 优化 1:已进入 Authenticator 设置页时直接判定无需密码验证,不再等待 networkidle 和密码框超时
  • 优化 2:替换已有 Authenticator 成功后跳过重复的“两步验证是否开启”页面检查;首次添加时仍保留完整检查
  • 优化 3:AI Studio 页面已就绪但没有同意弹窗时,观察窗口由 12 秒缩短为 5 秒;首次条款及第二层条款处理逻辑保持不变
  • 保留项:AI Studio 风控预热、suspicious 自动退避重试、真实鼠标点击均未缩短
  • 并发建议:继续使用 2;关键按钮依赖系统级真实鼠标,并发更高可能发生跨窗口抢鼠标
  • 预估收益:全新账号约节省 10–12 秒/账号;已同意过 AI Studio 的账号再额外节省约 7 秒
  • 自动验证:本次相关测试全部通过;全量测试中另有 2 条既有前端按钮顺序断言失败,与本次改动无关
  • 当前状态:代码已完成,等待下一批真实账号复测耗时

2026-09-22 11:44 二十账号并发 4 压测

  • 账号数量:20
  • 并发数量:4
  • 整批耗时:11:44:19–11:51:57,共 7 分 38 秒(458 秒)
  • 结果:成功 2,失败 18,跳过 0;成功率 10%
  • 尝试吞吐:458 ÷ 20 = 22.9 秒/账号(因大量快速失败,不能代表有效产能)
  • 有效成功吞吐:458 ÷ 2 = 229 秒/成功账号,约每 3 分 49 秒产出 1 个成功账号
  • 两个成功账号实际耗时:98 秒、149 秒;平均 123.5 秒,约 2 分 04 秒/账号
  • AI Studio 并发故障:10 个账号报“未找到项目选择控件”
  • 账号/Google 环境失败:4 个要求手机号验证、1 个旧密码失效、1 个登录被拒绝、1 个语言保存失败、1 个原 2FA 密钥错误,共 8 个
  • 自动恢复:其中 1 个成功账号首次创建被判 suspicious,自动退避重试后成功
  • 结论:本轮不能用于外推大批量耗时;并发 4 的系统鼠标竞争使有效吞吐低于并发 2
  • 关联问题:AS-012

2026-09-22 11:56 十八账号并发 4 复测

  • 账号数量:18(上一轮 2 个成功账号未进入本轮)
  • 并发数量:4
  • 整批耗时:11:56:20–12:03:50,共 7 分 30 秒(450 秒)
  • 结果:成功 6,失败 12,跳过 0;成功率 33.3%
  • 尝试吞吐:450 ÷ 18 = 25 秒/账号(包含快速失败,不能单独代表有效产能)
  • 有效成功吞吐:450 ÷ 6 = 75 秒/成功账号,约每 1 分 15 秒产出 1 个成功账号
  • 成功账号实际耗时:93、134、99、63、49、96 秒;平均 89 秒,约 1 分 29 秒/账号
  • AS-012 复测结果:系统鼠标出现排队日志,“未找到项目选择控件”由上一轮 10 次降为 0,互斥锁修复有效
  • AI Studio 剩余失败:5 个项目列表/项目状态失败;Key 创建触发 suspicious 重试共 11 次
  • 其它程序问题:1 个 Hindi 语言页确认按钮无法识别
  • 账号/Google 环境失败:4 个无法登录/需要手机或设备验证、1 个旧密码失效、1 个需切换 IP,共 6 个
  • 结论:并发鼠标问题已解决,但高风险 RPC 仍需局部限流、失败快速识别与项目刷新重试
  • 关联问题:AS-012(关闭)、AS-013、AS-014

2026-09-22 12:05 第二轮性能优化(待实测)

  • AI Studio 项目/Key 高风险区最多并行 2 个账号;其余步骤继续保持任务并发 4
  • 失败 toast 出现后立即进入重试,不再继续空等最多 20 秒
  • 复用鼠标校准已经打开的创建框,减少一次打开/关闭和一次项目列表加载
  • 新建项目提交后改用状态轮询,移除固定 4 秒等待
  • 项目列表/项目选中状态异常改为刷新 API Keys 页面后重试
  • 无同意弹窗的观察窗口由 5 秒降至 3.5 秒
  • Hindi 确认按钮修复后,避免每轮固定等待 12 秒再失败
  • 自动验证:AI Studio 并发限制、快速拒绝、鼠标锁、项目状态、同意弹窗、旧 Key 传播及语言服务测试全部通过
  • 当前状态:代码已完成,等待真实账号复测成功率与吞吐

2026-09-22 13:52 十二账号并发 4 复测

  • 账号数量:12
  • 并发数量:4;AI Studio 高风险区最多并行 2
  • 整批耗时:13:52:24–13:58:08,共 5 分 44 秒(344 秒)
  • 结果:成功 1,失败 11,跳过 0;成功率 8.3%
  • 尝试吞吐:344 ÷ 12 = 28.7 秒/账号(大量账号快速失败,不能代表有效产能)
  • 有效成功吞吐:344 秒/成功账号,即 5 分 44 秒产出 1 个成功账号
  • 成功账号实际耗时:51 秒
  • AI Studio 失败:5 个;其中项目/Key 创建触发重试 11 次,高风险区排队 3 次
  • 账号/Google 环境失败:4 个手机验证、1 个设备身份确认、1 个旧密码失效,共 6 个
  • AS-014 复测结果:Hindi 账号成功改为 English (United States),语言按钮修复有效
  • 关键定位:失败账号的 CreateCloudProject RPC 明确返回 HTTP 403;连续 4 次重试均未恢复,继续等待只会占用队列
  • 结论:本批剩余账号本身已处于持续项目创建风控状态,不能用于正常吞吐外推;需快速失败并提示切换 IP/浏览器环境
  • 关联问题:AS-013、AS-014(关闭)

2026-09-22 14:00 第三轮性能优化(待实测)

  • 业务流程直接监听 CreateCloudProject 与 GenerateCloudApiKey RPC 状态,不再只依赖诊断日志和 UI toast
  • CreateCloudProject 403 出现后立即停止项目就绪/Key 生成等待,只刷新页面重试一次
  • GenerateCloudApiKey 403 出现后立即进入重试,不再空等 20 秒
  • Key 创建总尝试由 4 次收敛为最多 3 次(首次 + 2 次重试);保留此前所有成功所需的最大重试次数
  • 项目失败与 suspicious 失败使用不同的准确提示,不再把项目列表 403 误写为“已重试 4 次可疑请求”
  • 预期收益:持续项目 403 的账号从约 2–3 分钟失败缩短到约 20–45 秒;正常账号不受影响
  • 自动验证:语法检查及 AI Studio 快速拒绝、局部并发、同意弹窗、项目状态、旧 Key、鼠标锁、语言服务测试全部通过
  • 当前状态:代码已完成,等待复测

2026-09-22 14:05 手动排查记录

  • 14:05:02 开始出现登录阶段 HTTP 401 与请求中止,尚未进入 AI Studio 创建项目/Key 流程
  • 14:05:56 页面、浏览器上下文被关闭;14:05:57 登录任务结束,结果为成功 0、失败 1
  • 用户手动确认:该账号密码确实已被修改
  • 归因:已确认的账号外部状态问题,不属于 AI Studio 功能缺陷,也不计入 AI Studio 失败率
  • 当前状态:本次账号未进入 AI Studio;继续等待下一次手动尝试
  • 用户随后检查 13:55:22 的一个历史失败账号;旧结果页显示“点击创建后未生成新 key……已重试 4 次仍被判为可疑请求”
  • 日志复核:13:54:19 首次提交创建项目后立即 HTTP 403,13:55:03 再次提交后仍 HTTP 403;失败发生在项目创建阶段,尚未进入 Key 生成阶段
  • 该结果生成于 14:00 优化前;“可疑请求/重试 4 次”属于旧版误归类文案。新版应明确报告 CreateCloudProject 403,并仅刷新重试一次后快速结束

2026-09-22 14:10 Cloud Console 手动兜底成功与自动化修复

  • AI Studio 实际提示:Unable to create API key,说明无法自动创建 API key 和 Google Cloud project,并提供 Google Cloud Console 链接
  • 手动成功步骤:打开 https://console.cloud.google.com/projectcreate → 首次使用弹窗选择/保留 United States → 勾选 Google Cloud 条款 → Agree and continue
  • 项目创建步骤:保留页面自动生成的项目名和项目 ID,父资源为 No organization,点击 Create
  • 成功标志:进入 Cloud Dashboard,通知区显示项目刚刚创建成功
  • 返回 AI Studio:打开 Import projects,按项目 ID 找到新项目;项目显示 Imported 后继续创建 Key
  • 最终结果:该历史失败账号成功创建 Key,证明 Cloud Console 兜底路径有效
  • 代码修复:自动识别 AI Studio 代建项目失败,执行上述 Cloud Console 首次条款、创建、按 ID 返回与导入流程;旧 403 状态在返回后清空,避免污染新一轮创建
  • 自动验证:新增真实 Chromium DOM 测试覆盖条款确认、默认项目名保留、项目 ID 提取、Import projects 按 ID 导入;全量 84 项中 82 项通过,2 项为既有前端按钮顺序断言失败,与本次修改无关
  • 当前状态:已修复,等待真实账号自动复测

2026-09-22 14:42 十二账号并发 4 复测

  • 前置单账号同步:14:41:24 启动 aistudio_sync_key,浏览器在跳转登录页时被关闭,14:41:31 报 Target page, context or browser has been closed;未进入 Key 读取和写库。本轮未再次复现,暂按浏览器被人工/外部关闭记录,重复出现再升级为程序缺陷。
  • 账号数量:12
  • 并发数量:4;AI Studio 高风险区最多并行 2
  • 整批耗时:14:42:12–14:46:39,共 4 分 27 秒(267 秒)
  • 结果:成功 2,失败 10,跳过 0;成功率 16.7%
  • 尝试吞吐:267 ÷ 12 = 22.25 秒/账号(包含账号验证快速失败,不能代表正常产能)
  • 有效成功吞吐:267 ÷ 2 = 133.5 秒/成功账号,约每 2 分 14 秒产出 1 个成功账号
  • 成功核对:2/2 均生成并读取完整 Key,数据库记录存在、Key 名称存在,最新 AI Studio 流程日志为成功;日志未输出 Key 明文
  • 账号外部问题:1 个密码已修改、2 个需要手机号验证
  • AI Studio 页面/流程失败:2 个项目创建弹窗持续转圈后误判按钮;1 个延迟附加条款阻挡;1 个 Cloud 项目创建成功但导入列表缓存无结果;1 个已有 Key 列表晚到;其余为项目表单/列表加载失败
  • Cloud Console 兜底实测:内部代建返回 403 后,已完成首次 Cloud 条款和项目创建,证明前半段自动化有效;后半段失败点收敛为 AI Studio 导入列表同步延迟/缓存
  • 性能观察:高风险区排队仅出现短时等待;主要无效等待来自项目弹窗误判后的 15–45 秒、创建表单固定等待 15 秒,以及导入抽屉固定空等 60 秒
  • 本轮修复:精确区分创建 Key/新建项目/条款弹窗;项目持续转圈转 Cloud Console;延迟第二层条款继续处理;晚到旧 Key 切回删除;导入搜索每 6 秒刷新、25 秒后整页重试
  • 自动验证:新增 2 个真实 Chromium 回归测试;全量 87 项全部通过
  • 关联问题:AS-009、AS-013、AS-016、AS-017

2026-09-22 15:07 八账号并发 4 复测

  • 账号数量:8
  • 并发数量:4;AI Studio 高风险区最多并行 2
  • 整批耗时:15:07:47–15:13:14,共 5 分 27 秒(327 秒)
  • 结果:成功 3,失败 5,跳过 0;成功率 37.5%
  • 成功核对:3/3 的 Key 均已写入数据库,最新流程日志均为成功
  • 账号外部问题:1 个需要手机号验证
  • Cloud Console 失败:2 个项目创建超时;1 个项目导入后未确认选中;1 个被误报为“旧 Key 列表晚到”
  • 已验证修复:此前附加条款阻挡的账号本轮成功;两个已有旧 Key 的账号均正确检测、删除旧 Key并重建成功,AS-009 与 AS-017 的主路径有效
  • 用户现场定位:Import projects 已自动显示并勾选建议项目,程序不应搜索项目 ID;1 project selected 不是 Imported,必须点击右侧 Import 主按钮
  • 本轮新增问题:AS-018;同时确认工具栏 more_vert 可能造成 AS-017 的假阳性
  • 修复后自动验证:Cloud 导入真实 DOM 测试确认不搜索且实际点击 Import;相关回归测试通过

2026-09-22 15:23 单账号成功复测与第四轮性能优化

  • 单账号总耗时:15:23:28–15:24:39,共 71 秒;其中 AI Studio 阶段约 53 秒
  • 结果:创建、读取并保存 Key 成功;AS-018 的“不搜索、点击 Import 主按钮”真实页面复测通过
  • 最大无效等待:账号本来已有一个未导入的 Cloud 项目,但程序先调用 AI Studio 内部创建项目,遇到 HTTP 403 后又去 Cloud Console 新建项目,约浪费 18 秒并产生重复项目
  • 次要无效等待:Import 完成后整页重载 API Keys,约浪费 5 秒;已同意账号仍固定观察条款弹窗 3.5 秒
  • 优化一:项目下拉无真实项目时,先打开 Import projects;存在推荐项目就直接导入,明确无候选项目才新建
  • 优化二:导入成功后关闭侧栏并复用当前创建框,不再整页重载;重开创建框固定等待由 2.5 秒降至 1.2 秒
  • 优化三:已同意账号的首次条款观察窗口由 3.5 秒降至 2.5 秒;创建表单阶段保留延迟条款二次检测
  • 稳定性边界:BotGuard 行为预热与 Key 生成结果等待未缩短,避免用成功率换速度
  • 预期收益:同类“已有未导入 Cloud 项目”账号可减少约 20–25 秒;实际耗时以服务重启后的下一轮复测为准
  • 自动验证:针对性回归与全量 87 项测试全部通过

2026-09-22 15:35 三账号并发复测

  • 账号数量:3;任务线程数 4,AI Studio 高风险操作上限 2
  • 整批耗时:15:35:25–15:38:35,共 3 分 10 秒(190 秒)
  • 结果:成功 0,失败 3,跳过 0
  • 排队观察:第三个账号在高风险区等待约 21 秒,限制按预期生效
  • 账号 A:旧 Key 删除成功后发生列表残影;刷新时旧行已消失,但遗漏重新创建,关联 AS-019
  • 账号 B:延迟 Additional Terms 挡住创建按钮,被误报为“创建对话框未出现”,关联 AS-020
  • 账号 C:Import 显示 Imported,但创建框持续显示 No Cloud Projects Available;内部创建 403、Cloud Console 建项目及返回导入均成功,最终失败在项目同步,关联 AS-021
  • 性能结论:优先 Import 路径已真实执行;有候选时不再重复建项目。确实没有候选的账号约 3 秒确认后转新建。主要剩余空等来自延迟条款误判和 Imported 后重复等待。
  • 修复后策略:延迟条款即时处理;lateExisting 刷新后无条件重建;Imported 短等 8 秒后最多精确刷新一次,仍无项目则准确快速失败
  • 自动验证:新增/更新回归测试后,全量 87 项全部通过
  • 当前状态:代码已修复,等待服务重启后的真实复测

2026-09-22 15:54 比特浏览器人工全流程录屏

  • 监控方式:只录制标题匹配 Google AI Studio / Google Cloud 的比特浏览器窗口,约 1 FPS;不录制其它桌面窗口。
  • 场景 1:创建框内没有已导入项目,Import projects 已列出并预选账号的现有 Cloud 项目;人工直接点 Import,约 1 秒后创建框自动选中项目,再创建 Key 成功。
  • 场景 2:用户确认线上已有 Key;正确路径为删除旧 Key 后重新创建。若旧 Key 删除后新建失败,数据库必须清除已失效的旧值。
  • 场景 3:新比特浏览器 16:02:48 进入 AI Studio,同样先导入已有 Cloud 项目;16:03:07 已显示导入成功且创建框选中项目,16:03:30 进入 Key 详情。
  • 耗时:场景 1 从 Import 候选可见到 Key 详情约 15 秒;场景 3 从新窗口加载到详情约 42 秒,其中从 Import 成功到详情约 23 秒(包含人工停留)。
  • 确认决策顺序:创建框有真实项目就直接用;否则先 Import projects;Import 有候选就导入;Import 明确无候选才创建新项目。
  • 隐私:问题记录不写入 Key 明文;本地连续帧含 Key 详情,仅用于本轮排查。
  • 代码结果:同步修复 AS-022 与列表 0→1 抖动恢复;针对回归和全量 87/87 测试通过。

2026-09-22 17:04 十二账号并发复测

  • 账号数量:12;并发数量:4。
  • 整批耗时:17:04:08–17:13:16,共 9 分 08 秒(548 秒)。
  • 结果:成功 3,失败 9,跳过 0;成功率 25%。
  • 成功核对:3/3 均完成 Key 创建、读取、按邮箱写库并记录 AI Studio success;其中 vinht…、visoot… 为上一轮重点复测账号。
  • AS-024 真实验证:候选项目未选中时,程序正确点击具体项目复选框、点击 Import 主按钮、确认导入和项目选中,最终成功创建 Key;问题关闭。
  • 账号外部问题:2 个需要手机号验证(其中 1 个先完成人机验证后进入手机号验证)。
  • 程序问题:7 个功能失败中,多数账号均在新建 Cloud 项目后命中“应挂起2分钟却立即失败”;定位为延迟调度字段在 ensureProjectSelected 被裁掉,记录为 AS-025。
  • 性能说明:本批 548 秒受完整改密/2FA、Cloud Console 项目创建及旧进程错误重试影响,不代表修复后 Key 流程吞吐;成功产出吞吐为约 183 秒/成功账号。
  • 修复部署:AS-025 修复后全量 88/88 通过;17:14 重启到 PID 61836,下一轮验证真正非阻塞挂起与2分钟后单步重试。

2026-09-22 17:16 八账号并发复测

  • 账号数量:8;并发数量:4。
  • 整批耗时:17:16:33–17:23:23,共 6 分 50 秒(410 秒)。
  • 结果:成功 2,失败 6,跳过 0;成功率 25%。
  • 成功核对:vdat…、vdin… 均完成 Key 创建、读取、按邮箱写库及 success 流程日志。
  • 账号外部问题:1 个完成人机验证后仍要求手机号验证。
  • AS-025 真实验证:4 个账号先释放队列并挂起约120秒,再只运行 AI Studio Key 步骤;调度、并发释放及单步恢复全部正常,问题关闭。
  • 新问题:4 个同步账号失败时截图中的项目候选已经出现,定位为短暂空列表被提前判定,记录 AS-026;另确认至少3个账号因跨批次丢失 project ID 而重复建项目,记录 AS-027。
  • 性能:410 秒包含每个同步账号的120秒非阻塞等待;等待期间其它账号正常运行,没有占用并发工位。尝试吞吐约51.3秒/账号;成功产出吞吐205秒/成功账号,暂不用于最终性能结论。
  • 修复验证:AS-026、AS-027 补丁完成,全量 88/88 通过,待重启后下一轮真实复测。

2026-09-22 17:27 六账号复测

  • 账号数量:6;并发数量:4。
  • 整批耗时:17:27:46–17:29:57,共 2 分 11 秒(131 秒)。
  • 结果:成功 4,失败 2;总成功率66.7%,排除账号手机号验证后的功能成功率为80%。
  • 成功核对:4/4 均恢复上轮 project ID、勾选并导入同一项目、创建及读取 Key、按邮箱写库并记录 success;无重复项目。
  • 账号外部问题:1 个完成人机验证和2FA后仍被 Google 要求手机号验证。
  • 唯一程序问题:veldag… 的指定项目不在推荐列表,页面持续 No projects found,程序未利用搜索框,记录为 AS-028。
  • 性能:尝试吞吐131÷6≈21.8秒/账号;成功产出吞吐131÷4≈32.8秒/成功账号。成功账号大多约35–81秒完成,未再发生2分钟挂起。
  • 修复验证:AS-026、AS-027 真实关闭;AS-028 修复完成,全量88/88通过,待单账号复测。

2026-09-22 17:42 单账号人工流程监控

  • 测试账号:veldag…;监控方式为比特浏览器窗口连续截图,并同步核对后台流程日志。
  • 总时间:17:42:10 打开 AI Studio,17:44:48 人工 Key 被监听并写库,共约2分38秒;包含人工讲解、切换标签及截图停留,不作为自动吞吐基准。
  • 真实路径:Import 推荐列表无项目 → AI Studio 内部 Create project 提示无法代建 → 打开 Google Cloud Console → 首次条款确认 → 创建默认项目 → Cloud Dashboard 确认成功 → 返回 AI Studio。
  • 关键结论:新项目未出现在推荐列表时,不必固定等待2分钟;使用 Cloud Console 页面生成的 project ID 精确搜索即可立即找到,随后勾选项目、点击 Import、在创建框确认项目已选中并创建 Key。
  • 数据核对:AI Studio 流程日志状态为 success;按该邮箱查询数据库,记录存在,Key、Key 名称和项目名称字段均非空;未在问题记录或日志输出 Key 明文。
  • 修复结果:历史旧 ID 满2分钟且精确搜索仍为空时允许创建新项目;本轮刚创建的项目先立即精确搜索,搜索暂空才进入非阻塞2分钟等待,避免重复项目。
  • 自动验证:针对性用例通过,全量88/88通过;待服务重启后进行自动单账号复测。

2026-09-22 18:00 九账号并发复测

  • 账号数量:9;并发数量:4。
  • 整批结果:成功 3,失败 6,跳过 0。
  • 本轮新问题:Cloud Console 创建后使用 project ID 而非项目名称搜索(AS-030);120 秒挂起过长且回队状态传递不完整(AS-031);创建流程中新出现的 Key 被误删并重建(AS-032)。
  • AS-032 现场时序:vanquy… 18:07:16 列表出现 Key,18:07:27 被删除,18:08:19 才二次创建成功,增加约63秒和二次创建风险。
  • AS-030 现场证据:18:08:54 和 18:08:59 两个账号均明确记录“按 project ID 精确搜索”,随后未立即导入。
  • 修复后自动验证:项目名搜索、30秒非阻塞挂起、late-key 直接读取三组针对用例通过;全量88/88通过。
  • 部署状态:18:25 服务已重启到 PID 53196,3001 端口监听与 HTTP 200 检查正常。
  • 当前状态:修复已部署,待真实批量复测。

2026-09-22 18:26 六账号并发复测

  • 账号数量:6;整批时间:18:26:47–18:31:45,约4分58秒。
  • 结果:成功 3,失败 3,跳过 0。
  • AS-030 真实验证:various… 18:29:47 创建 Cloud 项目,18:29:56 明确按项目名称 My Project 7839 搜索,不再用 project ID。
  • AS-031 真实验证:18:30:19 挂起 30 秒并释放队列,18:30:49 准时重新入队,本轮只执行项目导入和 Key 创建;18:31:19 导入,18:31:45 成功生成、读取和写库。
  • AS-032 旁证:vanth… 在任务入口就存在旧 Key,正确删除并于18:28:20重建成功,未二次删除;本轮未触发“创建中 Key 晚到”场景,该分支仍待直接真实复测。
  • 失败分类:1 个密码未被 Google 接受;1 个要求手机号验证;1 个被导向 Available regions 访问受限页,新增 AS-033 改善错误识别。
  • 本轮后部署:AS-033 修复后全量88/88通过;18:37 重启到 PID 60748,HTTP 200,标准错误输出为空。

2026-09-22 18:38 三账号访问限制复测

  • 账号数量:3;整批时间:18:38:42–18:39:52,约70秒。
  • 结果:成功 0,失败 3,跳过 0。
  • 账号侧阻塞:vanpho… 密码验证页重复出现,Google 未接受当前密码或需要额外验证;vansc… 完成人机验证和 TOTP 后被要求手机号验证。
  • AS-033 首次修复未通过真实复测:vapor… 仍误报“未找到 Create API key”;根因为顶部 Dismiss 按钮在正文检测前被误识别。
  • 修复与部署:受限页识别已前置,全量88/88通过;18:43 重启到 PID 36044,HTTP 200,标准错误输出为空。

2026-09-22 18:46 六账号并发复测

  • 账号数量:6;实际线程数:2;整批时间:18:46:14–18:56:43,共10分29秒(629秒)。
  • 结果:成功 3,失败 3,跳过 0;成功产出吞吐约209.7秒/成功账号,总尝试吞吐约104.8秒/账号。
  • 成功:vanducl…、vaniselvam…、vankie… 均完成 Key 生成、读取和写库。
  • 账号侧失败:vanessa… 完成人机验证和 TOTP 后要求手机号验证;vanlawes… 卡在 IPP 手机号/设备身份确认。
  • 功能失败:vanlo… 新建项目后创建框仍在 spinner 状态,最终误报未能点击 Create key,记为 AS-035。
  • 本轮验证:多个账号正确按 Cloud 项目名称搜索;30秒挂起期间释放线程,后续账号持续运行。
  • 新发现:回队间隔与项目失效阈值混用(AS-034);项目创建后二次转圈(AS-035);IPP 重试上限失效(AS-036)。
  • 修复与部署:三组针对用例和全量88/88通过;19:05 服务重启到 PID 48216,HTTP 200、任务接口0个活动任务、标准错误输出为空,待下一轮真实复测。

2026-09-22 19:11 八账号串行复测(人工中止)

  • 账号数量:选择8个;实际并发:1;运行时间:19:11:48–19:18:07,共6分18秒。
  • 正式完成2个:uzayermiyad… 登录阶段要求手机号验证,约69秒结束;vacanc.ies… 全流程成功并完成 Key 入库,约88秒。
  • 第3个 vahidtam… 已完成登录、改密和2FA,进入 Cloud Console 创建项目时触发 AS-037;19:18:01进入30秒非阻塞挂起,没有产生最终成功/失败记录。
  • 其余5个账号尚未开始;19:18:07任务收到手动停止,因此本轮不能作为8账号完整吞吐样本。
  • 性能观察:两个正式结果加一个未完成账号共占用378秒;由于中途人工停止且第3个账号包含90秒无效等待,不计算最终每账号吞吐。
  • 修复与部署:AS-037针对性测试和全量88/88通过;19:24服务重启到 PID 72636,HTTP 200、任务接口0个活动任务、标准错误输出为空,待重新跑完整批次。

2026-09-22 19:52 六账号串行复测

  • 账号数量:6;实际并发:1;整批时间:19:52:14–19:58:51,共6分36秒(约396秒)。
  • 结果:成功1、失败5、跳过0;总尝试吞吐约66.1秒/账号、约54.5账号/小时;成功账号完整流程约68秒。
  • 成功:vahidtam… 恢复并清除上轮无效项目记录后,创建项目、生成Key、读取和写库全部成功。
  • 账号侧失败:valentinericky…、valorant.crooshair…、valterbarbu… 均在人机验证和TOTP后要求手机号验证;valentinhoward… 被 Google 明确返回旧2FA验证码错误。
  • 功能失败:valorant01… 进入新版 Cloud Console 首次条款弹窗;第一版 AS-037 修复已阻止误点底层 Create 和90秒无效等待,但真实封装复选框未点中,20秒后明确失败。
  • 单账号结束耗时约为:68秒、69秒、32秒、58秒、104秒、58秒;第五个包含20秒条款失败等待。
  • 二次修复与部署:新增“DOM无可查询checkbox、仅有视觉复选框”坐标回归场景,针对性测试和全量88/88通过;20:03服务重启到 PID 32840,HTTP 200、任务接口0个活动任务、标准错误输出为空。

单条问题记录格式

AS-XXX:问题标题

  • 发现时间:
  • 测试账号:仅记录脱敏标识
  • 严重程度:阻塞 / 严重 / 一般 / 轻微
  • 所属步骤:登录 / 查看国家 / 更改语言 / 改密码 / 更改 2FA / 获取凭证 / AI Studio Key / 前端展示 / 数据保存
  • 前置条件:
  • 复现步骤:
  • 实际结果:
  • 预期结果:
  • 稳定复现:是 / 否 / 未确认
  • 相关日志:
  • 截图或录像:
  • 初步定位:
  • 当前状态:待确认 / 待修复 / 已修复待复测 / 已关闭
  • 备注:

记录约定

  • 邮箱、密码、2FA Secret、应用密码和 API Key 默认脱敏,不在本文中保存完整值。
  • 用户描述不完整时,先按原始现象记录,再补充复现条件与日志。
  • 同一根因引发的重复现象追加到原问题,不重复编号。
  • 修复后保留原始现象,并追加修复说明与复测结果。