baa-conductor


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

T-S032.md

  1# Task T-S032:补 BAA artifact center 与 delivery plan Phase 2 服务端核心
  2
  3## 直接给对话的提示词
  4
  5`/Users/george/code/baa-conductor/tasks/archive/T-S032.md` 任务文档,完成开发任务。
  6
  7如需补背景,再读:
  8
  9- `/Users/george/code/baa-conductor/plans/archive/BAA_ARTIFACT_CENTER_REQUIREMENTS.md`
 10- `/Users/george/code/baa-conductor/plans/BAA_INSTRUCTION_SYSTEM.md`
 11- `/Users/george/code/baa-conductor/docs/baa-instruction-system-v5/docs/06-integration-with-current-baa-conductor.md`
 12- `/Users/george/code/baa-conductor/docs/baa-instruction-system-v5/docs/07-rollout-plan.md`
 13
 14## 当前基线
 15
 16- 仓库:`/Users/george/code/baa-conductor`
 17- 分支:`main`
 18- 提交:`85a27b6`
 19- 开工要求:如需新分支,从当前 `main` 新切
 20
 21## 建议分支名
 22
 23- `feat/baa-artifact-center`
 24
 25## 目标
 26
 27在 conductor 里补上 `artifact materialize + manifest/index + delivery plan` 的 Phase 2 服务端核心,不把结果交付逻辑继续散落在调用方。
 28
 29## 背景
 30
 31当前 repo 已经有 `instructions/` Phase 1,但执行结果还没有进入统一 artifact / manifest / delivery 结构。
 32
 33后续如果要稳定支持大结果、并发多结果和薄插件上传/注入,就需要先把 service-side artifact center 搭起来。
 34
 35## 涉及仓库
 36
 37- `/Users/george/code/baa-conductor`
 38
 39## 范围
 40
 41- artifact materializer
 42- manifest / index text builder
 43- delivery plan builder
 44- synthetic execution result 测试
 45- 文档与任务状态回写
 46
 47## 路径约束
 48
 49- 当前只做 conductor 服务端核心
 50- 不要在这张卡里实现 Firefox 插件 upload / download / inject
 51- 应允许完全用 synthetic execution result / fixture 跑通,不阻塞于 `T-S031`
 52
 53## 推荐实现边界
 54
 55建议新增:
 56
 57- `apps/conductor-daemon/src/artifacts/types.ts`
 58- `apps/conductor-daemon/src/artifacts/materialize.ts`
 59- `apps/conductor-daemon/src/artifacts/manifest.ts`
 60- `apps/conductor-daemon/src/artifacts/delivery-plan.ts`
 61
 62建议放到:
 63
 64- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/artifacts/`
 65- `/Users/george/code/baa-conductor/docs/baa-instruction-system-v5/`
 66
 67## 允许修改的目录
 68
 69- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/`
 70- `/Users/george/code/baa-conductor/docs/baa-instruction-system-v5/`
 71- `/Users/george/code/baa-conductor/tasks/`
 72- `/Users/george/code/baa-conductor/plans/`
 73
 74## 尽量不要修改
 75
 76- `/Users/george/code/baa-conductor/plugins/baa-firefox/`
 77- `/Users/george/code/baa-conductor/tests/browser/`
 78- `/Users/george/code/baa-conductor/packages/db/`
 79- `/Users/george/code/baa-conductor/apps/status-api/`
 80
 81## 必须完成
 82
 83### 1. 建 artifact materializer
 84
 85- 能把最小执行结果稳定转成 artifact 结构
 86- 至少覆盖 `exec`、`files/read`、`files/write` / `describe` / `status` 的摘要类结果
 87
 88### 2. 建 manifest / index / delivery plan
 89
 90- manifest 要可审计
 91- index text 要可直接作为后续注入文本基础
 92- delivery plan 不能把大结果退化成整段直接塞聊天
 93
 94### 3. 补自动化测试和文档
 95
 96- 用 synthetic execution result 跑通
 97- 文档明确:当前还没有 upload / download / receipt barrier
 98
 99## 需要特别注意
100
101- 不要把这张卡扩成插件上传实现
102- 不要把这张卡扩成 live final message ingest
103-`T-S031` 并行时,这张卡不要去改 `firefox-ws.ts` / `final-message.js` 主路径
104
105## 验收标准
106
107- synthetic execution result 能稳定 materialize 为 artifacts
108- manifest / index text / delivery plan 能稳定生成
109- 大结果不会被默认整段直接塞进聊天
110- `git diff --check` 通过
111
112## 评测要求
113
114### 1. 正向评测
115
116- `exec` 文本结果能产出 artifact + manifest entry + delivery plan
117- `files/read` 文本结果能产出 artifact 或 inline/index 决策
118
119### 2. 反向评测
120
121- 小结果和大结果不能生成完全相同的 delivery 策略
122- 不应该把二进制 / 大块文本默认当成纯 inline 注入
123
124### 3. 边界评测
125
126- 多结果并发时 manifest 顺序要稳定
127- 某个结果缺少可选字段时不能让整批 materialize 崩掉
128
129## 推荐验证命令
130
131- `pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon build`
132- `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
133- `git -C /Users/george/code/baa-conductor diff --check`
134
135## 交付要求
136
137完成后请说明:
138
139- 修改了哪些文件
140- artifact / manifest / delivery plan 是怎么设计的
141- 当前最小支持了哪些结果类型
142- 跑了哪些测试
143- 还有哪些剩余风险
144
145## 完成记录(2026-03-27)
146
147- 已新增 `apps/conductor-daemon/src/artifacts/`148  - `types.ts`
149  - `materialize.ts`
150  - `manifest.ts`
151  - `delivery-plan.ts`
152- 已通过 synthetic execution result 跑通:
153  - `exec` -> artifact + manifest + delivery plan
154  - `files/read` -> small/large 不同 delivery 策略
155  - 多结果稳定排序
156  - 缺少可选字段不崩整批 materialize
157- 当前最小支持结果类型:
158  - `exec`
159  - `files/read`
160  - `files/write`
161  - `describe` / `describe/business` / `describe/control`
162  - `status`
163- 完成当时明确留到后续:
164  - Firefox 插件 upload / download
165  - upload receipt barrier
166  - 依赖 receipt 的自动 inject / send
167- 当前残余边界:
168  - 后续 `T-S034` 已把 live instruction ingest 路径接到 artifact / upload / inject / send
169  - 当前交付仍建立在单节点本地 artifact store 和本地 `download_url` 之上,不做跨节点分发
170  - execution journal 只保留最近窗口,不扩成无限历史审计
171  - 当前 live 执行路径仍只覆盖 Phase 1 本机精确 target,不涉及跨节点和完整 task/run 编排
172- 实际验证:
173  - `pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon build`:通过
174  - `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`:`45/45` 通过