baa-conductor

git clone 

baa-conductor / tasks
im_wower  ·  2026-03-29

T-BUG-030.md

  1# Task T-BUG-030:修复 baa 代码块带属性时提取失败
  2
  3## 状态
  4
  5- 当前状态:`已完成`
  6- 规模预估:`S`
  7- 依赖任务:无
  8- 建议执行者:`均可`(一行改动)
  9
 10## 直接给对话的提示词
 11
 12`/Users/george/code/baa-conductor/tasks/T-BUG-030.md` 任务文档,完成开发任务。
 13
 14## 当前基线
 15
 16- 仓库:`/Users/george/code/baa-conductor`
 17- 分支基线:`main`
 18- 提交:`b51ee40`
 19
 20## 分支与 worktree(强制)
 21
 22- 分支名:`bug/baa-fence-attribute`
 23- worktree 路径:`/Users/george/code/baa-conductor-baa-fence-attribute`
 24
 25开工步骤:
 26
 271. `cd /Users/george/code/baa-conductor`
 282. `git worktree add ../baa-conductor-baa-fence-attribute -b bug/baa-fence-attribute main`
 293. `cd ../baa-conductor-baa-fence-attribute`
 30
 31完成后提交与推送(由执行者完成,不要合并):
 32
 331. 在 worktree 里提交所有变更(包括更新后的任务文档)
 342. `git push -u origin bug/baa-fence-attribute`
 35
 36## 目标
 37
 38修复当 AI 输出带属性的 baa 代码块(如 `` ```baa id="xxx" ``)时,extract 提取器无法识别的问题。
 39
 40## 背景
 41
 42ChatGPT 输出的 baa 代码块会自带 `id` 属性:`` ```baa id="p4k2vt" ``。当前 `extractBaaInstructionBlocks` 用精确匹配 `=== "baa"` 判断语言标记,导致带属性的代码块被跳过。
 43
 44ingest 日志证据:
 45```json
 46{
 47  "raw_text": "```baa id=\"p4k2vt\"\n@conductor::status\n```",
 48  "blocks_count": 0,
 49  "status": "ignored_no_instructions"
 50}
 51```
 52
 53## 必须完成
 54
 55### 1. 修复 extract.ts
 56
 57**文件**:`apps/conductor-daemon/src/instructions/extract.ts` 第 36 行
 58
 59**当前代码** 60```typescript
 61isBaa: (match[1] ?? "").trim() === "baa",
 62```
 63
 64**修复为** 65```typescript
 66isBaa: /^baa(?:\s|$)/u.test((match[1] ?? "").trim()),
 67```
 68
 69这样以下格式都能匹配:
 70- `` ```baa `` — 标准格式
 71- `` ```baa id="xxx" `` — ChatGPT 带 id
 72- `` ```baa title="test" `` — 带其他属性
 73
 74### 2. 补充测试
 75
 76在现有的 extract 测试中(如果有)或新建测试中,验证:
 77- `` ```baa `` 正常提取 ✓
 78- `` ```baa id="p4k2vt" `` 正常提取 ✓
 79- `` ```javascript `` 不被提取 ✓
 80- `` ```baa-ext `` 不被提取(baa 后面紧跟非空白字符不应匹配) ✓
 81
 82## 允许修改的目录
 83
 84- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/extract.ts`
 85- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/instructions/` (测试文件)
 86
 87## 验收标准
 88
 89- `raw_text` 为 `` ```baa id="xxx"\n@conductor::status\n``` `` 时,`blocks_count` 为 1
 90- 现有测试全部通过
 91- `` ```baa-ext `` 不误匹配
 92
 93## 推荐验证命令
 94
 95- `cd /Users/george/code/baa-conductor-baa-fence-attribute && pnpm build`
 96- `cd /Users/george/code/baa-conductor-baa-fence-attribute && pnpm test`
 97
 98## 执行记录
 99
100> 以下内容由执行任务的 AI 填写,创建任务时留空。
101
102### 开始执行
103
104- 执行者:`Codex (GPT-5)`
105- 开始时间:`2026-03-29 03:00:48 +0800`
106- 状态变更:`待开始` → `进行中`
107
108### 完成摘要
109
110- 完成时间:`2026-03-29 03:02:12 +0800`
111- 状态变更:`进行中` → `已完成`
112- 修改了哪些文件:
113  - `apps/conductor-daemon/src/instructions/extract.ts`
114  - `apps/conductor-daemon/src/index.test.js`
115  - `tasks/T-BUG-030.md`
116- 核心实现思路:
117  -`baa` fence 判定从精确等于改为 `^baa(?:\\s|$)`,允许 `baa` 后带空格属性,同时拒绝 `baa-ext` 这类紧跟非空白字符的标记。
118  - 在现有提取测试中补充带属性 fence、普通 `javascript` fence、`baa-ext` fence 的覆盖,确认只提取合法 `baa` 代码块。
119- 跑了哪些测试:
120  - `cd /Users/george/code/baa-conductor-baa-fence-attribute && pnpm build`
121  - `cd /Users/george/code/baa-conductor-baa-fence-attribute && pnpm test`
122
123### 执行过程中遇到的问题
124
125> 记录执行过程中遇到的阻塞、环境问题、临时绕过方案等。合并时由合并者判断是否需要修复或建新任务。
126
127- worktree 初始缺少依赖,首次 `pnpm build` 因找不到 `tsc` 失败;已在 worktree 执行 `pnpm install --frozen-lockfile` 后完成构建与测试。
128
129### 剩余风险
130
131- 当前修复覆盖了 `` ```baa`` 和 `` ```baa <attributes>`` 两种格式;如果后续要支持更多 fence 变体(如波浪线 fence),需要单独扩展提取规则。