baa-conductor

git clone 

baa-conductor / tasks
im_wower  ·  2026-03-29

T-BUG-031.md

  1# Task T-BUG-031:插件重载后自动刷新已打开的 AI 页面
  2
  3## 状态
  4
  5- 当前状态:`已完成`
  6- 规模预估:`S`
  7- 依赖任务:无
  8- 建议执行者:`均可`
  9
 10## 直接给对话的提示词
 11
 12`/Users/george/code/baa-conductor/tasks/T-BUG-031.md` 任务文档,完成开发任务。
 13
 14## 当前基线
 15
 16- 仓库:`/Users/george/code/baa-conductor`
 17- 分支基线:`main`
 18- 提交:`a2c76c2`
 19
 20## 分支与 worktree(强制)
 21
 22- 分支名:`bug/reload-refresh-tabs`
 23- worktree 路径:`/Users/george/code/baa-conductor-reload-refresh-tabs`
 24
 25开工步骤:
 26
 271. `cd /Users/george/code/baa-conductor`
 282. `git worktree add ../baa-conductor-reload-refresh-tabs -b bug/reload-refresh-tabs main`
 293. `cd ../baa-conductor-reload-refresh-tabs`
 30
 31完成后提交与推送(由执行者完成,不要合并):
 32
 331. 在 worktree 里提交所有变更(包括更新后的任务文档)
 342. `git push -u origin bug/reload-refresh-tabs`
 35
 36## 目标
 37
 38插件重载或启动时,延迟几秒后自动刷新已打开的 AI 页面(Claude、ChatGPT、Gemini),确保 content-script 和 page-interceptor 重新注入,BAA 浮层恢复正常状态。
 39
 40## 背景
 41
 42插件重载后,已打开的 AI 页面不会重新注入 content-script,导致:
 43- 右下角 BAA 浮层显示"本页:未发现"
 44- page-interceptor 不工作,SSE/fetch 拦截失效
 45- final-message 无法捕获
 46
 47需要手动刷新每个页面才能恢复。
 48
 49## 必须完成
 50
 51### 1. 插件启动时查找已打开的 AI 页面
 52
 53`controller.js``browser.runtime.onInstalled` 或启动初始化阶段:
 54
 55-`browser.tabs.query` 查找所有匹配 AI 平台 URL 的 tab:
 56  - `https://claude.ai/*`
 57  - `https://chatgpt.com/*`
 58  - `https://chat.openai.com/*`
 59  - `https://gemini.google.com/*`
 60
 61### 2. 延迟后刷新
 62
 63- 延迟 2-3 秒(等待插件初始化、WS 连接建立)
 64- 对每个匹配的 tab 调用 `browser.tabs.reload(tabId)`
 65- 不刷新 controller 页面本身
 66- 不刷新 shell 页面(`#baa-shell` 的 tab),只刷新用户的业务对话页面
 67
 68### 3. 日志
 69
 70- 记录刷新了哪些 tab(tab ID、URL、平台)
 71- 如果没有找到需要刷新的 tab,记录"无需刷新"
 72
 73## 允许修改的目录
 74
 75- `/Users/george/code/baa-conductor/plugins/baa-firefox/controller.js`
 76
 77## 尽量不要修改
 78
 79- `/Users/george/code/baa-conductor/plugins/baa-firefox/content-script.js`
 80- `/Users/george/code/baa-conductor/plugins/baa-firefox/page-interceptor.js`
 81- `/Users/george/code/baa-conductor/apps/`
 82
 83## 需要特别注意
 84
 85- 只在插件安装/重载时刷新,不要在每次 `browser.runtime.onStartup` 时都刷新(避免浏览器启动时不必要的刷新)
 86- 延迟时间不要太短(WS 还没连上就刷新没意义),也不要太长(用户等太久)
 87- shell 页面不要刷新,它们由 conductor 管理
 88- 所有开发必须在 worktree 中进行
 89
 90## 验收标准
 91
 92- 重载插件后,2-3 秒内已打开的 ChatGPT/Claude/Gemini 页面自动刷新
 93- 刷新后 BAA 浮层正常显示(不再是"未发现")
 94- shell 页面不受影响
 95- controller 页面不受影响
 96
 97## 执行记录
 98
 99> 以下内容由执行任务的 AI 填写,创建任务时留空。
100
101### 开始执行
102
103- 执行者:`Codex (GPT-5)`
104- 开始时间:`2026-03-29 03:45:00 CST`
105- 状态变更:`待开始` → `进行中`
106
107### 完成摘要
108
109- 完成时间:`2026-03-29 04:07:14 CST`
110- 状态变更:`进行中` → `已完成`
111- 修改了哪些文件:
112  - `plugins/baa-firefox/controller.js`
113  - `tasks/T-BUG-031.md`
114- 核心实现思路:
115  -`controller.js` 启动初始化阶段增加一次性判定:结合 `browser.storage.session` 的本次浏览器会话标记与持久化的扩展 `origin`,区分“插件安装/重载”与“浏览器普通启动 / controller 页面重开”。
116  - 仅在判定为安装或重载时,延迟 `2500ms` 查询 Claude / ChatGPT / Gemini 已打开标签页,并只刷新非 `#baa-shell` 的业务页面。
117  - 为跳过、无需刷新、逐 tab 刷新成功 / 失败都增加日志,日志包含平台、tab ID、URL 和来源。
118- 跑了哪些测试:
119  - `node --check plugins/baa-firefox/controller.js`
120
121### 执行过程中遇到的问题
122
123> 记录执行过程中遇到的阻塞、环境问题、临时绕过方案等。合并时由合并者判断是否需要修复或建新任务。
124
125- 未发现阻塞问题。
126
127### 剩余风险
128
129- 该实现依赖 Firefox 扩展侧 `browser.storage.session` 与持久化的扩展 `origin` 来区分“插件重载”和“浏览器重启”。如果未来 Firefox 在这两处行为上发生变化,可能需要调整判定逻辑。