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` 通过