baa-conductor


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

T-S020.md

  1# Task T-S020:回写浏览器桥接文档并补持久化 smoke
  2
  3## 直接给对话的提示词
  4
  5`/Users/george/code/baa-conductor/tasks/archive/T-S020.md` 任务文档,完成开发任务。
  6
  7如需补背景,再读:
  8
  9- `/Users/george/code/baa-conductor/plans/archive/BROWSER_BRIDGE_PERSISTENCE_REQUIREMENTS.md`
 10- `/Users/george/code/baa-conductor/tasks/archive/T-S017.md`
 11- `/Users/george/code/baa-conductor/tasks/archive/T-S018.md`
 12- `/Users/george/code/baa-conductor/tasks/archive/T-S019.md`
 13- `/Users/george/code/baa-conductor/README.md`
 14- `/Users/george/code/baa-conductor/docs/api/README.md`
 15- `/Users/george/code/baa-conductor/docs/firefox/README.md`
 16- `/Users/george/code/baa-conductor/plugins/baa-firefox/README.md`
 17- `/Users/george/code/baa-conductor/tests/browser/browser-control-e2e-smoke.test.mjs`
 18
 19## 当前基线
 20
 21- 仓库:`/Users/george/code/baa-conductor`
 22- 分支:`main`
 23- 提交:`12310df`
 24- 开工要求:不要从其他任务分支切出;如需新分支,从当前 `main` 新切
 25
 26## 当前状态
 27
 28- `已完成`
 29- 当前作用:保留为文档与 smoke 收尾参考
 30
 31## 建议分支名
 32
 33- `docs/browser-bridge-persistence-cutover`
 34
 35## 目标
 36
 37把浏览器桥接的正式口径改写成“登录态元数据持久化 + 空壳标签页 + 浏览器本地代发请求”,并补与之匹配的 smoke / 文档验收。
 38
 39## 背景
 40
 41`T-S017`、`T-S018`、`T-S019` 落地后,原来的文档口径会过时:
 42
 43- 以前更像页面对话和页面桥接
 44- 现在要收口成登录态记录、账户、指纹、端点元数据与浏览器代发
 45
 46如果文档和 smoke 不跟上,后续调用方仍会按旧模型理解插件和 `conductor` 47
 48## 最新接力说明
 49
 50当前收尾前提已经更新:
 51
 52- `T-S017`、`T-S018` 已并行完成
 53- `T-S019` 已完成,包括 `conductor-daemon` 集成与 build / 验证收口
 54- 本任务现在就是当前主线最后的收尾任务
 55
 56本任务应以 `T-S019` 的实际实现结果为准回写文档和 smoke,不再沿用旧的桥接口径。
 57
 58## 涉及仓库
 59
 60- `/Users/george/code/baa-conductor`
 61
 62## 范围
 63
 64- 更新 README 和相关 docs
 65- 更新插件 README
 66- 更新 browser smoke 或等价回归检查
 67- 在任务总览里同步新的任务状态
 68
 69## 路径约束
 70
 71- 本任务默认在 `T-S017`、`T-S018`、`T-S019` 基础上收尾。
 72- 不再改数据库模型和插件核心协议。
 73- 如果 smoke 缺少必要钩子,只做最小补充,不回头大改实现。
 74
 75## 推荐实现边界
 76
 77建议优先做:
 78
 79- 改写正式需求口径
 80- 让 smoke 覆盖登录态元数据与持久化读取
 81- 让 smoke 覆盖 `fresh` / `stale` / `lost` 的可观察行为
 82- 清掉“页面对话是正式能力”的旧文案
 83
 84## 允许修改的目录
 85
 86- `/Users/george/code/baa-conductor/README.md`
 87- `/Users/george/code/baa-conductor/docs/`
 88- `/Users/george/code/baa-conductor/plugins/baa-firefox/README.md`
 89- `/Users/george/code/baa-conductor/tests/browser/`
 90- `/Users/george/code/baa-conductor/tasks/TASK_OVERVIEW.md`
 91- `/Users/george/code/baa-conductor/plans/STATUS_SUMMARY.md`
 92
 93## 尽量不要修改
 94
 95- `/Users/george/code/baa-conductor/apps/conductor-daemon/`
 96- `/Users/george/code/baa-conductor/packages/db/`
 97- `/Users/george/code/baa-conductor/plugins/baa-firefox/controller.js`
 98
 99## 必须完成
100
101### 1. 回写正式口径
102
103- 明确浏览器桥接正式能力是登录态元数据持久化和浏览器代发
104- 明确只保存 `account`、凭证指纹和端点元数据
105- 明确不保存原始凭证值
106
107### 2. 更新 smoke / 验收说明
108
109- browser smoke 要覆盖新的正式模型
110- 至少能验证:
111  - 元数据上报
112  - 持久化存在
113  - 断连或老化后的状态变化
114  - 读接口不泄露原始凭证值
115
116### 3. 同步任务状态
117
118- `tasks/``plans/` 里的当前 TODO 状态与新任务进度一致
119- 不再让旧的 `4318/status-api` backlog 看起来像当前主线
120
121## 需要特别注意
122
123- 不要继续把页面对话、聊天 UI 或多标签会话写成插件主能力
124- 不要在文档里模糊“浏览器本地代发”和“conductor 直接持凭证调用”的边界
125- 这是收尾任务,优先讲清边界和验收口径
126- 如果文档口径和 `T-S019` 的实际实现存在偏差,以实际实现为准,再补 smoke 和说明
127
128## 验收标准
129
130- 文档与新需求一致
131- browser smoke 与新正式模型一致
132- `tasks/`、`plans/` 状态视图同步
133- `git diff --check` 通过
134
135## 推荐验证命令
136
137- `node --test /Users/george/code/baa-conductor/tests/browser/browser-control-e2e-smoke.test.mjs`
138- `npx --yes pnpm -C /Users/george/code/baa-conductor smoke`
139- `git -C /Users/george/code/baa-conductor diff --check`
140
141## 交付要求
142
143完成后请说明:
144
145- 修改了哪些文档和 smoke
146- 正式口径现在如何表述
147- 哪些旧文案被删除或降级
148- 跑了哪些验证
149- 还有哪些残余风险
150
151## 当前残余风险
152
153- `pnpm smoke` / runtime smoke 目前依赖仓库根存在本地运行目录:
154  - `state/`
155  - `runs/`
156  - `worktrees/`
157  - `logs/launchd/`
158  - `logs/codexd/`
159  - `tmp/`
160- 这些目录前提属于当前脚本和本机运行环境假设,不是本次浏览器桥接功能改动本身
161- 本机已补齐这些目录并完成验证,但如果换到一台新的机器或全新 checkout,仍需要先满足这些目录前提