baa-conductor


baa-conductor / tasks / archive
im_wower  ·  2026-03-28

T-S021.md

  1# Task T-S021:收口 conductor describe 与通用 browser HTTP 合同
  2
  3## 直接给对话的提示词
  4
  5`/Users/george/code/baa-conductor/tasks/archive/T-S021.md` 任务文档,完成开发任务。
  6
  7如需补背景,再读:
  8
  9- `/Users/george/code/baa-conductor/plans/archive/FIREFOX_BRIDGE_CONTROL_REQUIREMENTS.md`
 10- `/Users/george/code/baa-conductor/plans/archive/BROWSER_BRIDGE_PERSISTENCE_REQUIREMENTS.md`
 11- `/Users/george/code/baa-conductor/plans/discuss/DISCUSS-FIREFOX-BRIDGE-CONTROL.md`
 12- `/Users/george/code/baa-conductor/docs/api/README.md`
 13- `/Users/george/code/baa-conductor/docs/api/business-interfaces.md`
 14- `/Users/george/code/baa-conductor/docs/api/control-interfaces.md`
 15- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/local-api.ts`
 16
 17## 当前基线
 18
 19- 仓库:`/Users/george/code/baa-conductor`
 20- 分支:`main`
 21- 提交:`0f218b9`
 22- 开工要求:如需新分支,从当前 `main` 新切
 23
 24## 当前状态
 25
 26- `已完成`
 27
 28## 建议分支名
 29
 30- `feat/browser-agent-surface`
 31
 32## 目标
 33
 34`conductor` 的 AI 调用面收口成稳定的两层 describe,并定义通用 browser HTTP 合同,同时保留现有 Claude 专用路径兼容。
 35
 36## 背景
 37
 38当前 `conductor` 已有:
 39
 40- `/describe`
 41- `/describe/business`
 42- `/describe/control`
 43- `/v1/browser/claude/*`
 44
 45但浏览器能力仍偏 Claude 专用路径,通用 browser 请求和插件管理能力还没有正式并入现有两层 describe。
 46
 47本任务不新增第三层 `browser describe`,而是把浏览器能力并入现有:
 48
 49- `business`
 50- `control`
 51
 52## 涉及仓库
 53
 54- `/Users/george/code/baa-conductor`
 55
 56## 范围
 57
 58- 收口 `/describe`、`/describe/business`、`/describe/control`
 59- 为通用 browser 接口定义稳定 HTTP 合同
 60- 保留现有 `/v1/browser/claude/*` 兼容位次
 61- 更新对应 API 文档和最小测试
 62
 63## 路径约束
 64
 65- 不新增 `/describe/browser`
 66- 不新增 `/describe/plugin`
 67- `GET /describe` 只保留为入口索引
 68- 通用 browser 路由以:
 69  - `GET /v1/browser`
 70  - `POST /v1/browser/actions`
 71  - `POST /v1/browser/request`
 72  - `POST /v1/browser/request/cancel`
 73  为目标模型
 74
 75## 推荐实现边界
 76
 77建议优先做:
 78
 79- `local-api.ts` 路由定义与 describe 输出
 80- `docs/api/*` 的正式合同更新
 81- 现有 Claude 专用接口到通用接口的 legacy 标记
 82- 最小 route / describe 测试
 83
 84## 允许修改的目录
 85
 86- `/Users/george/code/baa-conductor/apps/conductor-daemon/src/`
 87- `/Users/george/code/baa-conductor/docs/api/`
 88- `/Users/george/code/baa-conductor/tests/`
 89
 90## 尽量不要修改
 91
 92- `/Users/george/code/baa-conductor/plugins/baa-firefox/`
 93- `/Users/george/code/baa-conductor/packages/db/`
 94- `/Users/george/code/baa-conductor/README.md`
 95- `/Users/george/code/baa-conductor/docs/firefox/`
 96
 97## 必须完成
 98
 99### 1. 收口 describe 分层
100
101- 保持 `conductor` 只有:
102  - `/describe`
103  - `/describe/business`
104  - `/describe/control`
105- `/describe/business` 要纳入浏览器功能类能力
106- `/describe/control` 要纳入插件管理类能力
107
108### 2. 定义通用 browser HTTP 合同
109
110- 增加或明确通用 browser 路由合同:
111  - `POST /v1/browser/actions`
112  - `POST /v1/browser/request`
113  - `POST /v1/browser/request/cancel`
114- 路由命名、参数约束、错误语义要写进 describe 或 API 文档
115
116### 3. 保持兼容与最小验证
117
118- 现有 `/v1/browser/claude/open`
119- 现有 `/v1/browser/claude/send`
120- 现有 `/v1/browser/claude/current`
121- 现有 `/v1/browser/claude/reload`
122
123这些路径要继续可用,并标记为 legacy 包装层或过渡路径。
124
125## 需要特别注意
126
127- 不要把插件 WS bridge message 直接暴露成 AI-facing describe 主模型
128- 不要在这个任务里顺手实现整套 SSE 执行链路
129- 浏览器功能类归 `business`,插件管理类归 `control`
130- 与并行任务边界:
131  - 本任务不负责 Firefox 插件 runtime 细节
132  - 本任务不负责浏览器侧 SSE 执行实现
133
134## 验收标准
135
136- `conductor` 的 describe 模型只剩两层:`business/control`
137- 通用 browser HTTP 合同在代码和文档中存在
138- Claude 专用路径仍然可用
139- 相关 describe / route 测试通过
140- `git diff --check` 通过
141
142## 推荐验证命令
143
144- `node --test /Users/george/code/baa-conductor/apps/conductor-daemon/src/index.test.js`
145- `pnpm -C /Users/george/code/baa-conductor -F @baa-conductor/conductor-daemon build`
146- `git -C /Users/george/code/baa-conductor diff --check`
147
148## 交付要求
149
150完成后请说明:
151
152- 调整了哪些 route 和 describe 输出
153- 通用 browser HTTP 合同最终如何命名
154- 现有 Claude 路径如何兼容
155- 跑了哪些验证
156- 还有哪些剩余风险
157
158## 最新接力说明
159
160- 本任务已完成,`conductor` 的浏览器能力发现继续收口到 `business` / `control` 两层 describe。
161- 当前剩余集成工作已经转入:
162  - `/Users/george/code/baa-conductor/tasks/archive/T-S023.md`
163  - `/Users/george/code/baa-conductor/tasks/archive/T-S024.md`
164
165## 当前残余风险
166
167- `conductor` 目前还不会消费新增的 `shell_runtime` 字段。
168- 正式的插件管理动作回执合同还未完全收口;插件侧 runtime 和 payload 已准备好,后续由服务端接入。