Files
dsh_ai1net_server/交付物/唤醒-需求统一启停-20260930-图.html
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

94 lines
6.7 KiB
HTML
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.
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<title>需求统一启停控制台(2026-09-30)</title>
<style>
html,body{margin:0;padding:0;background:#1a1a1a;color:#e8e8e8;
font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;}
.wrap{max-width:760px;margin:0 auto;padding:28px 20px 48px;}
h1{font-size:18px;font-weight:600;color:#CECBF6;margin:0 0 6px;}
.sub{font-size:12.5px;color:#8a8a8a;margin:0 0 26px;line-height:1.7;}
.fig{margin:0 0 34px;}
.cap{font-size:12px;color:#8a8a8a;margin:8px 0 0;line-height:1.6;}
code{color:#AFA9EC;font-size:11.5px;}
</style>
</head>
<body>
<div class="wrap">
<h1>需求统一启停控制台 · 一个需求牵扯的四层</h1>
<p class="sub">入口:<code>goalctl.py status | start | stop</code>(默认干跑,<code>--yes</code> 才真做)。
🔴 钩子层**不在可启停范围内** —— 它全局注册、跨项目共用,装卸会连累所有项目。</p>
<div class="fig">
<svg width="100%" viewBox="0 0 680 336" role="img" xmlns="http://www.w3.org/2000/svg">
<text x="24" y="26" font-size="15" font-weight="600" fill="#CECBF6">① 一个需求牵扯什么(本机实测)</text>
<text x="30" y="54" font-size="11" font-weight="600" fill="#8a8a8a">层</text>
<text x="150" y="54" font-size="11" font-weight="600" fill="#8a8a8a">具体物</text>
<text x="430" y="54" font-size="11" font-weight="600" fill="#8a8a8a">谁能改</text>
<text x="570" y="54" font-size="11" font-weight="600" fill="#8a8a8a">实测状态</text>
<rect x="24" y="62" width="632" height="40" rx="6" fill="#26215C" stroke="#AFA9EC" stroke-width="0.6"/>
<text x="34" y="87" font-size="11.5" fill="#CECBF6">① 排期层</text>
<text x="150" y="87" font-size="11.5" fill="#CECBF6">automations 表的周期排期</text>
<text x="430" y="87" font-size="11.5" font-weight="600" fill="#F7C1C1">⛔ 只有会话</text>
<text x="570" y="87" font-size="11.5" fill="#CECBF6">3 条全 PAUSED</text>
<rect x="24" y="106" width="632" height="40" rx="6" fill="#1F3B33" stroke="#5DCAA5" stroke-width="0.6"/>
<text x="34" y="131" font-size="11.5" fill="#9FE1CB">② 程序层</text>
<text x="150" y="131" font-size="11.5" fill="#9FE1CB">collabd 的 wake_enable(投递总闸)</text>
<text x="430" y="131" font-size="11.5" font-weight="600" fill="#5DCAA5">✓ 脚本</text>
<text x="570" y="131" font-size="11.5" fill="#9FE1CB">已置 false</text>
<rect x="24" y="150" width="632" height="40" rx="6" fill="#1F3B33" stroke="#5DCAA5" stroke-width="0.6"/>
<text x="34" y="175" font-size="11.5" fill="#9FE1CB">③ 总开关层</text>
<text x="150" y="175" font-size="11.5" fill="#9FE1CB">goal.json 的 run 段</text>
<text x="430" y="175" font-size="11.5" font-weight="600" fill="#5DCAA5">✓ 脚本</text>
<text x="570" y="175" font-size="11.5" fill="#9FE1CB">已置 paused</text>
<rect x="24" y="194" width="632" height="40" rx="6" fill="#1F3B33" stroke="#5DCAA5" stroke-width="0.6"/>
<text x="34" y="219" font-size="11.5" fill="#9FE1CB">④ 服务层</text>
<text x="150" y="219" font-size="11.5" fill="#9FE1CB">看板 serve / 守护 guard / 网关心跳</text>
<text x="430" y="219" font-size="11.5" font-weight="600" fill="#5DCAA5">✓ 复用 stop-collab</text>
<text x="570" y="219" font-size="11.5" fill="#9FE1CB">全停</text>
<rect x="24" y="244" width="632" height="66" rx="6" fill="#501313" stroke="#F7C1C1" stroke-width="0.8"/>
<text x="34" y="266" font-size="11.5" font-weight="600" fill="#F7C1C1">— 钩子层(⛔ 不在闸内)</text>
<text x="34" y="284" font-size="11" fill="#F7C1C1">全局 12 个 hook 注册在 settings.json,里面还混着**别的工作区**的 decision_bridge.py(×4 事件)</text>
<text x="34" y="301" font-size="11" fill="#F7C1C1">⇒ 装卸钩子会连累所有项目 ⇒ 只能「开关文件 + 入口早退」;它本身零 token,不拦</text>
</svg>
<p class="cap">⚠️ 剔除项:**一次性棒 15 条**(<code>schedule_type='once'</code>、next 为空=已耗),⛔ 不是启停对象。判"还在不在跑"要看 <code>deleted_at</code>(删除是**软删**,status 仍 ACTIVE)。</p>
</div>
<div class="fig">
<svg width="100%" viewBox="0 0 680 250" role="img" xmlns="http://www.w3.org/2000/svg">
<text x="24" y="26" font-size="15" font-weight="600" fill="#CECBF6">② 三道闸各拦什么 —— 缺一层就留缝</text>
<rect x="24" y="44" width="196" height="52" rx="8" fill="#26215C" stroke="#AFA9EC" stroke-width="0.7"/>
<text x="122" y="66" text-anchor="middle" font-size="12" font-weight="600" fill="#CECBF6">① 排期层 PAUSED</text>
<text x="122" y="84" text-anchor="middle" font-size="11" fill="#AFA9EC">拦「起新会话」</text>
<rect x="242" y="44" width="196" height="52" rx="8" fill="#085041" stroke="#9FE1CB" stroke-width="0.7"/>
<text x="340" y="66" text-anchor="middle" font-size="12" font-weight="600" fill="#9FE1CB">② 程序闸 false</text>
<text x="340" y="84" text-anchor="middle" font-size="11" fill="#5DCAA5">拦「投递=唤醒主会话」</text>
<rect x="460" y="44" width="196" height="52" rx="8" fill="#085041" stroke="#9FE1CB" stroke-width="0.7"/>
<text x="558" y="66" text-anchor="middle" font-size="12" font-weight="600" fill="#9FE1CB">③ 总开关 paused</text>
<text x="558" y="84" text-anchor="middle" font-size="11" fill="#5DCAA5">拦「起来后干活」</text>
<text x="340" y="126" text-anchor="middle" font-size="12" font-weight="600" fill="#8a8a8a">三者互补不重叠 ⇒ 三个一起翻才是「真停」</text>
<rect x="24" y="146" width="632" height="40" rx="6" fill="#412402" stroke="#FAC775" stroke-width="0.6"/>
<text x="34" y="171" font-size="11.5" fill="#FAC775">只关 ② ⇒ 排期照旧起会话 | 只停 ① ⇒ 程序照旧投递(占主会话,体感"卡")</text>
<rect x="24" y="192" width="632" height="46" rx="6" fill="#501313" stroke="#F7C1C1" stroke-width="0.6"/>
<text x="34" y="213" font-size="11.5" fill="#F7C1C1">⛔ 做不到"一秒内把在跑的会话停下":会话不可 kill ⇒ 只能「不再叫新的 + 起来了不干活」</text>
<text x="34" y="230" font-size="11" fill="#F7C1C1">降级保障:漏改排期时,唤醒轮第 0 步读到 run=paused 也会立刻退(成本=一次空跑)</text>
</svg>
<p class="cap">驱动口径=用户已定的那条:下「执行 XXX 目标」口令 ⇒ <code>start</code>;完成/阻碍 ⇒ <code>stop</code>。⛔ 唤醒轮不许把自己启回来。</p>
</div>
</div>
</body>
</html>