- 变更规模:新增 514 / 修改 62 / 重命名 155 / 删除 4(归档重组与文档轮次) - .gitignore 修:`归档/**/db-cwd归一-备份-*/` —— 原规则写绝对层级(归档/db-cwd归一-…), 目录搬进 归档/配置与备份/ 后**静默失效**,43 MB 的 DB 备份又变成未跟踪 - .gitignore 补:嵌套 git 内部数据(归档/内嵌git-20261008/、归档/skills-git-旧线-20261007/dotgit-原样移出/) - .gitignore 补:运行态与部署副本(.workbuddy/collab/、.workbuddy/tools/、.workbuddy/.load-pending、.workbuddy/tmp-*) - .gitignore 补:备份件(*.bak-*) - 未跟踪文件从 2190 降到 890(其余为 归档/ 归档件与 .workbuddy/memory/ 知识文件,按口径入库)
126 lines
7.3 KiB
Markdown
126 lines
7.3 KiB
Markdown
# 多会话协同机制 · 定稿(2026-09-29)
|
||
|
||
> ## ⛔ 已退役(2026-09-30)
|
||
> **本件(机制定义)的内容已并入 → `E:/ProgramData/.workbuddy/skills/multi-session-collab/references/architecture.md`(协作机制的唯一权威文档)**
|
||
> ⇒ ⛔ **别再引用本件做判断**(曾因它把旧结论当现状);本件**只作历史沿革留档**,⛔ 已不再维护。
|
||
> 依据:用户 2026-09-29 定案「**只有一份架构文档**」「**一切迭代都在 skill 内**」「⛔ 不在工作区或别处另开平行文档」。
|
||
|
||
|
||
> **用途**:把「多会话协同完成一个需求」这件事**固化成机制** —— 谁干什么、走哪条通道、什么节奏、怎么判定、异常怎么办、何时收敛。
|
||
> **关系**:本件 = **机制定义(权威)**|作业规程 ⇒ `协同监管棒-SOP.md`|目标与验收 ⇒ `手机接入-目标与协同计划-20260929.md`(V1–V7)|架构 ⇒ `…架构定稿v3-20260929.md`(§0.5 硬约束)
|
||
> **执行纪律** ⇒ `CODEBUDDY.md §1.5`(每次会话自动加载)
|
||
|
||
---
|
||
|
||
## 0 一句话
|
||
|
||
**派活用自动化(唯一能开新会话的通道)|收结果直读宿主库(0 token)|机械判定走本地脚本(钩子驱动)|AI 只在需要判断时被叫起|判据全过即收敛。**
|
||
|
||
---
|
||
|
||
## 1 三个角色(边界清楚,⛔ 不越界)
|
||
|
||
| 角色 | 谁 | 只做什么 | ⛔ 不做什么 |
|
||
|---|---|---|---|
|
||
| **需求方** | 用户 | 看**看板**一处;只对「**边界外六类**」拍板 | 不需要催进度(机制自己跑) |
|
||
| **协同入口** | 本工作区(`ai1net-dsh-server`) | 拆棒 / 判 V / 派活 / 收敛 / 维护看板 | ⛔ 不替别线干活、⛔ 不改别线文件 |
|
||
| **执行线** | 各线会话(一棒一线) | 做本棒这一件事、做完即停、**收尾必做两件**(写产出 + 叫监管棒) | ⛔ 不跨线、⛔ 不夹带 |
|
||
|
||
---
|
||
|
||
## 2 四条通道(关键判据:哪件事走哪条)
|
||
|
||
| 要做的事 | 走哪条 | 成本 | 为什么必须是它 |
|
||
|---|---|---|---|
|
||
| **派活 / 唤醒一个会话** | **自动化**(一次性;`now+2min` 或 收口+5~8min) | 一个会话 | 🔴 **钩子开不了新会话** —— 自动化是**唯一**通道(宿主硬边界,已实测) |
|
||
| 🔴 **收结果 / 检测** | **直读宿主库 `automation_runs.thread_title`**(只读 SQL) | **0 token** | 宿主**每次跑完自动化就把收官结论落库** ⇒ ⛔ 不必轮询、⛔ 不必扫别线文件、⛔ 不必叫 AI |
|
||
| **机械判定**(文件在不在 / rc / 哈希 / 锁) | 本地脚本 `advance-watch.py`,由**钩子**在会话收尾时调 | **0 token** | 这些判断几毫秒就能做,塞进"定时叫 AI"是又慢又贵 |
|
||
| **人看进度** | `手机接入-进度看板.md`(每轮覆写) | — | 用户**唯一入口** |
|
||
|
||
---
|
||
|
||
## 3 节奏(三种触发,按优先级;⛔ 全部**无常驻**)
|
||
|
||
| 优先级 | 触发 | 延迟 | 说明 |
|
||
|---|---|---|---|
|
||
| **① 主** | **收尾即叫**:任一棒做完 → **立即**创建一次性自动化叫监管棒(`now+2min`) | **≈2 分钟** | 由**完成方**在收尾那一刻做(钩子做不到,只能靠它) |
|
||
| ② 兜底 | 每小时循环(`1eaf45c3`,至 09-30 12:00) | ≤60 分钟 | 防链条断掉;`need=false` 且无新结论 ⇒ 只刷看板不派活 |
|
||
| ③ 观察 | 钩子(宿主子进程)→ `advance-watch.py` | 即时 | 零 token;直读结论 + 机械判靶点/锁 |
|
||
|
||
⛔ **绝对禁止的第四种**:把长跑服务放进**会话后台任务**(每轮输出唤醒宿主 ⇒ 会话永不空闲 ⇒ **用户看到"卡死"**;2026-09-29 已复现 6 次)。
|
||
|
||
---
|
||
|
||
## 4 派活标准(模板 + 必含条款)
|
||
|
||
### 4.1 🔴 prompt 模板(逐字可用,只替换 `<>`)
|
||
|
||
```
|
||
本轮唯一任务:<本棒要做什么,一句话>
|
||
|
||
第 0 步:抢锁。**抢不到 ⇒ 只报告,⛔ 不写任何东西。**
|
||
bash "D:/github/dsh_shenxian/dsh-server-docs/07-scripts/handoff-guard.sh" --claim-exec "<你的会话名>" --domains <域>/
|
||
|
||
先读(依据):
|
||
· <本棒的定稿件/执行单路径>
|
||
· E:/ProgramData/AIProject/ai1net-dsh-server/交付物/手机App经覆盖网络操作WorkBuddy-架构定稿v3-20260929.md(§0.5 硬约束)
|
||
|
||
要做:<步骤,每步给"判据/读数"长什么样>
|
||
|
||
验收要给出:<可核对的读数:rc 值 / 文件清单 / 50 次无 429 / diff>
|
||
|
||
⛔ 硬约束(v3 §0.5):不影响 WorkBuddy 本身的运行 · 不夺会话(借用必归还)· 口令不落盘 · 不起常驻任务 · 不给网关加 CORS 白名单。
|
||
🔴 【收尾即叫监管】做完后立即创建一个一次性自动化:
|
||
name=`协同监管棒 · 立即轮(<线> 收尾)`;cwds=`E:/ProgramData/AIProject/ai1net-dsh-server`;scheduledAt=当前时间+2 分钟;
|
||
prompt=「读 `E:/ProgramData/AIProject/ai1net-dsh-server/交付物/协同监管棒-SOP.md`,按它跑一轮协同监管,做完即停。抢不到锁只报告。」
|
||
然后 `--release-exec "<你的会话名>"`,停下并汇报。
|
||
```
|
||
|
||
### 4.2 必含三条款(缺一条 = 派活无效)
|
||
|
||
1. **抢不到锁 ⇒ 只报告**(R9 精神:不删锁、不接管)
|
||
2. **v3 §0.5 硬约束**(不得影响 WorkBuddy 本身的运行 / 不夺会话 / 口令不落盘 / 不起常驻)
|
||
3. **【收尾即叫监管】**(否则链条断,只能等整点)
|
||
|
||
### 4.3 排期与并行纪律
|
||
|
||
一棒一线 · **每条线只挂一个** · 排期 = **收口 + 5~8 分钟** · 域不重叠可各挂一棒 · ⛔ 不重复派同一棒。
|
||
|
||
---
|
||
|
||
## 5 判定与推进
|
||
|
||
**作业规程 = `交付物/协同监管棒-SOP.md`**(每轮:抢锁 → 收产出 → **判 V1–V7** → 覆写看板 → 按缺口派下一棒 → 追加记忆 → 释放锁 → 停)。
|
||
⛔ 本件不重复那份内容(避免两处打架);**冲突以 SOP 为准**(它更细)。
|
||
|
||
---
|
||
|
||
## 6 异常处置表
|
||
|
||
| 异常 | 判定 | 处置 |
|
||
|---|---|---|
|
||
| **抢不到锁** | `--claim-exec` rc≠0 | **只报告并停**(⛔ 不删锁、不接管 —— R9) |
|
||
| **线停滞** | **无新产出 ∧ 不持锁 ∧ 距上次派活 >25 分钟** | **重派**(并在看板写明重派原因) |
|
||
| **结论与产出矛盾** | `automation_runs` 说完成,但产出文件缺失 | 🔴 **以产出文件为准** ⇒ 回派该线补产出(⛔ 不信"口头完成") |
|
||
| **监管棒自己异常** | 超时 / 异常 / 死循环 | **关掉自己**(fail-safe),等下轮兜底;⛔ 不重试到成功 |
|
||
| **需求变更** | 用户改口径 | **停派** → 更新「目标与协同计划」V 判据 → 再派 |
|
||
| **运行中出现"卡死"感** | 宿主会话不空闲 | 先查**有没有会话后台任务/常驻轮询**(历史唯一真因) |
|
||
|
||
---
|
||
|
||
## 7 收敛(什么时候停)
|
||
|
||
**V1–V7 全过** ⇒ ① 看板标「**目标达成**」② ⛔ **不再派新棒**(只刷新看板)③ 报告里明说「**可结束监管**」。
|
||
兜底终止线:循环自动化 `validUntil = 2026-09-30 12:00`。
|
||
|
||
---
|
||
|
||
## 8 本机制自身的红线
|
||
|
||
1. ⛔ **不建常驻进程 / 不用会话后台任务**(卡死真因)
|
||
2. ⛔ **不轮询"别的会话干完没有"** —— 读库即可
|
||
3. ⛔ **不改别线文件**(只读收集;要改由该线自己改)
|
||
4. ⛔ **不删锁 / 不接管**(R9)
|
||
5. ⛔ **口令不落盘、不给网关加 CORS 白名单**(T3/T4)
|
||
6. ⛔ **不自造第二套编排** —— 已有件(SOP/看板/advance-watch/自动化)就是本机制,**改就改它们**,⛔ 别新开平行文件
|