im_wower
·
2026-03-29
HANDOFF.md
1# Handoff — 2026-03-29
2
3## 当前基线
4
5- 主分支:`main@4663817`
6- 仓库:`/Users/george/code/baa-conductor`
7- 工作区:干净,无未提交改动;当前只有主 worktree;本地仅有 `main` 分支
8- 说明:`4663817` 是文档同步提交;最近已合入的功能提交包括 `7113251`、`2b010d4`、`76aa1aa`、`6391ada`
9
10## 当前进度判断
11
12- 已完成任务:`19`
13- 待开始任务:`3`(`T-S048`、`T-S049`、`T-S051`)
14- `T-BUG-029`、`T-BUG-031` 的代码和任务卡都已是 `已完成`
15- 当前 open bug:`BUG-026`、`BUG-027`
16
17## 本轮完成的事
18
19### Artifact 静态服务(主线,全部完成)
20
21- 新建 artifact-db 包:SQLite 持久化 messages / executions / sessions
22- 静态文件生成:`.txt`(frontmatter)+ `.json`,conductor HTTP serve `/artifact/`
23- 接入主链路:browser.final_message → 写库 + 生成文件;executor → 写库 + 生成文件
24- 回送截断:> 2000 字符截取前 500 + exact URL(阈值可配置)
25- 查询路由:`/v1/messages`、`/v1/executions`、`/v1/sessions`、`/v1/sessions/latest`
26- 跨会话接续:`/describe` 回复含 `recent_sessions_url`
27- D1 异步同步:本地 SQLite → sync queue → Cloudflare D1(新库 `baa-conductor-artifact`)
28- stagit:git 仓库静态 HTML,`/artifact/repo/baa-conductor/log.html`
29- robots.txt:`Allow: /artifact/`
30
31### Claude Code CLI 双工接入
32
33- `apps/claude-coded/`:spawn `claude -p --input-format stream-json --output-format stream-json`
34- stdio 双工通信,HTTP API 封装,launchd 配置
35
36### 插件增强
37
38- 诊断日志:controller / content-script / page-interceptor 加 `[BAA]` 日志
39- 日志 WS 转发:插件 → conductor → `logs/baa-plugin/YYYY-MM-DD.jsonl`
40- ingest 日志:conductor 收到 final_message 写 `logs/baa-ingest/YYYY-MM-DD.jsonl`
41- baa 代码块属性兼容:`` ```baa id="xxx" `` 格式可识别
42- ChatGPT SSE abort 修复:主流被中断时从已有 chunks 提取 candidate
43- isRelevantStreamUrl 收紧:排除 ChatGPT 辅助流
44- 插件重载自动刷新页面:延迟 2.5s 刷新已打开的 AI 页面
45
46### Bug 修复
47
48- files/read kind 标记:`"write"` → `"read"`
49- conductor-daemon 测试 localApiBase undefined
50- SQL 注入白名单、D1 schema 外键、daemon.stop() await、transport 监听器清理
51- sessions 查询补 conversation_id 过滤、ask 超时竞争
52
53## 当前 open bug / 风险
54
55- **BUG-026**:`/artifact/repo/:repo_name` 根路径不会落到默认 `log.html`
56- **BUG-027**:插件启动期诊断事件会在 WS 建立前丢失,`logs/baa-plugin/` 缺失最早注入证据
57
58详见:
59
60- `bugs/BUG-026-artifact-repo-root-fallback-broken.md`
61- `bugs/BUG-027-startup-plugin-diagnostic-events-lost-before-ws-open.md`
62
63## 已完成但建议补做浏览器复核
64
65任务卡状态已经是 `已完成`,这里只保留“建议补做”的真实浏览器检查:
66
671. **T-BUG-031**:重载插件后 AI 页面是否自动刷新,BAA 浮层恢复正常
682. **T-BUG-029**:ChatGPT 发 baa 指令后,conductor 能否提取并执行,结果回送
69
70## 待开始的任务
71
72### T-S048 Gemini 投递适配器(M 级)
73
74- 在 `delivery-adapters.js` 补 Gemini 的 DOM 选择器
75- 需要在 Gemini 页面 DevTools 观察 DOM 结构
76- 提示词:`读 /Users/george/code/baa-conductor/tasks/T-S048.md 任务文档,完成开发任务。`
77
78### T-S051 代码文件直读映射(S 级)
79
80- conductor `/code/` 路由直接 serve 磁盘代码文件
81- 安全限制:排除 .env / .credentials / .git/objects,防目录遍历
82- 与 T-S048 可并行
83- 提示词:`读 /Users/george/code/baa-conductor/tasks/T-S051.md 任务文档,完成开发任务。`
84
85### T-S049 开放 chatgpt/gemini target(S 级)
86
87- policy 白名单 + router 路由 + local-api 端点
88- 当前主依赖:`T-S048`(Gemini 适配器)
89- 提示词:`读 /Users/george/code/baa-conductor/tasks/T-S049.md 任务文档,完成开发任务。`
90
91## 未建任务但已写入需求文档的
92
93见 `plans/NEXT_WAVE_REQUIREMENTS.md`:
94
95- **#10 历史消息回补**:参考旧版 sync-worker,在 conductor 内部定时拉取平台对话历史
96- **#11 拦截消息完成推送**:比 SSE 解析更可靠的完成检测,依赖诊断日志观察
97
98## 注意事项
99
100- 每个任务强制使用独立 worktree + 新分支,只推不合,合并由合并者执行
101- 合并后需要 `pnpm build` + `launchctl kickstart -k gui/$(id -u)/so.makefile.baa-conductor` 才能生效
102- 插件改动需要在 Firefox `about:debugging` 重新载入插件
103- 当前接手时,建议阅读顺序:`HANDOFF.md` → `tasks/TASK_OVERVIEW.md` → `plans/STATUS_SUMMARY.md` → 对应任务卡