baa-conductor

git clone 

commit
207d72f
parent
6c0b602
author
im_wower
date
2026-03-28 02:30:25 +0800 CST
docs: add task card for bug 022
2 files changed,  +113, -2
A tasks/T-BUG-018.md
+111, -0
  1@@ -0,0 +1,111 @@
  2+# Task T-BUG-018:补齐 Claude final-message relay 支持
  3+
  4+## 直接给对话的提示词
  5+
  6+读 `/Users/george/code/baa-conductor/tasks/T-BUG-018.md` 任务文档,完成开发任务。
  7+
  8+如需补背景,再读:
  9+
 10+- `/Users/george/code/baa-conductor/bugs/BUG-022-final-message-claude-missing.md`
 11+- `/Users/george/code/baa-conductor/plans/BAA_INSTRUCTION_SYSTEM.md`
 12+- `/Users/george/code/baa-conductor/tasks/TASK_OVERVIEW.md`
 13+
 14+## 当前基线
 15+
 16+- 仓库:`/Users/george/code/baa-conductor`
 17+- 分支基线:`main`
 18+- 提交:`6c0b602`
 19+- 开工要求:必须先从当前 `main` 新建任务分支,再开始开发;禁止直接在 `main` 上修改。功能任务分支名必须以 `feat/` 开头,缺陷任务分支名必须以 `bug/` 开头。
 20+
 21+## 必须创建的新分支名
 22+
 23+- `bug/bug-022-claude-final-message-relay`
 24+
 25+## 目标
 26+
 27+让 Firefox 插件的 `final-message` relay 正式支持 Claude,使 Claude 的有机最终回复能进入 `browser.final_message -> instruction_ingest` 主链。
 28+
 29+## 背景
 30+
 31+当前 `plugins/baa-firefox/final-message.js` 只对 `chatgpt` 和 `gemini` 做了 final-message 提取。Claude 没有 stream URL 识别,也没有 Claude SSE 文本提取器,导致用户在 Claude 页面里正常拿到回复时,conductor 仍然收不到 `platform=claude` 的 `browser.final_message`。这会直接让 Claude 平台上的 BAA 指令闭环失效。
 32+
 33+## 涉及仓库
 34+
 35+- `/Users/george/code/baa-conductor`
 36+
 37+## 范围
 38+
 39+- 补齐 Claude 的 final-message SSE 识别
 40+- 补齐 Claude 的 candidate 提取与 relay 构造
 41+- 补最小自动化回归测试
 42+
 43+## 路径约束
 44+
 45+优先在 Firefox 插件的 `final-message.js` 和现有 smoke / 单测入口内完成修复,不要顺手重写整个 network observer,也不要扩成新的 browser request / delivery 任务。
 46+
 47+## 推荐实现边界
 48+
 49+建议优先做:
 50+
 51+- 给 `isRelevantStreamUrl()` 增加 Claude `/completion` 识别
 52+- 新增 `extractClaudeCandidateFromText()`,从 Claude SSE `completion` 事件里提取 `completion`、`id`、`conversationId`
 53+- 在 `observeSse()` 和 `observeNetwork()` 里显式加 Claude 分支
 54+- 复用现有 `tests/browser/browser-control-e2e-smoke.test.mjs` 的 `final-message` 测试入口补回归
 55+
 56+## 允许修改的目录
 57+
 58+- `/Users/george/code/baa-conductor/plugins/baa-firefox/final-message.js`
 59+- `/Users/george/code/baa-conductor/tests/browser/browser-control-e2e-smoke.test.mjs`
 60+
 61+## 尽量不要修改
 62+
 63+- `/Users/george/code/baa-conductor/plugins/baa-firefox/controller.js`
 64+- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/`
 65+- `/Users/george/code/baa-conductor/plugins/baa-firefox/delivery-adapters.js`
 66+- `/Users/george/code/baa-conductor/docs/`
 67+
 68+## 必须完成
 69+
 70+### 1. 补齐 Claude SSE 识别
 71+
 72+- Claude `/completion` 流量要能被 `isRelevantStreamUrl()` 识别
 73+- `observeSse()` 不能再对 Claude 直接 `return null`
 74+
 75+### 2. 补齐 Claude candidate 提取
 76+
 77+- 从 Claude SSE `completion` 事件里拼出完整 `rawText`
 78+- 优先提取真实 `assistantMessageId`
 79+- 从请求 URL 或页面 URL 中提取 `conversationId`
 80+
 81+### 3. 补自动化回归
 82+
 83+- 覆盖 Claude final-message relay 的正向场景
 84+- 验证 relay 结果里 `platform`、`conversation_id`、`assistant_message_id`、`raw_text` 合理
 85+- 保持现有 ChatGPT / Gemini final-message 测试不回归
 86+
 87+## 需要特别注意
 88+
 89+- 不要破坏现有 ChatGPT / Gemini 提取逻辑
 90+- Claude 的空 `completion` 事件不能把元数据误拼进最终文本
 91+- 这张卡只修 `final-message relay`,不要顺手扩 `browser.claude` target 或新的 delivery 逻辑
 92+
 93+## 验收标准
 94+
 95+- Claude 页面回复完成后,插件能产生 `platform: "claude"` 的 `browser.final_message`
 96+- Claude 的 `raw_text` 是完整回复文本,不混入 SSE 元数据
 97+- Claude 回复中包含 baa 代码块时,现有 `instruction_ingest` 主链具备被触发的前置条件
 98+
 99+## 推荐验证命令
100+
101+- `node --check /Users/george/code/baa-conductor/plugins/baa-firefox/final-message.js`
102+- `node --test /Users/george/code/baa-conductor/tests/browser/browser-control-e2e-smoke.test.mjs`
103+- `git diff --check`
104+
105+## 交付要求
106+
107+完成后请说明:
108+
109+- 修改了哪些文件
110+- 核心实现思路是什么
111+- 跑了哪些测试
112+- 还有哪些剩余风险
M tasks/TASK_OVERVIEW.md
+2, -2
 1@@ -17,7 +17,7 @@
 2 
 3 - `已完成`:见 [`./archive/README.md`](./archive/README.md)
 4 - `当前 TODO`:
 5-  - 下一张主线任务卡待新建
 6+  - [`T-BUG-018.md`](./T-BUG-018.md):补齐 Claude final-message relay 支持
 7 - `待处理缺陷`:见 [`../bugs/README.md`](../bugs/README.md)
 8 - `低优先级 TODO`:`4318/status-api` 兼容层删旧与解耦
 9 
10@@ -51,7 +51,7 @@
11   - upload / download / artifact route 已移除
12   - 默认超长策略改成前 `200` 行 + `超长截断`
13 - `2026-03-28`:`T-BUG-015`、`T-BUG-016`、`T-BUG-017` 已完成并归档到 [`./archive/README.md`](./archive/README.md)
14-- 当前没有正在执行中的缺陷修复卡;如需继续推进工程改动,优先新开卡处理剩余风险
15+- `2026-03-28`:当前活跃缺陷任务卡为 [`T-BUG-018.md`](./T-BUG-018.md),用于修复 Claude final-message relay 缺失
16 
17 ## 当前主线收口情况
18