- commit
- 4670b3e
- parent
- 96f5a82
- author
- im_wower
- date
- 2026-03-30 08:48:39 +0800 CST
docs: update handoff for new conversation
1 files changed,
+84,
-70
+84,
-70
1@@ -1,103 +1,117 @@
2-# Handoff — 2026-03-29
3+# Handoff — 2026-03-30
4
5 ## 当前基线
6
7-- 主分支:`main@4663817`
8+- 主分支:`main@96f5a82`
9 - 仓库:`/Users/george/code/baa-conductor`
10-- 工作区:干净,无未提交改动;当前只有主 worktree;本地仅有 `main` 分支
11-- 说明:`4663817` 是文档同步提交;最近已合入的功能提交包括 `7113251`、`2b010d4`、`76aa1aa`、`6391ada`
12-
13-## 当前进度判断
14-
15-- 已完成任务:`19`
16-- 待开始任务:`3`(`T-S048`、`T-S049`、`T-S051`)
17-- `T-BUG-029`、`T-BUG-031` 的代码和任务卡都已是 `已完成`
18-- 当前 open bug:`BUG-026`、`BUG-027`
19+- conductor 已重启,新代码已加载
20+- 看门狗 launchd 已卸载(暂停状态),V2 方案待实现
21
22 ## 本轮完成的事
23
24-### Artifact 静态服务(主线,全部完成)
25+### 三家 AI BAA 闭环接入(冲刺主线)
26+
27+| 提交 | 内容 |
28+|------|------|
29+| `eed061c` | T-S049:ChatGPT/Gemini policy 白名单 + router 路由 + local-api 端点 |
30+| `98db481` | BUG-026:artifact repo root fallback 修复 |
31+| `7c8558f` | OPT-002:executor 超时保护(合并冲突已解决:withRouteTimeout + multi-platform) |
32+| `f4a1c8d` | 看门狗日志增强:a11y_msg.sh 操作日志 + watchdog.sh 每次检查记录完整状态 |
33+| `8a33fa2` | 看门狗 v4:renewed 状态超时重试 |
34+| `9869d57` | 看门狗基础:心跳文件 + 定时唤醒 + 兜底上限 + 进度文件 |
35+| `8a2524a` | A11Y GUI 控制方案文档 |
36+| `c42fb56` | 今晚冲刺计划文档 |
37+| `96f5a82` | Watchdog V2 conductor 集成方案 |
38
39-- 新建 artifact-db 包:SQLite 持久化 messages / executions / sessions
40-- 静态文件生成:`.txt`(frontmatter)+ `.json`,conductor HTTP serve `/artifact/`
41-- 接入主链路:browser.final_message → 写库 + 生成文件;executor → 写库 + 生成文件
42-- 回送截断:> 2000 字符截取前 500 + exact URL(阈值可配置)
43-- 查询路由:`/v1/messages`、`/v1/executions`、`/v1/sessions`、`/v1/sessions/latest`
44-- 跨会话接续:`/describe` 回复含 `recent_sessions_url`
45-- D1 异步同步:本地 SQLite → sync queue → Cloudflare D1(新库 `baa-conductor-artifact`)
46-- stagit:git 仓库静态 HTML,`/artifact/repo/baa-conductor/log.html`
47-- robots.txt:`Allow: /artifact/`
48+### A11Y GUI 控制 — 无障碍树验证
49
50-### Claude Code CLI 双工接入
51+发现并验证了第三条 AI GUI 控制路径:Accessibility Tree。
52
53-- `apps/claude-coded/`:spawn `claude -p --input-format stream-json --output-format stream-json`
54-- stdio 双工通信,HTTP API 封装,launchd 配置
55+- CDP 无障碍树(容器内 Playwright):验证 example.com、HN
56+- macOS AXUIElement(conductor → AppleScript → System Events):Chrome 49 元素、Terminal 读 shell 内容、Safari 125 元素
57+- Safari 操作 ChatGPT 完整闭环:打开 → 填消息 → 点发送 → 读回复
58+- 跨 AI 聊天:Claude → Safari → ChatGPT 多轮对话
59+- 控制 Codex:剪贴板粘贴 → 回车 → Codex 执行 git 操作
60+- 方案文档:`plans/A11Y_GUI_CONTROL.md`
61
62-### 插件增强
63+### 看门狗机制
64
65-- 诊断日志:controller / content-script / page-interceptor 加 `[BAA]` 日志
66-- 日志 WS 转发:插件 → conductor → `logs/baa-plugin/YYYY-MM-DD.jsonl`
67-- ingest 日志:conductor 收到 final_message 写 `logs/baa-ingest/YYYY-MM-DD.jsonl`
68-- baa 代码块属性兼容:`` ```baa id="xxx" `` 格式可识别
69-- ChatGPT SSE abort 修复:主流被中断时从已有 chunks 提取 candidate
70-- isRelevantStreamUrl 收紧:排除 ChatGPT 辅助流
71-- 插件重载自动刷新页面:延迟 2.5s 刷新已打开的 AI 页面
72+- V1(当前):`tools/watchdog/` 目录,bash 脚本 + 心跳文件 + launchd 管理
73+ - 状态机:working / waiting / renewed / paused / done
74+ - 三层唤醒:定时 wake_at + 空闲 timeout + 兜底 max_wake_at
75+ - 问题:依赖 Claude 手动设状态,经常忘记
76+- V2(待实现):`plans/WATCHDOG_V2_CONDUCTOR_INTEGRATED.md`
77+ - conductor 拦截 SSE final-message 后自动续命
78+ - 零手动管理
79
80-### Bug 修复
81+### OpenResty 超时修复
82
83-- files/read kind 标记:`"write"` → `"read"`
84-- conductor-daemon 测试 localApiBase undefined
85-- SQL 注入白名单、D1 schema 外键、daemon.stop() await、transport 监听器清理
86-- sessions 查询补 conversation_id 过滤、ask 超时竞争
87+- VPS(100.68.201.85:2222)`common-proxy.conf`
88+- `proxy_read_timeout` 60s → 120s
89+- `proxy_send_timeout` 60s → 120s
90
91-## 当前 open bug / 风险
92+### Terminal 设置
93
94-- **BUG-026**:`/artifact/repo/:repo_name` 根路径不会落到默认 `log.html`
95-- **BUG-027**:插件启动期诊断事件会在 WS 建立前丢失,`logs/baa-plugin/` 缺失最早注入证据
96+- `shellExitAction` 改为 0(shell 退出后关窗口)——但已有窗口需重启 Terminal 生效
97
98-详见:
99+## 端点验证结果
100
101-- `bugs/BUG-026-artifact-repo-root-fallback-broken.md`
102-- `bugs/BUG-027-startup-plugin-diagnostic-events-lost-before-ws-open.md`
103+| 端点 | 状态 |
104+|------|------|
105+| `/v1/browser/chatgpt/current` | HTTP 200 ✅ |
106+| `/v1/browser/gemini/current` | HTTP 200 ✅ |
107+| `/v1/browser/claude/current` | HTTP 502(Firefox 插件没有 Claude 凭证快照,非端点问题) |
108
109-## 已完成但建议补做浏览器复核
110+## 待清理
111
112-任务卡状态已经是 `已完成`,这里只保留“建议补做”的真实浏览器检查:
113+### 残留 worktree
114
115-1. **T-BUG-031**:重载插件后 AI 页面是否自动刷新,BAA 浮层恢复正常
116-2. **T-BUG-029**:ChatGPT 发 baa 指令后,conductor 能否提取并执行,结果回送
117+```
118+/Users/george/code/baa-conductor-code-file-serving [feat/code-file-serving]
119+/Users/george/code/baa-conductor-gemini-delivery-adapter [feat/gemini-delivery-adapter]
120+```
121
122-## 待开始的任务
123+这两个是更早任务的 worktree,已合入 main,可以清理:
124+```bash
125+git worktree remove ../baa-conductor-code-file-serving
126+git worktree remove ../baa-conductor-gemini-delivery-adapter
127+```
128
129-### T-S048 Gemini 投递适配器(M 级)
130+### 残留远程分支
131
132-- 在 `delivery-adapters.js` 补 Gemini 的 DOM 选择器
133-- 需要在 Gemini 页面 DevTools 观察 DOM 结构
134-- 提示词:`读 /Users/george/code/baa-conductor/tasks/T-S048.md 任务文档,完成开发任务。`
135+已合入 main 的分支可清理:
136+- `origin/feat/browser-chatgpt-gemini-targets`
137+- `origin/feat/watchdog-logging`
138+- `origin/fix/bug-026`
139+- `origin/fix/opt-002`
140+- `origin/feat/code-file-serving`
141+- `origin/feat/gemini-delivery-adapter`
142
143-### T-S051 代码文件直读映射(S 级)
144+### 残留 Terminal 窗口
145
146-- conductor `/code/` 路由直接 serve 磁盘代码文件
147-- 安全限制:排除 .env / .credentials / .git/objects,防目录遍历
148-- 与 T-S048 可并行
149-- 提示词:`读 /Users/george/code/baa-conductor/tasks/T-S051.md 任务文档,完成开发任务。`
150+当前有 5 个 Terminal 窗口(含已完成任务的 Codex),应关闭非活跃的。
151
152-### T-S049 开放 chatgpt/gemini target(S 级)
153+## 下一步
154
155-- policy 白名单 + router 路由 + local-api 端点
156-- 当前主依赖:`T-S048`(Gemini 适配器)
157-- 提示词:`读 /Users/george/code/baa-conductor/tasks/T-S049.md 任务文档,完成开发任务。`
158+### 优先
159
160-## 未建任务但已写入需求文档的
161+1. **三家 AI 浏览器端到端验证**:在 Safari 各标签页实际发 baa 指令测试闭环
162+2. **Watchdog V2 开发**:conductor 集成,方案已写(`plans/WATCHDOG_V2_CONDUCTOR_INTEGRATED.md`)
163
164-见 `plans/NEXT_WAVE_REQUIREMENTS.md`:
165+### 后续
166
167-- **#10 历史消息回补**:参考旧版 sync-worker,在 conductor 内部定时拉取平台对话历史
168-- **#11 拦截消息完成推送**:比 SSE 解析更可靠的完成检测,依赖诊断日志观察
169+3. OPT-003:policy 白名单配置化
170+4. OPT-004:Claude final-message SSE fallback
171+5. OPT-005:normalize/parse 错误隔离
172+6. BUG-027:startup plugin diagnostic events lost before ws open
173+7. Conductor UI 模块(`plans/CONDUCTOR_UI_MODULE_REQUIREMENTS.md`)
174+8. A11Y 端点 Phase 1(`plans/A11Y_GUI_CONTROL.md`)
175
176-## 注意事项
177+## 连接信息
178
179-- 每个任务强制使用独立 worktree + 新分支,只推不合,合并由合并者执行
180-- 合并后需要 `pnpm build` + `launchctl kickstart -k gui/$(id -u)/so.makefile.baa-conductor` 才能生效
181-- 插件改动需要在 Firefox `about:debugging` 重新载入插件
182-- 当前接手时,建议阅读顺序:`HANDOFF.md` → `tasks/TASK_OVERVIEW.md` → `plans/STATUS_SUMMARY.md` → 对应任务卡
183+- conductor 公网:`https://conductor.makefile.so`
184+- conductor 内网:`http://100.71.210.78:4317`
185+- TOKEN:`2c4d0a0d9141f1cc6dac4dd3734a24b4fece9e5be539944b5fc451be011c0e6a`
186+- VPS:Tailscale `100.68.201.85`,SSH port 2222
187+- mini Tailscale:`100.71.210.78`
188+- MBP Tailscale:`100.112.239.13`