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