session-mechanism:05/06 只收通用要求,环境配置专属规则全部移出

用户令(2026-10-16):「技能优化规则 只能放 通用要求,不能放技能环境配置目录要求的专属规则」
+「技能库盘点规则 也要按照这个标准调整」。

- 06 删掉 A 段(配置外置/不写死本机/本机生成契约/路径形态/入仓白名单)与总表的 A 层 5 行,
  总表 21 条 → 16 条三层(B 结构 4 + C 流程 9 + D 表述 3),编号重排 1–16;
  入口写明「只收通用要求」,专有配置规则指向 01-文档索引.md 的「技能环境配置规范」。
- 05 的第三段删掉 白名单/本机生成契约/写死本机/路径形态 四项(同属环境配置规范),
  查隐患段剩三项并重编号;全篇 11 项 → 7 项。
- SKILL.md §0 的 ⑧⑨ 两项摘要同步(条数、编号、A 段删除);05 的编号引用改指重排后的 #4/#1。
- 自测 t_skill06_entries_same_source 的条数口径 21 → 16。

验收:全量自测 PASS 113 / FAIL 0;体检 fail 0 / warn 1 / ok 15;manifest 82 份;
install.py --verify 全绿;05 = 76 行、06 = 106 行。
This commit is contained in:
admin committed 2026-10-16 07:17:16 +08:00
1 parent 24a644f57b
commit 7514a5f0fe
4 files changed
+64 -99

No files matched your search

+8 -10
View File
@@ -464,26 +464,24 @@ python .workbuddy/collab/collabd.py --set-life 进行中 --by "主会话"
 🔴 **配合任务会话的六阶段一起用**(见 `references/collab.md` §5):**需求识别 → 调研 → 规划 → 执行 → 验证 → 归档**——每个阶段都能撞上"该自己定还是该问用户",本档就是那一刻的判据。
**⑧ 我要盘点技能库**(用户说「**盘点技能库**」「**技能库体检**」「**技能清理**」「**技能清单**」「**技能已无作用**」——任一句即触发)⇒ 读 **`references/05-技能库盘点规程.md`**(2026-10-15 立)。
 它把 2026-10-06 ~ 10-15 里**零散做过的 6 次"技能盘点"**归纳成 **11 项可执行的检查**,分四段走:
 它把 2026-10-06 ~ 10-15 里**零散做过的 6 次"技能盘点"**归纳成 **7 项可执行的检查**,分四段走:
 · **先测再判** —— ① 盘点技能根下每一层(含**非技能散件**)② 判"在用/没用"(判据=**实际被加载过几次**,扫会话转录)。
 · **分类** —— ③ 按"**删了会丢什么**"分四档(能力型/知识方法型/散件/绝不能动)④ 查功能重叠(列出合并落点)。
 · **查隐患** —— ⑤ 白名单对不对 ⑥ 本机生成的契约有没有被误入库 ⑦ 入库代码里有没有"写死这台机器" ⑧ 路径形态对不对 ⑨ 正文有没有自相矛盾 ⑩ 有没有多份副本 ⑪ 待提交清单。
  🔴 这一段的**判据正本 = `06-技能优化规程.md` 的 A/B 两层**,05 只管采集读数。
 · **查隐患** —— ⑤ 正文有没有自相矛盾(判据正本 ⇒ `06-技能优化规程.md`)⑥ 有没有多份副本 ⑦ 待提交清单。
  🔴 **入仓白名单 / 本机生成契约 / 写死本机 / 路径形态**这四项属**技能环境配置规范**,本规程**不重复查**。
 · **输出** —— 产物落 `交付物/技能清单-<日期>.md`,必须含「**这份读数能说明什么、不能说明什么**」一节。
 🔴 开头就摆着两条**已证过的坑**:**零值必须先自证**(拿一个已知非零的样本做对照,否则"全 0"分不清真没有与没测到)· **"在册" ≠ "在跑"**(判机制生效看**新鲜调用时间戳**,⛔ 不看配置文件里有没有)。
 ⛔ 本规程只交「清单 + 分档 + 读数」,**删/改/并的判据只有用户能给**;要动手另按 `references/00-动手前必过.md` 走。
