Files
Chen Yi 08a032120a 删除旧的事件驱动章节(流水账),并同步文档到人物主线
- 移除 output/volumes/v1/chapters/001-1-9.md 与 002-10-19.md(仅普通提交,git 历史保留)
- 移除被取代的写作规范 prompts/chronicler.md 与旧的按年代切章模块
- README 全面改写为人物主线流程、参数位置与踩坑记录
- scripts/dfannals 启动器:自动挑一个装了 defusedxml 的解释器
2026-10-05 19:32:41 +08:00

77 lines
3.6 KiB
Python
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.
#!/usr/bin/env python3
"""闸门自检:证明 5 维度自评真的能把"流水账"判成不合格。
这是 t4 契约要求的可复现证据。它跑两次真实模型自评:
平淡稿:纯事件罗列,主角全程被动,没有任何抉择、转折或具体对手
有戏剧本:主角有目标、冲突逐级升级、有立场翻转、对手具体
然后断言 平淡稿 < 阈值 ≤ 有戏剧本。若两者都低,说明评分尺度太严(会误杀好稿);
若两者都高,说明闸门形同虚设。
"""
from __future__ import annotations
import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[1]))
from dfannals import gate
DULL = """# 第二十三章:大事记
元年,甲死了。甲是精灵。三年,乙死了。乙是精灵。
五年,甲和乙的部族打了一仗。七年,又打了一仗。九年,再打了一仗。
十一年,丙死了。十三年,丁死了。十五年,戊死了。十七年,又打了一仗。
十九年,己死了。二十一年,庚死了。二十三年,辛死了。二十五年,壬死了。
史书到此中断。以上均有据可查。
"""
VIVID = """# 第二十三章:他等那口井塌了十七年
Ngalak 站在井台边数桶。第七桶,他想,今天必须到第十桶。
"粮行的水,先紧着粮行用。"他对排队的人说。队伍里有人骂了一句,他没回头。他要的不是水。
水他买得起;他买不起的是 Minkot 每天清晨把钥匙挂在腰间走过集市时,那种不必向任何人解释的从容。
第三年冬天,井边塌了一角,压死了两个挑水的孩子。Ngalak 第一个到场。他跪在泥水里哭,
哭得比孩子的母亲还大声,哭完站起来,把外袍脱下来盖在尸首上。人群里有人说:这才是管事的人。
Minkot 站在后面,手里还握着一把钥匙,一句话没说。
"你那是哭吗?"当晚 Minkot 在酒馆里问他,把酒碗撞在桌上,酒溅出来一半,"你那是敲锣。"
"我敲了,"Ngalak 把溅出来的酒擦干,"你听见了?"
第十年,Minkot 的妻子在集市上指着 Ngalak 的鼻子说:是你挖的地基。三天后她改口,说自己 grief 昏了头。
Ngalak 送了她一头牛。她把牛牵走的那天,Minkot 站在门口看着,门没关,他也没让妻子进屋。
"你到底要什么?"第十七年,Minkot 终于开口。集市上的人都停下来听。
"我要你不必再解释的资格。"Ngalak 说。
Minkot 把钥匙从腰上解下来,放在井台上,然后回身把自己家里的水缸砸了。陶片溅了一地。
"这口井,我不要了。"他说,"记住,今天不是他赢了——是我不要了。"
Ngalak 站在原地。他等这一天等了十七年,真等到手的时候,发现钥匙比他想的要重。
他把它握了很久,才发觉自己在数桶:第八桶,第九桶,第十桶。
"""
def main() -> int:
print("跑真实模型自评(两次调用)…\n")
dull = gate.evaluate(DULL)
print("平淡稿:", dull.render())
vivid = gate.evaluate(VIVID)
print("有戏剧本:", vivid.render())
print(f"\n阈值 = {gate.THRESHOLD}(满分 {len(gate.DIMENSIONS) * gate.MAX_SCORE})")
ok = dull.total < gate.THRESHOLD <= vivid.total
print(f"平淡稿 {dull.total} < 阈值 ≤ 有戏剧本 {vivid.total} → {'通过' if ok else '不通过'}")
if not ok:
if vivid.total < gate.THRESHOLD:
print("问题:评分尺度太严,好稿也会被误杀。")
else:
print("问题:闸门形同虚设,平淡稿也能通过。")
return 0 if ok else 1
if __name__ == "__main__":
sys.exit(main())