im_wower
·
2026-03-28
T-S036.md
1# Task T-S036:收口 text-only delivery 主链与超长截断策略
2
3## 直接给对话的提示词
4
5读 `/Users/george/code/baa-conductor/tasks/T-S036.md` 任务文档,完成开发任务。
6
7如需补背景,再读:
8
9- `/Users/george/code/baa-conductor/plans/BAA_ARTIFACT_DOWNLOAD_REQUIREMENTS.md`
10- `/Users/george/code/baa-conductor/plans/archive/BAA_ARTIFACT_CENTER_REQUIREMENTS.md`
11- `/Users/george/code/baa-conductor/plans/archive/BAA_DELIVERY_BRIDGE_REQUIREMENTS.md`
12- `/Users/george/code/baa-conductor/docs/api/firefox-local-ws.md`
13
14## 当前基线
15
16- 仓库:`/Users/george/code/baa-conductor`
17- 分支基线:`main`
18- 提交:`309eab2`
19- 开工要求:必须先从当前 `main` 新建任务分支,再开始开发;禁止直接在 `main` 上修改。本任务是功能任务,分支名必须以 `feat/` 开头。
20
21## 必须创建的新分支名
22
23- `feat/baa-text-only-delivery`
24
25## 目标
26
27把当前 delivery 主链改成纯文本直注入:不再支持 artifact upload / download,不再下发摘要索引,超长文本只保留前若干行并在末尾追加 `超长截断`。
28
29## 背景
30
31之前的 artifact payload 交付链有明显问题:
32
33- upload / download 路径复杂,真机调试成本高
34- 摘要 / index 文本不适合继续作为默认交付面
35- 插件页面最终还是更适合直接接收文本
36
37因此主线改成:直接渲染完整文本,超长按行截断,不再做文件交付。
38
39## 涉及仓库
40
41- `/Users/george/code/baa-conductor`
42
43## 范围
44
45- server 侧 text-only delivery 渲染
46- 插件 / WS / local API 删除 upload/download 协议
47- 超长文本按行截断并追加 `超长截断`
48- 自动化测试与文档回写
49
50## 路径约束
51
52- 首版仍停留在单客户端、单轮 delivery
53- 不要在这张卡里扩到多节点分发
54- 不要在这张卡里扩到 `Gemini`
55
56## 推荐实现边界
57
58建议新增或扩展:
59
60- `apps/conductor-daemon/src/artifacts/`
61- `apps/conductor-daemon/src/local-api.ts`
62- `plugins/baa-firefox/` 的 text-only delivery 处理
63
64建议放到:
65
66- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/artifacts/`
67- `/Users/george/code/baa-conductor/plugins/baa-firefox/`
68- `/Users/george/code/baa-conductor/tests/browser/`
69
70## 允许修改的目录
71
72- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/`
73- `/Users/george/code/baa-conductor/plugins/baa-firefox/`
74- `/Users/george/code/baa-conductor/tests/browser/`
75- `/Users/george/code/baa-conductor/docs/firefox/`
76- `/Users/george/code/baa-conductor/docs/api/`
77- `/Users/george/code/baa-conductor/docs/baa-instruction-system-v5/`
78- `/Users/george/code/baa-conductor/tasks/`
79- `/Users/george/code/baa-conductor/plans/`
80
81## 尽量不要修改
82
83- `/Users/george/code/baa-conductor/packages/db/`
84- `/Users/george/code/baa-conductor/apps/status-api/`
85
86## 必须完成
87
88### 1. 收口 text-only delivery
89
90- 服务端不再生成 upload/download 合同
91- delivery 直接走 `browser.inject_message` / `browser.send_message`
92- 不再下发摘要 / result index
93
94### 2. 补超长截断策略
95
96- 大文本默认按行截断
97- 当前实现只保留前若干行,并在末尾追加 `超长截断`
98- 不做多消息分段,不做文件回退
99
100### 3. 补自动化验证
101
102- 至少覆盖一条 text-only 成功路径
103- 至少覆盖一条 inject fail-closed 路径
104
105## 需要特别注意
106
107- 不要把这张卡扩成多节点分发
108- 不要把这张卡扩成多客户端、多轮 delivery 编排
109- 如果 `T-S035` 仍在推进,优先保证 text-only `inject / send` 口径一致
110
111## 验收标准
112
113- upload / download 路径已从主链移除
114- text-only delivery 会直接注入完整文本
115- 超长文本会稳定截断并追加 `超长截断`
116- `git diff --check` 通过
117
118## 评测要求
119
120### 1. 正向评测
121
122- text-only delivery 能直接注入并发送
123- 超长输出会稳定触发截断
124
125### 2. 反向评测
126
127- inject 失败不能误判成成功
128- send 失败不能误判成成功
129
130### 3. 边界评测
131
132- 行数接近阈值时,截断行为要稳定
133- 页面轻微抖动时,adapter 错误结果仍要稳定
134
135## 推荐验证命令
136
137- `pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon build`
138- `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
139- `node --test /Users/george/code/baa-conductor/tests/browser/browser-control-e2e-smoke.test.mjs`
140- `git -C /Users/george/code/baa-conductor diff --check`
141
142## 交付要求
143
144完成后请说明:
145
146- 修改了哪些文件
147- text-only delivery 是怎么收口的
148- 超长截断策略是怎么实现的
149- 跑了哪些测试
150- 还有哪些剩余风险
151
152## 完成回写(2026-03-28)
153
154- 已完成:
155 - `conductor-daemon` 已删除 artifact materialize / manifest / delivery-plan / upload/download 路径
156 - Firefox bridge 和插件侧已不再接受 `browser.upload_artifacts` / `browser.upload_receipt`
157 - live delivery 现在直接渲染纯文本并走 `browser.inject_message` / `browser.send_message`
158 - 超长文本会按默认 `200` 行截断,并在末尾追加 `超长截断`
159 - `apps/conductor-daemon/src/index.test.js` 与 `tests/browser/browser-control-e2e-smoke.test.mjs` 已覆盖 text-only 成功路径、截断路径和 inject fail-closed
160- 当前剩余风险:
161 - 当前仍是单客户端、单轮 delivery
162 - 极长单行文本没有再做二次分段,当前主要依赖行截断策略