im_wower
·
2026-03-28
T-S035.md
1# Task T-S035:加固插件侧 text-only delivery adapter 与页面交付流程
2
3## 直接给对话的提示词
4
5读 `/Users/george/code/baa-conductor/tasks/archive/T-S035.md` 任务文档,查看已完成任务记录。
6
7如需补背景,再读:
8
9- `/Users/george/code/baa-conductor/plans/archive/BAA_PLUGIN_DELIVERY_HARDENING_REQUIREMENTS.md`
10- `/Users/george/code/baa-conductor/plans/archive/BAA_DELIVERY_BRIDGE_REQUIREMENTS.md`
11- `/Users/george/code/baa-conductor/docs/firefox/README.md`
12
13## 当前基线
14
15- 仓库:`/Users/george/code/baa-conductor`
16- 分支基线:`main`
17- 提交:`309eab2`
18- 开工要求:必须先从当前 `main` 新建任务分支,再开始开发;禁止直接在 `main` 上修改。本任务是功能任务,分支名必须以 `feat/` 开头。
19
20## 必须创建的新分支名
21
22- `feat/baa-plugin-delivery-hardening`
23
24## 目标
25
26把当前首版 `Claude` / `ChatGPT` 的 text-only `inject / send` 收口成更稳定的插件侧 delivery adapter,降低页面结构变化带来的脆弱性。
27
28## 背景
29
30当前 live delivery 已经切到 text-only 主链,但插件侧当前仍保留明显边界:
31
32- inject / send 仍是 DOM heuristic
33- 只有 `Claude` / `ChatGPT` 做了首版选择器和流程
34- 页面 readiness、失败恢复和结构化错误还不够稳定
35
36这张卡的重点不是扩平台,而是把已接通的平台做得更稳、更可诊断。
37
38## 涉及仓库
39
40- `/Users/george/code/baa-conductor`
41
42## 范围
43
44- `Claude` / `ChatGPT` delivery adapter 收口
45- text-only `inject / send` readiness 探测
46- 结构化失败原因与 fail-closed 路径
47- browser smoke 与文档回写
48
49## 路径约束
50
51- 只加固 `Claude` / `ChatGPT`
52- 不要在这张卡里扩到 `Gemini`
53- 不要在这张卡里恢复 upload / download / binary delivery
54- 保持 thin-plugin,不把 parser 或复杂编排塞回插件
55
56## 推荐实现边界
57
58建议新增:
59
60- `plugins/baa-firefox/` 下平台 delivery adapter 封装
61- 页面 readiness / selector / retry 辅助模块
62
63建议放到:
64
65- `/Users/george/code/baa-conductor/plugins/baa-firefox/`
66- `/Users/george/code/baa-conductor/tests/browser/`
67
68## 允许修改的目录
69
70- `/Users/george/code/baa-conductor/plugins/baa-firefox/`
71- `/Users/george/code/baa-conductor/tests/browser/`
72- `/Users/george/code/baa-conductor/docs/firefox/`
73- `/Users/george/code/baa-conductor/docs/api/`
74- `/Users/george/code/baa-conductor/docs/baa-instruction-system-v5/`
75- `/Users/george/code/baa-conductor/tasks/`
76- `/Users/george/code/baa-conductor/plans/`
77
78## 尽量不要修改
79
80- `/Users/george/code/baa-conductor/packages/db/`
81- `/Users/george/code/baa-conductor/apps/status-api/`
82- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/`
83
84## 必须完成
85
86### 1. 收口平台 adapter
87
88- `Claude` / `ChatGPT` 的 text-only `inject / send` 流程要有清晰 adapter 边界
89- 平台选择器、页面探测和前置条件不能继续散落成隐式逻辑
90
91### 2. 补 readiness 与 fail-closed
92
93- 页面未 ready、关键 selector 缺失、send 失败时要返回明确错误
94- 不能出现“实际没发出,但 session 被误标成功”
95
96### 3. 补 smoke 与文档
97
98- 至少覆盖一条成功路径和一条失败路径
99- 文档要明确当前仍是 DOM adapter,不是通用页面自动化框架
100- 文档要明确当前 delivery 不再支持 upload / download
101
102## 需要特别注意
103
104- 不要把这张卡扩成 artifact / binary / download 任务
105- 不要顺手扩到 `Gemini`
106- 如果后续还有 `T-S036`,这张卡优先收口 adapter 边界和失败恢复,不把服务端 delivery 逻辑塞回插件
107
108## 验收标准
109
110- `Claude` / `ChatGPT` text-only `inject / send` 的 adapter 边界清晰
111- 页面未 ready 或关键 selector 失效时会明确 fail-closed
112- browser smoke 覆盖成功与失败路径
113- `git diff --check` 通过
114
115## 评测要求
116
117### 1. 正向评测
118
119- `Claude` 路径能稳定完成 `inject / send`
120- `ChatGPT` 路径能稳定完成 `inject / send`
121
122### 2. 反向评测
123
124- 页面未 ready 时不能误判成功
125- 缺少关键 selector 时不能静默跳过 send
126
127### 3. 边界评测
128
129- 页面局部重渲染或短暂延迟时不会立刻把可恢复场景误判为失败
130- 同一步骤重试后仍失败时,错误结果稳定且可诊断
131
132## 推荐验证命令
133
134- `pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon build`
135- `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
136- `node --test /Users/george/code/baa-conductor/tests/browser/browser-control-e2e-smoke.test.mjs`
137- `git -C /Users/george/code/baa-conductor diff --check`
138
139## 交付要求
140
141完成后请说明:
142
143- 修改了哪些文件
144- `Claude` / `ChatGPT` adapter 是怎么收口的
145- 哪些页面失败场景现在会明确 fail-closed
146- 跑了哪些测试
147- 还有哪些剩余风险
148
149## 完成回写(2026-03-28)
150
151- 已完成:
152 - `plugins/baa-firefox/delivery-adapters.js` 已接入 `manifest.json` / `content-script.js`,把 `Claude` / `ChatGPT` 的 text-only `inject_message` / `send_message` 收口到统一 adapter
153 - adapter 现在会先做 page readiness,再做关键 selector 解析和结果确认;send 点击后若没有确认状态变化,会明确 fail-closed
154 - 插件侧已彻底删除 `upload_artifact` 路径,不再接受 upload/download 型 delivery 命令
155 - browser smoke 已补成功路径,以及 `page_not_ready`、`send_not_confirmed` 失败路径
156- 当前剩余风险:
157 - 仍依赖平台 DOM 结构,后续页面改版仍可能要求更新 adapter selector
158 - 当前只覆盖 `Claude` / `ChatGPT`
159 - 当前仍是单客户端、单轮 delivery