baa-conductor


baa-conductor / tasks / archive
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  - 极长单行文本没有再做二次分段,当前主要依赖行截断策略