提问规则审计 + 撤出本机生成的两份契约 + 「一律用肯定表述」落进注入面

用户 10-09 三条令:
①「那两份 不说具体 我怎么知道,看看会话提问的规则是否有缺陷」
②「A 方案」(撤出 session-mechanism/roots.env 与 references/manifest.md)
③「要用确定XXXX 这样的描述,避免 不要XXXXX 会导致上下文干扰的描述,除了经验沉淀和红线避坑外」
   +「不只是修改 创建生成时也需要遵守」

一、提问规则审计(三条缺陷,全部修掉)
1、判据用错了维度:旧措辞「⛔ 提问正文不许出现的:包名·环境变量·文件路径·commit/sha·表名/字段名·
   类名/函数名」是按**词性**一刀切,而同一段末尾又写「正文只留能决定下一步的内容」⇒ 两句自相矛盾。
   我按前半句执行、把要撤的文件名删成了「那两份」⇒ 待拍板项不可答。
   ✅ 改成按功能判:**少了这个标识,用户还能不能决定** —— 不能 ⇒ 写进正文;能 ⇒ 删、下沉技术附录。
2、同一判据散在 6 处、措辞各不同(违反本项目自己的「禁重复判定标准」):已收敛到同一句判据,
   并互相标注「改这里必须同批改」。
3、🔴 最隐蔽:**每轮注入的那份 ≠ 包内那份**。钩子 `_core()` 是三级回退,① **本工作区
   CODEBUDDY.md 的 `REPLY-CORE` 段**才是每轮注入的(包内那份只是换机器的兜底)。
   我先只改包内 ⇒ 注入的仍是旧条文,而"文件都改了、自测全绿",看不出来。
   ⇒ 两份都改 + 新增防漂移自测 `t_reply_core_same_source`(两份实质内容必须逐字一致)。

二、撤出两份「本机生成」的契约(用户选 A)
- `git rm --cached session-mechanism/roots.env` 与 `session-mechanism/references/manifest.md`
  —— **本地文件一律保留**(实测 624 B / 18 568 B 仍在)。
- 为什么必须撤:别的电脑取仓时「同名覆盖」会把它们换成**我们这台机器**的路径 ⇒ 那台机器的
  机制脚本去找不存在的目录。
- 新增入库样例 `session-mechanism/roots.env.example`(占位符,无本机路径)。
- `.gitignore`:加这两份的忽略行(⛔ 防 `git add -A` 捎回),并改掉原「刻意入库」那段注释。

三、「一律用肯定表述」写进注入面(原来只在 rules.md,注入面看不到)
- 口径:**写或改技能与规则文件时一律写"要什么、怎么做";新建、生成时同样适用**;
  例外=**以「经验沉淀」或「红线/避坑」为目的**的技能与规则(写法=正向目标 + 括号里的踩坑依据)。
- 落点:injected `REPLY-CORE` 段(工作区 + 包内,逐字一致)· `rules.md §9` ·
  `改包纪律.md` 新增第 5 条硬纪律(「二、四条」→「五条」)· `01-文档索引.md` 指针同步 ·
  把我在注入块里加的那段负向表述改成**正向主导**。

四、🔴 顺带抓到并修掉一个我自己造成的净变差
- 注入块有 **1400 字上限、且从开头截** ⇒ 我加条文把它顶过上限(1274 → 1414+)⇒
  尾部三条(变相征询禁止 / 不用征询句收尾 / 本工作区另有定稿)**静默消失**、不再注入。
- 修:上限 1400 → **2000**;并在 `t_reply_core_same_source` 里加断言 **块长 ≤ 上限** ——
  以后谁再顶破上限,自测直接报红,逼他"要么精简、要么显式抬上限"。
- 验证:`被截断=False`,尾部三条都回来了。

五、验证
- 全套自测 **PASS 109 / FAIL 0**;py 语法全绿;`install.py --manifest` 重算(78 份,语法失败 0)。
- 注入块实测:来源=工作区 CODEBUDDY.md,不截断,含「一律用肯定表述」「决定对象要点名到具体」
  「新建、生成时同样适用」。
This commit is contained in:
admin committed 2026-10-09 10:45:00 +08:00
1 parent 0204001a1b
commit 5004909267
12 files changed
+164 -219

No files matched your search

