|
|
@@ -144,9 +144,10 @@ You will receive a chapter_memo composed of 7 markdown sections:
|
|
|
- ## 日常/过渡承担什么任务 → function map for non-conflict passages ([passage location] → [function])
|
|
|
- ## 关键抉择过三连问 → three-question check every key character choice must pass
|
|
|
- ## 章尾必须发生的改变 → 1-3 concrete changes the ending must deliver (info / relation / physical / power)
|
|
|
+- ## 本章 hook 账 → **hard correspondence rule**: each hook_id listed under advance/resolve MUST have a **concretely locatable payoff scene** in the prose — explicit characters acting on or talking about a specific object/event/piece of information, with observable actions. No "sideways hints" or "deferred to next chapter". Example: if the memo says 'advance: H007 Huzi's IOU → planted → pressured', the prose must contain a scene where Lin Qiu actually touches / sees / picks up that specific IOU and does something. An inner mention like "he remembered the IOU was still in the drawer" does NOT count. Each advance/resolve payoff scene must be at least 60 chars. Entries under defer need no prose. Entries under open only need a natural new-hook seed near the chapter end
|
|
|
- ## 不要做 → hard prohibitions for this chapter
|
|
|
|
|
|
-Address each section in order when drafting the chapter. Every section must leave a visible trace in the prose — if a section is not reflected, the chapter is incomplete.`;
|
|
|
+Address each section in order when drafting the chapter. Every section must leave a visible trace in the prose — if a section is not reflected, the chapter is incomplete. **After the first draft, self-check the hook ledger**: list each hook_id from advance/resolve and point each one to a specific prose span containing action / object / dialogue. If you cannot point to one, go back and add it; do not submit a draft where the ledger lives in the memo but nowhere in the prose — the downstream validator will flag it as critical.`;
|
|
|
}
|
|
|
|
|
|
return `## 章节备忘对齐
|
|
|
@@ -159,9 +160,10 @@ Address each section in order when drafting the chapter. Every section must leav
|
|
|
- ## 日常/过渡承担什么任务 → 非冲突段落的功能映射([段落位置] → [承担功能])
|
|
|
- ## 关键抉择过三连问 → 关键人物选择必须过的检查
|
|
|
- ## 章尾必须发生的改变 → 结尾落地的 1-3 条具体改变(信息/关系/物理/权力)
|
|
|
+- ## 本章 hook 账 → **硬对应规则**:advance/resolve 下面列出的每一个 hook_id 都必须在正文里有一个**具体可定位的兑现段**——写明人物对着什么物件/事件/信息做出什么可观察的动作或交谈。不允许"侧面暗示""留给下章"。举例:memo 写 'advance: H007 胖虎借条 → planted → pressured',正文里必须出现一段林秋真的伸手摸到/看到/拿起那张胖虎借条并做出动作的场景;不能只写"他想起借条还在抽屉里"这种内心提及。每个 advance/resolve 的 hook 兑现段至少 60 字。defer 下的不用落,open 段只需要在章末附近安排一个自然引出的新悬念即可
|
|
|
- ## 不要做 → 硬约束红线
|
|
|
|
|
|
-写作时按段落顺序落实,每一段都要在正文里有对应的兑现痕迹。如果某一段没有体现到正文里,本章不算完成。`;
|
|
|
+写作时按段落顺序落实,每一段都要在正文里有对应的兑现痕迹。如果某一段没有体现到正文里,本章不算完成。**写完初稿后自检一遍 hook 账**:把 advance 和 resolve 的 hook_id 列下来,对照正文,确认每一个都能指到一段带具体动作/物件/对话的 prose。如果指不到,回去补写;不要提交"账本在 memo 里、正文里没落"的稿子——下游 validator 会直接判 critical 退稿。`;
|
|
|
}
|
|
|
|
|
|
function buildLengthGuidance(lengthSpec: LengthSpec, language: "zh" | "en"): string {
|
|
|
@@ -225,8 +227,13 @@ function buildCoreRules(lengthSpec: LengthSpec): string {
|
|
|
- 对话段落不算入"短段"——它天然短,无需并段
|
|
|
- **短段(<40 字)只在三个场景允许独立成段**:(1) 开场前 300 字里的反转金句(如"她突然跪下"),(2) 章末钩子最后一句(action-climax 定格),(3) 单章 ≤ 3 个"爆点短段"(一击命中、改变局势的关键台词、定格镜头)
|
|
|
- 三个场景合计一章最多 5 个短段,超过就是在"堆砌电报体"
|
|
|
+ - **连续短段硬规则**:不允许 3 个及以上短段(<40 字)并列连排。即使是上面三种合法场景里的短段,也不能连着甩。碰到"短段 → 短段"已经到极限,第 3 段必须是 ≥ 60 字的叙事段把动作 / 情绪 / 细节合回来,把读者呼吸节奏放回来。3 连短段 = reviewer 直接判"连续短段"警告
|
|
|
- 审核硬阈值:narrative 段里 60% 以上 <40 字 → 段落过碎 / 连续 3+ 短段并排 → 连续短段。触发即返工
|
|
|
- - 正反例:✗ "他转身。/ 看向门外。/ 门开了一条缝。/ 赵无尘站在光里。"(4 段都 <15 字) ✓ "他转身看向门外。门开了一条缝,赵无尘站在光里。"(两段合并,40+ 字,动作链完整)
|
|
|
+ - 正反例:
|
|
|
+ - ✗ "他转身。/ 看向门外。/ 门开了一条缝。/ 赵无尘站在光里。"(4 段全 <15 字,4 连短段)
|
|
|
+ - ✓ "他转身看向门外。门开了一条缝,赵无尘站在光里,手里还端着一碗凉透的茶。"(两段合并成 1 段 60 字,动作 + 观察 + 细节完整)
|
|
|
+ - ✗ "他一愣。/ 手停了。/ 嘴唇发白。"(3 连心理反应各自一段)
|
|
|
+ - ✓ "他一愣,手停了,嘴唇发白。"(并段为 1 句节奏紧凑的叙事)
|
|
|
|
|
|
## 章节 80/20 断章(番茄老师弈青锋,硬尺)
|
|
|
|