Files
dsh_ai1net_server/交付物/多会话协同机制-定稿-20260929.md
admin c1b5e4d966 chore(工作区): 全量入库 + 补齐 .gitignore(以工作区为准)
- 变更规模:新增 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/ 知识文件,按口径入库)
2026-10-10 23:13:22 +08:00

126 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 多会话协同机制 · 定稿(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/自动化)就是本机制,**改就改它们**,⛔ 别新开平行文件