- 变更规模:新增 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/ 知识文件,按口径入库)
51 lines
3.5 KiB
Markdown
51 lines
3.5 KiB
Markdown
# 落地清单 · 唤醒回路(让程序把主会话叫起来)
|
||
|
||
> ## ⛔ 已退役(2026-09-30)
|
||
> **本件(落地清单·唤醒回路)的内容已并入 → `E:/ProgramData/.workbuddy/skills/multi-session-collab/references/architecture.md`(协作机制的唯一权威文档)**
|
||
> ⇒ ⛔ **别再引用本件做判断**(曾因它把旧结论当现状);本件**只作历史沿革留档**,⛔ 已不再维护。
|
||
> 依据:用户 2026-09-29 定案「**只有一份架构文档**」「**一切迭代都在 skill 内**」「⛔ 不在工作区或别处另开平行文档」。
|
||
|
||
|
||
> 2026-09-29 · **半页**。只讲一件事:**怎么让常驻程序在"有活"时把主会话叫起来**。
|
||
> 用户已确认架构(hook 驱动"继续",⛔ 不轮询);本文只补最后一环,**并把它涉及的权限面摆明**。
|
||
|
||
## 一、回路全貌(三段,前两段已就位)
|
||
|
||
```
|
||
① 协作会话收尾 ──SessionEnd 钩子──→ 写 gate-done.stamp ✅ 已实现
|
||
② 程序(常驻)读队列,一次一条:
|
||
有 claim ⇒ gate=busy ⇒ ⛔ 不放行(="监控后台停") ✅ 已实现(实测正确)
|
||
gate=free ∧ 有队首 ⇒ 写 NEXT.md(只此一条) ✅ 已实现
|
||
③ 🔴 **缺这一环**:NEXT.md 出现时,**把主会话叫起来**
|
||
⇒ 程序开不了会话;唯一落点 = **gateway 定时任务接口**(排一次一次性任务)
|
||
```
|
||
|
||
## 二、权限影响评估(三点,据实)
|
||
|
||
| 项 | 评估 |
|
||
|---|---|
|
||
| **新增能力** | 程序获得「**用网关口令创建一个一次性定时任务**」的能力 ⇒ 这是**唯一**的写操作(其余仍全程只读) |
|
||
| **为什么必须** | ⛔ 钩子开不了会话;⛔ 程序开不了会话;**"事件驱动地叫醒"除了排期没有第二条路** |
|
||
| **风险与压制** | ① **可无限排** ⇒ 用**三重限流**压(见三)② **隐形执行者** ⇒ 技能红线要求"**纳入监管视野**" ⇒ 每一次唤醒都**追加登记到 `tmp/supervise-inbox/wakeups.jsonl`**,且**可一键列出/删除**(`wakeups` 里记 task id,删除走同一个 gateway 接口)③ 口令**只进程内使用,⛔ 不落盘、⛔ 不进日志** |
|
||
|
||
## 三、实现(一次做完,⛔ 不边改边重启)
|
||
|
||
程序 `collabd.py` 增一个函数 `wake_main_session()`,**四道闸门全满足才动手**:
|
||
|
||
| 闸门 | 条件 |
|
||
|---|---|
|
||
| ① 有活 | `NEXT.md` 存在 |
|
||
| ② 闸开 | `gate == free` |
|
||
| ③ 去重 | 本次 `NEXT.md` 的内容哈希 **≠** 上次唤醒时的哈希(**同一件只叫一次**) |
|
||
| ④ 限流 | 距上次唤醒 **≥ 3 分钟** |
|
||
|
||
⇒ 满足则:`POST /api/v1/scheduled-tasks`(`recurring:false`,`prompt`=主会话轮+"读 NEXT.md 只做那一条;收尾时**若 NEXT.md 还在才接续**"),并把 `{ts, taskId, hash}` 追加进 `wakeups.jsonl`。
|
||
**终止**:任务图全 `done` ⇒ 不再唤醒;遇阻 ⇒ 写 `NEED-USER.md` 并**明确喊「需用户介入」**。
|
||
|
||
## 四、需要你点头的一条
|
||
|
||
> **授权程序使用网关口令创建"唤醒任务"**(唯一写操作;三重限流;每次登记可列出/可删;口令不落盘)。
|
||
|
||
**不点头的替代**:保留"由收尾会话顺手排一次"(纯白名单内,但**依赖每个棒的 prompt 都带这条** ⇒ 更脆、更慢)。
|
||
⚠️ **我的倾向**:**点头走程序唤醒** —— 因为你要的是"程序把主会话叫起来",而这是唯一能做到的形态;替代方案本质上仍是"靠规则提醒"。
|