**⑨ 我要优化技能本身**(用户说「**优化技能**」「**技能怎么改更好**」「**梳理技能**」「**梳理一下技能的要求和描述**」「**技能太长**」「**这条规则写在哪**」「**这个技能能不能拷到别的机器用**」——任一句即触发)⇒ 读 **`references/06-技能优化规程.md`**(2026-10-15 立)。
 **一句话判据**:**写技能时,假设读者是"另一台机器上的另一个会话"** —— 拿它回放一遍,毛病自己浮出来。
 **三层,按 B → C → D 这个顺序做**(层名与文末总表对齐;**环境配置 A 层另属一份规范,只给指针**):
 · **A 技能环境配置**(换机器能不能活)—— #1 配置外置 / #2 不写死本机 / #3 本机生成契约不入库 / #4 路径形态统一 / #5 入仓按白名单。
  🔴 判据正本=`SKILL.md §0` 的「包内目录怎么分」+「路径一律用相对」+ 十一条禁令第 11 条 + 仓根 `.gitignore`;06 里**不复述**。
 · **B 结构层**(结构清晰·重点突出·无冲突·边界清晰)—— #6 单一真源 #7 注入面与真源同源(🔴 每轮注入的面**改文字必须量长度**)#8 命名一致 #9 正文不自相矛盾。
 · **C 流程层**(流程顺畅·功能正常)—— #10 步骤顺序正确 #11 编号连续 #12 无跳步 #13 步骤间职责不越界 #14 字段归属正确 #15 上下游不断裂 #16 引用路径正确 #17 字段不缺失 #18 产物链完整(**P0**)。
 · **D 表述层**(简洁·高效·实用·无歧义)—— #19 肯定表述(正本 ⇒ `references/rules.md §9`)#20 说人话 #21 一页纸。
 **三层,按 B → C → D 这个顺序做**(🔴 本规程**只收通用要求**;`env/` 怎么放、路径怎么写、什么不入仓这类**某个技能包专有的配置规则不在其中**):
 · **B 结构层**(结构清晰·重点突出·无冲突·边界清晰)—— #1 单一真源 #2 注入面与真源同源(🔴 每轮注入的面**改文字必须量长度**)#3 命名一致 #4 正文不自相矛盾。
 · **C 流程层**(流程顺畅·功能正常)—— #5 步骤顺序正确 #6 编号连续 #7 无跳步 #8 步骤间职责不越界 #9 字段归属正确 #10 上下游不断裂 #11 引用路径正确 #12 字段不缺失 #13 产物链完整(**P0**)。
 · **D 表述层**(简洁·高效·实用·无歧义)—— #14 肯定表述(正本 ⇒ `references/rules.md §9`)#15 说人话 #16 一页纸。
 🔴 **优先级**:B 结构 > C 流程 > D 表述 —— 前两层出毛病**机制失效或断链**,表述只是**效果差**。
 🔴 **目标(用户 2026-10-15 原话)**:让技能描述**结构清晰·重点突出·简洁·高效·实用·无歧义·流程顺畅·功能正常·规则边界清晰·无冲突**。
 🔴 **文末附「技能优化描述 · 总表」21 条四层**;**验法按层不同**:A ⇒ 拷到别处跑一遍/B ⇒ 同源比对 md5/C ⇒ 画数据流看断点/D ⇒ 人读(⛔ 别假装它有自动结论)。
 🔴 **文末附「技能优化描述 · 总表」16 条三层**;**验法按层不同**:B ⇒ 同源比对 md5/C ⇒ 画数据流看断点/D ⇒ 人读(⛔ 别假装它有自动结论)。
