novel-maker 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (228) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +209 -0
  3. package/bin/novel-maker.js +229 -0
  4. package/package.json +33 -0
  5. package/skill/CHANGELOG.md +82 -0
  6. package/skill/QUICK-REF.md +168 -0
  7. package/skill/README.md +75 -0
  8. package/skill/SKILL.md +715 -0
  9. package/skill/agents/README.md +59 -0
  10. package/skill/agents/auditor.md +234 -0
  11. package/skill/agents/coordinator.md +150 -0
  12. package/skill/agents/planner.md +220 -0
  13. package/skill/agents/reviewer.md +249 -0
  14. package/skill/agents/reviser.md +144 -0
  15. package/skill/agents/writer.md +213 -0
  16. package/skill/arc-templates/README.md +43 -0
  17. package/skill/arc-templates/apocalypse/ability.md +81 -0
  18. package/skill/arc-templates/apocalypse/faction.md +81 -0
  19. package/skill/arc-templates/apocalypse/humanity.md +81 -0
  20. package/skill/arc-templates/apocalypse/survival.md +81 -0
  21. package/skill/arc-templates/game/competition.md +81 -0
  22. package/skill/arc-templates/game/dungeon.md +81 -0
  23. package/skill/arc-templates/game/guild-war.md +81 -0
  24. package/skill/arc-templates/game/leveling.md +80 -0
  25. package/skill/arc-templates/general/challenge.md +44 -0
  26. package/skill/arc-templates/general/conflict.md +71 -0
  27. package/skill/arc-templates/general/explore.md +71 -0
  28. package/skill/arc-templates/general/growth.md +71 -0
  29. package/skill/arc-templates/general/mystery.md +71 -0
  30. package/skill/arc-templates/general/relation.md +71 -0
  31. package/skill/arc-templates/history/battle.md +71 -0
  32. package/skill/arc-templates/history/politics.md +71 -0
  33. package/skill/arc-templates/history/reform.md +71 -0
  34. package/skill/arc-templates/infinite-flow/boss.md +71 -0
  35. package/skill/arc-templates/infinite-flow/dungeon.md +71 -0
  36. package/skill/arc-templates/infinite-flow/enhance.md +71 -0
  37. package/skill/arc-templates/infinite-flow/team.md +71 -0
  38. package/skill/arc-templates/mystery/case.md +71 -0
  39. package/skill/arc-templates/mystery/deduction.md +71 -0
  40. package/skill/arc-templates/mystery/twist.md +71 -0
  41. package/skill/arc-templates/romance/angst.md +80 -0
  42. package/skill/arc-templates/romance/chase.md +71 -0
  43. package/skill/arc-templates/romance/slow-burn.md +71 -0
  44. package/skill/arc-templates/romance/sweet.md +80 -0
  45. package/skill/arc-templates/sci-fi/awakening.md +81 -0
  46. package/skill/arc-templates/sci-fi/breakthrough.md +81 -0
  47. package/skill/arc-templates/sci-fi/contact.md +81 -0
  48. package/skill/arc-templates/sci-fi/exploration.md +81 -0
  49. package/skill/arc-templates/urban/business.md +71 -0
  50. package/skill/arc-templates/urban/revenge.md +71 -0
  51. package/skill/arc-templates/urban/rise.md +71 -0
  52. package/skill/arc-templates/urban/romance.md +71 -0
  53. package/skill/arc-templates/western-fantasy/adventure.md +80 -0
  54. package/skill/arc-templates/western-fantasy/kingdom.md +71 -0
  55. package/skill/arc-templates/western-fantasy/magic-awakening.md +71 -0
  56. package/skill/arc-templates/western-fantasy/racial-conflict.md +71 -0
  57. package/skill/arc-templates/wuxia/breakthrough.md +71 -0
  58. package/skill/arc-templates/wuxia/grudge.md +71 -0
  59. package/skill/arc-templates/wuxia/hero-path.md +71 -0
  60. package/skill/arc-templates/wuxia/sect-war.md +71 -0
  61. package/skill/arc-templates/xianxia/breakthrough.md +71 -0
  62. package/skill/arc-templates/xianxia/dungeon.md +71 -0
  63. package/skill/arc-templates/xianxia/tournament.md +71 -0
  64. package/skill/arc-templates/xianxia/tribulation.md +71 -0
  65. package/skill/docs/examples.md +61 -0
  66. package/skill/docs/faq.md +81 -0
  67. package/skill/docs/installation.md +87 -0
  68. package/skill/docs/quickstart.md +83 -0
  69. package/skill/genre-packs/README.md +47 -0
  70. package/skill/genre-packs/_default/arc-types.md +153 -0
  71. package/skill/genre-packs/_default/rules.md +56 -0
  72. package/skill/genre-packs/_default/templates.md +135 -0
  73. package/skill/genre-packs/apocalypse/arc-types.md +109 -0
  74. package/skill/genre-packs/apocalypse/rules.md +113 -0
  75. package/skill/genre-packs/apocalypse/settings.md +106 -0
  76. package/skill/genre-packs/apocalypse/templates.md +192 -0
  77. package/skill/genre-packs/game/arc-types.md +109 -0
  78. package/skill/genre-packs/game/rules.md +113 -0
  79. package/skill/genre-packs/game/settings.md +103 -0
  80. package/skill/genre-packs/game/templates.md +173 -0
  81. package/skill/genre-packs/history/arc-types.md +109 -0
  82. package/skill/genre-packs/history/rules.md +107 -0
  83. package/skill/genre-packs/history/settings.md +126 -0
  84. package/skill/genre-packs/history/templates.md +179 -0
  85. package/skill/genre-packs/infinite-flow/arc-types.md +101 -0
  86. package/skill/genre-packs/infinite-flow/rules.md +75 -0
  87. package/skill/genre-packs/infinite-flow/settings.md +102 -0
  88. package/skill/genre-packs/infinite-flow/templates.md +226 -0
  89. package/skill/genre-packs/mystery/arc-types.md +109 -0
  90. package/skill/genre-packs/mystery/rules.md +107 -0
  91. package/skill/genre-packs/mystery/settings.md +103 -0
  92. package/skill/genre-packs/mystery/templates.md +178 -0
  93. package/skill/genre-packs/romance/arc-types.md +130 -0
  94. package/skill/genre-packs/romance/rules.md +88 -0
  95. package/skill/genre-packs/romance/settings.md +146 -0
  96. package/skill/genre-packs/romance/templates.md +245 -0
  97. package/skill/genre-packs/sci-fi/arc-types.md +109 -0
  98. package/skill/genre-packs/sci-fi/rules.md +113 -0
  99. package/skill/genre-packs/sci-fi/settings.md +99 -0
  100. package/skill/genre-packs/sci-fi/templates.md +170 -0
  101. package/skill/genre-packs/urban/arc-types.md +101 -0
  102. package/skill/genre-packs/urban/rules.md +75 -0
  103. package/skill/genre-packs/urban/settings.md +82 -0
  104. package/skill/genre-packs/urban/templates.md +212 -0
  105. package/skill/genre-packs/western-fantasy/arc-types.md +128 -0
  106. package/skill/genre-packs/western-fantasy/rules.md +88 -0
  107. package/skill/genre-packs/western-fantasy/settings.md +160 -0
  108. package/skill/genre-packs/western-fantasy/templates.md +225 -0
  109. package/skill/genre-packs/wuxia/arc-types.md +126 -0
  110. package/skill/genre-packs/wuxia/rules.md +86 -0
  111. package/skill/genre-packs/wuxia/settings.md +150 -0
  112. package/skill/genre-packs/wuxia/templates.md +195 -0
  113. package/skill/genre-packs/xianxia/arc-types.md +101 -0
  114. package/skill/genre-packs/xianxia/rules.md +74 -0
  115. package/skill/genre-packs/xianxia/settings.md +107 -0
  116. package/skill/genre-packs/xianxia/templates.md +202 -0
  117. package/skill/hooks/README.md +102 -0
  118. package/skill/hooks/chapter-complete.md +176 -0
  119. package/skill/hooks/context-injection.md +152 -0
  120. package/skill/hooks/intent-detection.md +183 -0
  121. package/skill/hooks/review-trigger.md +219 -0
  122. package/skill/hooks/summary-trigger.md +185 -0
  123. package/skill/references/act-guidance.md +228 -0
  124. package/skill/references/audit-core.md +130 -0
  125. package/skill/references/audit-dimensions.md +202 -0
  126. package/skill/references/character-voice-card.md +196 -0
  127. package/skill/references/consistency-checker.md +209 -0
  128. package/skill/references/content-expansion.md +68 -0
  129. package/skill/references/creative-constraints.md +200 -0
  130. package/skill/references/data-agent.md +286 -0
  131. package/skill/references/dialogue-writing.md +104 -0
  132. package/skill/references/editorial-perspective.md +166 -0
  133. package/skill/references/emotion-curve.md +127 -0
  134. package/skill/references/genre-rules.md +389 -0
  135. package/skill/references/golden-opening.md +81 -0
  136. package/skill/references/memory-system.md +288 -0
  137. package/skill/references/pacing-analysis.md +201 -0
  138. package/skill/references/platform-rules.md +244 -0
  139. package/skill/references/plot-structures.md +108 -0
  140. package/skill/references/reader-feedback.md +119 -0
  141. package/skill/references/rhythm-system.md +204 -0
  142. package/skill/references/style-imitation.md +193 -0
  143. package/skill/references/sweet-spot-tracking.md +182 -0
  144. package/skill/references/usage-guide.md +174 -0
  145. package/skill/references/writing-methods.md +169 -0
  146. package/skill/rules/anti-ai-expressions.md +206 -0
  147. package/skill/rules/character-voice.md +184 -0
  148. package/skill/rules/consistency-check.md +232 -0
  149. package/skill/rules/smart-query.md +263 -0
  150. package/skill/scripts/README.md +380 -0
  151. package/skill/scripts/auditor/chapter_transition.py +217 -0
  152. package/skill/scripts/auditor/consistency_scan.py +194 -0
  153. package/skill/scripts/auditor/dialogue_checker.py +194 -0
  154. package/skill/scripts/auditor/hook_report.py +115 -0
  155. package/skill/scripts/auditor/pacing_optimizer.py +303 -0
  156. package/skill/scripts/auditor/pacing_report.py +275 -0
  157. package/skill/scripts/auditor/pre_audit.py +203 -0
  158. package/skill/scripts/auditor/style_check.py +158 -0
  159. package/skill/scripts/auditor/worldbuilding_checker.py +637 -0
  160. package/skill/scripts/common/analyze.py +129 -0
  161. package/skill/scripts/common/init_guide.py +796 -0
  162. package/skill/scripts/common/install.py +169 -0
  163. package/skill/scripts/common/nm_utils.py +296 -0
  164. package/skill/scripts/common/validate.py +215 -0
  165. package/skill/scripts/coordinator/stats_report.py +165 -0
  166. package/skill/scripts/coordinator/volume_batch.py +121 -0
  167. package/skill/scripts/planner/outline_extractor.py +89 -0
  168. package/skill/scripts/planner/planner_context.py +220 -0
  169. package/skill/scripts/planner/query_engine.py +289 -0
  170. package/skill/scripts/reviewer/chapter_diff.py +143 -0
  171. package/skill/scripts/reviewer/character_arc_tracker.py +191 -0
  172. package/skill/scripts/reviewer/emotion_curve.py +340 -0
  173. package/skill/scripts/reviewer/foreshadowing_tracker.py +286 -0
  174. package/skill/scripts/reviewer/subplot_tracker.py +207 -0
  175. package/skill/scripts/reviewer/summary_generator.py +130 -0
  176. package/skill/scripts/reviewer/truth_diff.py +227 -0
  177. package/skill/scripts/reviewer/truth_manager.py +120 -0
  178. package/skill/scripts/test_scripts.py +366 -0
  179. package/skill/scripts/writer/build_write_context.py +255 -0
  180. package/skill/scripts/writer/chapter_info.py +67 -0
  181. package/skill/scripts/writer/check_wordcount.py +115 -0
  182. package/skill/scripts/writer/scene_builder.py +227 -0
  183. package/skill/scripts/writer/style_anchor.py +135 -0
  184. package/skill/styles/author-styles.md +53 -0
  185. package/skill/styles/authors//344/270/245/350/260/250/350/256/276/345/256/232/346/265/201//345/277/230/350/257/255.md +110 -0
  186. package/skill/styles/authors//344/270/245/350/260/250/350/256/276/345/256/232/346/265/201//347/210/261/346/275/234/346/260/264/347/232/204/344/271/214/350/264/274.md +110 -0
  187. package/skill/styles/authors//344/270/245/350/260/250/350/256/276/345/256/232/346/265/201//350/250/200/345/275/222/346/255/243/344/274/240.md +110 -0
  188. package/skill/styles/authors//345/244/232/347/245/236/350/257/235/347/203/255/350/241/200/346/265/201//344/270/211/344/271/235/351/237/263/345/237/237.md +108 -0
  189. package/skill/styles/authors//346/202/254/347/226/221/346/216/250/347/220/206/346/265/201//346/235/200/350/231/253/351/230/237/351/230/237/345/221/230.md +108 -0
  190. package/skill/styles/authors//346/220/236/347/254/221/345/271/275/351/273/230/346/265/201//344/270/211/345/244/251/344/270/244/350/247/211.md +110 -0
  191. package/skill/styles/authors//346/220/236/347/254/221/345/271/275/351/273/230/346/265/201//344/274/232/350/257/264/350/257/235/347/232/204/350/202/230/345/255/220.md +110 -0
  192. package/skill/styles/authors//346/220/236/347/254/221/345/271/275/351/273/230/346/265/201//345/215/226/346/212/245/345/260/217/351/203/216/345/220/233.md +108 -0
  193. package/skill/styles/authors//346/220/236/347/254/221/345/271/275/351/273/230/346/265/201//345/274/210/351/235/222/345/263/260.md +123 -0
  194. package/skill/styles/authors//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201//345/224/220/345/256/266/344/270/211/345/260/221.md +109 -0
  195. package/skill/styles/authors//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201//345/244/251/350/232/225/345/234/237/350/261/206.md +110 -0
  196. package/skill/styles/authors//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201//346/210/221/345/220/203/350/245/277/347/272/242/346/237/277.md +108 -0
  197. package/skill/styles/authors//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201//346/273/232/345/274/200.md +109 -0
  198. package/skill/styles/authors//347/203/255/350/241/200/345/215/207/347/272/247/346/265/201//350/276/260/344/270/234.md +109 -0
  199. package/skill/styles/authors//347/211/271/350/211/262/351/242/206/345/237/237/346/265/201//345/244/251/344/270/213/351/234/270/345/224/261.md +110 -0
  200. package/skill/styles/authors//347/211/271/350/211/262/351/242/206/345/237/237/346/265/201//346/234/210/345/205/263.md +108 -0
  201. package/skill/styles/authors//347/211/271/350/211/262/351/242/206/345/237/237/346/265/201//350/220/247/351/274/216.md +109 -0
  202. package/skill/styles/authors//347/211/271/350/211/262/351/242/206/345/237/237/346/265/201//350/235/264/350/235/266/350/223/235.md +112 -0
  203. package/skill/styles/authors//347/273/206/350/205/273/346/226/207/351/235/222/346/265/201//346/204/244/346/200/222/347/232/204/351/246/231/350/225/211.md +109 -0
  204. package/skill/styles/authors//347/273/206/350/205/273/346/226/207/351/235/222/346/265/201//347/203/275/347/201/253/346/210/217/350/257/270/344/276/257.md +109 -0
  205. package/skill/styles/authors//347/273/206/350/205/273/346/226/207/351/235/222/346/265/201//347/214/253/350/205/273.md +110 -0
  206. package/skill/styles/authors//347/273/206/350/205/273/346/226/207/351/235/222/346/265/201//350/200/263/346/240/271.md +109 -0
  207. package/skill/templates/INDEX.md +48 -0
  208. package/skill/templates/act-plan.md +72 -0
  209. package/skill/templates/chapter.md +53 -0
  210. package/skill/templates/character-profile.md +107 -0
  211. package/skill/templates/character-voice.md +106 -0
  212. package/skill/templates/constitution.md +90 -0
  213. package/skill/templates/emotional-arcs.md +37 -0
  214. package/skill/templates/hook-template.md +68 -0
  215. package/skill/templates/outline.md +155 -0
  216. package/skill/templates/plot-card.md +432 -0
  217. package/skill/templates/power-system.md +124 -0
  218. package/skill/templates/presets.json +69 -0
  219. package/skill/templates/review-report.md +135 -0
  220. package/skill/templates/scene-plan.md +221 -0
  221. package/skill/templates/scene-template.md +78 -0
  222. package/skill/templates/subplot-board.md +48 -0
  223. package/skill/templates/summary-10chapters.md +79 -0
  224. package/skill/templates/summary-50chapters.md +131 -0
  225. package/skill/templates/summary-volume.md +148 -0
  226. package/skill/templates/timeline.md +37 -0
  227. package/skill/templates/volume-plan.md +44 -0
  228. package/skill/templates/world-setting.md +151 -0
