修「检查会话落到未分组」+ 检查程序静默阈值 20 → 10 分钟
一、检查会话跑到未分组(用户报障逐字)
「vibe-product 的检查会话没有创建到工作区下,跑到未分组的会话中去了」。
根因(实测坐实):collabd.py::create_check_schedule() 的 INSERT **少了 workspace_scope 列**
⇒ 落库 NULL ⇒ 排期触发出来的会话被宿主当**游乐场**建
(sessions 行:is_playground=1 + source_mode='craft' + use_sandbox_cli=0)⇒ 不进工作区分组。
对照读数(同一晚两条排期):会话侧 automation_update 建的是 'workspace' ✓,
机制自建的是 None ❌;近 3 天 59 条排期里只有机制那条是 None。
修法:INSERT 补 workspace_scope 并以 'workspace' 落库。
配套:新增 selftest 用例 t_check_schedule_scope(3 项),含变异对照
(把列删掉 ⇒ 报红;还原 ⇒ 逐字节一致)。
二、检查程序等待时间 20 → 10 分钟(用户令逐字)
「把检查程序的等待时间由 20分钟 改为 10分钟」。
改法:新增常量 CHECK_IDLE_MIN = 10,**闸门与 --dry-run 试算都读它**(原来两处各写死 20);
并同步**写给检查会话看的 prompt 文案**(≥20 → ≥10)与 4 处注释/文档
(references/supervise-persistence.md §六;顺带订正该节「基准取台账 tasks.json 的 mtime」——
与代码不符,实际是「本工作区排期的 updated_at 最大值」)。
配套:新增 selftest 用例 t_check_idle_min(4 项,**不锁数值**、只锁"常量/闸门/试算/文案同源"),
含变异对照(把文案改回 20 ⇒ 报红)。
三、旧数据归位与分发
- 今晚那条歪掉的检查会话已改回工作区档(is_playground 1→0、source_mode craft→work、
use_sandbox_cli 0→1;排期 workspace_scope → 'workspace');改前原值已备份到
归档/检查会话归位-20261007/;PRAGMA integrity_check = ok。
- 副本分发:ai1net-dsh-server 与 vibe-product 各 7 个文件;两区常驻已重启
(判据=心跳 started_h 07:54:35 / 07:54:37,晚于分发时刻 07:54:07)。
验收:selftest.py rc=0 PASS 102 / FAIL 0(改前 99);manifest 70 份、语法失败 0。
This commit is contained in:
1 parent
9a665039a9
commit
a3935b5fc5
4 files changed
+87
-20
No files matched your search
@@ -374,8 +374,11 @@ $p = Get-Process -Id <pid> -ErrorAction SilentlyContinue # $null = 已死
|
||||
|
||||
## 六、⚠️ 还没有它就不算长期(两条,别自欺)
|
||||
|
||||
1. **静默基准**:检查会话要 `静默 ≥ 20 分钟` 才建,而基准取台账 `tasks.json` 的 mtime
|
||||
⇒ **新建/改动任何排期都会把计时归零** ⇒ 刚派完棒必然等满 20 分钟(实测 0.2/4.3/…/12.6 分钟,**从未越过 20**)。
|
||||
1. **静默基准**:检查会话要 `静默 ≥ 10 分钟` 才建(🔴 **2026-10-07 由 20 改 10**,用户原话
|
||||
「把检查程序的等待时间由 20分钟 改为 10分钟」;阈值=`collabd.py::CHECK_IDLE_MIN`,闸门与 `--dry-run` 试算同源)。
|
||||
基准=**本工作区排期的 `updated_at` 最大值**(`_last_progress_ts()`);
|
||||
⚠️ 本行原先写「基准取台账 `tasks.json` 的 mtime」——**那句与代码不符**,已按代码订正。
|
||||
⇒ **新建/改动任何排期都会把计时归零** ⇒ 刚派完棒必须再等满阈值(实测 0.2/4.3/…/12.6 分钟,**在旧阈值 20 下从未越过**)。
|
||||
2. **闸二会自锁(正确行为,不是 bug)**:`_all_sessions_idle()` 要求"所有会话都结束",
|
||||
而**发起这一切的那条会话自己也在里面** ⇒ 只要它活着,检查会话就建不出来。
|
||||
⇒ **要让检查会话跑起来,必须先结束发起会话**(fail-safe 方向=宁可不建,不误建)。
|
||||
|
||||
Reference in new issue
Block a user