decision-rules-hook: 注入补「两个停止点」+「技术方案排序轴」

起因(2026-10-06 用户问):能自决的问题为什么还要问。
复盘发现注入的判据里**缺动作**:
- 缺「十步」的两个停止点 → ① 判类型(方案请求 vs 直接执行)② 判方向(扩大/收窄/中性);
- 缺「自主裁决顺序」的排序轴 → 更小改动 → 更少新增形态 → **不扩大可见面**。
⇒ 前者导致「会扩大可见面」时不停手;后者导致排完仍把已定项混进待拍板清单(=变相征询)。
本次只补这两条动作骨架(1459 → 1906 字符),⛔ 不塞十步全文(避免稀释)。
This commit is contained in:
admin committed 2026-10-06 22:39:51 +08:00
1 parent 64dd82073b
commit 433d43af54
8 files changed
+195 -273

No files matched your search

+36 -1
View File
@@ -2480,9 +2480,44 @@ INBOX = '…\ai1net-dsh-server\tmp\supervise-inbox'
(删掉 `_find_keeper_tpl()` 前置门槛 —— 否则缺模板就直接"没建",与启动器形态无关了)。
2. 任务动作改指 **`pythonw.exe` + `<区>/.workbuddy/collab/supervise-launch.py`**
(`-WorkingDirectory` =**工作区根**;pythonw 是 **GUI 子系统 ⇒ 零控制台 ⇒ 不闪窗**)。
3. **任务名保持** `collabd-supervise-<区>`(⛔ 不改名 ⇒ `collabctl` 的名单不用动)。
3. ~~**任务名保持** `collabd-supervise-<区>`(⛔ 不改名 ⇒ `collabctl` 的名单不用动)~~。
🔴 **2026-10-06 订正 —— 这条结论是错的,已改**:
当时以为"不改名就不用动 `collabctl` 的名单",但**正好反过来** ——
`collabctl.py` 的 `SCHED_TASKS` 里列的 `collabd-supervise-<区>` 是**"旧形态 ⇒ 一律禁用"**的名单,
⇒ 保留旧名的后果是:**`_escalate_to_keeper()` 自愈建起来的常驻,会被下一次 `collabctl off` 当旧形态干掉**。
✅ 现行口径:**统一用 `collabd-keepalive-<区>`**(与 `KEEPALIVE_TASKS` 同名)——
这样 `off` 认得它、`on` 会重建它,**开关才真正管得住这条自愈路径**。
⚠️ **教训**:判"改不改名"时,⛔ 不能只看"改名的成本",要**查这个名字在别处被怎么用**
—— 这里它同时是"检查名单"和"禁用名单"的键。
4. `_escalate_to_keeper` 里**被删段**用 `~~删除线~~` 在 docstring 里标注(⛔ 别留下与实现不符的说明)。
### 三·补、🔴 2026-10-06 二次收口(第一次只改了动作,没改名字、也没扫旁路)
**三个漏网**(本轮实测抓到,`selftest` 探针一度只扫 `collabd.py` ⇒ 全都没报警):
1、**任务名两套并存** —— 见上面第 3 条的订正。现已统一 `collabd-keepalive-<区>`;
触发形态也对齐(`-AtLogOn` → **每 5 分钟重复触发**;去掉 `RestartCount 999/1min` ——
每 5 分钟重复本身就提供重拉,每分钟重启是多余抖动)。本区遗留的旧名任务已 `Disable`。
2、**`init_workspace.py` 是第二个建任务者** —— 自带 `_register_keeper_task()` + `_keeper_task_state()`,
动作写 `powershell.exe -File start-supervise.ps1`、还要铺 `assets/start-supervise.ps1.tpl`、
自检里有 `_ps_check()`(验 ps1 语法)。**整份删掉**(含 `--with-keeper` / `--no-task` 两个开关),
改为只检查 `supervise-launch.py` 在位并指向唯一入口 `collabctl.py`。
⛔ **建任务只许有一处实现** = `collabctl.py`(受 `supervise.switch` 总电闸管辖);
自己建就绕过开关,是"第二条起法"。模板文件一并删除。
3、**守形态的探针打偏** —— `t_keeper_legacy_ps1_form_gone` 原来只 `read_text("collabd.py")`。
✅ 已扩成扫**全族**(`collabd.py` / `init_workspace.py` / `collabctl.py`),并新增两条判据:
「**任务名口径唯一**」、「`init_workspace.py` 旧形态死代码已清」。
⚠️ **探针本身的坑**:新增的"任务名唯一"判据**扫文本**,第一版**误红** ——
它命中了 `collabctl.py` 里 `SCHED_TASKS = [...]` 那段(那是**故意**列旧名去禁用的)。
⇒ 必须先 `re.sub` 剥掉该块再扫。**这是本项目第三次踩"判据扫到自己的否定句"**
(前两次:查"PRD 有没有视觉词"命中免责声明、查"有没有六份旧产出"命中 PRD 里的禁令文本)。
⚠️ **另一条我自己的操作坑**:用 python 脚本读写 `init_workspace.py` / `collabd.py` 后,
行尾从**纯 LF 被转成纯 CRLF**(技能包其余 7 个同族文件都是 LF)—— 已用 `write_bytes` 还原为 LF。
⇒ **凡用脚本改技能源码,改完要核行尾**(否则 diff 里整个文件显示为"全改",审不出真改动)。
### 四、✅ 验收(2026-10-05 12:42 实测)
- 跑一次 `_escalate_to_keeper()` ⇒ 回读任务动作: