Files

75 lines
6.6 KiB
Markdown
Raw Permalink Normal View History

# 多会话协同机制 · **实施方案**(怎么实现它)
> ## ⛔ 已退役(2026-09-30)
> **本件(实施方案)的内容已并入 → `E:/ProgramData/.workbuddy/skills/multi-session-collab/references/architecture.md`(协作机制的唯一权威文档)**
> ⇒ ⛔ **别再引用本件做判断**(曾因它把旧结论当现状);本件**只作历史沿革留档**,⛔ 已不再维护。
> 依据:用户 2026-09-29 定案「**只有一份架构文档**」「**一切迭代都在 skill 内**」「⛔ 不在工作区或别处另开平行文档」。
> 配套:机制定义 ⇒ `多会话协同机制-定稿-20260929.md`|作业规程 ⇒ `协同监管棒-SOP.md`|执行纪律 ⇒ `CODEBUDDY.md §1.5`
> 本件回答**一个**问题:**这套机制要"实现",具体要做哪几件事、谁做、怎么验。**
---
## 一、组件清单:**已就绪** vs **待落地**
| # | 组件 | 状态 | 说明 |
|---|---|---|---|
| ① | **机械层脚本** `advance-watch.py` | ✅ **已就绪** | 直读 `automation_runs` 拿各线收官结论 + 判三线靶点/全局靶点/锁;自带 120s 节流、异常全吞 |
| ② | **收结果通道**(直读宿主库) | ✅ **已就绪** | 实测已读到棒 1b 完成结论、「IN_PROGRESS」也在 |
| ③ | **决策层规程** `协同监管棒-SOP.md` | ✅ **已就绪** | 收产出→判 V1–V7→刷看板→派下一棒→异常处置 |
| ④ | **进度看板**(用户唯一入口) | ✅ **已就绪** | 每轮覆写 |
| ⑤ | **派活模板**(含必含三条款) | ✅ **已就绪** | `多会话协同机制-定稿 §4.1` |
| ⑥ | **兜底自动化**(每小时循环) | ✅ **已就绪** | `1eaf45c3`,至 09-30 12:00 |
| **⑦** | **钩子挂载生效** | 🔴 **未落地** | 我改过 `wb-result-hook.py`;但**钩子是「会话启动时快照」** ⇒ **必须完全重启 WorkBuddy** 才生效(关窗 ≠ 退出)。**没做完这步,① 永远不会被自动触发。** |
| **⑧** | **「完成即推进」不依赖纪律** | 🔴 **本轮刚补** | 已写进 `CODEBUDDY.md §1.5 D ⑤`(每次会话开机必读)⇒ 从"口头纪律"升级为"硬规则" |
| **⑨** | **收敛判据机械化** | 🟡 **部分** | V4/V5/V7 里可机械判的项可继续加进 ① 的 `TARGETS`;需 AI 判断的(V1/V2 语义)留给监管棒 |
⇒ **一句话**:**① 待做(需你配合重启);⑧ 已补;⑨ 增量可做。**
---
## 二、"完成即推进"到底怎么实现 —— 四条路,选了哪条
| 方案 | 做法 | 优点 | 缺点 | 判定 |
|---|---|---|---|---|
| **A 完成方自己叫** | 各棒收尾时创建一次性自动化叫监管棒(now+2min) | 零新增件;**≈2 分钟**;不靠常驻 | 依赖执行方**记得**(会漏) | 🟡 可接受,且已写进 `§1.5 D⑤` ⇒ 变成**必读硬规则**,漏的概率大降 |
| **B 钩子直接派活** | 钩子里 `POST /api/v1/scheduled-tasks` 建任务 | 全自动、即时 | 🔴 **违反钩子纪律**(七条硬纪律明令:**钩子不读令牌、不联网、不起子进程**);且要处理 sessionId | ⛔ **不可用** |
| **C 钩子只落标志 + 整点兜底读** | 钩子写"待推进"文件;每小时轮读它再派 | 完全合规、零 token | **最慢 60 分钟**(回到"稀饭凉") | 🟡 仅作兜底 |
| **D 独立常驻进程** | 独立窗口/计划任务里的进程,读标志 → 调网关建自动化 | 秒级、不占会话 | ①**多一个常驻**;②它**不是 WorkBuddy 后代 ⇒ 拿不到口令**(同 G-C 困境)⇒ 调不了网关 | ⛔ **不可行(口令)** |
**⇒ 选定:A 为主(且已升格为必读硬规则)+ C 为兜底(= 现有每小时循环)。**
**关键洞察**:宿主只给两种"等待"形态 —— **钩子**(被明令禁网)与**自动化**(能开会话、但有粒度下限)。⇒ **"完成即推进"在合规前提下的最短路径,就是让完成方自己叫**(≈2 分钟),这条路已通过 `§1.5` 变成制度。
---
## 三、实施步骤(按顺序,每步都可独立验证)
| 步 | 做什么 | 谁做 | **怎么验(判据)** | 阻塞 |
|---|---|---|---|---|
| **S1** | **完全重启 WorkBuddy**(让 ⑦ 钩子改动生效) | **需用户**(会打断在跑会话,要在你合适的时间做) | 新会话收尾后:`tmp/supervise-inbox/advance.md` 的 mtime **变新**;`_phone-bridge.log` 类似台账出现新增行 | ⚠️ **等你定时机** |
| **S2** | 各棒按 `§1.5 D⑤` 收尾即叫监管 | 各线会话 | 看板在**上游完成后 ≈2 分钟**内被刷新(看板里「更新时间」跳变) | 已具备(规则已进 §1.5) |
| **S3** | 收敛判据机械化(把 V4/V5/V7 可机械项加进 `advance-watch.py` 的 `TARGETS`) | 我 | 跑一轮 `advance-watch.py --force`,`advance.md` 里出现对应 ✅/⛔ 行 | 无 |
| **S4** | 每轮监管棒刷新看板 + 按异常处置表派活 | 监管棒(每小时 + 收尾触发) | 看板「更新时间」持续跳变;缺口消失即 V 判据转 ✅ | 无 |
| **S5** | **V1–V7 全过** ⇒ 收敛 | 监管棒 | 看板标「目标达成」,不再派棒 | 依赖 S1–S4 + 业务线真装 |
---
## 四、验收:怎么算"这套机制实现了"
| # | 判据 | 怎么测 |
|---|---|---|
| **M1** | 钩子**真的被触发** | 造一次会话收尾 ⇒ `advance.md` mtime 变新(**S1 之后才可能**) |
| **M2** | 收结果**零轮询、零 token** | 只读一次 `automation_runs` 就能列出各线结论(已实测 ✅) |
| **M3** | **完成 → 推进 ≈2 分钟** | 某棒收尾后,看板在 2 分钟内刷新(S2) |
| **M4** | 兜底有效 | 即使完成方忘记叫,**≤60 分钟**内仍会被推进(每小时循环) |
| **M5** | **不影响 WorkBuddy 本身** | 全程 ⛔ 无会话后台任务、⛔ 无常驻;WorkBuddy pid 恒定、宿主会话能回 idle |
| **M6** | 收敛可停 | V1–V7 全过 ⇒ 看板标达成、停止派棒、明说"可结束监管" |
---
## 五、未决 / 风险(如实登记)
1. 🔴 **S1 需你拍板时机** —— 「完全重启 WorkBuddy」会打断所有在跑会话,属**影响面超出本功能** ⇒ **必须你定时间**(这也是机制里唯一必须你介入的点)。
2. ⚠️ **A 方案仍可能被漏**(执行方忘记叫)⇒ 靠 **M4 兜底**兜住;若发现漏得频繁,可把兜底从"每小时"加密为多个错开的一次性自动化(rrule 校验器只接受整小时粒度,密不过 1 小时)。
3. ⚠️ **`automation_runs.thread_title` 的语义**依赖宿主实现;若某次结论为空(`[IN_PROGRESS]` 正在跑就是空的)⇒ 判据以 `status` 为准,不把"空标题"当"没干活"。