baa-conductor


baa-conductor / tasks / archive
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` 通过