@@ -0,0 +1,219 @@
1
+ # Review Trigger Hook
2
+
3
+ ## 概述
4
+
5
+ 在每章完成后自动触发质量审查,检查内容质量、一致性、AI味等问题,生成审查报告。
6
+
7
+ ## 触发时机
8
+
9
+ - `chapter-complete` Hook 执行完成后
10
+ - 每章写作完成后
11
+
12
+ ## 审查维度
13
+
14
+ ### 1. AI味检测
15
+
16
+ **检查内容**:
17
+ - 广告词过度使用
18
+ - 情感标签化
19
+ - 对话形式化
20
+ - 结构闭合化
21
+ - 转场公式化
22
+ - 总结倾向
23
+ - 信息曝光过度
24
+
25
+ **参考规则**:`skill/rules/anti-ai-expressions.md`
26
+
27
+ **输出示例**:
28
+ ```markdown
29
+ ## AI味检测
30
+
31
+ ### 发现的问题
32
+ 1. 第15行:"他的眼中闪过一丝坚定" - 情感标签化
33
+ 2. 第23行:"他深吸一口气,心中暗道" - 对话形式化
34
+ 3. 第45行:"就这样,他们成功了" - 结构闭合化
35
+
36
+ ### 建议
37
+ 1. 改为具体描写:"他攥紧拳头,指节发白"
38
+ 2. 改为内心独白:"不行,必须这么做"
39
+ 3. 改为开放式结尾:"故事还没结束..."
40
+ ```
41
+
42
+ ### 2. 一致性检查
43
+
44
+ **检查内容**:
45
+ - 时间线一致性
46
+ - 人物关系一致性
47
+ - 世界观一致性
48
+ - 伏笔回收情况
49
+ - 能力等级一致性
50
+
51
+ **参考规则**:`skill/rules/consistency-check.md`
52
+
53
+ **输出示例**:
54
+ ```markdown
55
+ ## 一致性检查
56
+
57
+ ### 时间线
58
+ ✅ 时间线一致,无矛盾
59
+
60
+ ### 人物关系
61
+ ✅ 角色称呼一致
62
+ ⚠️ 林风对苏雨的称呼从"苏姑娘"变为"雨儿",需确认是否有铺垫
63
+
64
+ ### 世界观
65
+ ✅ 修炼体系一致
66
+ ✅ 地理设定一致
67
+
68
+ ### 伏笔回收
69
+ ✅ 古剑·风吟伏笔已回收
70
+ ⚠️ 神秘老人身份伏笔未回收(预期第80章)
71
+
72
+ ### 能力等级
73
+ ✅ 林风实力提升有铺垫
74
+ ✅ 战斗结果符合实力对比
75
+ ```
76
+
77
+ ### 3. 角色声音检查
78
+
79
+ **检查内容**:
80
+ - 语言习惯一致性
81
+ - 情感表达合理性
82
+ - 知识边界遵守
83
+ - 行为逻辑一致
84
+ - 关系互动正确
85
+
86
+ **参考规则**:`skill/rules/character-voice.md`
87
+
88
+ **输出示例**:
89
+ ```markdown
90
+ ## 角色声音检查
91
+
92
+ ### 林风
93
+ ✅ 语言习惯:短句、口语化,符合战士人设
94
+ ✅ 情感表达:愤怒时直接表达,符合性格
95
+ ⚠️ 第30行使用了"此乃"等书面语,与人设不符
96
+
97
+ ### 苏雨
98
+ ✅ 语言习惯:长句、书面化,符合医修人设
99
+ ✅ 情感表达:内敛含蓄,符合性格
100
+ ```
101
+
102
+ ### 4. 风格锚点检查
103
+
104
+ **检查内容**:
105
+ - 句长分布是否符合设定
106
+ - 对话比例是否合理
107
+ - 高频词是否一致
108
+
109
+ **参考脚本**:`skill/scripts/style_anchor.py`
110
+
111
+ **输出示例**:
112
+ ```markdown
113
+ ## 风格锚点检查
114
+
115
+ ### 句长分布
116
+ - 平均句长:18字(目标:15-20字)✅
117
+ - 短句比例:35%(目标:30-40%)✅
118
+ - 长句比例:15%(目标:10-20%)✅
119
+
120
+ ### 对话比例
121
+ - 对话占比:42%(目标:35-50%)✅
122
+
123
+ ### 高频词
124
+ - 与前5章一致性:85%(目标:>80%)✅
125
+ ```
126
+
127
+ ## 实现逻辑
128
+
129
+ ```python
130
+ def review_trigger(project_dir: str, chapter_num: int, chapter_content: str):
131
+ """触发质量审查"""
132
+
133
+ report = []
134
+
135
+ # 1. AI味检测
136
+ ai_slop_report = detect_ai_slop(chapter_content)
137
+ report.append(format_ai_slop_report(ai_slop_report))
138
+
139
+ # 2. 一致性检查
140
+ consistency_report = check_consistency(project_dir, chapter_num, chapter_content)
141
+ report.append(format_consistency_report(consistency_report))
142
+
143
+ # 3. 角色声音检查
144
+ voice_report = check_character_voice(project_dir, chapter_content)
145
+ report.append(format_voice_report(voice_report))
146
+
147
+ # 4. 风格锚点检查
148
+ style_report = check_style_anchor(project_dir, chapter_content)
149
+ report.append(format_style_report(style_report))
150
+
151
+ # 保存审查报告
152
+ save_review_report(project_dir, chapter_num, report)
153
+
154
+ return report
155
+ ```
156
+
157
+ ## 输出格式
158
+
159
+ ```markdown
160
+ 【质量审查报告】
161
+
162
+ ## 第50章审查结果
163
+
164
+ ### 总体评分:B+
165
+
166
+ ### AI味检测
167
+ - 发现3个问题
168
+ - 严重程度:低
169
+
170
+ ### 一致性检查
171
+ - 时间线:✅ 通过
172
+ - 人物关系:⚠️ 1个警告
173
+ - 世界观:✅ 通过
174
+ - 伏笔回收:⚠️ 1个警告
175
+ - 能力等级:✅ 通过
176
+
177
+ ### 角色声音检查
178
+ - 林风:✅ 通过
179
+ - 苏雨:✅ 通过
180
+
181
+ ### 风格锚点检查
182
+ - 句长分布:✅ 通过
183
+ - 对话比例:✅ 通过
184
+ - 高频词:✅ 通过
185
+
186
+ ### 建议
187
+ 1. 修复3个AI味问题
188
+ 2. 确认林风对苏雨称呼变化是否有铺垫
189
+ 3. 记录神秘老人身份伏笔待回收
190
+
191
+ 【审查报告已保存】.novel-maker/reviews/chapter-50-review.md
192
+ ```
193
+
194
+ ## 配置选项
195
+
196
+ ```json
197
+ {
198
+ "review-trigger": {
199
+ "enabled": true,
200
+ "priority": 3,
201
+ "options": {
202
+ "check_ai_slop": true,
203
+ "check_consistency": true,
204
+ "check_voice": true,
205
+ "check_style": true,
206
+ "save_report": true,
207
+ "show_report": true,
208
+ "auto_fix": false
209
+ }
210
+ }
211
+ }
212
+ ```
213
+
214
+ ## 注意事项
215
+
216
+ 1. 审查报告会保存供后续参考
217
+ 2. 可以通过配置禁用不需要的审查维度
218
+ 3. `auto_fix` 选项可以自动修复一些简单问题
219
+ 4. 审查结果会影响后续的修订流程
@@ -0,0 +1,185 @@
1
+ # Summary Trigger Hook
2
+
3
+ ## 概述
4
+
5
+ 在每10章或50章完成后自动生成阶段总结,回顾剧情进展、角色成长、伏笔状态等。
6
+
7
+ ## 触发时机
8
+
9
+ - 每10章完成后(小总结)
10
+ - 每50章完成后(大总结)
11
+ - 每卷完成后(卷总结)
12
+
13
+ ## 总结类型
14
+
15
+ ### 1. 小总结(每10章)
16
+
17
+ **触发条件**:章节号为10的倍数
18
+
19
+ **总结内容**:
20
+ - 剧情进展摘要
21
+ - 角色状态变化
22
+ - 伏笔状态更新
23
+ - 下一阶段预告
24
+
25
+ **输出文件**:`.novel-maker/summaries/summary-10chapters-XX.md`
26
+
27
+ **示例**:
28
+ ```markdown
29
+ # 第1-10章小总结
30
+
31
+ ## 剧情进展
32
+ - 第1-3章:主角林风出场,获得神秘老人赠剑
33
+ - 第4-6章:林风拜师学艺,初入江湖
34
+ - 第7-10章:首次实战,击败山贼,获得名声
35
+
36
+ ## 角色状态
37
+ - 林风:初级修士 → 中级修士
38
+ - 苏雨:尚未出场
39
+ - 张天:林风师兄,尚未黑化
40
+
41
+ ## 伏笔状态
42
+ - 已埋设:神秘老人身份、古剑封印、林风怪病
43
+ - 已回收:无
44
+ - 未回收:3个
45
+
46
+ ## 下一阶段预告
47
+ - 第11-20章:林风进入学院,结识苏雨,张天开始黑化
48
+ ```
49
+
50
+ ### 2. 大总结(每50章)
51
+
52
+ **触发条件**:章节号为50的倍数
53
+
54
+ **总结内容**:
55
+ - 完整剧情回顾
56
+ - 角色成长轨迹
57
+ - 世界观展开情况
58
+ - 伏笔回收统计
59
+ - 读者反馈预测
60
+
61
+ **输出文件**:`.novel-maker/summaries/summary-50chapters-XX.md`
62
+
63
+ **示例**:
64
+ ```markdown
65
+ # 第1-50章大总结
66
+
67
+ ## 剧情回顾
68
+
69
+ ### 第一幕:起始(1-20章)
70
+ - 林风出场,获得古剑
71
+ - 拜师学艺,初入江湖
72
+ - 结识苏雨,建立关系
73
+
74
+ ### 第二幕:发展(21-40章)
75
+ - 进入学院,学习修炼
76
+ - 张天黑化,兄弟反目
77
+ - 发现古剑秘密
78
+
79
+ ### 第三幕:高潮(41-50章)
80
+ - 进入王都,遭遇皇室
81
+ - 古剑封印觉醒
82
+ - 剑灵现身,揭示真相
83
+
84
+ ## 角色成长
85
+
86
+ ### 林风
87
+ - 等级:初级 → 高级
88
+ - 技能:基础剑法 → 御风术 + 剑气
89
+ - 武器:古剑·风吟(已解封)
90
+ - 关系:获得苏雨、剑灵等伙伴
91
+
92
+ ### 苏雨
93
+ - 等级:初级 → 中级
94
+ - 技能:基础医术 → 高级医术
95
+ - 关系:与林风确立恋人关系
96
+
97
+ ## 伏笔统计
98
+ - 总伏笔:12个
99
+ - 已回收:5个(42%)
100
+ - 未回收:7个(58%)
101
+
102
+ ## 读者反馈预测
103
+ - 爽点:古剑觉醒、击败张天
104
+ - 虐点:兄弟反目、林风受伤
105
+ - 讨论点:神秘老人身份、皇室目的
106
+ ```
107
+
108
+ ### 3. 卷总结
109
+
110
+ **触发条件**:每卷完成后
111
+
112
+ **总结内容**:
113
+ - 本卷剧情回顾
114
+ - 角色成长总结
115
+ - 伏笔回收情况
116
+ - 下卷衔接建议
117
+
118
+ **输出文件**:`.novel-maker/summaries/summary-volume-XX.md`
119
+
120
+ ## 实现逻辑
121
+
122
+ ```python
123
+ def summary_trigger(project_dir: str, chapter_num: int):
124
+ """触发阶段总结"""
125
+
126
+ # 检查是否需要生成总结
127
+ if chapter_num % 10 == 0:
128
+ # 生成小总结
129
+ generate_10_chapters_summary(project_dir, chapter_num)
130
+
131
+ if chapter_num % 50 == 0:
132
+ # 生成大总结
133
+ generate_50_chapters_summary(project_dir, chapter_num)
134
+
135
+ # 检查是否是卷末
136
+ if is_volume_end(project_dir, chapter_num):
137
+ # 生成卷总结
138
+ generate_volume_summary(project_dir, chapter_num)
139
+ ```
140
+
141
+ ## 输出格式
142
+
143
+ ```markdown
144
+ 【阶段总结触发】
145
+
146
+ 📊 已生成第1-10章小总结
147
+ 保存位置:.novel-maker/summaries/summary-10chapters-10.md
148
+
149
+ 📊 已生成第1-50章大总结
150
+ 保存位置:.novel-maker/summaries/summary-50chapters-50.md
151
+
152
+ 📊 已生成第一卷总结
153
+ 保存位置:.novel-maker/summaries/summary-volume-01.md
154
+
155
+ 【总结概要】
156
+ - 剧情进展:完成第一幕和第二幕
157
+ - 角色成长:林风从初级升至高级
158
+ - 伏笔回收:5/12(42%)
159
+ - 下一阶段:进入第三幕高潮
160
+ ```
161
+
162
+ ## 配置选项
163
+
164
+ ```json
165
+ {
166
+ "summary-trigger": {
167
+ "enabled": true,
168
+ "priority": 4,
169
+ "options": {
170
+ "summary_10_interval": 10,
171
+ "summary_50_interval": 50,
172
+ "auto_detect_volume_end": true,
173
+ "save_summary": true,
174
+ "show_summary": true
175
+ }
176
+ }
177
+ }
178
+ ```
179
+
180
+ ## 注意事项
181
+
182
+ 1. 总结会保存供后续章节参考
183
+ 2. 总结内容会自动提取关键信息
184
+ 3. 可以通过配置调整总结间隔
185
+ 4. 卷总结需要手动触发或自动检测卷末
@@ -0,0 +1,228 @@
1
+ # 幕引导系统
2
+
3
+ ## 什么是"幕"
4
+
5
+ 幕是**卷内的剧情弧**,区别于章、卷:
6
+
7
+ | 层级 | 定义 | 长度 |
8
+ |------|------|------|
9
+ | 卷(Volume) | 大的故事阶段 | 20-50章 |
10
+ | **幕(Act)** | **一段连贯的剧情单元,有独立的起承转合** | **3-12章默认,大幕可达50章** |
11
+ | 章(Chapter) | 单次阅读单元 | 2200-2800字 |
12
+
13
+ 一个卷通常包含 3-6 幕,每幕围绕一个核心事件展开。
14
+
15
+ ---
16
+
17
+ ## `/novel-maker act` 交互流程
18
+
19
+ ### 阶段一:展示完整上下文
20
+
21
+ 用户输入 `/novel-maker act` 后,AI 首先读取并展示以下信息,帮助用户判断全局位置:
22
+
23
+ #### 上下文模板
24
+
25
+ ```
26
+ ## 📍 第X卷「卷名」— 当前创作全景
27
+
28
+ ### 卷总览
29
+ - 卷核心冲突:[描述]
30
+ - 卷进度:已完成 X/Y 章(Z 幕)
31
+ - 卷情绪曲线:[走势图,标注当前所处位置]
32
+
33
+ ### 上一幕回顾
34
+ - 幕名:「XXX」
35
+ - 核心事件:[50字以内]
36
+ - 最后一章结尾钩子:[钩子内容]
37
+ - 幕结束时角色变化:[关键变化]
38
+
39
+ ### 当前角色状态
40
+ | 角色 | 位置 | 状态/情绪 | 近期目标 | 与主线关系 |
41
+ |------|------|----------|---------|-----------|
42
+ | 主角 | | | | ⭐核心 |
43
+ | 配角A | | | | |
44
+ | 反派 | | | | |
45
+
46
+ ### 伏笔全景
47
+ | 伏笔内容 | 埋设章节 | 紧迫度 | 计划回收 |
48
+ |---------|---------|--------|---------|
49
+ | | | 🔴高/🟡中/🟢低 | |
50
+
51
+ ### 情绪曲线位置
52
+ - 当前处于:[压/小扬/压/爆]循环的第 N 阶段
53
+ - 连续高潮章节数:N 章
54
+ - 建议下一幕情绪方向:[继续推进/回落缓冲/引爆爆点]
55
+
56
+ ### 字数统计
57
+ - 卷已写字数:XXXXX 字
58
+ - 卷目标字数:XXXXX 字
59
+ - 剩余空间:XXXXX 字 → 可分配 [X-Y] 幕
60
+ ```
61
+
62
+ ---
63
+
64
+ ### 阶段二:生成6条分支走向
65
+
66
+ AI 需基于上下文生成 **6 条差异化分支**,每条标注类型、核心事件、章节数默认值、推荐度:
67
+
68
+ #### 六种分支类型
69
+
70
+ | 类型 | 说明 | 适用场景 |
71
+ |------|------|---------|
72
+ | **A. 主线推进** | 直接推进核心目标,解决当前主要矛盾 | 铺垫充足,情绪升势 |
73
+ | **B. 危机升级** | 引入新威胁/反转,急剧加剧冲突 | 节奏偏缓需拉紧,已在高位则慎选 |
74
+ | **C. 支线展开** | 展开配角/暗线/世界观,暂时偏离主线 | 世界观需要丰满,配角需立住 |
75
+ | **D. 缓冲沉淀** | 日常/修炼/情感深化,为下一波高潮蓄力 | 连续 3+ 章高潮后必需 |
76
+ | **E. 回环收束** | 回收多条伏笔,将分散线索汇聚到一个事件 | 前期伏笔过多需要整理 |
77
+ | **F. 颠覆转向** | 大幅改变剧情走向,揭示颠覆性信息 | 需要重大转折,**高风险** |
78
+
79
+ #### 分支输出模板(每条)
80
+
81
+ ```
82
+ ### 方案X:[20字以内标题]
83
+ - **类型**:[A/.../F]
84
+ - **推荐度**:⭐⭐⭐⭐⭐(基于当前状态给出 1-5★)
85
+ - **推荐理由**:[100字以内解释为什么在当前上下文中推荐或不对推荐]
86
+ - **核心事件**:[本幕的核心事件,50字]
87
+ - **默认章数**:X章(用户可选择改为 Y-Z 章)
88
+ - **情绪走势**:[如 S2→S3→S4→S5→S3]
89
+ - **将回收伏笔**:[列出具体伏笔编号或内容]
90
+ - **将埋设新伏笔**:[列出1-3个新设伏笔想法]
91
+ - **与卷目标的契合度**:[评估本幕对完成当前卷目标的贡献]
92
+ - **主角本幕弧光**:[从___到___]
93
+ - **风险提示**:[如果选这个,需要注意什么]
94
+ ```
95
+
96
+ #### AI 推荐逻辑
97
+
98
+ AI 根据以下因素综合给出推荐度和默认推荐:
99
+
100
+ 1. **情绪曲线**:连续高潮后默认推荐缓冲型;平淡超 5 章默认推荐危机型
101
+ 2. **伏笔积压**:[中/高] 紧迫度伏笔 > 3 条时默认推荐回环型
102
+ 3. **卷进度**:已写 > 60% 卷目标章节时默认推荐主线型
103
+ 4. **篇章位置**:第一卷前 3 幕避免颠覆型,最后一幕优先回环型
104
+ 5. **角色状态**:若存在\"被忽略\"的高人气配角,推荐支线型
105
+
106
+ ---
107
+
108
+ ### 阶段三:用户选择 + 生成幕大纲
109
+
110
+ 用户选定(如"选B,写8章")后,AI 依次执行:
111
+
112
+ #### 步骤1:偏离影响分析
113
+
114
+ 检查本幕对**已设定的大纲、卷计划、记忆系统**的影响程度:
115
+
116
+ | 影响程度 | 判定标准 | AI 动作 |
117
+ |---------|---------|--------|
118
+ | 🟢 无偏离 | 幕事件在已有大纲计划内 | 直接进入步骤2 |
119
+ | 🟡 轻微偏离 | 改变了章节顺序或事件时机,但不影响卷目标 | 提示用户并建议更新卷计划 |
120
+ | 🟠 中度偏离 | 影响了卷目标或关键角色弧光 | **追问用户**是否调整卷大纲、角色成长线 |
121
+ | 🔴 严重偏离 | 改变了故事的核心走向或最终结局 | **强制提醒**,列出受影响的全部模块,要求用户逐一确认 |
122
+
123
+ #### 偏离分析输出模板
124
+
125
+ ```
126
+ ## ⚠ 偏离影响分析
127
+
128
+ 本幕选择会带来以下调整:
129
+
130
+ ### 自动调整(AI 已处理)
131
+ - ✅ 进度看板更新
132
+ - ✅ 伏笔表更新
133
+
134
+ ### 需要用户确认
135
+ - 🟡 卷计划「XXX」事件原定第 XX 章,现建议移至第 XY 章
136
+ - 🟡 配角A的角色弧光原定「X→Y」,本幕影响其出现时机
137
+
138
+ ### 不建议自动处理(请决定)
139
+ - 🔴 本幕大幅偏离总大纲「XXX」设定
140
+ → 建议:[调整总大纲 / 保持本幕但后续修正 / 换个方案]
141
+
142
+ 是否继续?回复「继续」或描述你的调整想法。
143
+ ```
144
+
145
+ #### 步骤2:同步更新
146
+
147
+ 用户确认后,AI 同步执行以下更新:
148
+
149
+ ```
150
+ 同步更新清单:
151
+ ☐ outline.md → 更新幕规划表、进度看板、章节摘要区
152
+ ☐ volume plan → 调整章节分配、事件顺序
153
+ ☐ truth-files/ → 更新 pending-hooks.md(新增/回收/调整)
154
+ ☐ truth-files/ → 更新 current-state.md(预期变化)
155
+ ☐ truth-files/ → 更新 characters.md(角色弧光调整)
156
+ ☐ memory summaries → 标记阶段总结节点
157
+ ```
158
+
159
+ #### 步骤3:生成幕大纲
160
+
161
+ 使用 `templates/act-plan.md` 生成该幕的完整计划,包含章节细纲。
162
+
163
+ ```
164
+ ✅ 幕计划已生成
165
+
166
+ 幕:「XXX」,方案B,共8章(第X章-第Y章)
167
+ 大纲已同步更新:偏差等级 🟡 轻微
168
+
169
+ 准备好了就告诉我:/novel-maker write 写第X章
170
+ ```
171
+
172
+ ---
173
+
174
+ ### 大幕分段机制
175
+
176
+ 当一募预估 **超过 12 章** 时,应提示用户是否需要分段处理:
177
+
178
+ ```
179
+ ⚠ 本幕预估 20 章(超出默认12章上限)
180
+
181
+ 建议分为 2 段处理:
182
+ - 段1:前 10 章 → [核心事件摘要]
183
+ - 段2:后 10 章 → [核心事件摘要]
184
+
185
+ 分段好处:
186
+ - 段间可使用 /novel-maker act 调整走向
187
+ - 每段结束时进行一次情绪曲线检查
188
+ - 防止长篇偏离初期规划
189
+
190
+ 是否同意分段?回复「同意」或「不分段,写20章」
191
+ ```
192
+
193
+ ### 段间检查点
194
+
195
+ 在分段的段间,AI 自动触发简化版 `/novel-maker act`:
196
+
197
+ ```
198
+ ## 🔄 段间检查点
199
+
200
+ 当前进度:第X幕第1段已完成(10/20章)
201
+
202
+ ### 执行情况对照
203
+ - 计划回收伏笔:2/3 已完成
204
+ - 主角弧光推进:符合预期 / 略有偏离
205
+ - 字数统计:本段 25000 字,段落目标符合
206
+
207
+ ### 阶段二衔接
208
+ 第1段结尾钩子:[描述]
209
+
210
+ 下一段是否按原计划继续,还是需要调整?
211
+ - 回复「继续」→ 按原计划进入第2段
212
+ - 回复「调整」→ 重新生成下一段的分支选项
213
+ ```
214
+
215
+ ---
216
+
217
+ ## 字数强制检查规则
218
+
219
+ 每次 `/novel-maker write` 完成后执行:
220
+
221
+ ```
222
+ 字数检查:XX字
223
+ ├── < 2200字 → ⚠ 严重不足!自动提示 /novel-maker expand
224
+ ├── 2200-2800字 → ✅ 符合要求
225
+ └── > 2800字 → ⚠ 超标!建议精简至2800以内
226
+ ```
227
+
228
+ 连续 **2 章** 字数不达标 → AI 主动追问用户是否需要调整字数区间设定。