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,217 +0,0 @@
1
- # Confrontation (对峙)
2
-
3
- ## 核心定义
4
-
5
- 对峙 = 角色之间的正面冲突,可以是语言对峙或武力对峙。积累的矛盾在此刻爆发。
6
-
7
- 对峙是故事中压力锅终于揭盖的时刻。在此之前,角色之间的分歧、误解、利益冲突像地壳下的岩浆一样缓慢积聚;在对峙场景中,这些力量冲破地表,迫使所有人直面真相。对峙不同于普通的争吵或打斗——争吵可以是日常的、琐碎的,打斗可以是纯粹的肉体冲突;而对峙必然涉及核心价值观、根本立场或不可调和的利益之间的碰撞。
8
-
9
- 对峙的本质是**两种不可共存的意志的正面交锋**。它要求双方都亮出底牌,不再回避、不再伪装。正因如此,对峙往往是角色关系的转折点——对峙之后,关系要么升华,要么破裂,但绝不可能回到从前。
10
-
11
- ---
12
-
13
- ## 核心元素
14
-
15
- ### 1. 矛盾的积累 (Escalation of Conflict)
16
-
17
- 对峙不能凭空发生。读者需要看到矛盾从裂缝扩大为鸿沟的完整过程。
18
-
19
- **积累方式:**
20
- - 多次小冲突的叠加,每次都比上一次更激烈
21
- - 角色之间反复出现的"禁区话题"——每次接近都被回避
22
- - 第三方事件不断加剧双方的对立(资源争夺、立场选择、忠诚考验)
23
- - 一方或双方的忍耐逐渐接近极限,通过微表情、语气变化、行为失控来暗示
24
-
25
- **关键原则:** 积累的过程本身就应该有戏剧张力。每一次"差点爆发但忍住了"都在告诉读者:真正的对峙即将到来,而且会比想象中更猛烈。读者的期待感是对峙场景爆发力的重要来源。
26
-
27
- ### 2. 对峙的触发 (The Trigger)
28
-
29
- 为什么是**现在**爆发?必须有一个具体的、可信的导火索。
30
-
31
- **有效的触发器:**
32
- - 最后一根稻草——一件看似微小的事情,但恰好踩在了积累已久的痛点上
33
- - 真相暴露——一直被隐瞒的秘密突然曝光,信任瞬间崩塌
34
- - 不可逆的行动——一方做出了无法挽回的选择,另一方被迫回应
35
- - 第三方的介入——外部力量打破了脆弱的平衡
36
- - 时间压力——必须在此刻做出决定,再也没有回避的余地
37
-
38
- **差的触发器:** 没有任何铺垫,角色突然"受够了"就开始对峙。或者触发事件与积累的矛盾毫无关联,让读者觉得莫名其妙。
39
-
40
- ### 3. 双方的立场 (Opposing Positions)
41
-
42
- 对峙的力量来自双方都有道理,或者至少双方都真诚地相信自己是对的。
43
-
44
- **立场设计要点:**
45
- - 双方的立场都应该有内在逻辑和情感基础
46
- - 最好的对峙是"对与对"的冲突,而非"对与错"的审判
47
- - 每一方的立场都应该反映其核心价值观、过往经历或深层恐惧
48
- - 立场之间的不可调和性越强,对峙的张力越大
49
-
50
- **关键原则:** 如果读者能轻易判断谁对谁错,对峙就失去了力量。让读者在两方之间左右为难,甚至读完之后仍然无法下定论——这才是真正有深度的对峙。
51
-
52
- ### 4. 对峙的结果 (Aftermath)
53
-
54
- 对峙必须产生不可逆的后果。如果对峙之后一切照旧,这个场景就是空洞的。
55
-
56
- **可能的结果:**
57
- - 关系的永久改变(信任破裂、联盟瓦解、或反而因为坦诚而更加牢固)
58
- - 权力格局的重新洗牌
59
- - 角色被迫面对自己一直回避的真相
60
- - 新的行动路线被开启,旧的可能性被关闭
61
- - 一方或双方付出实质性的代价
62
-
63
- ---
64
-
65
- ## 常见套路(应避免)
66
-
67
- 以下是被过度使用的对峙模式,除非你有意颠覆它们,否则应当回避:
68
-
69
- - **无铺垫的突然对峙:** 两个角色之间没有任何可见的矛盾积累,突然就开始激烈对峙。读者会感到困惑而非紧张。对峙的爆发力与铺垫的充分程度成正比——没有铺垫的对峙就像没有引线的炸弹,不会爆炸,只会让人疑惑。
70
- - **一方完全碾压:** 对峙变成了单方面的训斥或压制。一方占据绝对的道德高地和话语权,另一方只能低头认错或被打得毫无还手之力。这不是对峙,这是审判。真正的对峙需要双方势均力敌,至少在某个维度上旗鼓相当。
71
- - **对峙后无后果:** 两人激烈对峙之后,下一章就和好如初,仿佛什么都没发生过。这会让读者觉得之前的情感投入被浪费了。对峙是关系的地震,震后必然有余波——裂痕、重建、或永久的改变。
72
- - **纯武力无情感:** 对峙变成了单纯的打斗场面,拳拳到肉但毫无情感深度。读者关心的不是谁打赢了,而是这场冲突背后的情感和意义。没有情感支撑的武力对峙,和路人打架没有区别。
73
- - **反派独白式对峙:** 一方(通常是反派)在对峙中长篇大论地解释自己的计划和动机,另一方只是被动地听。这不是对峙,这是演讲。真正的对峙是双向的、动态的、充满攻防转换的。
74
-
75
- ---
76
-
77
- ## 新颖变体
78
-
79
- ### 变体1: 安静的对峙(不是吵架而是冷静的摊牌)
80
-
81
- **描述:** 没有提高嗓门,没有摔东西,没有歇斯底里。两个人用最平静的语气说出最致命的话。声音越轻,杀伤力越大。这种对峙的恐怖之处在于:双方都已经过了愤怒的阶段,进入了冷静的、深思熟虑的决裂。
82
-
83
- **经典范例:** 电影《革命之路》(Revolutionary Road) 中 Frank 和 April 的多次对峙。他们不是在吵架,而是在用精确的语言解剖彼此的谎言和自欺。每一句话都像手术刀,切开对方精心维护的幻象。最可怕的不是愤怒,而是那种"我已经看透你了"的冷静。
84
-
85
- **为什么有效:** 安静的对峙违反了读者的预期——我们习惯了对峙等于激烈冲突,当两个人用喝下午茶的语气讨论关系的死亡时,反差本身就制造了巨大的不安感。同时,冷静意味着理性,理性意味着每一句话都是经过思考的、不可收回的,这比冲动之下的口不择言更加致命。
86
-
87
- ### 变体2: 不对等对峙(弱者对强者)
88
-
89
- **描述:** 对峙的双方在权力、地位、武力上存在巨大差距,但弱势一方依然选择正面对抗。这种对峙的力量不在于结果(弱者很可能会输),而在于弱者站出来这个行为本身所展现的勇气。
90
-
91
- **经典范例:** 电影《辛德勒的名单》(Schindler's List) 中 Schindler 与 Amon Goeth 之间的多次交锋。Schindler 没有军队、没有权力,他唯一的武器是话术和对人性的理解。每一次他试图从 Goeth 手中救下一个人,都是一场不对等的对峙——他必须在不激怒对方的前提下达成目的,每一句话都走在刀刃上。
92
-
93
- **为什么有效:** 不对等对峙天然具有高风险。弱者没有退路,强者随时可以终结一切。读者的紧张感不是来自"谁会赢",而是来自"弱者能撑多久"以及"强者什么时候会失去耐心"。同时,弱者的勇气会激发读者强烈的情感共鸣——我们都有过面对强大力量却不得不站出来的时刻。
94
-
95
- ### 变体3: 内心对峙(与自己的对峙)
96
-
97
- **描述:** 对峙的双方不是两个人,而是一个人内心的两个声音。角色被迫在两个不可调和的自我之间做出选择——过去的自己与现在的自己、理想与现实、欲望与责任。这种对峙没有外部的戏剧性,但内在的撕裂感同样强烈。
98
-
99
- **经典范例:** 莎士比亚《哈姆雷特》(Hamlet) 中"To be or not to be"的独白。这不仅仅是关于生死的哲学思考,更是哈姆雷特内心两种力量的正面交锋——行动的冲动与犹豫的本能、复仇的责任与对暴力的厌恶、活下去的意志与对存在的厌倦。整段独白就是一场没有赢家的内心战争。
100
-
101
- **为什么有效:** 内心对峙触及了人类最普遍的体验——我们都曾在矛盾中撕裂过自己。当角色的内心冲突足够真实、足够深刻时,读者会在其中看到自己的影子。同时,内心对峙的结果往往决定了角色接下来的关键行动,因此它虽然"安静",却是推动情节的核心引擎。
102
-
103
- ### 变体4: 延迟对峙(该对峙时选择回避,张力更大)
104
-
105
- **描述:** 所有条件都已成熟,读者期待对峙爆发,但角色选择了回避。一方或双方明明有话要说、有账要算,却刻意维持表面的平静。这种"不发生的对峙"产生的张力,有时比真正的对峙更加令人窒息。
106
-
107
- **经典范例:** 电影《教父》(The Godfather) 中 Michael Corleone 在家族聚会上的多个场景。他知道谁背叛了家族,对方也隐约感觉到 Michael 知道了。但两人在餐桌上依然谈笑风生,互相敬酒。每一个微笑背后都是刀光剑影,每一句客套话都是试探和警告。真正的清算被延迟到了最后,而这段漫长的等待让最终的爆发具有了毁灭性的力量。
108
-
109
- **为什么有效:** 延迟对峙利用了"悬念"的力量。读者知道暴风雨即将来临,但不知道什么时候。这种不确定性让每一个看似平常的场景都充满了潜在的危险。同时,回避本身也是一种角色塑造——它揭示了角色的策略性、隐忍能力,或者对冲突的恐惧。当对峙最终发生时,延迟积累的能量会让爆发更加猛烈。
110
-
111
- ---
112
-
113
- ## 情感真实性
114
-
115
- 如何让对峙场景令读者信服,而不是让读者觉得"作者在强行制造冲突":
116
-
117
- ### 原则1:双方都有道理
118
-
119
- 最无力的对峙是"好人教训坏人"。最有力的对峙是读者读完之后说不清谁对谁错。给对峙双方都赋予合理的动机和逻辑——即使一方的行为在道德上有问题,也要让读者理解他为什么会走到这一步。当读者能同时共情双方时,对峙的情感冲击力会成倍增加。
120
-
121
- ### 原则2:情绪的层次感
122
-
123
- 真实的对峙中,情绪不是单一的。愤怒的背后可能是恐惧,指责的背后可能是受伤,冷漠的背后可能是绝望。让角色在对峙过程中展现情绪的多个层次——从表面的攻击性到深层的脆弱性。当盔甲出现裂缝、真实的情感泄露出来时,就是对峙场景最动人的瞬间。
124
-
125
- ### 原则3:语言的武器化
126
-
127
- 在对峙中,角色会使用他们最了解对方的部分作为武器。亲密关系中的对峙尤其残酷,因为双方都知道对方的软肋在哪里。一句精准的话可以比一拳更具毁灭性。但要注意:角色说出伤害性的话之后,应该有后果——要么立刻后悔,要么关系出现不可修复的裂痕。
128
-
129
- ### 原则4:身体语言与潜台词
130
-
131
- 对峙中最重要的信息往往不在台词里,而在台词之间。攥紧的拳头、移开的目光、突然变得僵硬的肩膀、不自觉后退的半步——这些身体语言泄露了角色试图隐藏的真实情感。同时,角色说的话和他们真正想说的话之间的差距,就是潜台词的空间。"你走吧"可能意味着"求你留下来";"我不在乎"可能意味着"我在乎到快要崩溃"。
132
-
133
- ---
134
-
135
- ## 示例分析
136
-
137
- ### 示例1:《十二怒汉》(12 Angry Men) 陪审团的对峙
138
-
139
- **场景:** 十二名陪审员在闷热的房间里讨论一桩看似板上钉钉的谋杀案。十一人投有罪票,只有八号陪审员(亨利·方达饰)投了无罪票。整部电影就是一场漫长的、多层次的对峙。
140
-
141
- **元素分析:**
142
-
143
- - **矛盾的积累:** 影片的天才之处在于,矛盾不是一次性爆发的,而是像剥洋葱一样层层递进。每当八号陪审员提出一个合理质疑,多数派的阵营就出现一道裂缝。随着越来越多的人改变立场,剩余的"有罪派"压力越来越大,情绪也越来越激烈。
144
- - **双方的立场:** 这不是简单的"正义 vs. 偏见"。有罪派中有人是基于证据的理性判断,有人是出于个人偏见,有人只是想早点回家看球赛。无罪派也不是确信被告无辜,而是认为"合理怀疑"尚未被排除。每个人的立场都反映了他的性格、背景和价值观。
145
- - **对峙的触发:** 多个触发点层层推进。最关键的转折是当三号陪审员(最顽固的有罪派)在愤怒中喊出"我要杀了你!"——然后意识到自己刚刚证明了"我要杀了你"这句话不一定代表真正的杀意,恰好推翻了控方的一个关键证据。
146
- - **对峙的结果:** 每一轮对峙都产生了不可逆的变化——有人改变了立场,有人暴露了偏见,有人被迫面对自己的内心。最终三号陪审员的崩溃不仅仅是关于案件的,更是关于他与自己儿子破裂关系的——对峙剥去了他所有的防御,露出了最深处的伤痛。
147
-
148
- **写作启示:** 对峙不必是两个人之间的。群体对峙中,每个参与者的立场变化都可以成为独立的戏剧弧线。同时,最好的对峙往往揭示的不是"谁对谁错",而是"每个人为什么会这样想"。
149
-
150
- ### 示例2:《教父》(The Godfather) Michael 与 Kay 的对峙
151
-
152
- **场景:** 影片接近尾声,Kay 直接问 Michael:"你有没有下令杀死 Carlo?"Michael 沉默片刻,然后说:"不。"Kay 选择相信他。但随后,她透过正在关闭的书房门,看到手下们向 Michael 行礼,称他为"Don Corleone"。门缓缓关上,将 Kay 隔绝在外。
153
-
154
- **元素分析:**
155
-
156
- - **矛盾的积累:** 整部电影中,Michael 从"不想参与家族生意"的局外人逐渐变成冷酷的教父。Kay 见证了这个过程,但一直选择相信 Michael 还是那个她爱上的人。矛盾在每一次 Michael 的谎言和 Kay 的自欺中悄然积累。
157
- - **双方的立场:** Kay 代表的是正常世界的道德标准——杀人是错的,谎言是不可接受的。Michael 代表的是家族的逻辑——保护家人需要不择手段,而有些真相对方承受不起。两种立场都有其内在的合理性,但不可能共存。
158
- - **对峙的触发:** Kay 的直接提问是触发器。但真正的对峙不在于 Michael 的回答(他撒了谎),而在于那扇缓缓关闭的门——它是一个无声的、视觉化的对峙结果:Michael 选择了家族,Kay 被永远排除在他的真实世界之外。
159
- - **对峙的结果:** 这场对峙的毁灭性在于它的安静。没有争吵,没有眼泪,没有摔门而去。只有一扇门关上,一段关系的本质被永久定义。Kay 从此知道了答案(即使 Michael 否认),而 Michael 从此知道他再也无法回到从前的自己。
160
-
161
- **写作启示:** 对峙最有力的时刻不一定是言语交锋,也可以是一个动作、一个画面、一扇关上的门。有时候,不说出口的真相比说出口的谎言更具对峙的力量。同时,对峙的"结果"可以是象征性的——一个视觉意象有时比千言万语更能传达关系的本质变化。
162
-
163
- ---
164
-
165
- ## 写作提示
166
-
167
- ### 设计对峙时问自己
168
-
169
- 1. **矛盾积累够了吗?** 回顾前文,确认读者能清楚地追溯到矛盾的起源和升级过程。如果对峙的爆发让读者感到意外(不是"终于来了"而是"怎么突然就吵起来了"),说明铺垫不足。
170
-
171
- 2. **双方的立场是否都站得住脚?** 试着分别为对峙的两方写一段辩护词。如果你发现自己很难为其中一方辩护,说明这一方的立场还不够充分,需要加强。最好的对峙让读者觉得"两边都有道理,但两边不可能同时满足"。
172
-
173
- 3. **触发事件是否与核心矛盾相关?** 导火索不需要很大,但必须与积累的矛盾有逻辑联系。一个完全无关的事件引发对峙,会让读者觉得牵强。
174
-
175
- 4. **对峙之后世界会怎样改变?** 在写对峙之前,先想清楚对峙的后果。如果你无法说出对峙之后有什么不可逆的变化,那这场对峙可能还不够重要,或者时机还不成熟。
176
-
177
- 5. **这场对峙揭示了什么新信息?** 好的对峙不仅是情绪的释放,还是信息的揭露。在对峙的高压下,角色会说出平时绝不会说的话、暴露平时绝不会暴露的弱点。这些新信息应该改变读者对角色的理解。
178
-
179
- ### 检查清单
180
-
181
- - [ ] 对峙之前有至少 3 个场景展示了矛盾的积累和升级
182
- - [ ] 双方的立场都有内在逻辑,读者能理解(不一定认同)双方的动机
183
- - [ ] 触发事件具体、可信,与核心矛盾有直接关联
184
- - [ ] 对峙过程中有攻防转换,不是单方面的碾压
185
- - [ ] 对峙揭示了角色的新面向(深层恐惧、隐藏的脆弱、不为人知的过去)
186
- - [ ] 对峙之后产生了不可逆的后果,影响后续情节走向
187
-
188
- ---
189
-
190
- ## 进阶技巧
191
-
192
- ### 技巧1:节奏控制(快慢交替)
193
-
194
- 对峙场景的节奏不应该是匀速的。最有效的对峙像音乐一样有起伏:
195
-
196
- - **慢:** 对峙开始时的试探阶段,双方用看似平常的对话互相摸底
197
- - **快:** 某句话触碰到了痛点,节奏突然加速,台词变短、交锋变密
198
- - **停:** 在最激烈的时刻突然插入一个沉默——一个停顿、一个眼神、一个深呼吸。这个"停"会让之前的"快"产生回响,也让接下来的爆发更有冲击力
199
- - **爆:** 最终的高潮,所有积累的情感在一瞬间倾泻而出
200
-
201
- **实操建议:** 用句子长度来控制节奏。铺垫阶段用长句,营造压抑感;交锋加速时用短句甚至断句,制造紧迫感;沉默时用环境描写或身体语言来填充空白,让读者在"无声"中感受到最大的张力。
202
-
203
- ### 技巧2:第三方视角(旁观者的恐惧)
204
-
205
- 不从对峙双方的视角来写,而是从一个被迫旁观的第三者视角来写。这个第三者可能是双方的孩子、下属、朋友,或者一个无辜的路人。
206
-
207
- **效果:** 第三方视角提供了一种独特的情感体验——无力感。旁观者无法介入、无法阻止,只能眼睁睁看着两个他在乎的人互相伤害。这种无力感会强烈地传递给读者。同时,第三方视角可以提供更客观的观察——对峙双方都沉浸在自己的情绪中,只有旁观者能同时看到双方的痛苦。
208
-
209
- **实操建议:** 选择一个与对峙双方都有情感联系的第三者作为视角人物。他的内心冲突(该帮谁?该不该介入?)可以成为对峙场景的第三条情感线,增加场景的复杂度和深度。
210
-
211
- ### 技巧3:对峙中的脆弱时刻(盔甲的裂缝)
212
-
213
- 在对峙最激烈的时候,让一方突然露出脆弱的一面——声音颤抖、眼眶泛红、说出一句暴露内心恐惧的话。这个瞬间会打破对峙的攻防模式,让场景从"谁赢谁输"转变为"两个受伤的人在互相伤害"。
214
-
215
- **效果:** 脆弱时刻是对峙场景中最有情感冲击力的部分。它提醒读者:对峙的双方不是抽象的"立场",而是有血有肉的人。当盔甲出现裂缝时,读者会突然从"看热闹"的状态切换到"心疼"的状态,情感投入瞬间加深。
216
-
217
- **实操建议:** 脆弱时刻不能太早出现(会削弱对峙的张力),也不能太晚出现(读者已经疲惫)。最佳位置是在对峙的第二个高潮之后——双方已经互相伤害了足够多,防线开始松动,真实的情感终于从裂缝中渗出来。同时,脆弱时刻之后,对峙的走向应该发生转变——可能是缓和,可能是更深层的爆发,但不能回到之前的模式。
@@ -1,368 +0,0 @@
1
- # Bittersweet Goodbye (苦乐参半的告别)
2
-
3
- ## 核心定义
4
-
5
- 苦乐参半 = 同时包含喜悦和悲伤的复杂情感时刻。不是纯粹的快乐或悲伤,而是两者交织。
6
-
7
- 苦乐参半的告别是小说中最复杂、最具情感深度的节拍之一。它之所以强大,是因为它拒绝简单化——生活中最重要的离别几乎从来不是纯粹的悲伤或纯粹的喜悦,而是两种情感同时存在、互相渗透、彼此加强。正因为有快乐的记忆,离别才更痛;正因为离别带着痛,那些快乐的记忆才更珍贵。
8
-
9
- 这个节拍的核心张力在于**矛盾的共存**:角色同时想留下和离开,同时感到感恩和不舍,同时看到结束和开始。这种矛盾不需要被解决——它本身就是情感的真相。
10
-
11
- **核心公式**:
12
- ```
13
- 苦乐参半的力量 = 美好记忆的深度 x 分离的必然性 x 成长的真实性
14
- ```
15
-
16
- **苦乐参半 vs 纯粹悲伤 vs 纯粹喜悦**:
17
- | 维度 | 纯粹悲伤 | 苦乐参半 | 纯粹喜悦 |
18
- |------|---------|---------|---------|
19
- | 情感色调 | 单一的灰暗 | 明暗交织 | 单一的明亮 |
20
- | 角色状态 | 被动承受失去 | 主动选择离开,同时感受痛与爱 | 无痛地获得 |
21
- | 读者感受 | 同情、压抑 | 共鸣、感动、回味 | 满足、轻松 |
22
- | 叙事功能 | 制造低谷 | 完成弧线、升华主题 | 提供奖励 |
23
- | 持久性 | 容易被遗忘或回避 | 长久萦绕,反复回味 | 短暂愉悦后消散 |
24
-
25
- ---
26
-
27
- ## 核心元素
28
-
29
- ### 1. 必要的分离(不得不走)
30
-
31
- 苦乐参半的告别之所以"苦",是因为分离不是任性的选择,而是某种必然。角色不是"想走",而是"不得不走"——但这个"不得不"背后有着被理解和接受的理由。
32
-
33
- **分离的必然性来源**:
34
- - **成长的代价**:留下意味着停滞,离开才能继续成长
35
- - **使命的召唤**:有比个人情感更大的责任在等待
36
- - **时间的法则**:某些阶段必然结束,如毕业、孩子长大
37
- - **生命的规律**:衰老、死亡、不可逆转的变化
38
-
39
- **关键**:分离的必然性必须让读者信服。如果读者觉得"其实可以不走啊",苦乐参半就变成了矫情。
40
-
41
- ### 2. 美好的回忆
42
-
43
- "乐"的部分来自共同经历的美好。这些回忆不需要在告别场景中大段闪回,而是通过细节自然浮现——一个眼神、一句只有两人懂的话、一个熟悉的动作。
44
-
45
- **回忆的呈现方式**:
46
- - **物件触发**:看到某个共同拥有的东西,记忆涌上来
47
- - **习惯暴露**:不自觉地做出只有在对方面前才会做的动作
48
- - **语言密码**:说出只有两人之间才有意义的话
49
- - **感官唤起**:某种气味、声音、触感唤醒深层记忆
50
-
51
- ### 3. 成长的证明
52
-
53
- 苦乐参半的告别往往发生在角色弧线的尾声。离别本身就是成长的证据——正因为角色变了,才需要走向新的方向。
54
-
55
- **成长的体现**:
56
- - 角色能够做出以前做不到的选择(比如放手)
57
- - 角色对同一件事有了不同的理解
58
- - 角色从"需要对方"变成"感谢对方"
59
- - 角色的离开不是逃避,而是面对
60
-
61
- ### 4. 未来的希望与不确定
62
-
63
- 苦乐参半不是绝望。在悲伤之下,有一丝微弱但真实的希望——也许会再见,也许各自都会好好的,也许这段经历会永远留在心里。但这个希望不是确定的承诺,而是带着不确定性的信念。
64
-
65
- **希望的表达方式**:
66
- - 不是"我们一定会再见",而是"无论如何,这段时光是真实的"
67
- - 不是"一切都会好的",而是"我相信你会找到自己的路"
68
- - 不是消除不确定性,而是接受不确定性
69
-
70
- ---
71
-
72
- ## 常见套路(应避免)
73
-
74
- 以下是苦乐参半告别场景中被过度使用或处理失当的写法:
75
-
76
- - ❌ **过度煽情(强行催泪)**:背景音乐式的写法——大段抒情独白、角色泪流满面地回忆往事、旁白感叹"这就是青春啊"。煽情和感动是两回事。煽情是作者在用力,感动是读者自己被触动。当你越想让读者哭,读者越哭不出来。
77
- - ❌ **强行 happy ending(用重逢承诺消解离别的重量)**:"别哭,我们一定会再见的!"然后角色微笑着挥手,阳光洒在脸上。这种处理把苦乐参半变成了纯粹的乐观,完全回避了"苦"的部分。真正的苦乐参半需要让离别的痛真实地存在。
78
- - ❌ **忽略苦的部分只写乐(虚假的洒脱)**:角色表现得特别潇洒,"天下没有不散的筵席嘛",然后帅气转身离开。这不是苦乐参半,这是情感回避。洒脱可以是表面的,但内心的挣扎必须让读者看到。
79
- - ❌ **忽略乐的部分只写苦(变成纯粹的悲剧)**:整个告别场景都在渲染痛苦、不舍、遗憾,没有任何温暖的底色。这就不是苦乐参半了,这是悲剧。苦乐参半的关键在于"乐"的存在让"苦"有了不同的质感。
80
-
81
- **为什么这些套路不好**:
82
- - 破坏了苦与乐之间微妙的平衡
83
- - 让读者感到被操控而非被触动
84
- - 浪费了这个节拍独特的情感复杂性
85
-
86
- ---
87
-
88
- ## 新颖变体
89
-
90
- ### 变体1:成长式告别(离开是因为成长了)
91
-
92
- 角色离开不是因为外部压力,而是因为自己已经成长到需要更大的世界。留下来反而是对自己和对方的辜负。
93
-
94
- **设计要点**:
95
- - 成长必须在之前的情节中有充分铺垫,不能突然"顿悟"
96
- - 被留下的一方虽然不舍,但内心知道这是对的
97
- - 离开者的矛盾:感恩这个地方塑造了自己,但正因为被塑造好了,才必须离开
98
-
99
- **示例场景**:
100
- ```
101
- 她把最后一个箱子搬上车,回头看了一眼那间小小的工作室。
102
- 墙上还贴着她第一幅被退稿的画,旁边是师父用红笔写的批注:"构图不错,胆子太小。"
103
- 师父站在门口,手里端着茶杯,像每一个普通的下午。
104
- "走吧。"他说,语气像在赶她出门去买菜。
105
- "师父——"
106
- "巴黎的冬天冷,多带件外套。"
107
- 她张了张嘴,发现什么都说不出来。
108
- 最后她深深鞠了一躬。
109
- 他挥了挥手,茶杯里的水晃了一下。
110
- 她没看到他转身后,端茶杯的手抖了很久。
111
- ```
112
-
113
- ### 变体2:使命式告别(为了更大的目标)
114
-
115
- 角色为了某个超越个人情感的目标而离开。这种告别的"乐"来自对使命的信念,"苦"来自为使命付出的个人代价。
116
-
117
- **设计要点**:
118
- - 使命必须是角色真正相信的,不是被强加的
119
- - 留下的人理解这个使命的意义,即使心痛也选择支持
120
- - 不要把使命写得太崇高以至于压过个人情感——苦乐参半的核心仍然是人与人之间的情感
121
-
122
- **示例场景**:
123
- ```
124
- 火车还有十分钟。
125
- 她把围巾解下来,绕在他脖子上。
126
- "北方比这里冷。"
127
- 他低头看着那条围巾,是她去年织的,针脚歪歪扭扭。
128
- "等学校建好,我就回来。"
129
- 她没说话,只是把围巾的结系得更紧了一些。
130
- 他们都知道,山区的学校不是一年两年能建好的。
131
- 他们也都知道,有些事如果现在不去做,以后会后悔一辈子。
132
- "给我写信。"她说。
133
- "那边可能没有信号——"
134
- "那就写在纸上。我等。"
135
- 他点了点头,喉咙发紧。
136
- 汽笛响了。
137
- 她松开手,退后一步,笑了一下。
138
- 那个笑容里有骄傲,有心疼,有一点点不确定。
139
- 但没有怨恨。
140
- ```
141
-
142
- ### 变体3:轮回式告别(结束也是新的开始)
143
-
144
- 告别不是终点,而是一个循环的节点。一段关系结束了,但它的影响会以新的形式延续。结束本身孕育着开始。
145
-
146
- **设计要点**:
147
- - 用结构上的呼应来体现"轮回"——结尾的场景与开头形成镜像
148
- - 新的开始不是对旧关系的替代,而是传承
149
- - 让读者感受到"虽然这一页翻过去了,但故事还在继续"
150
-
151
- **示例场景**:
152
- ```
153
- 毕业典礼结束后,她最后一次走进那间教室。
154
- 桌椅已经搬空了,黑板擦得干干净净。
155
- 她站在讲台上,想起四年前第一次走进这里的样子——
156
- 迟到了,全班都在看她,她窘得耳朵发红。
157
- 现在教室空了,只有窗外的梧桐树还是老样子。
158
- 她在黑板上写了一行字:"这里很好,来过不后悔。"
159
- 然后擦掉,把粉笔放回粉笔盒。
160
-
161
- 九月,一个新生推开同一间教室的门。
162
- 迟到了,全班都在看她,她窘得耳朵发红。
163
- ```
164
-
165
- ### 变体4:日常式苦乐(不是大事件,而是生活的常态)
166
-
167
- 苦乐参半不一定发生在戏剧性的大场面中。有时候它就藏在日常生活的缝隙里——送孩子上学的第一天、搬离住了十年的老房子、退休后最后一次走出办公室。没有眼泪,没有拥抱,只有一种淡淡的、说不清的滋味。
168
-
169
- **设计要点**:
170
- - 场景越日常,情感越要克制
171
- - 用重复的日常动作来承载情感——最后一次做某件事,和第一次做的时候一样,但感受完全不同
172
- - 不要点破情感,让读者自己体会那种"说不出来但心里知道"的感觉
173
-
174
- **示例场景**:
175
- ```
176
- 她像往常一样六点起床,下楼煮粥。
177
- 米是昨天量好的,两个人的量。
178
- 水开了,她才想起来,从今天开始只需要煮一个人的。
179
- 儿子昨天已经搬去了新城市。
180
- 她看着锅里咕嘟咕嘟冒泡的粥,没有减米,也没有关火。
181
- 煮好了,盛了两碗。
182
- 一碗放在自己面前,一碗放在儿子常坐的位置。
183
- 吃了几口,拿起手机,给儿子发了条消息:
184
- "早饭记得吃。"
185
- 然后把那碗没人吃的粥倒进保鲜盒,放进冰箱。
186
- 明天她会学会只煮一个人的量。
187
- 但不是今天。
188
- ```
189
-
190
- ---
191
-
192
- ## 情感真实性
193
-
194
- 如何让苦乐参半的告别场景令读者信服?
195
-
196
- ### 1. 苦与乐必须同时在场
197
-
198
- 最常见的失败是把苦和乐分开写——先写一段悲伤,再写一段温暖,像拼接两个独立的场景。真正的苦乐参半是两种情感在同一个瞬间共存。角色在笑的时候眼眶是湿的,在说"我很好"的时候声音是抖的。
199
-
200
- **真实的苦乐交织**:
201
- ```
202
- ❌ 不真实(分开写):
203
- 她哭了很久。然后擦干眼泪,笑着说:"没事,我会想你的。"
204
-
205
- ✅ 真实(同时存在):
206
- 她笑着帮他整理衣领,手指却怎么也系不好那颗扣子。
207
- "你看你,"她说,声音很稳,"连扣子都系不好,到了那边怎么办。"
208
- 他低头看她的手。指尖在发抖。
209
- ```
210
-
211
- ### 2. 克制比爆发更有力
212
-
213
- 苦乐参半的情感本质是复杂的、矛盾的,它天然抗拒简单的宣泄。角色越克制,读者越能感受到那种被压住的情感的重量。大哭大闹反而会把复杂的情感简化为单一的悲伤。
214
-
215
- **克制的表现方式**:
216
- - 说一半的话:"我……算了,路上小心。"
217
- - 转移注意力的动作:反复整理已经整理好的行李
218
- - 故意的轻描淡写:"也没多远,高铁三个小时。"
219
- - 沉默中的一切:两个人什么都没说,但什么都说了
220
-
221
- ### 3. 具体的细节胜过抽象的抒情
222
-
223
- 不要写"她感到一种苦乐参半的复杂情感"。要写那碗多煮的粥、那颗系不好的扣子、那条歪歪扭扭的围巾。情感藏在细节里,读者通过细节自己感受到苦乐参半,比你直接告诉他们有力一百倍。
224
-
225
- ### 4. 允许不完美的告别
226
-
227
- 现实中的告别很少是"完美"的。有些话来不及说,有些拥抱没有发生,有些人转身后才想起最重要的那句话。不完美的告别反而更真实、更动人——因为它留下了遗憾,而遗憾正是苦乐参半中"苦"的重要来源。
228
-
229
- ---
230
-
231
- ## 示例分析
232
-
233
- ### 示例1:《玩具总动员3》(Toy Story 3) —— Andy 送出玩具
234
-
235
- **背景**:Andy 即将离家上大学。他把陪伴自己整个童年的玩具们送给了邻居小女孩 Bonnie。在交接的过程中,他一个一个介绍每个玩具,最后拿起 Woody——他最珍爱的牛仔玩偶——犹豫了很久,最终也把 Woody 交给了 Bonnie。
236
-
237
- **苦乐参半的设计分析**:
238
-
239
- ```
240
- 苦的来源:童年的终结,与最亲密的"伙伴"永久分离
241
- 乐的来源:玩具们会被继续爱着,Andy 的童年以最好的方式被传承
242
- 成长的证明:Andy 能够放手,说明他真的长大了
243
- ```
244
-
245
- **为什么经典**:
246
- - ✅ **苦与乐完美交织**:Andy 一边介绍玩具一边重温童年记忆(乐),但每介绍一个就意味着又送走一个(苦)。两种情感在同一个动作中同时发生。
247
- - ✅ **犹豫是关键时刻**:Andy 拿起 Woody 时的犹豫是整个场景的情感高潮。那几秒钟的停顿里,观众看到了他内心的挣扎——理性知道应该放手,情感却舍不得。最终的放手因为这个犹豫而有了千钧之重。
248
- - ✅ **传承而非失去**:玩具不是被扔掉,而是被交给一个会爱它们的人。这让告别有了"乐"的底色——结束不是毁灭,而是延续。
249
- - ✅ **最后的游戏**:Andy 在离开前和 Bonnie 一起玩了最后一次玩具。一个即将上大学的年轻人坐在草地上,像小时候一样给玩具配音。这个画面同时是快乐的(重温童年)和心碎的(这是最后一次了)。
250
-
251
- **可借鉴的技巧**:用"传承"代替"失去"来构建苦乐参半的"乐";用犹豫和停顿来承载最深的情感。
252
-
253
- ### 示例2:《指环王》(The Lord of the Rings) —— 灰港岸的告别
254
-
255
- **背景**:中土大战结束后,Frodo 因为戒指留下的创伤无法在中土继续生活,选择与 Gandalf、Bilbo 等人乘船前往不死之地(Undying Lands)。他在灰港岸(Grey Havens)与 Sam、Merry、Pippin 告别。
256
-
257
- **苦乐参半的设计分析**:
258
-
259
- ```
260
- 苦的来源:最亲密的伙伴永久分离,Frodo 的创伤无法在中土治愈
261
- 乐的来源:冒险的意义被肯定,Frodo 将获得安宁,中土获得了和平
262
- 必然性:Frodo 的离开不是选择,而是创伤的必然结果
263
- ```
264
-
265
- **为什么经典**:
266
- - ✅ **离开是因为付出了代价**:Frodo 不是功成身退的英雄凯旋,而是一个被使命伤害了的人寻求治愈。他拯救了中土,但中土已经无法治愈他。这种"英雄的代价"让告别有了深刻的苦涩。
267
- - ✅ **Sam 的反应是观众的反应**:Sam 从震惊到理解到不舍,他的情感历程就是观众的情感历程。当 Frodo 对 Sam 说"You cannot always be torn in two"(你不能总是被撕成两半),这句话同时是对 Sam 的安慰和对苦乐参半本质的精准描述。
268
- - ✅ **微笑中的告别**:Frodo 在登船前回头微笑。那个微笑里有释然(终于可以休息了)、有感恩(谢谢你们陪我走过这一切)、有不舍(但我真的要走了)。一个微笑承载了三重情感。
269
- - ✅ **生活继续**:Frodo 离开后,Sam 回到家,抱起女儿,说"Well, I'm back."(好了,我回来了。)这个结尾是苦乐参半的完美收束——失去是真实的,但生活也是真实的。悲伤不会消失,但生活会继续。
270
-
271
- **可借鉴的技巧**:让离开者的离开有不可逆的必然性;用留下者的"继续生活"来收束苦乐参半的情感。
272
-
273
- ---
274
-
275
- ## 写作提示
276
-
277
- ### 设计问题(写苦乐参半告别前问自己)
278
-
279
- 1. **"苦"和"乐"各自的来源是什么?** 明确定义两种情感的具体来源。如果你说不清楚"乐"在哪里,那你写的可能是纯粹的悲伤;如果你说不清楚"苦"在哪里,那你写的可能是虚假的洒脱。
280
- 2. **分离的必然性是否足够?** 读者是否能理解并接受"不得不走"的理由?如果读者觉得"其实可以不走",整个场景的情感基础就会崩塌。
281
- 3. **角色在这段关系中成长了什么?** 告别是成长弧线的句号。如果角色没有成长,告别就只是一个事件而非一个节拍。
282
- 4. **告别之后,什么会留下?** 关系结束了,但什么东西会永远留在角色身上?一个习惯、一种看世界的方式、一句话、一个信念?这个"留下的东西"就是苦乐参半中"乐"的最深层来源。
283
- 5. **你想让读者在读完后感受到什么?** 不是"哭"——那太简单了。苦乐参半的目标是让读者感到一种温暖的酸楚,一种"心被轻轻捏了一下"的感觉,一种放下书后会安静地坐一会儿的余韵。
284
-
285
- ### 检查清单
286
-
287
- - [ ] **苦与乐同时存在**:场景中是否有明确的悲伤来源和快乐来源,且两者交织而非分离
288
- - [ ] **分离有必然性**:读者是否理解并接受角色为什么必须离开
289
- - [ ] **情感克制**:角色是否避免了过度的哭泣、宣言或抒情,而是通过细节和动作传达情感
290
- - [ ] **有具体的细节锚点**:是否有一个具体的物件、动作或台词承载了核心情感
291
- - [ ] **告别推动了角色弧线**:这个告别是否证明了角色的成长,而非仅仅是情节需要
292
-
293
- ---
294
-
295
- ## 进阶技巧
296
-
297
- ### 1. 日常动作承载情感(Mundane as Vessel)
298
-
299
- 用最普通的日常动作来承载最深的情感。不要让角色在告别时做戏剧性的事情(跪下、大哭、追火车),而是让他们做最平常的事——整理行李、倒一杯水、系鞋带。正是这种"日常"与"告别"之间的反差,制造了最强的情感冲击。
300
-
301
- **操作方法**:
302
- - 选择一个角色在日常中经常做的动作
303
- - 在告别场景中让角色做同样的动作,但这次是"最后一次"
304
- - 不要点明"这是最后一次",让读者自己意识到
305
-
306
- **示例**:
307
- ```
308
- 他像每个早晨一样给她倒了杯咖啡。
309
- 牛奶多一点,糖少半勺——七年了,他闭着眼睛都能调对比例。
310
- 她接过杯子,喝了一口。
311
- "嗯,刚好。"
312
- 他们对视了一秒。
313
- 行李箱就在门口,出租车还有十分钟到。
314
- 他又去给自己倒了一杯。
315
- 这次手抖了一下,咖啡洒在台面上。
316
- 她拿起抹布擦掉,什么都没说。
317
- ```
318
-
319
- ### 2. 时间压缩与膨胀(Temporal Elasticity)
320
-
321
- 在告别场景中操控时间的感知。让某些瞬间极度膨胀(一个拥抱写成一整段),让某些时刻极度压缩(几年的回忆浓缩成一句话)。这种时间的弹性模拟了人在强烈情感中对时间的真实感知——重要的瞬间被无限拉长,而漫长的岁月在回忆中只是一瞬。
322
-
323
- **操作方法**:
324
- - 告别的核心时刻(最后的对视、松开手的瞬间)用慢镜头写,每个感官细节都展开
325
- - 共同经历的漫长岁月用极简的方式带过("三年"、"那些夏天"、"从前")
326
- - 两种节奏的切换本身就制造了情感的起伏
327
-
328
- **示例**:
329
- ```
330
- 三年。
331
- 一千多个日夜,浓缩成行李箱里的几件衣服和一本相册。
332
-
333
- 但她松开他手的那一秒,时间停了。
334
- 她感觉到他指尖的温度一点一点离开自己的掌心。
335
- 先是小指,然后无名指,中指,食指。
336
- 最后是拇指,在她手背上轻轻划过。
337
- 那一秒比三年还长。
338
- ```
339
-
340
- ### 3. 留白与未完成(The Unsaid and Unfinished)
341
-
342
- 苦乐参半最有力的表达往往是那些没有说出口的话、没有完成的动作、没有给出的答案。留白不是偷懒,而是信任读者的想象力。一个被打断的句子比一段完整的告白更有力量,因为读者会在心里补完那句话——而每个读者补完的方式都不同,都是最触动自己的版本。
343
-
344
- **操作方法**:
345
- - 让角色开口说最重要的话,然后被打断(火车来了、广播响了、对方先开口说了别的)
346
- - 设计一个"差一点就完成"的动作(伸出的手没有握住、写好的信没有寄出)
347
- - 用省略号和短句代替完整的表达
348
-
349
- **示例**:
350
- ```
351
- "其实我一直想告诉你——"
352
- 广播响了:"开往北京的G1234次列车即将发车。"
353
- 他停住了。
354
- 她看着他,等着。
355
- 他笑了一下,摇摇头。
356
- "没什么。一路平安。"
357
- 她点点头,转身走向检票口。
358
- 走了几步,她回头看了一眼。
359
- 他还站在原地,嘴唇动了动。
360
- 太远了,她听不到。
361
- 但她觉得自己知道他说了什么。
362
- ```
363
-
364
- ---
365
-
366
- **本知识库版本**: v1.0
367
- **最后更新**: 2025-10-18
368
- **相关节拍**: 05-reunion.md(重逢), 06-forgiveness.md(原谅), 02-bonding-moment.md(羁绊时刻)