主角线:Guspu Frillyknots / Ral Fastenhatchets / Alath Blottedmine 由线索挖掘器自动选定,按因果链切集,经 5 维度自评闸门(≥12 分)后入库。
77 lines
3.6 KiB
Python
77 lines
3.6 KiB
Python
#!/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 # noqa: E402
|
||
|
||
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())
|