novelws 4.0.0 → 5.0.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 (357) hide show
  1. package/CHANGELOG.md +100 -623
  2. package/README.md +79 -594
  3. package/dist/cli.js +1 -3
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/init.d.ts.map +1 -1
  6. package/dist/commands/init.js +12 -99
  7. package/dist/commands/init.js.map +1 -1
  8. package/dist/commands/upgrade.d.ts.map +1 -1
  9. package/dist/commands/upgrade.js +17 -108
  10. package/dist/commands/upgrade.js.map +1 -1
  11. package/dist/core/config.d.ts +1 -37
  12. package/dist/core/config.d.ts.map +1 -1
  13. package/dist/core/config.js +6 -45
  14. package/dist/core/config.js.map +1 -1
  15. package/dist/core/errors.d.ts +0 -31
  16. package/dist/core/errors.d.ts.map +1 -1
  17. package/dist/core/errors.js +0 -58
  18. package/dist/core/errors.js.map +1 -1
  19. package/dist/utils/diagnostics.d.ts +2 -16
  20. package/dist/utils/diagnostics.d.ts.map +1 -1
  21. package/dist/utils/diagnostics.js +5 -72
  22. package/dist/utils/diagnostics.js.map +1 -1
  23. package/dist/utils/project.d.ts +1 -1
  24. package/dist/utils/project.d.ts.map +1 -1
  25. package/dist/utils/project.js +3 -3
  26. package/dist/utils/project.js.map +1 -1
  27. package/package.json +1 -2
  28. package/templates/commands/analyze.md +65 -265
  29. package/templates/commands/expand.md +70 -0
  30. package/templates/commands/plan.md +47 -452
  31. package/templates/commands/specify.md +43 -869
  32. package/templates/commands/write.md +49 -643
  33. package/templates/dot-claude/CLAUDE.md +38 -202
  34. package/templates/resources/anti-ai.md +16 -0
  35. package/templates/resources/style-reference.md +19 -0
  36. package/templates/tracking/character-state.json +1 -76
  37. package/templates/tracking/plot-tracker.json +3 -60
  38. package/templates/tracking/relationships.json +1 -68
  39. package/templates/tracking/timeline.json +1 -47
  40. package/dist/commands/plugin.d.ts +0 -6
  41. package/dist/commands/plugin.d.ts.map +0 -1
  42. package/dist/commands/plugin.js +0 -135
  43. package/dist/commands/plugin.js.map +0 -1
  44. package/dist/plugins/identifier.d.ts +0 -13
  45. package/dist/plugins/identifier.d.ts.map +0 -1
  46. package/dist/plugins/identifier.js +0 -72
  47. package/dist/plugins/identifier.js.map +0 -1
  48. package/dist/plugins/installers/base.d.ts +0 -27
  49. package/dist/plugins/installers/base.d.ts.map +0 -1
  50. package/dist/plugins/installers/base.js +0 -30
  51. package/dist/plugins/installers/base.js.map +0 -1
  52. package/dist/plugins/installers/github.d.ts +0 -22
  53. package/dist/plugins/installers/github.d.ts.map +0 -1
  54. package/dist/plugins/installers/github.js +0 -133
  55. package/dist/plugins/installers/github.js.map +0 -1
  56. package/dist/plugins/installers/local.d.ts +0 -16
  57. package/dist/plugins/installers/local.d.ts.map +0 -1
  58. package/dist/plugins/installers/local.js +0 -69
  59. package/dist/plugins/installers/local.js.map +0 -1
  60. package/dist/plugins/installers/npm.d.ts +0 -20
  61. package/dist/plugins/installers/npm.d.ts.map +0 -1
  62. package/dist/plugins/installers/npm.js +0 -99
  63. package/dist/plugins/installers/npm.js.map +0 -1
  64. package/dist/plugins/manager.d.ts +0 -77
  65. package/dist/plugins/manager.d.ts.map +0 -1
  66. package/dist/plugins/manager.js +0 -349
  67. package/dist/plugins/manager.js.map +0 -1
  68. package/dist/plugins/registry.d.ts +0 -48
  69. package/dist/plugins/registry.d.ts.map +0 -1
  70. package/dist/plugins/registry.js +0 -111
  71. package/dist/plugins/registry.js.map +0 -1
  72. package/dist/plugins/types.d.ts +0 -66
  73. package/dist/plugins/types.d.ts.map +0 -1
  74. package/dist/plugins/types.js +0 -2
  75. package/dist/plugins/types.js.map +0 -1
  76. package/dist/plugins/validator.d.ts +0 -19
  77. package/dist/plugins/validator.d.ts.map +0 -1
  78. package/dist/plugins/validator.js +0 -164
  79. package/dist/plugins/validator.js.map +0 -1
  80. package/dist/utils/logger.d.ts +0 -13
  81. package/dist/utils/logger.d.ts.map +0 -1
  82. package/dist/utils/logger.js +0 -48
  83. package/dist/utils/logger.js.map +0 -1
  84. package/plugins/authentic-voice/README.md +0 -31
  85. package/plugins/authentic-voice/commands/authentic-voice.md +0 -73
  86. package/plugins/authentic-voice/commands/authenticity-audit.md +0 -37
  87. package/plugins/authentic-voice/config.yaml +0 -30
  88. package/plugins/authentic-voice/experts/authentic-editor.md +0 -27
  89. package/plugins/export/README.md +0 -319
  90. package/plugins/export/commands/export.md +0 -460
  91. package/plugins/export/commands/generate-cover.md +0 -256
  92. package/plugins/export/commands/metadata.md +0 -309
  93. package/plugins/export/config.yaml +0 -47
  94. package/plugins/export/experts/publishing-expert.md +0 -171
  95. package/plugins/export/templates/epub/chapter-template.html +0 -13
  96. package/plugins/export/templates/epub/cover-template.html +0 -14
  97. package/plugins/export/templates/epub/stylesheet.css +0 -200
  98. package/plugins/export/templates/pdf/ebook-style.css +0 -137
  99. package/plugins/export/templates/pdf/print-style.css +0 -179
  100. package/plugins/export/templates/platforms/jinjiang-format.md +0 -101
  101. package/plugins/export/templates/platforms/qidian-format.md +0 -108
  102. package/plugins/export/templates/platforms/tomato-format.md +0 -95
  103. package/plugins/translate/README.md +0 -265
  104. package/plugins/translate/commands/glossary.md +0 -731
  105. package/plugins/translate/commands/translate-preview.md +0 -543
  106. package/plugins/translate/commands/translate.md +0 -649
  107. package/plugins/translate/config.yaml +0 -43
  108. package/plugins/translate/experts/literary-translator.md +0 -605
  109. package/templates/commands/character.md +0 -287
  110. package/templates/commands/checklist.md +0 -744
  111. package/templates/commands/clarify.md +0 -269
  112. package/templates/commands/constitution.md +0 -269
  113. package/templates/commands/expert.md +0 -188
  114. package/templates/commands/facts.md +0 -552
  115. package/templates/commands/guide.md +0 -900
  116. package/templates/commands/help-me.md +0 -221
  117. package/templates/commands/recap.md +0 -748
  118. package/templates/commands/relations.md +0 -385
  119. package/templates/commands/revise.md +0 -450
  120. package/templates/commands/search.md +0 -531
  121. package/templates/commands/tasks.md +0 -396
  122. package/templates/commands/timeline.md +0 -309
  123. package/templates/commands/track-init.md +0 -149
  124. package/templates/commands/track.md +0 -704
  125. package/templates/commands/volume-summary.md +0 -471
  126. package/templates/knowledge/audit-config.json +0 -26
  127. package/templates/knowledge/character-profiles.md +0 -152
  128. package/templates/knowledge/character-voices.md +0 -137
  129. package/templates/knowledge/locations.md +0 -184
  130. package/templates/knowledge/world-setting.md +0 -121
  131. package/templates/resources/character-archetypes/01-hero.md +0 -233
  132. package/templates/resources/character-archetypes/02-mentor.md +0 -177
  133. package/templates/resources/character-archetypes/03-shadow.md +0 -221
  134. package/templates/resources/character-archetypes/04-ally.md +0 -178
  135. package/templates/resources/character-archetypes/05-shapeshifter.md +0 -177
  136. package/templates/resources/character-archetypes/06-trickster.md +0 -181
  137. package/templates/resources/character-archetypes/07-threshold-guardian.md +0 -177
  138. package/templates/resources/character-archetypes/08-herald.md +0 -180
  139. package/templates/resources/character-archetypes/09-father.md +0 -249
  140. package/templates/resources/character-archetypes/10-mother.md +0 -202
  141. package/templates/resources/character-archetypes/11-child.md +0 -183
  142. package/templates/resources/character-archetypes/12-sage.md +0 -202
  143. package/templates/resources/character-archetypes/README.md +0 -60
  144. package/templates/resources/character-archetypes/application-guide.md +0 -222
  145. package/templates/resources/character-archetypes/archetype-combinations.md +0 -242
  146. package/templates/resources/character-archetypes/config.yaml +0 -28
  147. package/templates/resources/character-archetypes/examples-analysis.md +0 -223
  148. package/templates/resources/config/keyword-mappings.json +0 -226
  149. package/templates/resources/config/specification-example.md +0 -146
  150. package/templates/resources/craft/character-arc.md +0 -1153
  151. package/templates/resources/craft/dialogue.md +0 -1170
  152. package/templates/resources/craft/hook-design.md +0 -345
  153. package/templates/resources/craft/pacing.md +0 -1200
  154. package/templates/resources/craft/power-system.md +0 -254
  155. package/templates/resources/craft/scene-structure.md +0 -1136
  156. package/templates/resources/craft/show-not-tell.md +0 -1012
  157. package/templates/resources/craft/story-structures.md +0 -134
  158. package/templates/resources/craft/tension-management.md +0 -168
  159. package/templates/resources/emotional-beats/01-first-meeting.md +0 -145
  160. package/templates/resources/emotional-beats/02-bonding-moment.md +0 -226
  161. package/templates/resources/emotional-beats/03-declaration.md +0 -284
  162. package/templates/resources/emotional-beats/04-triumph.md +0 -240
  163. package/templates/resources/emotional-beats/05-reunion.md +0 -396
  164. package/templates/resources/emotional-beats/06-forgiveness.md +0 -204
  165. package/templates/resources/emotional-beats/07-betrayal.md +0 -204
  166. package/templates/resources/emotional-beats/08-loss.md +0 -214
  167. package/templates/resources/emotional-beats/09-rejection.md +0 -254
  168. package/templates/resources/emotional-beats/10-failure.md +0 -244
  169. package/templates/resources/emotional-beats/11-misunderstanding.md +0 -205
  170. package/templates/resources/emotional-beats/12-farewell.md +0 -283
  171. package/templates/resources/emotional-beats/13-revelation.md +0 -242
  172. package/templates/resources/emotional-beats/14-point-of-no-return.md +0 -215
  173. package/templates/resources/emotional-beats/15-dark-night.md +0 -244
  174. package/templates/resources/emotional-beats/16-sacrifice.md +0 -246
  175. package/templates/resources/emotional-beats/17-awakening.md +0 -246
  176. package/templates/resources/emotional-beats/18-confrontation.md +0 -217
  177. package/templates/resources/emotional-beats/19-bittersweet-goodbye.md +0 -368
  178. package/templates/resources/emotional-beats/20-moral-dilemma.md +0 -248
  179. package/templates/resources/emotional-beats/21-temptation.md +0 -240
  180. package/templates/resources/emotional-beats/22-redemption.md +0 -210
  181. package/templates/resources/emotional-beats/README.md +0 -104
  182. package/templates/resources/emotional-beats/beat-sequences.md +0 -276
  183. package/templates/resources/emotional-beats/config.yaml +0 -30
  184. package/templates/resources/emotional-beats/pacing-guide.md +0 -390
  185. package/templates/resources/genres/game-lit.md +0 -174
  186. package/templates/resources/genres/historical.md +0 -1127
  187. package/templates/resources/genres/horror.md +0 -211
  188. package/templates/resources/genres/military.md +0 -209
  189. package/templates/resources/genres/mystery.md +0 -1123
  190. package/templates/resources/genres/rebirth.md +0 -177
  191. package/templates/resources/genres/revenge.md +0 -846
  192. package/templates/resources/genres/romance.md +0 -948
  193. package/templates/resources/genres/sci-fi.md +0 -156
  194. package/templates/resources/genres/sports.md +0 -216
  195. package/templates/resources/genres/thriller.md +0 -166
  196. package/templates/resources/genres/urban.md +0 -170
  197. package/templates/resources/genres/workplace.md +0 -214
  198. package/templates/resources/genres/wuxia.md +0 -143
  199. package/templates/resources/genres/xuanhuan.md +0 -234
  200. package/templates/resources/genres/youth.md +0 -219
  201. package/templates/resources/memory/personal-voice.md +0 -113
  202. package/templates/resources/references/README.md +0 -96
  203. package/templates/resources/references/china-1920s/culture.md +0 -423
  204. package/templates/resources/references/china-1920s/daily-life.md +0 -616
  205. package/templates/resources/references/china-1920s/overview.md +0 -298
  206. package/templates/resources/references/china-1920s/society.md +0 -703
  207. package/templates/resources/references/china-1920s/warlords.md +0 -427
  208. package/templates/resources/references/cultivation-world/daily-life.md +0 -108
  209. package/templates/resources/references/cultivation-world/overview.md +0 -64
  210. package/templates/resources/references/cultivation-world/power-system.md +0 -108
  211. package/templates/resources/references/cultivation-world/sects.md +0 -104
  212. package/templates/resources/references/cultivation-world/world-setting.md +0 -108
  213. package/templates/resources/references/modern-workplace/corporate.md +0 -115
  214. package/templates/resources/references/modern-workplace/daily-life.md +0 -129
  215. package/templates/resources/references/modern-workplace/overview.md +0 -73
  216. package/templates/resources/references/modern-workplace/relationships.md +0 -107
  217. package/templates/resources/references/modern-workplace/tech-industry.md +0 -131
  218. package/templates/resources/references/tang-dynasty/culture.md +0 -135
  219. package/templates/resources/references/tang-dynasty/daily-life.md +0 -139
  220. package/templates/resources/references/tang-dynasty/overview.md +0 -76
  221. package/templates/resources/references/tang-dynasty/politics.md +0 -121
  222. package/templates/resources/references/tang-dynasty/society.md +0 -126
  223. package/templates/resources/requirements/README.md +0 -240
  224. package/templates/resources/requirements/anti-ai-v3.md +0 -46
  225. package/templates/resources/requirements/anti-ai-v4-deprecated.md +0 -442
  226. package/templates/resources/requirements/anti-ai-v5-balanced.md +0 -203
  227. package/templates/resources/requirements/concretization.md +0 -90
  228. package/templates/resources/requirements/fast-paced.md +0 -552
  229. package/templates/resources/requirements/no-poison.md +0 -60
  230. package/templates/resources/requirements/romance-angst.md +0 -102
  231. package/templates/resources/requirements/romance-sweet.md +0 -63
  232. package/templates/resources/requirements/serious-literature.md +0 -45
  233. package/templates/resources/requirements/strong-emotion.md +0 -60
  234. package/templates/resources/scripts/README.md +0 -187
  235. package/templates/resources/scripts/bash/analyze-story.sh +0 -170
  236. package/templates/resources/scripts/bash/check-analyze-stage.sh +0 -108
  237. package/templates/resources/scripts/bash/check-consistency.sh +0 -463
  238. package/templates/resources/scripts/bash/check-facts.sh +0 -214
  239. package/templates/resources/scripts/bash/check-plot.sh +0 -374
  240. package/templates/resources/scripts/bash/check-timeline.sh +0 -346
  241. package/templates/resources/scripts/bash/check-world.sh +0 -395
  242. package/templates/resources/scripts/bash/check-writing-state.sh +0 -854
  243. package/templates/resources/scripts/bash/clarify-story.sh +0 -117
  244. package/templates/resources/scripts/bash/common.sh +0 -151
  245. package/templates/resources/scripts/bash/constitution.sh +0 -114
  246. package/templates/resources/scripts/bash/generate-tasks.sh +0 -65
  247. package/templates/resources/scripts/bash/init-tracking.sh +0 -183
  248. package/templates/resources/scripts/bash/manage-relations.sh +0 -174
  249. package/templates/resources/scripts/bash/migrate-tracking.sh +0 -183
  250. package/templates/resources/scripts/bash/plan-story.sh +0 -100
  251. package/templates/resources/scripts/bash/specify-story.sh +0 -93
  252. package/templates/resources/scripts/bash/tasks-story.sh +0 -96
  253. package/templates/resources/scripts/bash/test-word-count.sh +0 -182
  254. package/templates/resources/scripts/bash/tests/bench-preload-cache.sh +0 -100
  255. package/templates/resources/scripts/bash/tests/run-all-benchmarks.sh +0 -16
  256. package/templates/resources/scripts/bash/tests/test-cache-semantics.sh +0 -199
  257. package/templates/resources/scripts/bash/tests/test-cross-platform.sh +0 -35
  258. package/templates/resources/scripts/bash/tests/test-edge-cases-bash.sh +0 -60
  259. package/templates/resources/scripts/bash/tests/test-phase1-bash.sh +0 -28
  260. package/templates/resources/scripts/bash/tests/test-preload-cache.sh +0 -123
  261. package/templates/resources/scripts/bash/tests/test-regex-precompile.sh +0 -89
  262. package/templates/resources/scripts/bash/tests/test-regression-bash.sh +0 -42
  263. package/templates/resources/scripts/bash/tests/test-task6-verification.sh +0 -200
  264. package/templates/resources/scripts/bash/text-audit.sh +0 -144
  265. package/templates/resources/scripts/bash/track-progress.sh +0 -194
  266. package/templates/resources/scripts/powershell/analyze-story.ps1 +0 -174
  267. package/templates/resources/scripts/powershell/check-analyze-stage.ps1 +0 -110
  268. package/templates/resources/scripts/powershell/check-consistency.ps1 +0 -138
  269. package/templates/resources/scripts/powershell/check-facts.ps1 +0 -195
  270. package/templates/resources/scripts/powershell/check-plot.ps1 +0 -139
  271. package/templates/resources/scripts/powershell/check-timeline.ps1 +0 -112
  272. package/templates/resources/scripts/powershell/check-writing-state.ps1 +0 -486
  273. package/templates/resources/scripts/powershell/clarify-story.ps1 +0 -107
  274. package/templates/resources/scripts/powershell/common.ps1 +0 -36
  275. package/templates/resources/scripts/powershell/constitution.ps1 +0 -145
  276. package/templates/resources/scripts/powershell/generate-tasks.ps1 +0 -70
  277. package/templates/resources/scripts/powershell/init-tracking.ps1 +0 -98
  278. package/templates/resources/scripts/powershell/manage-relations.ps1 +0 -134
  279. package/templates/resources/scripts/powershell/migrate-tracking.ps1 +0 -145
  280. package/templates/resources/scripts/powershell/plan-story.ps1 +0 -99
  281. package/templates/resources/scripts/powershell/specify-story.ps1 +0 -85
  282. package/templates/resources/scripts/powershell/tests/bench-ps-cache.ps1 +0 -80
  283. package/templates/resources/scripts/powershell/tests/test-cross-platform.ps1 +0 -27
  284. package/templates/resources/scripts/powershell/tests/test-edge-cases-ps.ps1 +0 -29
  285. package/templates/resources/scripts/powershell/tests/test-phase1-ps.ps1 +0 -28
  286. package/templates/resources/scripts/powershell/tests/test-ps-cache.ps1 +0 -73
  287. package/templates/resources/scripts/powershell/tests/test-regression-ps.ps1 +0 -40
  288. package/templates/resources/scripts/powershell/text-audit.ps1 +0 -102
  289. package/templates/resources/scripts/powershell/track-progress.ps1 +0 -105
  290. package/templates/resources/styles/README.md +0 -302
  291. package/templates/resources/styles/ancient-style.md +0 -579
  292. package/templates/resources/styles/literary.md +0 -439
  293. package/templates/resources/styles/minimal.md +0 -472
  294. package/templates/resources/styles/natural-voice.md +0 -930
  295. package/templates/resources/styles/web-novel.md +0 -525
  296. package/templates/skills/analysis/character-analysis/SKILL.md +0 -71
  297. package/templates/skills/analysis/foreshadow-analysis/SKILL.md +0 -45
  298. package/templates/skills/analysis/hook-analysis/SKILL.md +0 -111
  299. package/templates/skills/analysis/logic-analysis/SKILL.md +0 -58
  300. package/templates/skills/analysis/opening-analysis/SKILL.md +0 -59
  301. package/templates/skills/analysis/pacing-analysis/SKILL.md +0 -55
  302. package/templates/skills/analysis/power-analysis/SKILL.md +0 -148
  303. package/templates/skills/analysis/reader-analysis/SKILL.md +0 -117
  304. package/templates/skills/analysis/style-analysis/SKILL.md +0 -60
  305. package/templates/skills/analysis/voice-analysis/SKILL.md +0 -42
  306. package/templates/skills/auto-tracking/SKILL.md +0 -280
  307. package/templates/skills/genre-knowledge/fantasy/SKILL.md +0 -355
  308. package/templates/skills/genre-knowledge/mystery/SKILL.md +0 -337
  309. package/templates/skills/genre-knowledge/romance/SKILL.md +0 -228
  310. package/templates/skills/genre-knowledge/sci-fi/SKILL.md +0 -65
  311. package/templates/skills/genre-knowledge/thriller/SKILL.md +0 -95
  312. package/templates/skills/planning/volume-detail/SKILL.md +0 -219
  313. package/templates/skills/quality-assurance/consistency-checker/SKILL.md +0 -412
  314. package/templates/skills/quality-assurance/continuity-tracker/SKILL.md +0 -157
  315. package/templates/skills/quality-assurance/facts-checker/SKILL.md +0 -405
  316. package/templates/skills/quality-assurance/forgotten-elements/SKILL.md +0 -147
  317. package/templates/skills/quality-assurance/getting-started/SKILL.md +0 -224
  318. package/templates/skills/quality-assurance/hook-checker/SKILL.md +0 -164
  319. package/templates/skills/quality-assurance/hook-checker/experts/hook-analyst.md +0 -33
  320. package/templates/skills/quality-assurance/long-series-continuity/SKILL.md +0 -570
  321. package/templates/skills/quality-assurance/pacing-monitor/SKILL.md +0 -143
  322. package/templates/skills/quality-assurance/pov-validator/SKILL.md +0 -135
  323. package/templates/skills/quality-assurance/pre-write-checklist/SKILL.md +0 -583
  324. package/templates/skills/quality-assurance/requirement-detector/CONFLICT_RESOLUTION.md +0 -119
  325. package/templates/skills/quality-assurance/requirement-detector/EXAMPLES.md +0 -146
  326. package/templates/skills/quality-assurance/requirement-detector/KEYWORDS.md +0 -160
  327. package/templates/skills/quality-assurance/requirement-detector/SKILL.md +0 -149
  328. package/templates/skills/quality-assurance/setting-detector/SKILL.md +0 -611
  329. package/templates/skills/quality-assurance/style-detector/CONFLICT_RESOLUTION.md +0 -126
  330. package/templates/skills/quality-assurance/style-detector/EXAMPLES.md +0 -206
  331. package/templates/skills/quality-assurance/style-detector/KEYWORDS.md +0 -207
  332. package/templates/skills/quality-assurance/style-detector/SKILL.md +0 -264
  333. package/templates/skills/quality-assurance/voice-consistency-checker/SKILL.md +0 -103
  334. package/templates/skills/quality-assurance/voice-consistency-checker/experts/voice-analyst.md +0 -21
  335. package/templates/skills/quality-assurance/workflow-guide/SKILL.md +0 -381
  336. package/templates/skills/writing-techniques/character-arc/SKILL.md +0 -267
  337. package/templates/skills/writing-techniques/dialogue-techniques/SKILL.md +0 -366
  338. package/templates/skills/writing-techniques/multi-thread-narrative/SKILL.md +0 -708
  339. package/templates/skills/writing-techniques/multi-thread-narrative/experts/thread-analyst.md +0 -226
  340. package/templates/skills/writing-techniques/pacing-control/SKILL.md +0 -480
  341. package/templates/skills/writing-techniques/reader-expectation/SKILL.md +0 -1026
  342. package/templates/skills/writing-techniques/reader-expectation/experts/expectation-analyst.md +0 -209
  343. package/templates/skills/writing-techniques/revision-polish/SKILL.md +0 -496
  344. package/templates/skills/writing-techniques/revision-polish/experts/revision-editor.md +0 -221
  345. package/templates/skills/writing-techniques/scene-structure/SKILL.md +0 -361
  346. package/templates/skills/writing-techniques/style-learning/SKILL.md +0 -436
  347. package/templates/skills/writing-techniques/writing-balance/.gitkeep +0 -0
  348. package/templates/skills/writing-techniques/writing-balance/SKILL.md +0 -460
  349. package/templates/skills/writing-techniques/writing-techniques/SKILL.md +0 -727
  350. package/templates/tracking/story-facts.json +0 -5
  351. package/templates/tracking/summary/characters-summary.json +0 -7
  352. package/templates/tracking/summary/plot-summary.json +0 -13
  353. package/templates/tracking/summary/timeline-summary.json +0 -8
  354. package/templates/tracking/summary/volume-summaries.json +0 -5
  355. package/templates/tracking/tracking-log.md +0 -110
  356. package/templates/tracking/validation-rules.json +0 -128
  357. /package/templates/resources/{memory/constitution.md → constitution.md} +0 -0
