- 变更规模:新增 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/ 知识文件,按口径入库)
7.3 KiB
多会话协同机制 · 定稿(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 必含三条款(缺一条 = 派活无效)
- 抢不到锁 ⇒ 只报告(R9 精神:不删锁、不接管)
- v3 §0.5 硬约束(不得影响 WorkBuddy 本身的运行 / 不夺会话 / 口令不落盘 / 不起常驻)
- 【收尾即叫监管】(否则链条断,只能等整点)
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 本机制自身的红线
- ⛔ 不建常驻进程 / 不用会话后台任务(卡死真因)
- ⛔ 不轮询"别的会话干完没有" —— 读库即可
- ⛔ 不改别线文件(只读收集;要改由该线自己改)
- ⛔ 不删锁 / 不接管(R9)
- ⛔ 口令不落盘、不给网关加 CORS 白名单(T3/T4)
- ⛔ 不自造第二套编排 —— 已有件(SOP/看板/advance-watch/自动化)就是本机制,改就改它们,⛔ 别新开平行文件