im_wower
·
2026-03-28
T-S030.md
1# Task T-S030:收口 BAA 指令解析中心 Phase 1 与最小执行闭环
2
3## 直接给对话的提示词
4
5读 `/Users/george/code/baa-conductor/tasks/archive/T-S030.md` 任务文档,完成开发任务。
6
7如需补背景,再读:
8
9- `/Users/george/code/baa-conductor/plans/archive/BAA_INSTRUCTION_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/02-protocol-spec.md`
12- `/Users/george/code/baa-conductor/docs/baa-instruction-system-v5/docs/04-execution-loop-state-machine.md`
13- `/Users/george/code/baa-conductor/docs/baa-instruction-system-v5/docs/06-integration-with-current-baa-conductor.md`
14
15## 当前基线
16
17- 仓库:`/Users/george/code/baa-conductor`
18- 分支:`main`
19- 提交:`3769b05`
20- 开工要求:不要从其他任务分支切出;如需新分支,从当前 `main` 新切
21
22## 建议分支名
23
24- `feat/baa-instruction-center`
25
26## 目标
27
28把 BAA 指令的提取、解析、标准化、去重和最小执行闭环放进 conductor,先跑通 Phase 1 的服务端 instruction center。
29
30## 背景
31
32`BAA_INSTRUCTION_SYSTEM.md` 和 v5 文档已经把职责边界讲清楚了:插件不解析 BAA,conductor 才是唯一解释中心。当前真正缺的是把这套模型拆成 repo 内可运行的第一阶段工程实现。
33
34这张卡的目标不是一次性做完 artifact / upload barrier / 多 AI 路由,而是先把“完整 assistant text -> BAA 指令 -> 最小执行闭环”落到 conductor。
35
36## 涉及仓库
37
38- `/Users/george/code/baa-conductor`
39
40## 范围
41
42- ` ```baa ` 提取
43- 四种参数形式解析
44- instruction normalize / envelope / dedupe key
45- 最小路由与执行闭环
46- 对应测试与文档回写
47
48## 路径约束
49
50- 这张卡默认以 conductor 侧实现为主,不依赖插件 parser
51- 应允许先用 synthetic complete assistant text / fixture 跑通,不要阻塞于 `T-S029`
52- 首版先做精确 target,不做 `pool.*` / `role.*`
53- 首版先做最小工具集,不要把 artifact / upload / download 全部并进来
54
55## 推荐实现边界
56
57建议优先做:
58
59- 新建 `apps/conductor-daemon/src/instructions/` 子目录
60- 先把 extraction / parse / normalize / dedupe 做扎实
61- 再把最小工具集映射到当前已有 conductor 能力
62- 优先用单元测试和 conductor 侧集成测试证明闭环
63
64## 允许修改的目录
65
66- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/`
67- `/Users/george/code/baa-conductor/packages/schemas/src/`
68- `/Users/george/code/baa-conductor/docs/baa-instruction-system-v5/`
69- `/Users/george/code/baa-conductor/tasks/`
70- `/Users/george/code/baa-conductor/plans/`
71
72## 尽量不要修改
73
74- `/Users/george/code/baa-conductor/plugins/baa-firefox/`
75- `/Users/george/code/baa-conductor/tests/browser/`
76- `/Users/george/code/baa-conductor/packages/db/`
77- `/Users/george/code/baa-conductor/apps/status-api/`
78
79## 必须完成
80
81### 1. 完成提取与解析
82
83- 只提取 ` ```baa `
84- 支持四种参数形式:
85 - 单行字符串
86 - 单行 JSON
87 - 多行 body
88 - 无参数
89- 普通代码块必须忽略
90
91### 2. 完成标准化与去重
92
93- 生成稳定 instruction envelope
94- 生成稳定 dedupe key
95- 保留最小可审计字段:
96 - `platform`
97 - `conversation_id`
98 - `assistant_message_id` 或等价消息身份
99 - `block_index`
100 - `target`
101 - `tool`
102 - `params`
103
104### 3. 跑通最小执行闭环
105
106- 首版至少支持:
107 - `@conductor::describe`
108 - `@conductor::status`
109 - `@conductor::exec`
110 - `@conductor::files/read`
111 - `@conductor::files/write`
112- 优先复用当前已有 conductor 能力,不要重新造一套平行执行器
113
114## 需要特别注意
115
116- 不要在这张卡里顺手改插件,让它长 parser
117- 不要把 artifact 上传、下载、manifest、delivery plan 一次性全做进来
118- 和 `T-S029` 并行时,默认把浏览器最终消息 relay 当成外部输入;这张卡必须允许先用 synthetic message / fixture 自证闭环
119- 不要重新打开语法设计争论;v3 / v5 当前格式默认冻结
120
121## 验收标准
122
123- parser 能稳定提取 ` ```baa `,并忽略普通代码块
124- 四种参数形式都有自动化测试
125- dedupe key 稳定且可解释
126- 最小工具集能通过标准化指令跑通执行闭环
127- 插件侧仍没有 parser 逻辑
128- `git diff --check` 通过
129
130## 推荐验证命令
131
132- `pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon build`
133- `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
134- `git -C /Users/george/code/baa-conductor diff --check`
135
136## 交付要求
137
138完成后请说明:
139
140- 提取 / 解析 / normalize / dedupe 是怎么设计的
141- 最小执行闭环最终覆盖了哪些工具
142- 跑了哪些测试
143- 有没有刻意留到下一阶段的能力
144- 还有哪些剩余风险
145
146## 完成回写(2026-03-27)
147
148- 已完成:
149 - 已新增 `apps/conductor-daemon/src/instructions/` Phase 1 模块,并从 `apps/conductor-daemon/src/index.ts` 统一导出
150 - 已打通 `extract -> parse -> normalize -> dedupe -> policy -> route -> execute` 最小闭环
151 - synthetic assistant message / fixture 自动化已覆盖四种参数形式、稳定 dedupe key、fail-closed,以及最小工具集执行
152- 刻意保留到下一阶段:
153 - dedupe 目前仍是进程内内存态,进程重启后不会保留
154 - 当前只做本机精确 target;跨节点分发和多轮闭环还没接
155 - 当前 instruction center 仍主要通过 synthetic assistant message 驱动验证,尚未把 Firefox bridge live `browser.final_message` 直接接入执行闭环
156- 实际验证:
157 - `pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon build`:通过
158 - `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`:`39/39` 通过
159 - `node --test /Users/george/code/baa-conductor/tests/browser/browser-control-e2e-smoke.test.mjs`:`6/6` 通过