---
@@ -8,7 +8,7 @@
## 为什么要有这篇(2026-10-06 ~ 10-15 的实证)
近 10 天里,「把技能库盘一遍」这件事被零散地做过至少 6 次,每次都要重新摸一遍判据 ——
结果每次都踩同一个坑,或漏同一类东西。以下 11 项是**从那些实际发生过的动作里归纳出来的**,
结果每次都踩同一个坑,或漏同一类东西。以下 7 项是**从那些实际发生过的动作里归纳出来的**,
不是凭空设计的清单。两个已证的坑先摆在前面:
- 🔴 **零值必须先自证**:2026-10-07 测"技能被加载过几次",指纹写错(技能名被**转义引号**包着,按普通引号匹配)
@@ -42,40 +42,21 @@
**④ 查功能重叠**
把"做同一件事"的技能成对列出来,注明**合并后落点**。重叠项在删/并时要一起看,别单删一个。
## 第三段 · 查隐患(这一段的每一项都对应过一次真实事故)
## 第三段 · 查隐患
🔴 **判据正本 = `references/06-技能优化规程.md` 的 A/B 两层**。本段只管**采集读数**,
不重复写判据 —— 某项查出问题,按 06 的对应项修。
🔴 **环境配置合规性不属本规程** —— 入仓白名单、本机生成契约、写死本机、路径形态这四项,
判据在**技能环境配置规范**(见 `01-文档索引.md` 同名行),由机制类包自己的体检挂载,**盘点时不重复查**。
**⑤ 白名单对不对**
读数:列出仓内已跟踪的目录 + 技能根下未被放行的技能目录,两边对照。
🔴 判据 ⇒ **技能环境配置规范**(正本 仓根 `.gitignore` 的注释块;06 的 A 段只给指针)。漏放行的实证:
2026-10-11 `video-capture` 独立了但白名单没加,仓里只剩一份指向仓外的交接说明。
**⑥ 本机生成的契约有没有被误入库**
读数:在 `git ls-files` 里搜 `env/roots.env`、`references/manifest.md` 这类候选。
🔴 判据 ⇒ 同规范(`SKILL.md §0`「包内目录怎么分」)。
**⑦ 入库代码里有没有"写死这台机器"**
读数:对已入仓文件扫三样 —— 盘符字面量 / 绝对机器路径 / 工作区清单,逐条记位置。
🔴 判据 ⇒ 同规范(`SKILL.md §0`「路径一律用相对」+ 十一条禁令第 11 条);修法 ⇒ 配置外置,推不出来就如实报错留痕。
**⑧ 路径形态对不对**
读数:逐个引用点记下它引的是包内还是跨根。
🔴 判据 ⇒ 同规范(`SKILL.md §0`「例外只有一类:跨根引用」)。
**⑨ 正文有没有自相矛盾**
**⑤ 正文有没有自相矛盾**
读数:同一概念在各篇出现的位置与写法,成对列出。
🔴 判据 ⇒ 06 的 **#9**;同一件事散在多处的,收敛口径见 06 的 **#6**。
🔴 判据 ⇒ 06 的 **#4**;同一件事散在多处的,收敛口径见 06 的 **#1**。
**⑩ 有没有多份副本**
**⑥ 有没有多份副本**
同一技能存在 ≥2 份 ⇒ 定"唯一形态",其余归档(留取回路径,⛔ 不直删)。
**⑪ 待提交清单**
**⑦ 待提交清单**
技能库相对 HEAD 有哪些改动(已跟踪 + 未跟踪分开列),逐条注明"谁在什么时候改的、为什么"。
---
## 第四段 · 输出
**产物落 `交付物/技能清单-<日期>.md`**,按上面 11 项分段写,每段带上**读数**(不是结论)。
@@ -90,6 +71,6 @@
## 一句话调用
用户点名范围(如"只盘 X 区""只看白名单")⇒ 只跑对应那几项,触发词清单见文首。
用户点名范围(如"只盘 X 区""只看分类")⇒ 只跑对应那几项,触发词清单见文首。
产物落 `交付物/技能清单-<日期>.md`。
📌 姊妹篇:**改技能描述**(一条规则写在哪、怎么表述、能不能换机器用)⇒ `references/06-技能优化规程.md`。
@@ -1,6 +1,6 @@
# 06 · 技能优化规程
> **什么时候用**(本规程只管**描述、结构、流程** —— 怎么写、怎么组织、边界清不清;**环境配置另有一份规范**):用户说
> **什么时候用**(本规程**只收通用要求** —— 描述、结构、流程怎么写、怎么组织;**技能环境配置目录的专属规则不在本规程**):用户说
> 「**优化技能**」「**技能怎么改更好**」「**梳理技能**」「**梳理一下技能的要求和描述**」「**技能太长**」
> 「**这条规则写在哪**」「**这个技能能不能拷到别的机器用**」—— 任一句即触发;点名某一层 ⇒ 只跑那一层。
> **一句话判据**:**写技能时,假设读者是"另一台机器上的另一个会话"。**
@@ -11,7 +11,8 @@
> 技能优化是为了让技能相关描述 —— **结构清晰 · 重点突出 · 描述简洁 · 高效 · 实用 · 无歧义 ·
> 流程顺畅 · 功能正常 · 规则边界清晰 · 无冲突**。
这十项就是 B/C/D 三层的靶子。🔴 **不在本规程范围**:**技能环境配置**(每台机器各不同的东西怎么放、路径怎么写)—— 那是 A 层,只给指针。
这十项就是 B/C/D 三层的靶子。🔴 **本规程只收通用要求**:`env/` 怎么放、路径怎么写、什么不入仓
这类**某个技能包专有的配置规则**,归 `01-文档索引.md` 的「技能环境配置规范」一行所指的那份规范。
判据来源:近 10 天「技能怎么改」被反复提过,表面是六件不相关的事,**根因是同一个** —— 技能是「跨机器、跨会话共享的文本」,作者却按「本机、本会话」的假设写它。
⚠️ **拿"另一台机器 + 另一个会话"回放一遍,毛病自己就浮出来**。
@@ -22,31 +23,21 @@
优先级:**B 结构 > C 流程 > D 表述** —— 结构与流程出毛病会让**机制失效或断链**(别人照它做会做错事);
表述出毛病**只是效果差**。
### A 技能环境配置(本规程不展开)
🔴 这 5 条属**技能环境配置规范**,判据一律指回真源,⛔ 不复述(复述=第三处真源):
- **1 配置外置** ⇒ `SKILL.md §0`「包内目录怎么分」(用户 2026-10-11 令:「脚本是脚本 配置是配置」)
- **2 不写死本机** ⇒ `SKILL.md §0`「路径一律用相对」+ 十一条禁令第 11 条(2026-10-14 用户令)
- **3 本机生成契约不入库** ⇒ 同「包内目录怎么分」
- **4 路径形态统一** ⇒ `SKILL.md §0`「例外只有一类:跨根引用」
- **5 入仓按白名单** ⇒ 仓根 `.gitignore` 的注释块(用户 2026-10-09 令)
### B 结构层(→ 结构清晰 · 重点突出 · 规则边界清晰 · 无冲突)
**6 单一真源**
**1 单一真源**
同一件事**只留一处定义**,其余位置写指针。判据:**改它的时候,我需不需要改第二个地方** —— 需要 ⇒ 那是两处真源。
**7 注入面与真源同源**
**2 注入面与真源同源**
每轮注入的那份与包内那份**逐字一致**(防漂移判据:`scripts/selftest.py::t_reply_core_same_source`)。
🔴 配套:**凡"每轮注入 / 有长度上限"的面,改文字必须量长度** ——"改完自测全绿"不等于"改的内容真进了上下文"。
⚠️ 同源判据自己也要做**变异对照**(改一处应报红、复原应回绿)—— 判据只认一种文本形态就会**恒绿**。
**8 命名一致**
**3 命名一致**
同一概念在全包用同一个叫法;改名前先列**伴随物清单**(只改主体必留隐患)。
📌 术语正式名与旧称映射的**唯一天条真源** ⇒ `references/architecture.md §7 术语`(⛔ 别另抄一张表)。
**9 正文不自相矛盾**
**4 正文不自相矛盾**
同一件事在技能里出现两种写法(尤其"正文"与"规则段"之间)⇒ 逐条对,留一处。
### C 流程层(→ 流程顺畅 · 功能正常)
@@ -54,67 +45,62 @@
> 来路:2026-08-10 另一工作区对创作流程做全量审计归纳的 13 项里,9 项属这一层;
> **多步流水线型技能**(如 `product-planning` 的四段)逐条对着查,单文件技能跳过本层。
**10 步骤顺序正确** —— 全流程步骤顺序无错乱(反例:步骤排反)
**11 编号连续** —— 步骤内部编号不跳号(反例:第一步 → 第三步,缺第二步)
**12 无跳步** —— 不跳过中间步骤(反例:产物链 5→6→7 跳了一步)
**13 步骤间职责不越界** —— 各步骤各管一段(反例:后一棒把前一棒的场次表+情绪卡全塞进去)
**14 字段归属正确** —— 字段由哪个步骤产出就标哪个(反例:情绪设计卡标成后一棒,实际是前一棒)
**15 上下游不断裂** —— 上游输出的字段,下游输入列表要引用(反例:「目标体感」字段后两棒都没引用)
**16 引用路径正确** —— 引用走对层级(流程 → 知识库 → 素材库)
**17 字段不缺失** —— 每步的输入列表字段完整(反例:某步输入缺「框架方案」)
**18 产物链完整** —— 中间产物必须落盘;**P0:只出最终产物 = 断链**
**5 步骤顺序正确** —— 全流程步骤顺序无错乱(反例:步骤排反)
**6 编号连续** —— 步骤内部编号不跳号(反例:第一步 → 第三步,缺第二步)
**7 无跳步** —— 不跳过中间步骤(反例:产物链 5→6→7 跳了一步)
**8 步骤间职责不越界** —— 各步骤各管一段(反例:后一棒把前一棒的场次表+情绪卡全塞进去)
**9 字段归属正确** —— 字段由哪个步骤产出就标哪个(反例:情绪设计卡标成后一棒,实际是前一棒)
**10 上下游不断裂** —— 上游输出的字段,下游输入列表要引用(反例:「目标体感」字段后两棒都没引用)
**11 引用路径正确** —— 引用走对层级(流程 → 知识库 → 素材库)
**12 字段不缺失** —— 每步的输入列表字段完整(反例:某步输入缺「框架方案」)
**13 产物链完整** —— 中间产物必须落盘;**P0:只出最终产物 = 断链**
### D 表述层(→ 描述简洁 · 高效 · 实用 · 无歧义)
**19 肯定表述**
**14 肯定表述**
写「要什么、怎么做」。⛔ 不写「不要 A/B/C」—— 负向词进匹配面/注入面,**反而把 X 拉高命中**。
例外:**以「经验沉淀」或「红线/避坑」为目的**的文档可以写负向,写法=**正向目标 + 括号里的踩坑依据**。
⚠️ 两条边界:「配置里不含本工作区」是在**描述事实**;「三禁」这类**硬禁令**是约束本体,强度要留住。
⚠️ 两条边界:「配置里不含本工作区」是**描述事实**;「三禁」这类**硬禁令**是约束本体,强度要留住。
(正本 ⇒ `references/rules.md §9`)
**20 说人话**
**15 说人话**
落盘文字先过"像不像人写的"这一关(禁四种 AI 味:三段式排比连用 / "…着"结尾的肤浅分析 / 模糊归因 / 拆成加粗小标题 + 竖排碎句)。
**21 一页纸**
**16 一页纸**
单份产出默认 ≤120 行,超长就拆。
---
## 怎么验(验法按层不同,⛔ 别拿一种套四层)
## 怎么验(验法按层不同,⛔ 别拿一种套三层)
- **A 环境配置** ⇒ 把这台机器上的包**拷到没有 `env/` 的位置跑一遍**,看它如实报错还是静默扫空 —— 最硬的一条。
- **B 结构层** ⇒ 同源比对 / md5 / 判据(有机器可查的部分)。
- **C 流程层** ⇒ 画数据流,看断点与跳号。
- **D 表述层** ⇒ 人读;⛔ 这层**验不出自动结论**,别假装它通过了。
---
## 技能优化描述 · 总表(21 条,四层)
## 技能优化描述 · 总表(16 条,三层)
> **怎么来的**:① B/C/D 三层判据(=本规程正文);② 另一工作区的 `技能审计检查清单.md`(`E:/ProgramData/AIProject/mcn-short-video/技能审计检查清单.md`,2026-08-10 创作流程全量审计的 13 项;跨根引用,仅作来路说明)。
> **用法**:按 **1 → 21** 逐条过。**分级**:**P0 = 会让人出事或断链**(#2、#18)/**P1 = 不一致或冗余**(B 层 + C 层其余)/**P2 = 效果差**(D 层)。
> 🔴 **判据正本不在本表**:#1–#5 在 `SKILL.md §0` 与仓根规则;#6–#21 在本规程的 B/C/D 三层。表里只给锚点与反例。
> **用法**:按 **1 → 16** 逐条过。**分级**:**P0 = 会让人出事或断链**(#13 产物链)/**P1 = 不一致或冗余**(B 层 + C 层其余)/**P2 = 效果差**(D 层)。
> 🔴 **判据正本 = 本规程正文的对应项**,表里只给锚点与反例;⛔ **本表只收通用要求** —— `env/` 怎么放、
> 路径怎么写、什么不入仓这类**专有配置规则不在本表**,见 `01-文档索引.md` 的「技能环境配置规范」。
| # | 层 | 检查点 | 判据 | 典型反例(实测过的) |
|---|---|---|---|---|
| 1 | A 环境配置 | 配置外置 | 见 A 段 | 本机路径写进入库代码 |
| 2 | A 环境配置 | 不写死本机 | 见 A 段 | `or r"D:\..."` 兜底;工作区清单写死 |
| 3 | A 环境配置 | 本机生成契约不入库 | 见 A 段 | 入仓后换机器"同名覆盖"改掉对方配置 |
| 4 | A 环境配置 | 路径形态统一 | 见 A 段 | 同一件事三处三说地写文档库路径 |
| 5 | A 环境配置 | 入仓按白名单 | 见 A 段 | 新技能独立了但白名单没加 ⇒ 仓里只剩指向仓外的引用 |
| 6 | B 结构 | 单一真源 | 见 §B #6 | 同一条判据散在 6 处,改一处漏一处 |
| 7 | B 结构 | 注入面与真源同源 | 见 §B #7 | 加条文顶破上限 ⇒ 尾部规则静默消失,下游只看到"已截断" |
| 8 | B 结构 | 命名一致 | 见 §B #8 | 「任务会话 31 处 / 执行会话 29 处」混用 |
| 9 | B 结构 | 正文不自相矛盾 | 见 §B #9 | 技能正文缺起实例命令、与另一处说法冲突 |
| 10 | C 流程 | 步骤顺序正确 | 见 §C #10 | 步骤排反 |
| 11 | C 流程 | 编号连续 | 见 §C #11 | 第一步→第三步缺第二步 |
| 12 | C 流程 | 无跳步 | 见 §C #12 | 产物链 5→6→7 跳了一步 |
| 13 | C 流程 | 步骤间职责不越界 | 见 §C #13 | 后一棒把前一棒的场次表+情绪卡全塞进去 |
| 14 | C 流程 | 字段归属正确 | 见 §C #14 | 情绪设计卡标成后一棒,实际是前一棒 |
| 15 | C 流程 | 上下游不断裂 | 见 §C #15 | 「目标体感」字段后两棒都没引用 |
| 16 | C 流程 | 引用路径正确 | 见 §C #16 | 素材库误走直接路径,应走知识库间接引用 |
| 17 | C 流程 | 字段不缺失 | 见 §C #17 | 某步输入缺「框架方案」 |
| 18 | C 流程 | 产物链完整 | 见 §C #18(**P0**) | 只在对话里输出、没落盘 |
| 19 | D 表述 | 肯定表述 | 见 §D #19 | 描述里写「不用于海报」⇒ 匹配面反而把"海报"拉高 |
| 20 | D 表述 | 说人话 | 见 §D #20 | 四种 AI 味:三段式排比连用/"…着"结尾的肤浅分析/模糊归因/拆成加粗小标题+竖排碎句 |
| 21 | D 表述 | 一页纸 | 见 §D #21 | 一份 300 行的"速查" |
| 1 | B 结构 | 单一真源 | 见 §B #1 | 同一条判据散在 6 处,改一处漏一处 |
| 2 | B 结构 | 注入面与真源同源 | 见 §B #2 | 加条文顶破上限 ⇒ 尾部规则静默消失,下游只看到"已截断" |
| 3 | B 结构 | 命名一致 | 见 §B #3 | 「任务会话 31 处 / 执行会话 29 处」混用 |
| 4 | B 结构 | 正文不自相矛盾 | 见 §B #4 | 技能正文缺起实例命令、与另一处说法冲突 |
| 5 | C 流程 | 步骤顺序正确 | 见 §C #5 | 步骤排反 |
| 6 | C 流程 | 编号连续 | 见 §C #6 | 第一步→第三步缺第二步 |
| 7 | C 流程 | 无跳步 | 见 §C #7 | 产物链 5→6→7 跳了一步 |
| 8 | C 流程 | 步骤间职责不越界 | 见 §C #8 | 后一棒把前一棒的场次表+情绪卡全塞进去 |
| 9 | C 流程 | 字段归属正确 | 见 §C #9 | 情绪设计卡标成后一棒,实际是前一棒 |
| 10 | C 流程 | 上下游不断裂 | 见 §C #10 | 「目标体感」字段后两棒都没引用 |
| 11 | C 流程 | 引用路径正确 | 见 §C #11 | 素材库误走直接路径,应走知识库间接引用 |
| 12 | C 流程 | 字段不缺失 | 见 §C #12 | 某步输入缺「框架方案」 |
| 13 | C 流程 | 产物链完整 | 见 §C #13(**P0**) | 只在对话里输出、没落盘 |
| 14 | D 表述 | 肯定表述 | 见 §D #14 | 描述里写「不用于海报」⇒ 匹配面反而把"海报"拉高 |
| 15 | D 表述 | 说人话 | 见 §D #15 | 四种 AI 味:三段式排比连用/"…着"结尾的肤浅分析/模糊归因/拆成加粗小标题+竖排碎句 |
| 16 | D 表述 | 一页纸 | 见 §D #16 | 一份 300 行的"速查" |
+6 -6
View File
@@ -7920,14 +7920,14 @@ def t_term_table_single_source():
return rows
@case("🔴 06 的 21 条条目名:SKILL.md §0 ⑨ 与 06 正文/总表三方逐条同名(⛔ 写成简写=对不上)")
@case("🔴 06 的 16 条条目名:SKILL.md §0 ⑨ 与 06 正文/总表三方逐条同名(⛔ 写成简写=对不上)")
def t_skill06_entries_same_source():
"""🔴 2026-10-15 立(当日实测踩到)。
`SKILL.md §0 ⑨` 是**匹配面**(点开技能就读到),`06` 正文与总表是**真源**。
实测:§0 把 C 层写成简写「职责不越界」,而正文是「步骤间职责不越界」——
两边都不报错,读者按简写去正文里搜就搜不到。
⇒ 判据落在**21 条逐条同名**上(数字 + 名字都要对上)。
⇒ 判据落在**16 条逐条同名**上(数字 + 名字都要对上)。
"""
import re as _re
SK = (HERE.parent / "SKILL.md").read_text(encoding="utf-8", errors="replace")
@@ -7949,16 +7949,16 @@ def t_skill06_entries_same_source():
a, b, c = _clean(a), _clean(b), _clean(c)
rows = [("§0 ⑨ 读到条目名 %d 条(应 21)" % len(a), len(a) == 21),
("06 正文读到条目名 %d 条(应 21)" % len(b), len(b) == 21),
("06 总表读到条目名 %d 条(应 21)" % len(c), len(c) == 21)]
rows = [("§0 ⑨ 读到条目名 %d 条(应 16)" % len(a), len(a) == 16),
("06 正文读到条目名 %d 条(应 16)" % len(b), len(b) == 16),
("06 总表读到条目名 %d 条(应 16)" % len(c), len(c) == 16)]
for tag, other in (("06 正文", b), ("06 总表", c)):
bad = sorted(k for k in set(a) | set(other) if a.get(k) != other.get(k))
detail = ""
if bad:
k0 = bad[0]
detail = "(⛔ 首处不一致 #%d:§0=%r/%s=%r)" % (k0, a.get(k0), tag, other.get(k0))
rows.append(("§0 ⑨ 与 %s **21 条逐条同名**%s" % (tag, detail), not bad))
rows.append(("§0 ⑨ 与 %s **16 条逐条同名**%s" % (tag, detail), not bad))
return rows