baa-conductor


baa-conductor / tasks / archive
im_wower  ·  2026-03-28

T-S018.md

  1# Task T-S018:把 Firefox 插件收口到空壳标签页并上报账号/指纹/端点
  2
  3## 直接给对话的提示词
  4
  5`/Users/george/code/baa-conductor/tasks/archive/T-S018.md` 任务文档,完成开发任务。
  6
  7如需补背景,再读:
  8
  9- `/Users/george/code/baa-conductor/plans/archive/BROWSER_BRIDGE_PERSISTENCE_REQUIREMENTS.md`
 10- `/Users/george/code/baa-conductor/plugins/baa-firefox/README.md`
 11- `/Users/george/code/baa-conductor/plugins/baa-firefox/manifest.json`
 12- `/Users/george/code/baa-conductor/plugins/baa-firefox/background.js`
 13- `/Users/george/code/baa-conductor/plugins/baa-firefox/controller.js`
 14- `/Users/george/code/baa-conductor/plugins/baa-firefox/content-script.js`
 15- `/Users/george/code/baa-conductor/plugins/baa-firefox/page-interceptor.js`
 16
 17## 当前基线
 18
 19- 仓库:`/Users/george/code/baa-conductor`
 20- 分支:`main`
 21- 提交:`12310df`
 22- 开工要求:不要从其他任务分支切出;如需新分支,从当前 `main` 新切
 23
 24## 建议分支名
 25
 26- `feat/firefox-shell-tab-metadata-reporting`
 27
 28## 目标
 29
 30把 Firefox 插件的正式能力收口到“空壳标签页 + 登录态元数据上报 + 浏览器本地代发请求”,不再把页面对话功能当成主能力。
 31
 32## 背景
 33
 34新的主需求明确要求:
 35
 36- 浏览器侧只保留空壳标签页
 37- 允许持久化 `account`
 38- 只上报凭证指纹和端点元数据
 39- 正式请求统一走已发现的 API 端点,由浏览器本地代发
 40
 41当前插件还保留了较多面向 Claude 页面会话和对话状态的逻辑,需要重新收口。
 42
 43## 涉及仓库
 44
 45- `/Users/george/code/baa-conductor`
 46
 47## 范围
 48
 49- 调整插件标签页策略到空壳模式
 50- 上报 `account`、凭证指纹和 API 端点元数据
 51- 收口页面对话状态相关逻辑
 52- 保留浏览器本地请求代发能力所需的最小原始凭证持有
 53
 54## 路径约束
 55
 56- 本任务只修改 Firefox 插件目录及其本地 README。
 57- 不修改 `conductor-daemon``packages/db` 58- 不在本任务里设计最终数据库 schema。
 59
 60## 推荐实现边界
 61
 62建议优先做:
 63
 64- 把每个平台的正式标签页模型收口成单个空壳页
 65- 明确插件向 `conductor` 上报的元数据:
 66  - `platform`
 67  - `account`
 68  - `credential_fingerprint`
 69  - `endpoints`
 70  - freshness / timestamps
 71- 把对话态、消息回读、页面 UI 状态降为非正式能力或直接移除
 72
 73## 允许修改的目录
 74
 75- `/Users/george/code/baa-conductor/plugins/baa-firefox/`
 76
 77## 尽量不要修改
 78
 79- `/Users/george/code/baa-conductor/apps/conductor-daemon/`
 80- `/Users/george/code/baa-conductor/packages/db/`
 81- `/Users/george/code/baa-conductor/docs/api/`
 82
 83## 必须完成
 84
 85### 1. 收口空壳标签页模式
 86
 87- 正式能力不再依赖页面对话上下文
 88- 每个平台只需要一个空壳页或等价页面壳
 89- 标签页不再作为业务持久化单位
 90
 91### 2. 上报账号/指纹/端点元数据
 92
 93- 允许上报 `account`
 94- 只上报凭证指纹,不上报原始凭证值
 95- 上报已发现且可用于代发的 API 端点列表
 96
 97### 3. 保留浏览器本地代发边界
 98
 99- 浏览器本地仍可持有原始凭证用于代发
100- 但这些原始值不能通过桥接协议回传给 `conductor`
101
102## 需要特别注意
103
104- 不要把原始 `cookie`、`token`、`header` 值发到 `conductor`
105- 不要在没有说明的情况下保留“页面对话功能仍是正式能力”的旧口径
106- 本任务可以与 `T-S017` 并行,但不要修改数据库模型
107
108## 验收标准
109
110- 插件正式模型已经收口到空壳标签页
111- 插件能输出 `account`、凭证指纹和端点元数据
112- 插件不再把页面对话状态当主能力
113- `git diff --check` 通过
114
115## 推荐验证命令
116
117- `node --check /Users/george/code/baa-conductor/plugins/baa-firefox/background.js`
118- `node --check /Users/george/code/baa-conductor/plugins/baa-firefox/controller.js`
119- `node --check /Users/george/code/baa-conductor/plugins/baa-firefox/content-script.js`
120- `node --check /Users/george/code/baa-conductor/plugins/baa-firefox/page-interceptor.js`
121- `git -C /Users/george/code/baa-conductor diff --check`
122
123## 交付要求
124
125完成后请说明:
126
127- 修改了哪些文件
128- 空壳标签页模式最终怎么定义
129- 上报了哪些元数据
130- 明确禁止上报了哪些敏感值
131- 还有哪些 `conductor` 侧对接依赖留给后续任务