From be6e36f8e378a492a3c07735d8b7078441c9744b Mon Sep 17 00:00:00 2001 From: zizi Date: Tue, 14 Jul 2026 12:29:40 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A1=86=E6=9E=B6:=20=E5=89=8D=E6=96=87?= =?UTF-8?q?=E5=AE=9E=E4=BD=93=E7=B4=A2=E5=BC=95=E5=8E=8B=E7=BC=A9=E4=B8=BA?= =?UTF-8?q?=E5=90=8D=E5=AD=97=E6=B8=85=E5=8D=95(=E6=AF=8F=E7=AB=A016?= =?UTF-8?q?=E4=B8=87=E2=86=922=E4=B8=87token=E7=A0=8D86%,=E5=88=A4?= =?UTF-8?q?=E9=87=8D=E5=8F=AA=E9=9C=80=E5=90=8D=E5=AD=97)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .claude/skills/parse-book/scripts/parse_llm.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/.claude/skills/parse-book/scripts/parse_llm.py b/.claude/skills/parse-book/scripts/parse_llm.py index 19b52a2..8b35f46 100644 --- a/.claude/skills/parse-book/scripts/parse_llm.py +++ b/.claude/skills/parse-book/scripts/parse_llm.py @@ -86,7 +86,10 @@ def render_contracts(contracts): def scaffold_prompt(title, ch, ch_title, text, prev_entities): - ents = json.dumps(prev_entities, ensure_ascii=False) if prev_entities else "(第一章,为空)" + # 前文实体压缩(创始人 2026-07-14):判重只需名字清单,不必重发型+摘要全档—— + # 全量 json 到后期每章膨胀到 15 万+ token(深空第 557 章 2851 实体≈15 万),是次数被压的真凶 + _names = sorted({(e.get("名称") or e.get("name") or "").strip() for e in prev_entities} - {""}) if prev_entities else [] + ents = "、".join(_names) if _names else "(第一章,为空)" wc = len(text.replace("\n", "").replace(" ", "")) cap = max(60, int(wc * 0.05)) # 绝对字数上限(纯比例约束 M3 会写超,首轮实测 9.8%–19%) # 缓存友好(read-context「稳定度递减吃前缀缓存」):固定规则段全部前置吃前缀缓存, @@ -95,7 +98,7 @@ def scaffold_prompt(title, ch, ch_title, text, prev_entities): 对参考书的当前章(书名/章号/正文见文末材料区)做三件事: 1) 逆推本章细纲:章目标/关键事件/出场角色/伏笔动作(埋·推·收)/章末钩子。**细纲全文不得超过文末给出的字数上限**(约本章正文的 5%;超标会被校验脚本机械退回)。细纲是结构骨架,不是缩写复述——用短语与分号,不写完整句子。 2) 抽实体增量(脚手架级索引):{ENTITY_CRITERIA} -判重:文末给出前文已收录实体,不重报(除非本章给出新身份,则在一句话摘要里并入)。 +判重:文末给出前文已收录实体的**名字清单**,清单内的实体本章不重报(若本章赋予其新身份,可在摘要里点明);清单外的本章新实体照抽。 3) 报范式候选线索(**只报线索不出卡**,出卡由窗级聚类另做):本章表现突出、疑似可跨书复用的写法。五型候选:craft=单点叙事装置(删去它场景仍成立);combat=整场武力对抗的打法;emotion=整场情绪戏的推进;scene_pattern=拍卖/谈判/审讯等场景公式;trope=跨章复用的情节公式。 每条线索给四项:type(五型之一,拿不准填"?")、name(2–8 字短名,作者口头会说的话,禁书内专名禁修饰堆叠)、clue(一句话:这个写法怎么运作,用{PLACEHOLDERS}等抽象指代)、evidence(一句话:本章哪里这样写、为何突出,可用专名)。 0–5 条/章,平庸章 0 条正常;门槛比出卡低——拿不准的报上来,窗级聚类会过滤。 @@ -105,7 +108,7 @@ def scaffold_prompt(title, ch, ch_title, text, prev_entities): ━━━ 本章材料(每章不同,非规则)━━━ 【当前章】《{title}》第 {ch} 章《{ch_title}》|正文约 {wc} 字|细纲上限 {cap} 字 -【前文实体索引】 +【前文实体名字清单(判重用,已在列的不重报)】 {ents} 【本章正文】 {text}"""