+20 -9
View File
@@ -13,7 +13,10 @@
- **提报用户标准 = 存在真取舍**:候选**只有优点或只有缺点 ⇒ 自己拍掉**;各有优劣才提报用户,且**逐项写优点 + 缺点**。
- ⛔ **不许捆包**:要问红线**只问那一句**;技术方案自己定好、当**已定项**陈述。
- ⛔ **禁用征询句收尾**(「要我…吗 / 请确认 / 你看怎么办」)⇒ 按三问重判,没命中就**删掉、自己做完**。
- 🔴 **提报用户内容必须自包含**:① 一句话说清要决定什么(⛔ 不用指代)② 为什么要你定(影响谁 / 断多久 / 花多少钱)③ 每候选写优点 + 缺点,末行给倾向 ④ 一轮一问 ⑤ ⛔ 不出现包名 / 路径 / 变量名。
- 🔴 **提报用户内容必须自包含**:① 一句话说清要决定什么(⛔ 不用指代;🔴 **决定对象必须点名**)② 为什么要你定(影响谁 / 断多久 / 花多少钱)③ 每候选写优点 + 缺点,末行给倾向 ④ 一轮一问 ⑤ ⛔ **只服务实现**的内部细节(函数名 / 变量名 / 行号 / sha / 表名字段名 / 内部编号)下沉「技术附录」。
- 🔑 **⑤ 与 ① 的同一句判据**:**少了这个标识,用户还能不能决定?** 不能 ⇒ 必须写进正文;能 ⇒ 必须删。
⚠️ 旧措辞是「⛔ 不出现包名 / 路径 / 变量名 / 类名」——按**词性**一刀切 ⇒ 把"决定对象"也删了
(2026-10-09 实测:把要撤的两份文件写成「那两份」⇒ 用户回「不说具体 我怎么知道」)⇒ **已改成按功能判**。
## 2 回复排版(🔴 用户 2026-10-01 定稿,照抄即可)
@@ -81,18 +84,26 @@
✅ 正解:结论**同时**落三处 —— `SKILL.md` 第一屏(会被读)+ `pitfalls.md` 一条(有来龙去脉)+ 本档一条规矩(约束以后怎么写)。
- 🔴 **配套**:凡"换会话容易忘、忘了就会重来"的结论,**优先放第一屏**,⛔ 不要塞进长文档。
## 9 🔴 只写正向范围,⛔ 不写「不用于 XXXX」(2026-10-07 用户令)
## 9 🔴 一律用肯定表述("要什么"优先)(2026-10-07 + 2026-10-09 用户令)
**技能与文档的「用途/范围」段一律写"用于什么"**,⛔ 不列"不用于 A/B/C"。
**写或改技能与规则文件时,一律写"要什么、怎么做"** —— **新建、生成时同样适用**(⛔ 不只管"修改")。
落点(都是「自动匹配面 / 每轮注入面」):技能的 `description` 与首屏 · **每轮注入的排版块与钩子文案** ·
技能与文档的「用途/范围」段 · 其它规则正文。⛔ 不写「不要 A/B/C」这类负向描述。
- **为什么(机制性,不只"占地方")**:技能的 `description` 与首屏是**自动匹配面**(技能靠描述匹配被加载)
⇒ 在里面列"不用于 X",等于**把 X 这些词喂进匹配面** ⇒ **反而更容易被不该命中的请求选中**
(实测形态:`draw-ui` 描述里列了「不用于普通插画/海报/故事板」⇒ 用户说"做个海报"时它更可能被选上)。
- **例外(用户 2026-10-07 明确给出)**:**经验沉淀可以写"如何避免踩坑"** ——
禁令**不删**,但写成「**正向目标 + 依据(曾栽过什么)**」的形态
(例:「本方法只出产品视角」+「曾因照英文商业框架产出而跑偏」)。
- **为什么(机制性,不只"占地方")**:负向词进匹配面 = **把 X 这些词喂进去** ⇒ 反而更容易命中 X
(实测形态:`draw-ui` 描述里列「不用于普通插画/海报/故事板」⇒ 用户说"做个海报"时它更可能被选上);
进**注入面**是同一回事 —— 同样的反向拉高。
- **例外(按文档性质定,⛔ 不按句子定)**:**以「经验沉淀」或「红线/避坑」为目的**的技能与规则
(踩坑记录 · 红线清单 · 反例库 · `pitfalls.md` 这类)**可以写负向** ——
写法=「**正向目标 + 依据(曾栽过什么)**」,⛔ 不把禁令单独摆在那儿。
- 🔴 **落地(2026-10-09)**:这条口径已写进**每轮注入块**(工作区规则文件的 `REPLY-CORE` 段
+ 包内 `03-回复排版-核心块.md`,两份逐字一致),并在 `改包纪律.md` 立为第 5 条硬纪律。
此前它**只在本文里**、且只覆盖"用途/范围 段" ⇒ 注入面看不到 ⇒ 我又在注入块里写了一整段负向表述
(用户 2026-10-09 点破)。防漂移判据=`selftest.py::t_reply_core_same_source`。
- ⛔ **别与"事实陈述"混**:「配置里不含本工作区」「该目录不含 `board.py`」是在**描述事实**,
不在本条管辖内 —— 一刀切会把它们误删。
- ⚠️ **硬禁令(「三禁」这类)不在本条改写范围** —— 它们是约束本体,强度要留住;
本条管的是**描述性文字**与**可选的举例**。
## 10 🔴 遇阻碍 ⇒ 把目标状态改成「阻碍」⇒ 机制暂停 ⇒ 让用户决策(2026-10-09 用户令)