im_wower
·
2026-03-28
T-S037.md
1# Task T-S037:恢复 AI 页面右下角控制浮层,并支持页面级暂停 BAA 控制
2
3> 已完成并归档:`2026-03-28`
4
5## 直接给对话的提示词
6
7读 `/Users/george/code/baa-conductor/tasks/archive/T-S037.md` 任务文档,查看已完成任务记录。
8
9如需补背景,再读:
10
11- `/Users/george/code/baa-conductor/plugins/baa-firefox/README.md`
12- `/Users/george/code/baa-conductor/tasks/TASK_OVERVIEW.md`
13- `/Users/george/code/baa-conductor/plans/BAA_INSTRUCTION_SYSTEM.md`
14
15## 当前基线
16
17- 仓库:`/Users/george/code/baa-conductor`
18- 分支基线:`main`
19- 提交:`7dc34ad`
20- 开工要求:必须先从当前 `main` 新建任务分支,再开始开发;禁止直接在 `main` 上修改。功能任务分支名必须以 `feat/` 开头,缺陷任务分支名必须以 `bug/` 开头。
21- 开发隔离要求:必须使用新的 `git worktree` 开发本任务,禁止直接在当前正在使用的插件工作目录里修改并 reload 扩展,避免影响当前稳定可用的 Firefox 插件。
22
23## 必须创建的新分支名
24
25- `feat/page-level-baa-control-overlay`
26
27## 推荐 worktree
28
29- 建议新建:`/Users/george/code/baa-conductor-ts037`
30- 建议命令:`git worktree add ../baa-conductor-ts037 -b feat/page-level-baa-control-overlay main`
31
32## 目标
33
34把 AI 网页右下角的控制浮层正式恢复回来,并支持“仅暂停当前页面 / 当前对话的 BAA 控制”,避免死循环时只能做全局暂停。
35
36## 背景
37
38当前仓库已经补了一个临时止损方案:在支持的 AI 网页右下角注入全局 `pause / resume / drain` 浮层。但这只是全局控制,不是用户真正需要的“只暂停当前页面 / 当前对话”。
39
40现状问题:
41
42- 当前页面没有正式的页面级 BAA 控制开关
43- 一旦出现循环,用户只能全局 `pause`
44- `browser.final_message` 和 delivery 仍然按平台主链工作,无法只对某一个页面停用
45
46这张卡的目标不是继续扩大全局控制,而是把页面级 stop switch 正式落地。
47
48## 涉及仓库
49
50- `/Users/george/code/baa-conductor`
51
52## 范围
53
54- 恢复 AI 页面右下角控制浮层为正式能力,而不是临时 stopgap
55- 增加页面级 / tab 级 BAA 暂停状态
56- 让被暂停页面不再继续参与 `browser.final_message` 上报和 delivery 回写
57- 补最小自动化回归
58
59## 路径约束
60
61优先在 Firefox 插件运行时层完成,不要把这张卡扩成完整多页面会话框架重构。只有在确实需要 conductor 读面暴露时,才最小改动 `apps/conductor-daemon/src/`。
62
63## 推荐实现边界
64
65建议优先做:
66
67- 页面浮层状态以 `tabId + platform` 为主键;如果页面里已经能稳定取到 `conversationId`,可以作为补充字段保留
68- 页面级暂停后,至少阻断该页面的 `browser.final_message`
69- 如果该页面被标记为暂停,delivery 也不要继续往该页面注入 / 发送
70- 在 controller 或 `/v1/browser` 读面里保留最小可观察状态,便于排查“为什么这个页面没有继续执行”
71
72## 允许修改的目录
73
74- `/Users/george/code/baa-conductor/plugins/baa-firefox/content-script.js`
75- `/Users/george/code/baa-conductor/plugins/baa-firefox/controller.js`
76- `/Users/george/code/baa-conductor/plugins/baa-firefox/page-interceptor.js`
77- `/Users/george/code/baa-conductor/plugins/baa-firefox/final-message.js`
78- `/Users/george/code/baa-conductor/plugins/baa-firefox/background.js`
79- `/Users/george/code/baa-conductor/tests/browser/browser-control-e2e-smoke.test.mjs`
80- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/firefox-ws.ts`
81- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/browser-types.ts`
82- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/local-api.ts`
83
84## 尽量不要修改
85
86- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/`
87- `/Users/george/code/baa-conductor/plugins/baa-firefox/delivery-adapters.js`
88- `/Users/george/code/baa-conductor/docs/`
89
90## 必须完成
91
92### 1. 恢复正式页面浮层
93
94- 在 Claude / ChatGPT / Gemini 页面右下角显示 BAA 控制浮层
95- 浮层至少要能显示当前页面是否被暂停
96- 不要再只依赖 `controller.html` 做控制入口
97
98### 2. 支持页面级暂停
99
100- 用户可以只暂停当前页面 / 当前 tab 的 BAA 控制
101- 被暂停页面的 `browser.final_message` 不再继续上报给 conductor
102- 恢复后该页面能继续进入正常观察链
103
104### 3. 收口 delivery 行为
105
106- 被暂停页面不应继续接收自动 delivery 回写
107- 其他未暂停页面和全局控制语义不能被破坏
108- 临时全局浮层可以保留,但不能和页面级状态冲突
109
110### 4. 补回归
111
112- 覆盖页面级暂停后 `browser.final_message` 被抑制
113- 覆盖恢复后观察链重新生效
114- 覆盖现有全局 `pause / resume / drain` 语义不回归
115
116## 需要特别注意
117
118- 不要把这张卡扩成完整 conversation manager 或多 tab orchestration 重构
119- 不要破坏当前 shell tab、desired / actual / drift 语义
120- 不要回退已经修好的 Claude / ChatGPT / Gemini final-message 观察链
121- 页面级暂停和全局 `system pause` 要能区分,不能混成一个状态
122
123## 验收标准
124
125- 在支持的 AI 网页里能看到右下角 BAA 控制浮层
126- 用户可以只暂停当前页面,而不是只能全局暂停
127- 被暂停页面不会继续触发 `browser.final_message -> conductor -> delivery`
128- 恢复后该页面重新参与主链
129- 现有 browser smoke 通过
130
131## 推荐验证命令
132
133- `node --check /Users/george/code/baa-conductor/plugins/baa-firefox/content-script.js`
134- `node --check /Users/george/code/baa-conductor/plugins/baa-firefox/controller.js`
135- `node --check /Users/george/code/baa-conductor/plugins/baa-firefox/page-interceptor.js`
136- `node --check /Users/george/code/baa-conductor/plugins/baa-firefox/final-message.js`
137- `node --test /Users/george/code/baa-conductor/tests/browser/browser-control-e2e-smoke.test.mjs`
138- `git diff --check`
139
140## 交付要求
141
142完成后请说明:
143
144- 修改了哪些文件
145- 页面级暂停状态是怎么建模的
146- `browser.final_message` 和 delivery 各自如何尊重该状态
147- 跑了哪些测试
148- 还有哪些剩余风险