diff --git a/session-mechanism/references/02-功能优先协作协议.md b/session-mechanism/references/02-功能优先协作协议.md index a42a371..bae05db 100644 --- a/session-mechanism/references/02-功能优先协作协议.md +++ b/session-mechanism/references/02-功能优先协作协议.md @@ -13,8 +13,8 @@ > 📌 **来路**(保留以便追溯):本档 2026-10-04 从 `dsh-decision/references/01` 逐行搬入; >  其判据 2026-09-12 起的「完整版」曾寄放在 `agent-operating-rules §1.6/§1/§2/§2.5`(跨项目通用技能)。 >  ⇒ **本机若同时装了那个技能,以本档为准**(避免两处各存一份、改一处忘另一处)。 -> ⚠️ **`dsh-decision/references/01` 侧的残留摘要仍在**(那份技能本机也有)⇒ 若两处都读, ->  **改判据以本档为准**;`dsh-decision` 那份**已于 2026-10-06 按用户令删除**(该技能现只留指针)⇒ 不必再同步。 +> ⚠️ **`dsh-decision` 整份技能已于 2026-10-06 按用户令删除**(本机已无那份 ⇒ 不会再出现「两处都读」这种事): +>  本档即**唯一实体** ⇒ 改判据只改这里,不必再与任何地方同步。 --- @@ -112,7 +112,7 @@ - ⛔ **「中断在线用户」已不是门禁**(2026-09-13 用户明令 + 2026-09-16 收口):`R8` 原文 —— **47 是「开发环境服务器」,不用担心中断用户** ⇒ 重启服务 / 停实例 scope / drain / 改配额·env / 改 nginx·nft **均可直接做**,只需**动手前一句话说明**在动什么。 ⚠️ **原表述「只有真会中断的(重启服务 / 停实例 / drain / 改配额·env / 改 nginx·nft)才提报用户」是会话 `ddea70b7` 提报用户的直接依据** —— AI 据此把"106 旧控制面要不要停"拿去问用户,而**用户随后两次(U5 / U7)自己给出"删除"**。⛔ 别再拿"重启 / 停实例 / nginx"当提报用户理由。 - ⚠️ **判据:按「实际影响面」判,不按「动作名字」判**(2026-09-13 用户纠正)—— 看到「部署 / 上线 / 生产 / 铺包」就提报用户是**过度套用**: - **不中断在线用户的上线**(传产物 / 换 profile 包 / 改静态页 / 候选池投放)**属边界内的执行细节 ⇒ 做完即上线,自决策**。详见 `dsh-decision-method` **U20 / X9**。 + **不中断在线用户的上线**(传产物 / 换 profile 包 / 改静态页 / 候选池投放)**属边界内的执行细节 ⇒ 做完即上线,自决策**。详见本包 `references/04-决策方法论.md` **U20 / X9**。 - 🔑 **"平台级" ≠ "别人的"**(2026-09-16 收口):`dshs*`·`dsh-*` systemd 单元、`/var/lib/dshs/**`、nginx·nft、端口,**在我们自己的 47 / 106 / 本工作区上 ⇒ 本平台自己的资源 ⇒ 直接做**。只有**别人的 / 归属不明**的才"只报告不动手"。**判据看"归属",不看"是不是平台组件"。** ### 3.3 提报用户格式(**强制**) → **本档 §3.3 即权威**(下方即全表) @@ -145,7 +145,7 @@ > **用户原话**:「以后决策方法的问题就不需要再问了。」 -- **方法的日常应用不问**:边界内的一切判断,按 §2 + `dsh-decision-method §4.4` 自己定。 +- **方法的日常应用不问**:边界内的一切判断,按 §2 + 本包 `references/04-决策方法论.md §4.4` 自己定。 - **方法本身的修订也不问**:发现方法有缺口 / 有反例 / 需要加规则时,**直接改、直接记录**(改完在交付回执里说一句"我更新了方法:因为 X"),不要拿"要不要加这条规则""这么写好不好"去问用户。 - **唯一例外**:方法修订若**扩大**了 AI 的自主权或收窄了用户的门禁 → 属边界外的第 1/7 类,**必须问**。 @@ -330,7 +330,7 @@ AI 交付时**先说功能,技术细节折叠在后**: - **红线优先级最高**:R1–R7 / R9–R11 命中一律先停手 —— 本协议不构成豁免,只约束"该不该问"。 ⛔ **唯一例外 = R8**:它已按用户 2026-09-13 明令**修正为"开发环境服务器 ⇒ 不必等确认"** ⇒ **不构成提报用户理由**(只保留"动手前一句话说明")。把 R8 当门禁 = 本站最常见的过度提报用户(`ddea70b7` 实证)。 -- **`dsh-decision-method`**:管"怎么想、怎么定"(判定矩阵、十问、验收分级)。本协议管"**谁定什么、用什么语言问**"。 +- **本包 `references/04-决策方法论.md`**:管"怎么想、怎么定"(判定矩阵、十问、验收分级)。本协议管"**谁定什么、用什么语言问**"。 - **`dsh-change-workflow`**:管"怎么落地"(六阶段、档案模板、并行调度)。 - **`01-规范/06-工作台UI规范.md`**:前端强制基线,冲突以其实测 Token 为准。 - **单一来源**:本协议即唯一来源(技能必须本地加载才生效);文档库 `INDEX.md` 只放**指针**,不复制全文。 @@ -342,7 +342,7 @@ AI 交付时**先说功能,技术细节折叠在后**: ```text name: dsh-feature-first -description: dsh 多租户平台(ai1net.com)的「功能优先」协作协议 —— **用户只提功能需求,AI 自主完成全部技术决策**。当用户提出任何平台功能/交互需求、报障、说「我要把精力放在功能搭建上」,或问「**先做哪个 / 优先级怎么排 / 做不做**」(⇒ 属边界外第①类,该问)时使用;也用于 AI 自查「这件事该不该拿去问用户」。核心 = 复盘证据(技术类+报障类占 64%)+ 用户的「功能卡」4 问 + **AI 自主决策的 9 类白名单(永不问)** + **只准提报用户的 3 类(功能语义分叉 / 红线门禁 / 超出方法边界)** + **决策方法边界定义(边界外必须问的 8 类)** + 提报用户格式 + 报障闭环前置 + 交付回执格式 + 方法本身演进改为自决策 + **§3.6 拆包提报用户:红线问题不得与技术方案捆在一起问** · **§3.2 红线按「实际影响面」判、不按「动作名字」判** · **§5.1 结论骨架(答「是否已实现 / 为什么不行」)** + **§5.3 铁律 4–5 / §5.4 硬约束 7–9:待确认项 = 回复的最后一节、逐条编号;每个候选各占一段(竖排、不横排)且必须写「优点 / 缺点」;只有优点或只有缺点 ⇒ 自决策、自决策**(2026-09-15 用户明令)。**配套:`dsh-decision-method`(怎么想)· `dsh-change-workflow`(怎么落地)。** +description: dsh 多租户平台(ai1net.com)的「功能优先」协作协议 —— **用户只提功能需求,AI 自主完成全部技术决策**。当用户提出任何平台功能/交互需求、报障、说「我要把精力放在功能搭建上」,或问「**先做哪个 / 优先级怎么排 / 做不做**」(⇒ 属边界外第①类,该问)时使用;也用于 AI 自查「这件事该不该拿去问用户」。核心 = 复盘证据(技术类+报障类占 64%)+ 用户的「功能卡」4 问 + **AI 自主决策的 9 类白名单(永不问)** + **只准提报用户的 3 类(功能语义分叉 / 红线门禁 / 超出方法边界)** + **决策方法边界定义(边界外必须问的 8 类)** + 提报用户格式 + 报障闭环前置 + 交付回执格式 + 方法本身演进改为自决策 + **§3.6 拆包提报用户:红线问题不得与技术方案捆在一起问** · **§3.2 红线按「实际影响面」判、不按「动作名字」判** · **§5.1 结论骨架(答「是否已实现 / 为什么不行」)** + **§5.3 铁律 4–5 / §5.4 硬约束 7–9:待确认项 = 回复的最后一节、逐条编号;每个候选各占一段(竖排、不横排)且必须写「优点 / 缺点」;只有优点或只有缺点 ⇒ 自决策、自决策**(2026-09-15 用户明令)。**配套:本包 `references/04-决策方法论.md`(怎么想)· `dsh-change-workflow`(怎么落地)。** version: 1.0.0 updated_at: 2026-09-22 last_change: 【2026-09-22 按要求统一版本号】frontmatter `version` → `1.0.0`(原 v1.8.1);正文与历史中的版本号为当时记录,未改动。此前 v1.8.1(2026-09-22):补触发说法「先做哪个 / 优先级怎么排 / 做不做」—— 实测盲区:这三类说法原本命不中本技能(而它们恰是「该不该问用户」的典型场景);顺带补齐缺失的 `last_change` 字段(12 个技能里只有本技能没有)。 diff --git a/session-mechanism/scripts/hooks/decision-rules-hook.py b/session-mechanism/scripts/hooks/decision-rules-hook.py index 3f99c03..2620128 100644 --- a/session-mechanism/scripts/hooks/decision-rules-hook.py +++ b/session-mechanism/scripts/hooks/decision-rules-hook.py @@ -41,7 +41,7 @@ ## 注入什么(用户 2026-10-06 拍板:**判据式精简版**) ⛔ 不注入全文(那是几百 KB);✅ 只注入**能被违反、且违反就是事故**的硬判据, - 按"**一句话能判**"重写。完整判据仍以 `dsh-decision/references/` 为正本,本文只放指针。 + 按"**一句话能判**"重写。完整判据以**本包** `references/04-决策方法论.md` 为正本,本文只放指针。 ## 三条不可破的性质(同 `decision_bridge.py` 的既定口径) @@ -104,7 +104,7 @@ def _read_stdin_text() -> str: # · 每条都必须"**能被违反**" —— 那种"本来就会做"的常识不要写(写了只会稀释注意力); # · 每条都带**可判的触发条件**("遇到 X 时"),⛔ 不写成抽象口号; # · 编号 `U27`/`A6` 是**正本的编号**,保留它 ⇒ 便于回查原文与引用; -# · 全文以 `dsh-decision/references/` 为正本,本文**只放浓缩版 + 指针**; +# · 全文以**本包** `references/04-决策方法论.md` 为正本,本文**只放浓缩版 + 指针**; # · 🔴 **正文内引号一律用全角 `“` `”`**(半角会闭合字符串 ⇒ SyntaxError,见文件头)。 # ══════════════════════════════════════════════════════════════════════════ RULES = ( @@ -140,7 +140,7 @@ RULES = ( " 🔴 **只要会「扩大可见面」⇒ 立即停手**,并把「要不要扩大」**单独**作为红线问题问,\n" " ⛔ **不许**把它和某个技术方案**捆成一条**问(捆包=逼用户在没看到技术选项时先答红线)。\n" "\n" - "🔴 **技术方案怎么排序:自己排,⛔ 不问用户**(`dsh-decision` 默认裁决顺序)\n" + "🔴 **技术方案怎么排序:自己排,⛔ 不问用户**(本包 `references/04-决策方法论.md` 的默认裁决顺序)\n" " 只需比三条轴,**按序**取先满足的那条:\n" " ① **更小改动** → ② **更少新增形态** → ③ **不扩大可见面**。\n" " 排完后:**已定的写成陈述句**(「我选了什么,可推翻」),\n" diff --git a/session-mechanism/scripts/hooks/skill-load-guard.py b/session-mechanism/scripts/hooks/skill-load-guard.py index 2757c41..3c89ebc 100644 --- a/session-mechanism/scripts/hooks/skill-load-guard.py +++ b/session-mechanism/scripts/hooks/skill-load-guard.py @@ -117,7 +117,7 @@ COOLDOWN = 300 # 同会话注入冷却(秒 # 目的:`agent-operating-rules`(跨工作区通用规则技能)过去**完全靠 description 匹配**, # 是所有技能里最容易被漏的一个 —— 加三条窄词给它一条机制通道。 TRIGGERS = ( - # 分组 1 —— 决策方法族(→ 加载 `dsh-decision`) + # 分组 1 —— 决策方法族(→ 加载 `session-mechanism`;`dsh-decision` 已于 2026-10-06 删除) '决策方法', '自行决策', '自主决策', '自己决策', '自己拿主意', '别问我', '不要问我', '不用问我', '按你的规划', '按你的判断', @@ -325,7 +325,7 @@ def main(): body = ( '⛔ **不要凭记忆代替、也不要以"我已经知道规则"为由跳过**:\n' ' **先调用 Skill 工具加载 `agent-operating-rules`**(通用作业规则 · 含"什么时候自决策 / 什么时候提报用户 / 回复排版 / 说话方式 / 不越界 / 多棒接力"),\n' - ' 然后才开始作答。若本轮涉及功能需求判类型 / 该不该提报用户,**同时加载 `dsh-decision`**。\n\n' + ' 然后才开始作答。若本轮涉及功能需求判类型 / 该不该提报用户,**并同读本包 `references/02-功能优先协作协议.md`**。\n\n' '为什么强制:该技能是**跨工作区通用**的(不绑定任何具体项目),' '但它与其他技能一样**靠 description 匹配按需加载 —— 没有机制保证它在任何工作区都被取用**' '(它的 description 里已写「当你在任何一个工作区开始任务…」,仍可能漏)。' @@ -336,7 +336,7 @@ def main(): head = '检测到用户本轮**点名了方法**(命中:%s)。' % '、'.join(hits) body = ( '⛔ **不要凭记忆代替、也不要以"我已经知道判据"为由跳过**:\n' - ' **先调用 Skill 工具加载 `dsh-decision`**(决策总入口 · 决策方法论 + 功能优先协作协议 + §4.5 规则冲突裁决顺序 + 提报给用户前三问),\n' + ' **先调用 Skill 工具加载 `session-mechanism`**(总入口 · 判据实体已全部收进本包:`references/04-决策方法论.md` + `references/02-功能优先协作协议.md`),\n' ' 然后才开始作答(原 `dsh-decision-method` + `dsh-feature-first` **已于 2026-09-28 合并进它**,⛔ 不要再按旧名找)。\n\n' '为什么强制:2026-09-16 实测(会话 ddea70b7)—— 用户点名「参考决策方法」后,' 'AI 全程 `Skill` 调用 **0 次**,仍按旧判据把两个**非门禁**问题提报用户给用户,'