session-mechanism:按 21 条总表自审 05/06,修掉 7 处自身违规
用 06 自己的判据过了一遍 06 与 05,查出并修掉: - ㉑ 一页纸:06 原文 134 行 > 120 ⇒ 压到 113 行(合并重复段、删重复触发词) - ⑥ 单一真源:05 的 ⑤~⑨ 与 06 的 A②③④⑤/B⑨ 逐字重复 ⇒ 05 改采读数,判据指回 06 - ⑥ 单一真源:总表 A/B/D 的判据列与正文 12 项重复 ⇒ 改成锚点(判据正本在正文) - ⑧ 命名一致:正文「工程/结构/表述层」vs 总表「A/B/C/D 层」⇒ 统一成 A/B/D,并写明 C 层来路 - ⑨ 不自相矛盾:入口段与「一句话调用」各列一份触发词 ⇒ 合并到入口一处 - ⑦ 注入面同源:SKILL.md 写「技能太长」、06 写「技能太长了」⇒ 统一 - ④ 路径形态:05 引 06 缺 references/ 前缀;06 引 selftest.py 缺 scripts/ 前缀;跨根路径改正斜杠 新增自测 t_skill_entry_triggers_same_source(10 项):SKILL.md §0 ⑧⑨ 的触发词与 05/06 文首集合相等,且 01-文档索引.md 里列的词 ⊆ 真源。 已做变异对照(SKILL.md 改一个字/索引里塞一个真源没有的词 ⇒ 报红;复原 ⇒ 绿)。
This commit is contained in:
1 parent
d8be643ec7
commit
5c5272569f
4 files changed
+155
-84
No files matched your search
@@ -7795,5 +7795,91 @@ def t_reply_core_same_source():
|
||||
return rows
|
||||
|
||||
|
||||
@case("🔴 技能入口触发词:SKILL.md §0 与 05/06 文首必须同源(⛔ 差一个字=用户按原话喊不到)")
|
||||
def t_skill_entry_triggers_same_source():
|
||||
"""🔴 2026-10-15 立(本轮自审 `06` 时实测踩到)。
|
||||
|
||||
判据来源:`references/06-技能优化规程.md` 的 **B⑦ 注入面与真源同源**。
|
||||
`SKILL.md` §0 的第 ⑧/⑨ 项是**匹配面**(用户按原话喊,靠这里的词命中),
|
||||
`05 / 06` 文首的「什么时候用」是**真源**。
|
||||
|
||||
实测:`SKILL.md` 写「技能太长」、`06` 写「技能太长了」—— 差一个字,两边都不报错,
|
||||
用户按「技能太长」喊时命中与否全靠运气。
|
||||
⇒ 判据落在**两个集合相等**(⛔ 不是"包含"):少一个词或多一个词都报红。
|
||||
"""
|
||||
import re as _re
|
||||
|
||||
def _trigs(text):
|
||||
"""抓 `「**词**」` 与 `「词」` **两种形态** ——
|
||||
🔴 `01-文档索引.md` 的索引行是**不加粗**的,只认加粗会抓成空集 ⇒ 判据恒绿(2026-10-15 实测踩到)。"""
|
||||
out = set(_re.findall(r"「\*\*(.+?)\*\*」", text))
|
||||
out |= set(_re.findall(r"「([^「」*]+?)」", text))
|
||||
return {s.strip() for s in out if s.strip()}
|
||||
|
||||
def _entry_block(md, start_mark):
|
||||
"""从 `start_mark` 起,取到 `**一句话判据**` 或 `📌` 之前的正文。"""
|
||||
i = md.find(start_mark)
|
||||
if i < 0:
|
||||
return ""
|
||||
j = len(md)
|
||||
for stop in ("**一句话判据**", "📌"):
|
||||
k = md.find(stop, i)
|
||||
if 0 <= k < j:
|
||||
j = k
|
||||
return md[i:j]
|
||||
|
||||
try:
|
||||
skill = (HERE.parent / "SKILL.md").read_text(encoding="utf-8", errors="replace")
|
||||
p05 = (HERE.parent / "references" / "05-技能库盘点规程.md").read_text(
|
||||
encoding="utf-8", errors="replace")
|
||||
p06 = (HERE.parent / "references" / "06-技能优化规程.md").read_text(
|
||||
encoding="utf-8", errors="replace")
|
||||
except Exception as exc:
|
||||
return [("读到 SKILL.md/05/06:%r" % exc, False)]
|
||||
|
||||
rows = []
|
||||
for tag, skill_mark, doc, doc_name in (
|
||||
("⑧", "**⑧ 我要盘点技能库**", p05, "05-技能库盘点规程.md"),
|
||||
("⑨", "**⑨ 我要优化技能本身**", p06, "06-技能优化规程.md"),
|
||||
):
|
||||
i = skill.find(skill_mark)
|
||||
# 🔴 只取**触发词那一段**(`(用户说…任一句即触发)`),⛔ 不取整块 ——
|
||||
# ⑧/⑨ 的条目正文里还会出现别的「**…**」(如"这份读数能说明什么"),
|
||||
# 取整块会把它们当成触发词,报出一个假红(2026-10-15 实测)。
|
||||
k = skill.find("(用户说", i)
|
||||
m = skill.find("任一句即触发", k)
|
||||
block = skill[k:m] if i >= 0 and 0 <= k < m else ""
|
||||
a, b = _trigs(block), _trigs(_entry_block(doc, "**什么时候用**"))
|
||||
rows.append(("§0 第 %s 项读得到触发词(%d 个)" % (tag, len(a)), len(a) >= 4))
|
||||
rows.append(("%s 文首读得到触发词(%d 个)" % (doc_name, len(b)), len(b) >= 4))
|
||||
only_a, only_b = sorted(a - b), sorted(b - a)
|
||||
rows.append(("§0 第 %s 项 与 %s **触发词集合相等**%s"
|
||||
% (tag, doc_name,
|
||||
"" if not (only_a or only_b) else
|
||||
"(⛔ 只在 §0:%s;⛔ 只在 %s:%s)" % (only_a, doc_name, only_b)),
|
||||
not only_a and not only_b))
|
||||
|
||||
# 同一批词还有**第三处**:`references/01-文档索引.md` 的索引行。
|
||||
# 🔴 它是"代表词"视图 ⇒ 判据是**包含**(索引里列的每个词都得在真源里),⛔ 不是相等。
|
||||
# (⛔ 索引里冒出一个真源没有的词 ⇒ 用户照着索引喊也喊不到。)
|
||||
try:
|
||||
idx = (HERE.parent / "references" / "01-文档索引.md").read_text(
|
||||
encoding="utf-8", errors="replace")
|
||||
except Exception as exc:
|
||||
return rows + [("读到 references/01-文档索引.md:%r" % exc, False)]
|
||||
|
||||
for doc_name, doc in (("05-技能库盘点规程.md", p05), ("06-技能优化规程.md", p06)):
|
||||
line = next((ln for ln in idx.splitlines() if doc_name in ln), "")
|
||||
rows.append(("索引里有 %s 那一行" % doc_name, bool(line.strip())))
|
||||
if not line.strip():
|
||||
continue
|
||||
a, b = _trigs(line), _trigs(_entry_block(doc, "**什么时候用**"))
|
||||
extra = sorted(a - b)
|
||||
rows.append(("索引里列的触发词都在 %s 真源里%s"
|
||||
% (doc_name, "" if not extra else "(⛔ 真源没有:%s)" % extra),
|
||||
not extra))
|
||||
return rows
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
Reference in new issue
Block a user