@@ -1,246 +0,0 @@
1
- # Sacrifice (牺牲)
2
-
3
- ## 核心定义
4
-
5
- 牺牲 = 角色为了他人或更大的目标,主动放弃重要的东西(生命、幸福、自由等)。
6
-
7
- 牺牲是故事中最具情感冲击力的节拍之一。它不是简单的"失去",而是"选择失去"——角色在完全知道代价的情况下,依然做出了放弃的决定。正是这种自主性,让牺牲区别于悲剧中的被动受难,成为角色弧线中最具定义性的时刻。
8
-
9
- 好的牺牲场景会让读者心碎、沉默、反复回味。它触及人类最深层的情感:一个人愿意为了什么而放弃一切?这个问题的答案,比任何对话或动作场景都更能揭示角色的本质。差的牺牲场景则让读者翻白眼——要么觉得廉价(没有真正的代价),要么觉得虚假(动机不合理),要么觉得被操纵(作者在强行催泪)。
10
-
11
- **关键区分:**
12
- - **主动牺牲:** 角色有选择,选择了放弃(Tony Stark 选择打响指)
13
- - **被动受难:** 角色没有选择,被迫承受(自然灾害中的受害者)
14
-
15
- 只有主动牺牲才构成真正的情感节拍。被动受难是悲剧,但不是牺牲。
16
-
17
- ---
18
-
19
- ## 核心元素
20
-
21
- ### 1. 牺牲的代价(必须真实且重大)
22
-
23
- 牺牲之所以动人,是因为失去的东西有真实的重量。如果角色放弃的东西对他来说无关紧要,那就不是牺牲,只是交易。
24
-
25
- - **代价必须是具体的:** 不是模糊的"付出了很多",而是读者能清楚看到的——生命、与爱人的未来、毕生的梦想、自由、身份认同
26
- - **代价必须是不可逆的:** 牺牲的重量来自于"回不去了"。如果牺牲可以被撤销、被补偿、被治愈,它就失去了意义
27
- - **代价必须被读者感知:** 在牺牲发生之前,读者需要充分理解这个东西对角色有多重要。如果角色牺牲了一段感情,读者必须先看到这段感情的美好
28
-
29
- ### 2. 牺牲的动机
30
-
31
- 角色为什么愿意做出这个选择?动机是牺牲场景可信度的基石。
32
-
33
- - **爱:** 为了所爱之人的安全或幸福(最常见,也最容易打动人)
34
- - **责任:** 因为"这是我该做的"——职责、承诺、使命感
35
- - **赎罪:** 为了弥补过去的错误,用牺牲来偿还亏欠
36
- - **信念:** 为了更大的理想——正义、自由、真相
37
- - **本能:** 在危急时刻,来不及思考,身体先于大脑做出了选择
38
-
39
- 最好的牺牲动机是多层次的。不是单一的"因为爱",而是爱、愧疚、责任、自我救赎交织在一起,让角色的选择既复杂又真实。
40
-
41
- ### 3. 选择的自主性
42
-
43
- 牺牲的核心是"选择"。角色必须有不牺牲的选项——他可以走开、可以自保、可以让别人去承担。但他选择了留下。
44
-
45
- - **必须存在替代方案:** 如果角色别无选择,那不是牺牲,是被迫。读者需要看到"他本可以不这样做"
46
- - **选择的时刻要被放大:** 给角色一个犹豫的瞬间、一个回望的眼神、一个深呼吸。这个停顿让读者意识到角色知道自己在做什么
47
- - **犹豫不会削弱牺牲:** 恰恰相反,犹豫让牺牲更真实。一个毫不犹豫的牺牲像是程序设定,一个经过挣扎后做出的牺牲才是人性的选择
48
-
49
- ### 4. 牺牲的影响
50
-
51
- 牺牲不是终点,而是涟漪的起点。它如何改变了周围的人、改变了故事的走向?
52
-
53
- - **对受益者的影响:** 被保护的人如何面对这份沉重的礼物?感激、愧疚、愤怒、继承遗志?
54
- - **对旁观者的影响:** 目睹牺牲的人会被改变。一个自私的角色可能因此觉醒,一个绝望的角色可能因此找到希望
55
- - **对故事主题的影响:** 牺牲往往是故事主题的最终表达。角色用行动回答了故事一直在追问的核心问题
56
-
57
- ---
58
-
59
- ## 常见套路(应避免)
60
-
61
- - ❌ **无代价的牺牲:** 角色声称做出了巨大牺牲,但实际上并没有失去什么重要的东西。或者牺牲的东西在故事中从未被建立为有价值的。读者会觉得作者在"演戏"——角色在表演痛苦,但痛苦并不真实。解决方法:在牺牲之前,花足够的篇幅让读者爱上角色即将失去的东西。
62
-
63
- - ❌ **最后一刻被救(假牺牲):** 角色做出了壮烈的牺牲决定,读者泪流满面——然后队友及时赶到,或者奇迹发生,角色毫发无损。这是对读者情感的欺骗。一次两次可以制造惊喜,但如果反复使用,读者会学会不再投入情感,因为他们知道"反正不会真的死"。如果你让角色走到牺牲的边缘,要么让牺牲真正发生,要么让"被救"本身付出新的代价。
64
-
65
- - ❌ **圣母式牺牲(无合理动机):** 角色毫无理由地为陌生人献出生命,仅仅因为"他是个好人"。这种牺牲缺乏心理真实性。现实中,人们的牺牲行为几乎总是有深层动机的——爱、愧疚、信念、身份认同。一个没有动机的牺牲不是高尚,而是空洞。给你的角色一个私人的、具体的、甚至不那么"高尚"的理由。
66
-
67
- - ❌ **牺牲后立刻复活:** 角色壮烈牺牲,读者悲痛欲绝,然后下一章角色就复活了。这是对牺牲意义的彻底消解。如果死亡可以被逆转,那牺牲就毫无重量。即使故事设定允许复活(如奇幻/科幻),复活也必须伴随重大代价——否则读者会觉得整个牺牲场景都是一场骗局。
68
-
69
- ---
70
-
71
- ## 新颖变体
72
-
73
- ### 变体1:不被知道的牺牲(无人知晓的付出)
74
-
75
- 角色做出了巨大的牺牲,但没有人知道。没有感谢、没有荣耀、没有人记住他的付出。
76
-
77
- **核心张力:** 牺牲的价值不依赖于被看见。角色不是为了被铭记而牺牲,而是因为"这是对的事"。这种牺牲拷问读者:如果没有人知道你做了什么,你还会做吗?
78
-
79
- **写法要点:**
80
- - 角色独自承受代价,甚至可能被误解、被指责
81
- - 受益者可能永远不知道真相,甚至可能怨恨牺牲者
82
- - 读者作为唯一的"知情人",会产生强烈的情感共鸣和心疼
83
- - 可以在故事很后期才揭示真相,让读者重新审视之前的所有情节
84
-
85
- **适用场景:** 间谍/卧底故事、家庭叙事中父母的隐忍、暗中守护的角色
86
-
87
- ### 变体2:失败的牺牲(牺牲了但没有达到目的)
88
-
89
- 角色付出了一切,但牺牲没有换来预期的结果。目标没有达成,爱的人没有被救,世界没有被改变。
90
-
91
- **核心张力:** 这是最残酷也最真实的变体。现实中,牺牲不保证回报。失败的牺牲迫使读者面对一个不舒服的问题:如果牺牲注定无用,它还有意义吗?
92
-
93
- **写法要点:**
94
- - 不要让失败显得廉价——牺牲的过程必须是庄严的、全力以赴的
95
- - 失败后的沉默比任何哭喊都更有力量
96
- - 其他角色如何面对"他白死了"这个事实,是巨大的情感矿藏
97
- - 可以在更长的时间线上揭示牺牲的间接影响——也许当时失败了,但种下的种子在多年后发芽
98
-
99
- **适用场景:** 战争故事、现实主义文学、反英雄叙事、探讨命运与意义的主题
100
-
101
- ### 变体3:日常牺牲(不是生死,而是梦想/自由)
102
-
103
- 不是轰轰烈烈的赴死,而是安静地放弃自己的梦想、自由、青春或幸福。
104
-
105
- **核心张力:** 日常牺牲没有戏剧性的高光时刻,没有英雄的光环,只有日复一日的放弃和忍耐。这种牺牲更贴近大多数读者的真实生活,因此可能比生死牺牲更能引发共鸣。
106
-
107
- **写法要点:**
108
- - 用时间的流逝来展示代价:角色的梦想从"暂时搁置"变成"永远错过"
109
- - 展示角色偶尔的动摇——看到别人过着自己曾经想要的生活时的那一瞬间的失神
110
- - 不要把日常牺牲浪漫化。它不总是"伟大的",有时候是苦涩的、令人窒息的
111
- - 让角色在某个安静的时刻意识到自己失去了什么——也许是深夜独处时,也许是翻到一张旧照片时
112
-
113
- **适用场景:** 家庭故事(父母为子女放弃事业)、照顾者叙事、移民故事、任何关于"选择与放弃"的主题
114
-
115
- ### 变体4:反派的牺牲
116
-
117
- 反派角色做出了牺牲。这个曾经自私、残忍、以自我为中心的人,在关键时刻选择了放弃。
118
-
119
- **核心张力:** 反派的牺牲之所以震撼,是因为它打破了读者的预期。读者已经"判定"了这个角色,而牺牲迫使读者重新审视自己的判断。它暗示:即使是最黑暗的人心中也有光,即使是最自私的人也有愿意为之付出一切的东西。
120
-
121
- **写法要点:**
122
- - 牺牲的动机必须与反派之前的行为逻辑一致——不是突然"变好了",而是他一直在乎的那个东西终于超越了他的自私
123
- - 不要让反派在牺牲前发表长篇忏悔演说。一个简单的动作、一个眼神,比任何台词都更有力量
124
- - 其他角色(尤其是主角)对反派牺牲的复杂反应:震惊、困惑、不愿承认的感动、重新评估过去的冲突
125
- - 反派的牺牲可以不被原谅——牺牲不等于救赎,过去的伤害不会因为一次牺牲而消失
126
-
127
- **适用场景:** 长篇系列的角色弧线收束、道德灰色地带的故事、探讨善恶边界的主题
128
-
129
- ---
130
-
131
- ## 情感真实性
132
-
133
- ### 如何让牺牲场景真正打动人心
134
-
135
- **1. 先让读者爱上即将失去的东西**
136
-
137
- 牺牲的痛感取决于读者对"被牺牲之物"的情感投入。如果角色要牺牲生命,读者必须先看到这个生命中值得留恋的部分——未完成的梦想、刚刚开始的爱情、终于和解的亲子关系。如果角色要牺牲自由,读者必须先感受到自由对这个角色意味着什么。牺牲前的"美好"越充分,牺牲时的"心碎"越强烈。
138
-
139
- **2. 让角色用自己的方式面对牺牲**
140
-
141
- 不同性格的角色面对牺牲的方式应该截然不同。勇敢的人可能平静地微笑;懦弱的人可能浑身发抖但依然迈出那一步(这反而更动人);骄傲的人可能用一句玩笑掩饰恐惧;沉默的人可能什么都不说,只是做了。让角色的牺牲方式与他的性格一致,而不是套用"英雄模板"。
142
-
143
- **3. 不要过度渲染**
144
-
145
- 最有力量的牺牲场景往往是克制的。不需要慢动作、不需要背景音乐式的抒情描写、不需要周围人的嚎啕大哭。有时候,一个简单的动作——把护身符塞进对方手里、最后回头看了一眼、轻声说了句"没事的"——比千字的煽情描写更能击中读者的心。信任你的读者,他们知道该在什么时候流泪。
146
-
147
- **4. 给牺牲留下回响**
148
-
149
- 牺牲不应该在发生的那一刻就结束。它应该像石头投入湖面,涟漪持续扩散。在后续的情节中,让其他角色在不经意间想起牺牲者——看到他常坐的空椅子、听到他常说的口头禅、在面对选择时想"他会怎么做"。这些回响让牺牲的重量持续存在,而不是被下一个情节事件冲淡。
150
-
151
- **5. 避免道德绑架读者**
152
-
153
- 不要用叙事手法强迫读者觉得牺牲是"伟大的"。让读者自己判断。有些牺牲是伟大的,有些是愚蠢的,有些是两者兼有。允许故事中的角色对牺牲持有不同看法——有人感激,有人愤怒("你凭什么替我做决定?"),有人觉得不值得。这种多元的反应比统一的"致敬"更真实。
154
-
155
- ---
156
-
157
- ## 示例分析
158
-
159
- ### 示例1:《哈利·波特》——Severus Snape 的一生
160
-
161
- **场景:** 整个系列的最终揭示——Snape 一直在暗中保护 Harry,因为他深爱 Harry 的母亲 Lily。他在 Dumbledore 的安排下扮演双面间谍,承受所有人的误解和仇恨,最终被 Voldemort 杀死。临死前,他将记忆交给 Harry,说出那句"Look at me"——因为 Harry 有着和 Lily 一样的眼睛。
162
-
163
- **为什么有效:**
164
-
165
- - **不被知道的牺牲(变体1):** Snape 的牺牲贯穿了整个系列,但直到最后才被揭示。在此之前,他被所有人(包括读者)视为反派或至少是不可信任的人。这种"无人知晓"的设定让揭示的那一刻具有毁灭性的情感冲击——读者被迫重新审视七本书中关于 Snape 的每一个场景。
166
- - **动机的复杂性:** Snape 的牺牲动机不是单纯的"高尚"。它混合了爱(对 Lily)、愧疚(是他泄露了预言导致 Lily 被杀)、赎罪(用余生弥补这个错误)、甚至某种自我惩罚。这种复杂性让他的牺牲远比"好人做好事"更有深度。
167
- - **代价的持续性:** Snape 的牺牲不是一个瞬间的决定,而是持续了十七年的日常牺牲(变体3)。每天面对 Harry——一个长得像他最恨的人、却有着他最爱之人眼睛的男孩——本身就是一种折磨。他放弃了被理解、被尊重、被感谢的可能性,选择了孤独和误解。
168
- - **"Always"的力量:** 当 Dumbledore 问 Snape"这么多年过去了?",Snape 的回答只有一个词:"Always。"这个词之所以成为整个系列最令人心碎的台词之一,正是因为它的克制——一个词浓缩了十七年的痛苦、忠诚和无法放下的爱。
169
-
170
- **技巧提炼:** 延迟揭示的牺牲具有双重冲击力——读者不仅为牺牲本身心碎,还为自己之前的误判而震动。让读者成为"迟到的见证者",是制造深层情感共鸣的强大手法。
171
-
172
- ### 示例2:《复仇者联盟:终局之战》——Tony Stark / Iron Man
173
-
174
- **场景:** 在与 Thanos 的最终决战中,Tony Stark 夺取无限宝石,用自己的身体承受宝石的力量打出响指,消灭了 Thanos 的军队,但也因此付出了生命。他最后的话是对 Pepper 说的:"I am Iron Man。"
175
-
176
- **为什么有效:**
177
-
178
- - **角色弧线的完美闭合:** Tony Stark 在第一部《钢铁侠》中被 Pepper 指责为自私、不负责任。整个系列中,他从一个自恋的天才逐渐成长为愿意为他人牺牲的人。最终的牺牲不是突然的"变好",而是十年角色发展的自然终点。读者亲眼见证了这个转变的每一步,所以当牺牲发生时,它感觉是"赢得的"(earned),而非强加的。
179
- - **选择的自主性:** Tony 本可以不参与这场战斗。在《终局之战》开头,他已经有了幸福的家庭生活——妻子、女儿、乡间小屋。他选择回来,是因为他无法忍受"本可以做些什么却没做"。这个选择让牺牲有了重量:他不是没有退路,而是选择不退。
180
- - **代价的可见性:** 在打响指之前,观众已经知道无限宝石的力量足以杀死使用者(Hulk 用了之后手臂重伤)。Tony 是普通人类的身体,结果不言而喻。当他举起手的那一刻,观众和角色都知道这意味着什么——没有侥幸、没有奇迹、没有最后一刻的拯救。
181
- - **回响与告别:** Tony 的葬礼场景没有台词,只有沉默和面孔。他留给女儿的全息影像、漂浮在湖面上的花圈反应堆、从第一部就陪伴他的角色们的沉默致意——这些"余波"让牺牲的重量在电影结束后依然持续。
182
-
183
- **技巧提炼:** 最好的牺牲是角色弧线的最终表达。当牺牲的行为本身就是角色成长的证明时,它不仅是一个情节事件,更是整个故事的主题总结。"I am Iron Man"既是开始,也是结束——首尾呼应让牺牲获得了超越单一场景的叙事重量。
184
-
185
- ---
186
-
187
- ## 写作提示
188
-
189
- ### 五个设计问题
190
-
191
- 在写牺牲场景之前,问自己:
192
-
193
- 1. **角色牺牲的东西,读者是否已经充分感受到它的价值?** 如果角色要牺牲生命,读者是否看到了他对生活的热爱?如果角色要牺牲爱情,读者是否见证了这段感情的美好?牺牲的痛感与读者对"被牺牲之物"的情感投入成正比。
194
-
195
- 2. **角色的牺牲动机是否有私人层面的根基?** "为了拯救世界"是一个宏大但空洞的动机。"为了让女儿能在一个安全的世界长大"是一个具体的、私人的、让读者心碎的动机。把宏大的理由缩小到一个人、一张脸、一个具体的画面。
196
-
197
- 3. **角色是否有不牺牲的选项?** 如果没有,这不是牺牲,是被迫。确保读者能看到替代方案的存在——角色可以逃跑、可以让别人去、可以假装没看到。正是因为有退路却选择不退,牺牲才有意义。
198
-
199
- 4. **牺牲的方式是否与角色的性格一致?** 一个话多的角色可能在最后时刻突然沉默;一个严肃的角色可能用一个玩笑来面对死亡;一个一直逃避的角色终于选择了面对。牺牲的方式本身就是角色的最终定义。
200
-
201
- 5. **牺牲之后,故事如何处理"余波"?** 不要让牺牲成为高潮后就被遗忘的情节点。其他角色如何消化这个事实?牺牲如何改变了幸存者的行为和选择?给牺牲足够的"回响空间"。
202
-
203
- ### 五项检查清单
204
-
205
- - [ ] **价值检查:** 角色即将牺牲的东西,是否在之前的情节中被充分建立为有价值的?
206
- - [ ] **动机检查:** 角色的牺牲动机是否具体、私人、且与其性格/经历一致?
207
- - [ ] **自主性检查:** 角色是否有明确的替代选项(不牺牲的可能性)?
208
- - [ ] **不可逆检查:** 牺牲的代价是否是真实的、不可逆转的?(没有复活、没有奇迹治愈)
209
- - [ ] **回响检查:** 牺牲之后的情节是否展示了它对其他角色和故事走向的持续影响?
210
-
211
- ---
212
-
213
- ## 进阶技巧
214
-
215
- ### 技巧1:牺牲的预感(Foreshadowing the Sacrifice)
216
-
217
- 在牺牲真正发生之前,让读者隐约感觉到它即将到来。这种预感不是剧透,而是情感的预热——让读者在牺牲发生时不是完全震惊,而是"我一直害怕的事情终于发生了"。
218
-
219
- **具体做法:**
220
- - 让角色在牺牲前做出"告别式"的行为:整理遗物、把重要的东西交给别人、说出平时不会说的话
221
- - 用意象暗示:反复出现的落日、熄灭的蜡烛、飘落的花瓣——这些不需要明说,读者的潜意识会接收到信号
222
- - 让角色在某个安静的时刻表达对生活的珍惜——这种珍惜在牺牲发生后会变成读者心中的刀
223
-
224
- **效果:** 预感让读者在牺牲发生前就开始积累情感。当牺牲真正到来时,读者不是从零开始悲伤,而是释放了一直压抑的恐惧和不舍。这种"预期中的心碎"往往比突如其来的震惊更有持久的情感力量。
225
-
226
- ### 技巧2:牺牲时刻的时间膨胀(Time Dilation)
227
-
228
- 在牺牲发生的那一刻,放慢叙事节奏。让一秒钟的决定占据几页的篇幅。
229
-
230
- **具体做法:**
231
- - 用感官细节填充这个瞬间:空气的温度、光线的角度、远处模糊的声音、手指的触感
232
- - 穿插碎片化的回忆:角色在这一刻想到的不是宏大的理由,而是一个具体的画面——女儿的笑脸、母亲做的早餐、某个平凡午后的阳光
233
- - 让外部世界的混乱与角色内心的平静形成对比:战场上炮火连天,但角色的内心是安静的,因为他已经做出了决定
234
-
235
- **效果:** 时间膨胀让读者"进入"角色的主观体验。在现实中,人们在生死关头确实会经历时间变慢的感觉。用叙事节奏模拟这种心理现象,能让读者与角色在最后的时刻产生最深层的共鸣。
236
-
237
- ### 技巧3:未完成的句子(The Unfinished Sentence)
238
-
239
- 让牺牲者的最后一句话没有说完。
240
-
241
- **具体做法:**
242
- - 角色想说"我爱你",但只说出了"我——"
243
- - 角色想交代什么重要的事,但来不及说完
244
- - 角色最后的话是一个没有答案的问题
245
-
246
- **效果:** 未完成的句子是留白的极致运用。它让读者的想象力填补空白——而读者自己想象出的内容,永远比作者写出来的更有力量。那个没有说完的字,会在读者心中回响很久。同时,它也为幸存者留下了永远的遗憾——"他最后想说什么?"这个问题本身就是一种持续的情感折磨,比任何完整的告别都更令人心碎。
@@ -1,246 +0,0 @@
1
- # Awakening (觉醒)
2
-
3
- ## 核心定义
4
-
5
- 觉醒 = 角色意识发生根本性转变,看清了之前看不到的真相或自我。
6
-
7
- 觉醒是故事中最具变革力量的情感节拍之一。它不是简单的"学到了新知识",而是角色的整个认知框架被打碎并重建的过程。觉醒之前,角色活在某种盲区中——可能是对自己的误解,可能是对世界的错误认知,可能是对关系的自欺欺人。觉醒之后,角色再也无法回到从前的状态,因为他已经"看见"了,而看见是不可逆的。
8
-
9
- 好的觉醒场景会让读者感到一种深层的震撼——不是情节上的意外,而是认知层面的地震。读者会和角色一起经历那种"原来如此"的顿悟,同时感受到随之而来的复杂情感:解脱、痛苦、恐惧、释然,或者这些情感的混合体。差的觉醒场景则像开关一样——"啪"的一下,角色突然什么都明白了,读者却什么都感受不到。
10
-
11
- **关键区分:**
12
- - **认知觉醒:** 角色看清了外部世界的真相(阴谋、谎言、被隐藏的事实)
13
- - **自我觉醒:** 角色看清了自己的真实面目(一直在逃避的弱点、被压抑的欲望、自我欺骗的模式)
14
-
15
- 最深刻的觉醒往往同时包含这两个层面——在看清外部真相的同时,也不得不面对内心的真实。
16
-
17
- ---
18
-
19
- ## 核心元素
20
-
21
- ### 1. 之前的盲区/错误认知
22
-
23
- 觉醒的力量取决于之前的"沉睡"有多深。角色必须有一个根深蒂固的错误信念或认知盲区,而且这个盲区必须是有原因的——不是因为角色愚蠢,而是因为某种心理防御机制、环境限制或信息不对称。
24
-
25
- - **自我保护型盲区:** 角色不是看不见,而是不敢看。承认真相意味着承认自己的失败、软弱或罪过,所以潜意识选择了回避。
26
- - **环境塑造型盲区:** 角色从小被灌输的世界观、价值观限制了他的视野。他不知道自己不知道。
27
- - **信息缺失型盲区:** 关键信息被刻意隐瞒,角色基于不完整的信息做出了合理但错误的判断。
28
-
29
- ### 2. 触发事件
30
-
31
- 觉醒需要一个催化剂——某个事件、某句话、某个场景,打破了角色维持已久的认知平衡。
32
-
33
- - **触发事件不等于觉醒本身:** 它是点燃火药的火花,但火药必须已经积累了足够长的时间。
34
- - **最好的触发事件是"最后一根稻草":** 不是一个惊天动地的大事件,而是一个看似微小但恰好击中要害的瞬间。
35
- - **触发事件应该与角色的核心盲区直接相关:** 它必须精准地戳破角色一直在维护的那个幻象。
36
-
37
- ### 3. 认知转变的过程
38
-
39
- 觉醒不是一个开关,而是一个过程。即使在"顿悟"的那一刻,角色的内心也在经历剧烈的翻涌。
40
-
41
- - **否认阶段:** 第一反应往往是拒绝接受。"不可能。""你在骗我。""这不是真的。"
42
- - **崩塌阶段:** 旧的认知框架开始瓦解,角色感到迷失和恐惧。过去的一切都需要重新解读。
43
- - **重建阶段:** 角色开始用新的视角审视过去的经历,拼图逐渐成形。那些曾经不理解的细节突然有了意义。
44
- - **接受阶段:** 角色接受了新的现实,尽管这个现实可能令人痛苦。
45
-
46
- ### 4. 觉醒后的行动
47
-
48
- 真正的觉醒必须导致行动的改变。如果角色"觉醒"了但行为没有任何变化,那这个觉醒就是虚假的。
49
-
50
- - **行动必须与觉醒的内容一致:** 看清了谎言的人会去追寻真相;看清了自己弱点的人会去面对恐惧。
51
- - **行动可能是艰难的:** 觉醒后的正确选择往往不是容易的选择。
52
- - **行动可能是不完美的:** 角色刚刚觉醒,还在适应新的认知,行动中可能带着犹豫和笨拙。
53
-
54
- ---
55
-
56
- ## 常见套路(应避免)
57
-
58
- - ❌ **瞬间顿悟(无过程):** 角色前一秒还浑浑噩噩,后一秒就彻底想通了一切。没有挣扎、没有否认、没有内心的翻涌。这种"开关式觉醒"缺乏情感真实性,读者无法跟随角色经历认知转变的过程,因此也无法产生共鸣。真实的觉醒是痛苦的、混乱的、需要时间消化的。
59
-
60
- - ❌ **别人一句话就觉醒:** 导师/朋友/陌生人说了一句充满智慧的话,角色立刻醍醐灌顶。这种写法把觉醒简化成了信息传递——好像角色之前只是缺少一条信息,而不是被深层的心理机制困住。真正的觉醒不是"听到了正确答案",而是"终于准备好接受正确答案了"。
61
-
62
- - ❌ **觉醒后立刻变强:** 角色一旦"想通了",就突然获得了之前没有的能力、勇气或智慧。觉醒是认知的转变,不是能力的升级。看清了自己的恐惧不等于立刻克服了恐惧;理解了问题的本质不等于立刻有了解决方案。
63
-
64
- - ❌ **觉醒=开挂:** 觉醒被当作一种"升级机制",角色觉醒后就进入了新的"等级",之前的困难都不再是困难。这种处理方式把深刻的心理转变矮化成了游戏里的经验值系统,完全丧失了觉醒应有的复杂性和重量感。
65
-
66
- ---
67
-
68
- ## 新颖变体
69
-
70
- ### 变体1:痛苦的觉醒(发现自己一直是错的)
71
-
72
- 角色觉醒后发现,自己一直坚信的东西是错误的——而且自己因为这个错误信念伤害了别人。
73
-
74
- **核心张力:** 觉醒带来的不是解脱,而是深深的愧疚和自我厌恶。角色必须面对一个残酷的事实:自己不是受害者,而是加害者;不是英雄,而是问题的一部分。
75
-
76
- **写法要点:**
77
- - 觉醒的过程伴随着对过去行为的重新审视——每一个曾经觉得"理所当然"的决定,现在都变成了罪证
78
- - 角色可能会经历强烈的自我否定:"我怎么会这么蠢/这么残忍/这么自私?"
79
- - 不要急于给角色"救赎"——让他在痛苦中停留足够长的时间,让读者感受到这种认知崩塌的重量
80
- - 觉醒后的行动不是"变好",而是"试图弥补"——而弥补往往是不完整的、不够的
81
-
82
- **适用场景:** 角色弧线中的道德转折、家庭关系中的认知反转、权力者意识到自己的压迫
83
-
84
- ### 变体2:渐进觉醒(不是一个点而是过程)
85
-
86
- 觉醒不是发生在某一个戏剧性的时刻,而是像潮水一样慢慢涨上来。角色在很长一段时间内不断接收到与旧认知矛盾的信息,每一次都动摇一点,直到某天发现自己已经站在了完全不同的地方。
87
-
88
- **核心张力:** 角色自己都不知道自己在觉醒。没有一个明确的"顿悟时刻",只有回头看时才意识到自己已经变了。
89
-
90
- **写法要点:**
91
- - 用多个小场景代替一个大场景,每个场景都让角色的旧信念出现一条裂缝
92
- - 角色可能会反复摇摆——今天觉得"也许我错了",明天又退回到"不,我是对的"
93
- - 关键技巧是让读者比角色更早意识到觉醒正在发生,制造一种"你快看清了,再往前一步"的阅读期待
94
- - 最终的"确认时刻"不需要很戏剧化——可能只是角色平静地做出了一个与过去截然不同的选择
95
-
96
- **适用场景:** 长篇小说中的角色成长、信仰/价值观的缓慢转变、关系中的认知变化
97
-
98
- ### 变体3:被迫觉醒(不想面对但不得不)
99
-
100
- 角色并不想觉醒。他宁愿继续活在幻象中,因为真相太痛苦、太可怕、太颠覆。但外部事件把真相强行塞到了他面前,他无处可逃。
101
-
102
- **核心张力:** 觉醒不是主动追求的结果,而是被现实拖着走的被动过程。角色在觉醒的每一步都在抵抗。
103
-
104
- **写法要点:**
105
- - 展示角色在觉醒前的"舒适区"——他为什么不想改变,他在旧认知中获得了什么(安全感、身份认同、关系稳定)
106
- - 真相的揭示应该是不可回避的——不是"你可以选择面对",而是"你已经没有选择了"
107
- - 角色的抵抗要写得充分:愤怒、否认、讨价还价、试图找到其他解释
108
- - 觉醒后角色的第一反应不是行动,而是哀悼——为失去的幻象、失去的安全感、失去的旧自我而哀悼
109
-
110
- **适用场景:** 创伤揭示、背叛发现、身份危机、被保护的真相被打破
111
-
112
- ### 变体4:觉醒的代价(看清真相意味着失去天真)
113
-
114
- 觉醒本身是正确的、必要的,但它带走了角色身上某种珍贵的东西——天真、信任、对世界的善意假设、或者某段关系的纯粹性。
115
-
116
- **核心张力:** 觉醒是成长,但成长意味着失去。角色获得了智慧,却失去了纯真。这不是一个"好"或"坏"的结果,而是一个复杂的、苦乐参半的转变。
117
-
118
- **写法要点:**
119
- - 在觉醒之前,充分展示角色"天真状态"的美好——让读者也舍不得这种天真被打破
120
- - 觉醒后,角色看世界的眼光变了,曾经觉得美好的东西现在看起来不一样了
121
- - 用具体的细节展示"失去":角色再也无法像从前那样笑、那样信任、那样毫无保留地爱
122
- - 不要把觉醒写成纯粹的"升级"——让读者感受到,有些东西一旦失去就再也回不来了
123
-
124
- **适用场景:** 成长故事(coming-of-age)、失去信仰、发现偶像的真面目、童年幻想的破灭
125
-
126
- ---
127
-
128
- ## 情感真实性
129
-
130
- ### 如何让觉醒感觉是真实的、有重量的
131
-
132
- **1. 铺垫盲区的合理性**
133
-
134
- 角色之前"看不见"必须有充分的理由。不要让读者觉得角色是傻子——要让读者理解,在那种环境、那种心理状态下,任何人都可能有同样的盲区。最好的做法是让读者自己也被蒙在鼓里,和角色一起经历觉醒的冲击。
135
-
136
- **2. 身体反应先于理性分析**
137
-
138
- 真实的觉醒首先是身体层面的反应:胃部紧缩、呼吸困难、手脚发麻、耳鸣、视线模糊。角色的身体比大脑更早意识到发生了什么。先写身体的反应,再写思维的追赶,这个顺序会让场景更加真实。
139
-
140
- **3. 记忆的重新解读**
141
-
142
- 觉醒最有力量的表现之一,是角色开始用新的视角重新审视过去的记忆。那些曾经觉得正常的对话、曾经忽略的细节、曾经误解的表情——在觉醒之后全部获得了新的含义。这种"记忆重构"不仅深化了觉醒的冲击力,还能巧妙地回收之前埋下的伏笔。
143
-
144
- **4. 觉醒不等于接受**
145
-
146
- 看清真相和接受真相是两回事。角色可能已经"知道"了,但情感上还没有准备好接受。这种认知与情感之间的时间差是非常真实的人类体验——我们都有过"道理我都懂,但就是做不到"的时刻。允许角色在觉醒后仍然挣扎,这比立刻"想通了"更有说服力。
147
-
148
- **5. 周围人的反应**
149
-
150
- 觉醒不是发生在真空中的。角色觉醒后,他与周围人的关系会发生微妙或剧烈的变化。有些人会支持他的新认知,有些人会抵制,有些人会感到被背叛。这些反应为觉醒增加了社会维度,让它不仅仅是一个内心事件。
151
-
152
- ---
153
-
154
- ## 示例分析
155
-
156
- ### 示例1:《黑客帝国》(The Matrix, 1999)——Neo 的觉醒
157
-
158
- **场景:** Neo 选择了红色药丸,从虚拟世界中醒来,发现自己一直生活在机器制造的幻象中。他看到了真实的世界——一个被机器统治的废墟。
159
-
160
- **为什么有效:**
161
-
162
- - **盲区的合理性:** Neo 之前的"沉睡"不是因为他愚蠢,而是因为整个系统就是为了让人类无法察觉真相而设计的。每一个人都被困在同样的幻象中,Neo 只是其中之一。这让读者完全理解他的盲区,甚至会反思自己是否也活在某种"矩阵"中。
163
- - **渐进的铺垫:** 在觉醒之前,Neo 已经感到了"不对劲"——他是一个黑客,一直在寻找"矩阵是什么"的答案。这种模糊的不安感为觉醒做了充分的情感铺垫。他不是从零开始觉醒,而是一直在觉醒的边缘徘徊。
164
- - **身体层面的冲击:** 觉醒不是一个抽象的认知过程。Neo 从培养皿中醒来时,身体虚弱到无法站立,眼睛因为从未使用过而疼痛。这种物理上的痛苦让觉醒有了具体的、可感知的重量。
165
- - **觉醒的代价:** Neo 获得了真相,但失去了舒适的幻象生活。Cypher 这个角色的存在完美地诠释了觉醒的代价——他宁愿回到矩阵中,因为"无知是福"。这个对比让观众意识到:觉醒不一定是"好事",它是一个沉重的选择。
166
-
167
- **技巧提炼:** 觉醒的力量不仅在于"发现真相",更在于"真相的代价"。让读者看到觉醒带走了什么,而不仅仅是带来了什么。
168
-
169
- ### 示例2:《圣诞颂歌》(A Christmas Carol, 1843)——Scrooge 的觉醒
170
-
171
- **场景:** 吝啬鬼 Scrooge 在圣诞夜被三个幽灵依次带去看过去、现在和未来,最终在自己的墓碑前彻底觉醒,决定改变自己的生活方式。
172
-
173
- **为什么有效:**
174
-
175
- - **盲区的心理根源:** Scrooge 的冷酷和吝啬不是天生的。"过去之灵"揭示了他曾经是一个有爱、有热情的年轻人,是恐惧和失去逐渐把他变成了现在的样子。读者理解了他的盲区不是无知,而是自我保护——他封闭自己是为了不再受伤。这让角色从"可恨的吝啬鬼"变成了"令人心疼的受伤者"。
176
- - **三阶段的渐进觉醒(变体2):** 狄更斯没有让 Scrooge 一次性觉醒,而是设计了三个阶段。"过去之灵"让他看到自己是如何变成现在这样的(理解根源);"现在之灵"让他看到自己的行为正在伤害谁(面对后果);"未来之灵"让他看到如果不改变会怎样(恐惧驱动)。每一个阶段都在加深觉醒的程度,像拧螺丝一样一圈一圈地拧紧。
177
- - **被迫觉醒(变体3):** Scrooge 并不想面对这些。他在每一个阶段都试图抵抗、否认、逃避。他对幽灵说"别再给我看了",他试图遮住自己的眼睛。这种抵抗让觉醒更加真实——没有人会心甘情愿地面对自己最丑陋的一面。
178
- - **觉醒后的行动:** Scrooge 醒来后的第一件事不是空洞的忏悔,而是具体的行动——给穷人送火鸡、给员工加薪、去侄子家过圣诞。这些行动直接对应了他之前的错误,让觉醒有了实质性的落地。
179
-
180
- **技巧提炼:** 分阶段的觉醒比一次性的顿悟更有力量。每个阶段攻破角色的一层防线,让读者亲眼看到角色的心理防御是如何一层一层被剥开的。
181
-
182
- ---
183
-
184
- ## 写作提示
185
-
186
- ### 五个设计问题
187
-
188
- 在写觉醒场景之前,问自己:
189
-
190
- 1. **角色的盲区是什么,为什么存在?** 明确定义角色"看不见"的东西,以及他看不见的心理原因。盲区越有根基,觉醒就越有力量。如果盲区只是"不知道某个信息",觉醒就只是"获得了信息",缺乏情感深度。
191
-
192
- 2. **觉醒的触发事件是否足够精准?** 触发事件不需要很大,但必须精准地击中角色盲区的核心。一个与角色核心恐惧无关的事件,无论多么戏剧化,都无法触发真正的觉醒。
193
-
194
- 3. **角色在觉醒过程中会抵抗吗?** 如果角色毫无抵抗地接受了新认知,觉醒就太容易了。想想角色会如何否认、逃避、合理化。抵抗的程度反映了旧认知对角色的重要性。
195
-
196
- 4. **觉醒让角色失去了什么?** 每一次觉醒都有代价。也许是失去了一段关系的幻象,也许是失去了对自己的正面评价,也许是失去了一种让自己感到安全的世界观。明确这个代价,并在场景中展示它。
197
-
198
- 5. **觉醒后的第一个行动是什么?** 这个行动是觉醒真实性的试金石。它应该是具体的、与觉醒内容直接相关的、可能是艰难的。如果你想不出觉醒后角色会做什么不同的事,也许这个觉醒还不够深刻。
199
-
200
- ### 五项检查清单
201
-
202
- - [ ] **盲区检查:** 角色之前的错误认知是否有充分的心理/环境原因?读者是否能理解(甚至认同)角色为什么会"看不见"?
203
- - [ ] **过程检查:** 觉醒是否有过程(否认、挣扎、接受),而不是一个瞬间的开关?
204
- - [ ] **身体检查:** 觉醒时刻是否有具体的身体反应和感官细节,而不仅仅是抽象的"他明白了"?
205
- - [ ] **代价检查:** 觉醒是否伴随着真实的失去——失去幻象、失去天真、失去某种舒适?
206
- - [ ] **行动检查:** 觉醒是否导致了具体的、可见的行为改变?
207
-
208
- ---
209
-
210
- ## 进阶技巧
211
-
212
- ### 技巧1:镜像觉醒(Mirror Awakening)
213
-
214
- 让角色通过观察另一个人来觉醒——那个人就像一面镜子,映射出角色自己不愿面对的真相。
215
-
216
- **具体做法:**
217
- - 设置一个与主角处境相似但更极端的角色("如果你继续这样下去,就会变成他")
218
- - 让主角在观察这个人时产生强烈的排斥感——而这种排斥恰恰是因为他在对方身上看到了自己
219
- - 觉醒的时刻不是"我理解了他",而是"我就是他"
220
- - 这种技巧的力量在于,角色的防御机制在面对"别人的问题"时会放松警惕,等他意识到这其实是"自己的问题"时,已经来不及逃避了
221
-
222
- **效果:** 镜像觉醒绕过了角色的心理防线。直接告诉角色"你有问题"会激发抵抗,但让他自己在镜子中看到问题,抵抗就无处着力。
223
-
224
- ### 技巧2:碎片拼图(Fragment Puzzle)
225
-
226
- 不在一个场景中完成觉醒,而是将觉醒的线索分散在多个场景中,让角色(和读者)像拼拼图一样逐渐看到全貌。
227
-
228
- **具体做法:**
229
- - 在不同的场景中给出看似无关的碎片信息——一句话、一个表情、一个不合理的细节
230
- - 每个碎片单独看都不足以触发觉醒,但当它们在角色脑中汇聚时,画面突然清晰了
231
- - 关键技巧:让读者比角色早一步拼出真相,这样当角色终于觉醒时,读者的感受不是"惊讶"而是"终于"
232
- - 最后的拼图完成时刻可以非常安静——不需要戏剧化的场景,也许只是角色独自坐着,突然所有碎片在脑中归位
233
-
234
- **效果:** 碎片拼图式的觉醒让读者深度参与到觉醒的过程中。读者不是被动地观看角色觉醒,而是主动地和角色一起拼凑真相。这种参与感让觉醒的情感冲击力成倍增加。
235
-
236
- ### 技巧3:双重觉醒(Double Awakening)
237
-
238
- 角色以为自己觉醒了,但后来发现第一次"觉醒"只是另一层幻象。真正的觉醒在更深处。
239
-
240
- **具体做法:**
241
- - 第一次觉醒要写得足够真实,让读者也相信这就是最终的真相
242
- - 在第一次觉醒和第二次觉醒之间,让角色基于"新认知"行动一段时间,建立新的确定感
243
- - 第二次觉醒的触发应该来自第一次觉醒的逻辑延伸——角色顺着"新真相"深挖,发现了更深层的真相
244
- - 第二次觉醒的冲击力远大于第一次,因为角色刚刚重建的认知框架再次被打碎,这一次他连"我能看清真相"的自信都失去了
245
-
246
- **效果:** 双重觉醒挑战了"觉醒=终点"的叙事惯性。它告诉读者(和角色):认知的深化是没有终点的,每一次"看清"都可能只是更大盲区的边缘。这种处理方式特别适合探讨认知局限性和人类自我欺骗能力的主题。