@oh-story/dsh 0.1.8 → 0.1.10

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 (360) hide show
  1. package/README.md +14 -14
  2. package/lib/client.js +237 -84
  3. package/lib/client.js.map +3 -3
  4. package/lib/drama/manifest.json +183 -77
  5. package/lib/drama/skills/short-drama/SKILL.md +5 -1
  6. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +140 -9
  7. package/lib/drama/skills/short-drama/scripts/project_tool.py +11 -0
  8. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +28 -0
  9. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +8 -2
  10. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
  11. package/lib/drama/skills/short-drama-edit/SKILL.md +146 -0
  12. package/lib/drama/skills/short-drama-edit/agents/openai.yaml +4 -0
  13. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +60 -0
  14. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +15 -0
  15. package/lib/drama/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
  16. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
  17. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
  18. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
  19. package/lib/drama/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
  20. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
  21. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
  22. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
  23. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +38 -0
  24. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +29 -0
  25. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +54 -0
  26. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +60 -0
  27. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +51 -0
  28. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1156 -0
  29. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +520 -0
  30. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
  31. package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +5 -0
  32. package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +3 -0
  33. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
  34. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +2 -2
  35. package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +4 -1
  36. package/lib/drama/skills/short-drama-produce/SKILL.md +29 -4
  37. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +22 -0
  38. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +13 -12
  39. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  40. package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +7 -0
  41. package/lib/drama/skills/short-drama-produce/scripts/fixture_adapter.py +18 -1
  42. package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +181 -2
  43. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +199 -3
  44. package/lib/drama/skills/short-drama-review/SKILL.md +2 -0
  45. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +7 -0
  46. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +10 -0
  47. package/lib/drama/skills/short-drama-storyboard/SKILL.md +12 -1
  48. package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +4 -0
  49. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  50. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +78 -2
  51. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +2 -0
  52. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +12 -5
  53. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +17 -0
  54. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +76 -7
  55. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +5 -2
  56. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +21 -0
  57. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +6 -17
  58. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +12 -3
  59. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +61 -5
  60. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -3
  61. package/lib/drama/skills/short-drama-write/SKILL.md +11 -2
  62. package/lib/drama/skills/short-drama-write/references/screenplay-format.md +6 -0
  63. package/lib/drama/skills/short-drama-write/references/stage-contract.md +1 -0
  64. package/lib/index.js +290 -90
  65. package/lib/index.js.map +4 -4
  66. package/lib/novel-to-game/README.md +299 -59
  67. package/lib/novel-to-game/README_ZH.md +299 -56
  68. package/lib/novel-to-game/VERSION +1 -1
  69. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
  70. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
  71. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
  72. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
  73. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
  74. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
  75. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
  76. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
  77. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
  78. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
  79. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
  80. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
  81. package/lib/novel-to-game/manifest.json +77 -87
  82. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +9 -35
  83. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
  84. package/lib/novel-to-game/skills/game-build/SKILL.md +17 -35
  85. package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
  86. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
  87. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
  88. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
  89. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
  90. package/lib/novel-to-game/skills/game-concept/SKILL.md +16 -34
  91. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
  92. package/lib/novel-to-game/skills/game-qa/SKILL.md +9 -20
  93. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +10 -6
  94. package/lib/novel-to-game/skills/game-world-design/SKILL.md +19 -32
  95. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
  96. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
  97. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
  98. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +9 -18
  99. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
  100. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +10 -27
  101. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -6
  102. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +6 -11
  103. package/lib/oh-story/manifest.json +419 -254
  104. package/lib/oh-story/roles/chapter-extractor.md +177 -237
  105. package/lib/oh-story/roles/character-designer.md +1 -1
  106. package/lib/oh-story/roles/consistency-checker.md +4 -4
  107. package/lib/oh-story/roles/narrative-writer.md +56 -243
  108. package/lib/oh-story/roles/story-architect.md +6 -6
  109. package/lib/oh-story/roles/story-explorer.md +11 -11
  110. package/lib/oh-story/skills/story/SKILL.md +13 -7
  111. package/lib/oh-story/skills/story/VERSION +1 -1
  112. package/lib/oh-story/skills/story/references/author-memory.md +61 -29
  113. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
  114. package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
  115. package/lib/oh-story/skills/story-deslop/SKILL.md +54 -229
  116. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +29 -56
  117. package/lib/oh-story/skills/story-deslop/references/author-memory.md +61 -29
  118. package/lib/oh-story/skills/story-deslop/references/banned-words.md +3 -1
  119. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +154 -0
  120. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +27 -0
  121. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
  122. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +6 -1
  123. package/lib/oh-story/skills/story-deslop/scripts/check-degeneration.js +39 -20
  124. package/lib/oh-story/skills/story-deslop/scripts/normalize-punctuation.js +10 -5
  125. package/lib/oh-story/skills/story-deslop/scripts/style-whitelist.js +39 -0
  126. package/lib/oh-story/skills/story-import/SKILL.md +78 -82
  127. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
  128. package/lib/oh-story/skills/story-import/references/format-and-structure.md +2 -2
  129. package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
  130. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +10 -8
  131. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +31 -0
  132. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +9 -34
  133. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +197 -15
  134. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +210 -2
  135. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +3 -0
  136. package/lib/oh-story/skills/story-long-analyze/SKILL.md +91 -258
  137. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +245 -0
  138. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +2 -2
  139. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
  140. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +113 -105
  141. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +169 -125
  142. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +172 -64
  143. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
  144. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +42 -132
  145. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +5 -5
  146. package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
  147. package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
  148. package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
  149. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1106 -0
  150. package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
  151. package/lib/oh-story/skills/story-long-scan/SKILL.md +4 -1
  152. package/lib/oh-story/skills/story-long-write/SKILL.md +52 -216
  153. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +29 -56
  154. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +72 -12
  155. package/lib/oh-story/skills/story-long-write/references/author-memory.md +61 -29
  156. package/lib/oh-story/skills/story-long-write/references/banned-words.md +3 -1
  157. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +20 -0
  158. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
  159. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +10 -4
  160. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
  161. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +6 -15
  162. package/lib/oh-story/skills/story-long-write/references/long-format.md +2 -0
  163. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +2 -0
  164. package/lib/oh-story/skills/story-long-write/references/project-files.md +110 -0
  165. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +12 -4
  166. package/lib/oh-story/skills/story-long-write/references/reference-index.md +86 -0
  167. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -1
  168. package/lib/oh-story/skills/story-long-write/references/style-craft.md +9 -29
  169. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  170. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +27 -0
  171. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +31 -0
  172. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +9 -34
  173. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +88 -118
  174. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +55 -119
  175. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +15 -11
  176. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +73 -54
  177. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +22 -0
  178. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +63 -4
  179. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
  180. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +531 -0
  181. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +6 -1
  182. package/lib/oh-story/skills/story-long-write/scripts/check-degeneration.js +39 -20
  183. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +197 -15
  184. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +90 -23
  185. package/lib/oh-story/skills/story-long-write/scripts/normalize-punctuation.js +10 -5
  186. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +285 -0
  187. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +58 -0
  188. package/lib/oh-story/skills/story-long-write/scripts/style-whitelist.js +39 -0
  189. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +210 -2
  190. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +3 -0
  191. package/lib/oh-story/skills/story-review/SKILL.md +80 -87
  192. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +29 -56
  193. package/lib/oh-story/skills/story-review/references/author-memory.md +61 -29
  194. package/lib/oh-story/skills/story-review/references/banned-words.md +3 -1
  195. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +10 -4
  196. package/lib/oh-story/skills/story-review/references/review-quality.md +6 -12
  197. package/lib/oh-story/skills/story-review/references/style-resolution.md +27 -0
  198. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +31 -0
  199. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +9 -34
  200. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
  201. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +6 -1
  202. package/lib/oh-story/skills/story-review/scripts/check-degeneration.js +39 -20
  203. package/lib/oh-story/skills/story-review/scripts/normalize-punctuation.js +10 -5
  204. package/lib/oh-story/skills/story-review/scripts/style-whitelist.js +39 -0
  205. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +210 -2
  206. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +3 -0
  207. package/lib/oh-story/skills/story-setup/SKILL.md +58 -43
  208. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +29 -56
  209. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +3 -1
  210. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +154 -0
  211. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +10 -4
  212. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +2 -2
  213. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
  214. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +1 -1
  215. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +1 -1
  216. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -1
  217. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  218. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +27 -0
  219. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +63 -4
  220. package/lib/oh-story/skills/story-setup/references/diagnostics.md +38 -0
  221. package/lib/oh-story/skills/story-short-analyze/SKILL.md +22 -3
  222. package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +1 -1
  223. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +5 -1
  224. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +2 -2
  225. package/lib/oh-story/skills/story-short-scan/SKILL.md +5 -1
  226. package/lib/oh-story/skills/story-short-write/SKILL.md +15 -324
  227. package/lib/oh-story/skills/story-short-write/references/author-memory.md +61 -29
  228. package/lib/oh-story/skills/story-short-write/references/banned-words.md +3 -1
  229. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +60 -0
  230. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +10 -4
  231. package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +2 -2
  232. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +1 -1
  233. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
  234. package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +3 -3
  235. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
  236. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +5 -5
  237. package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +4 -4
  238. package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +5 -5
  239. package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +3 -3
  240. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +1 -1
  241. package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +1 -1
  242. package/lib/oh-story/skills/story-short-write/references/reference-index.md +55 -0
  243. package/lib/oh-story/skills/story-short-write/references/short-craft.md +12 -14
  244. package/lib/oh-story/skills/story-short-write/references/short-deslop.md +10 -10
  245. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -1
  246. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -2
  247. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +27 -0
  248. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +78 -0
  249. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +126 -0
  250. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +32 -0
  251. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +5 -5
  252. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
  253. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +6 -1
  254. package/lib/oh-story/skills/story-short-write/scripts/check-degeneration.js +39 -20
  255. package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +34 -5
  256. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +90 -23
  257. package/lib/oh-story/skills/story-short-write/scripts/normalize-punctuation.js +10 -5
  258. package/lib/oh-story/skills/story-short-write/scripts/style-whitelist.js +39 -0
  259. package/lib/types/client/drama-production-view.d.ts.map +1 -1
  260. package/lib/types/client/file-activity.d.ts +19 -1
  261. package/lib/types/client/file-activity.d.ts.map +1 -1
  262. package/lib/types/client/index.d.ts.map +1 -1
  263. package/lib/types/client/production-prompts.d.ts +7 -0
  264. package/lib/types/client/production-prompts.d.ts.map +1 -1
  265. package/lib/types/client/production-runtime.d.ts +33 -0
  266. package/lib/types/client/production-runtime.d.ts.map +1 -1
  267. package/lib/types/drama-adapters.d.ts +5 -3
  268. package/lib/types/drama-adapters.d.ts.map +1 -1
  269. package/lib/types/native-hooks.d.ts +52 -0
  270. package/lib/types/native-hooks.d.ts.map +1 -1
  271. package/lib/types/role-identity.d.ts +17 -0
  272. package/lib/types/role-identity.d.ts.map +1 -0
  273. package/lib/types/role-tool.d.ts.map +1 -1
  274. package/lib/types/skill-provider.d.ts.map +1 -1
  275. package/lib/video-recap/CHANGELOG.md +31 -1
  276. package/lib/video-recap/manifest.json +162 -162
  277. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +4 -9
  278. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +47 -60
  279. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +77 -115
  280. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +41 -40
  281. package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +22 -32
  282. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +102 -192
  283. package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +14 -35
  284. package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +14 -12
  285. package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +8 -9
  286. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +3 -14
  287. package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +23 -12
  288. package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +1 -4
  289. package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +24 -25
  290. package/lib/video-recap/skills/video-assemble/scripts/lib.py +31 -85
  291. package/lib/video-recap/skills/video-assemble/scripts/media.py +100 -144
  292. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +101 -195
  293. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +10 -21
  294. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +90 -169
  295. package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +69 -122
  296. package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +10 -17
  297. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +33 -48
  298. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +14 -20
  299. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +135 -213
  300. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +49 -57
  301. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +38 -74
  302. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +46 -95
  303. package/lib/video-recap/skills/video-cut/scripts/lib.py +23 -25
  304. package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +70 -173
  305. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +28 -53
  306. package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +162 -322
  307. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +6 -7
  308. package/lib/video-recap/skills/video-recap/scripts/doctor.py +104 -124
  309. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +255 -412
  310. package/lib/video-recap/skills/video-recap/scripts/lib.py +30 -52
  311. package/lib/video-recap/skills/video-recap/scripts/materials.py +97 -120
  312. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +7 -12
  313. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +46 -97
  314. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +18 -36
  315. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +29 -47
  316. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +43 -76
  317. package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +2 -1
  318. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +2 -1
  319. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +2 -2
  320. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +129 -145
  321. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +27 -20
  322. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +20 -31
  323. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +31 -106
  324. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +43 -113
  325. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +196 -377
  326. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +1 -1
  327. package/lib/video-recap/skills/video-script/scripts/agent_text.py +63 -172
  328. package/lib/video-recap/skills/video-script/scripts/brief_context.py +80 -135
  329. package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +125 -167
  330. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +93 -208
  331. package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +20 -46
  332. package/lib/video-recap/skills/video-script/scripts/lib.py +30 -26
  333. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +145 -140
  334. package/lib/video-recap/skills/video-script/scripts/review_response.py +12 -42
  335. package/lib/video-recap/skills/video-script/scripts/review_runner.py +0 -6
  336. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +39 -100
  337. package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +33 -124
  338. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +1 -1
  339. package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +63 -172
  340. package/lib/video-recap/skills/video-understanding/scripts/asr.py +1 -2
  341. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +80 -135
  342. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +125 -167
  343. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +93 -208
  344. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +1 -1
  345. package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +20 -46
  346. package/lib/video-recap/skills/video-understanding/scripts/lib.py +31 -26
  347. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +145 -140
  348. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +39 -100
  349. package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +33 -124
  350. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +1 -4
  351. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +7 -13
  352. package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +12 -30
  353. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +98 -131
  354. package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +17 -28
  355. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +151 -240
  356. package/package.json +45 -45
  357. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -59
  358. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
  359. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -42
  360. package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
@@ -41,13 +41,13 @@
41
41
 
42
42
  ## Step 3:修改
43
43
 
44
- 1. **阅读原文**:读完整章内容,用 `{PYTHON} {story-long-write skill 根}/scripts/storyctl.py wordcount check` 记录原始 `visible_chars_v1` 结果
44
+ 1. **阅读原文**:读完整章,用 `{PYTHON} {skill 根}/scripts/storyctl.py wordcount check` 记下原始字数
45
45
  2. **备份原文**:将原文复制为 `正文/第{X}章_章名_原稿_{YYYYMMDD}.md`,确保可回退
46
46
  3. **确认修改范围**:问用户是"全文重写"还是"修改特定段落"
47
47
  - 全文重写:基于细纲重新写,保留备份
48
48
  - 局部修改:只改指定段落(按场景序号或关键词定位),保持其他部分不变
49
49
  4. **执行修改**:改写文件
50
- 5. **字数对比**:修改后重跑同一计数器;与原文差异 >30% 或 >800 字时提醒用户(取较大值),并报告 `internal_pass / borderline / under / over / invalid`。测量状态不触发静默覆盖或二次改写正文
50
+ 5. **一次检测**:修改后运行 `{PYTHON} {skill 根}/scripts/storyctl.py chapter check --project {项目根} --chapter {X} --fix-punctuation`(含禁用词与字数);blocking 改到净再重跑。字数与原文差异 >30% 或 >800 字时提醒用户(取较大值),用白话说「改后约 X 字,比原来多/少 Y 字,比目标多/少 Z 字」,不报状态码;字数不触发静默二次改写
51
51
 
52
52
  **资料研究(按需)**:如果修改涉及需要验证的外部事实(历史年代、地理方位、职业细节等),spawn `story-researcher` agent 搜索验证。
53
53
 
@@ -63,16 +63,10 @@
63
63
  4. **角色当前快照**:对受影响核心角色从 X 检查到 M,按身份、位置、目标、能力资源、关系对象、已知信息、未结事项分别重算,提交一份截至 M 的完整快照;不得用最后一条单维度变化覆盖其它维度。
64
64
  5. **导入截止范围**:若 X ≤ `_tracking-state.json.imported_through_chapter`,事务为第 X 章新增覆盖记录;导入截止章不变,当前结构化状态按修订结果更新。
65
65
  6. **提交与重试**:把修订开始时 `tracking_commit.py check` 返回的 `state_revision` 写入 `expected_state_revision`,再执行 `tracking_commit.py commit`;若期间状态已变化,重新读取当前状态并重构事务。任一步骤失败时保留原事务 JSON,修正写入环境后重跑同一 `commit`;成功并通过 `check` 前禁止继续修下一章或写新章。
66
- 7. **后续影响**:如果修改改变了角色状态/关系/世界观设定,扫描后续章节正文标记受影响项:
66
+ 7. **后续影响**:如果修改改变了角色状态/关系/世界观设定,扫描后续章节正文标记受影响项,放进下方汇报。
67
67
 
68
- ```
69
- ⚠️ 修改第{X}章后,以下章节可能需要同步调整:
70
- - 第{X+1}章:{原因}(建议检查)
71
- - 第{X+3}章:{原因}(建议检查)
72
- ```
73
-
74
- 8. **正文元信息扫描**:检查标题行以外是否混入 `第[一二三四五六七八九十百千万两0-9]+章|上一章|上章|前一章|本章|这一章|前文|后文|伏笔|细纲|读者` 这类写作工程词,命中即改成角色当下可感知的事件锚点或相对时间;故事内真实阅读/讨论“第X章”或真实读者身份语境除外
75
- 9. **禁用词扫描**:对照 `references/banned-words.md` 检查修改后的内容,并运行 `tracking_commit.py check` 验证 state 与全部派生视图一致
68
+ 8. **正文元信息扫描**:按 [workflow-chapter.md](workflow-chapter.md) 步骤 6「正文元信息隔离」扫描标题行以外的正文,沿用其中的改写方式与故事内真实阅读/读者身份例外。
69
+ 9. **收口**:运行 `tracking_commit.py check` 验证 state 与全部派生视图一致
76
70
 
77
71
  ---
78
72
 
@@ -87,6 +81,16 @@
87
81
 
88
82
  > 完整检查清单见 [workflow-chapter.md 的「质量检查」节](workflow-chapter.md)。
89
83
 
84
+ **改完向作者汇报**(按 SKILL.md「面向作者的汇报」;追踪修订与各项扫描只作内部核对):
85
+
86
+ <!-- author-report -->
87
+ ```md
88
+ 第{X}章《{章名}》改好了(原稿留在 {备份文件名}):
89
+ - {改了什么,用故事话:原来怎样 → 现在怎样}
90
+ - 篇幅:{约 X 字,比原来多/少约 Y 字}
91
+ {后面受影响的章:「第{X+1}章《{章名}》里{谁/什么}还按旧说法写,要一起改吗?1. 一起改(推荐)2. 先不动」;没有就写「后面的章不受影响」}
92
+ ```
93
+
90
94
  ---
91
95
 
92
96
  ## 常见问题
@@ -1,10 +1,6 @@
1
1
  # workflow-setup.md:开书工作流(Phase 1-3)
2
2
 
3
- 本文件为"开书/建设定/搭大纲"场景的完整指引,从 SKILL.md 的 Phase 1-3 抽出。
4
- SKILL.md 只保留场景路由与停靠规则;进入任一 Phase 前读本文件对应小节,按其中步骤执行。
5
-
6
- > 这三个 Phase 每本书只跑一次(开新卷时回 Phase 2/3 增量补充)。日更续写与单章写作不需要本文件,
7
- > 走 SKILL.md 的 Phase 4 与 `workflow-daily.md`。
3
+ 本文件用于规划/开书/补纲。先按 SKILL.md「写作流程」确定交付范围;完整读取不等于执行所有 Phase。只讨论时取所需技法,不执行建档步骤;其余按范围补必要前置,不重做已有设定。
8
4
 
9
5
  ---
10
6
 
@@ -33,9 +29,9 @@ SKILL.md 只保留场景路由与停靠规则;进入任一 Phase 前读本文
33
29
  如果用户提到对标书或工作目录下已存在 `对标/` 目录:
34
30
 
35
31
  1. 先按上方「对标发现」第 1 条的同一口径识别当前作品,排除同名或来源指向当前正文的 `对标/{当前书}/`——老导入项目里可能留着历史误建的自对标目录。排除后没有外部对标书时不进入下面几步,按无对标继续。
36
- 2. 按对标书路径查找规则检查 `剧情/情绪模块.md` 与 `剧情/节奏.md`。
37
- 3. 任一主产物缺失时必须停止,设置 `missing_primary_contract: true`,并给出 `repair_action`:重跑 `/story-long-analyze` Stage 3+ 或重新 `/story-import`;不得以 `拆文报告.md`、章节摘要或故事线代替。
38
- 4. 两个主产物都存在时,先读 `剧情/情绪模块.md` 的读者需求 / 情绪引擎与可复现模块,再读 `剧情/节奏.md` 的关键信息推进、情绪触动点和爆发节奏;`拆文报告.md` 只用作人类可读概览。
32
+ 2. 按 [project-files.md](project-files.md) 的缺失处理识别资料代际,再检查 `剧情/情绪模块.md` 与 `剧情/节奏.md`。
33
+ 3. `剧情/情绪模块.md` 或 `剧情/节奏.md` 缺失时停止并返回 `missing_primary_contract` + `repair_action`,对作者只说「对标书《X》还缺情绪/节奏分析,建议先用 /story-long-analyze 补拆一次」;不得以摘要或报告伪造。两份老权威产物都存在时正常召回,新增字段缺失不阻断。
34
+ 4. 两个主产物都存在时按权威顺序读取;`拆文报告.md` 只作概览。
39
35
  5. 如果角色、普通剧情单元或设定子目录存在,写作时按需召回相关模块。
40
36
 
41
37
  根据回答做匹配:
@@ -48,13 +44,13 @@ SKILL.md 只保留场景路由与停靠规则;进入任一 Phase 前读本文
48
44
 
49
45
  story-architect 属于高层级结构设计 agent。轻量题材定位优先由主会话完成;只有涉及复杂世界观、多线结构、强反转工程或用户明确要求时,才调用 story-architect。确认选题方向后,如果项目已部署 story-architect agent(检查 `.claude/agents/story-architect.md` 是否存在),可 spawn `Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:题材定位\n查询参数:{用户选择的方向+对标信息}")` 辅助题材分析和核心梗设计。如 agent 不可用,由主线程直接执行。
50
46
 
47
+ > **公共灵感召回(可选)**:有 `灵感库/` 时按 `references/cross-book-recall.md`「公共灵感标签召回」以「适用阶段=设定」查 Top 8 active CBA,辅助核心梗与金手指选型;零命中不阻塞。
48
+
51
49
  > **story-architect 契约摘要(spawn 时必须原样附带)**:部署的 story-architect agent 不认识本 skill 的 `references/reader-contract-and-progression.md`,只能靠 spawn prompt 里带的这段摘要对齐 schema,否则主线程和委托产出会用不同的推进规则。摘要内容:
52
50
  > - **终局储备边界**:终局底牌(头号宿敌/终极真相/金手指上限/身份终点/核心情感终点)是一次性资源,逐卷解锁,不得提前打光;升级台阶(境界/等级/地图/势力层级)按剩余档数逐级解锁,不得越级。
53
- > - **透支两问**(任一为"是"即需回退或改纲):①是否动用了本阶段还不该解锁的终局底牌?②是否让某条升级线逼近天花板、后面没台阶接?
54
51
  > - **剧情单元**:卷纲内写剧情单元卡,含单元ID、主推线(1条)+ 战果线(若干,一战多得允许)、章级推进下限(快节奏保留可见事件/爽点下限)。
55
52
  > - **细纲层字段**:每章细纲必须带 单元ID/位置、主角目标/关键选择;「行动成本(可无)/收益归属」替代旧字段「代价兑现」——行动成本可无,不硬造代价,收益归属必须可见。
56
- > - **读者契约与主角代理权**:主角不可替代看因果权(决策/布局/授权/关键信息决定事情如何发生转向)+ 结算权(核心收益/认可按承诺回到应得者),不要求主角事事亲自动手;配角可执行局部动作,但不得无声夺走已承诺的高光/收益。
57
- > - **关键节点四问**(设计关键节点时统一问):①谁决定事情为什么发生/如何进入?②谁作出不可替代的关键选择?③谁承担或选择关键后果?④核心收益/认可/权力最终结算给谁?
53
+ > - **契约四问**:①主角是不是靠自己的选择挣到结果(不要求事事亲自动手,但决定事情为什么发生、作出关键选择、拿到收益的是主角或本卷已承诺的所有者)?②核心收益或高光有没有被配角、机构或巧合无交换地拿走?③有没有动用本阶段不该解锁的终局底牌、或把升级线顶到天花板?④旧期待付了利息没,又留下什么期待?四问都过=契约安全,能补=需补强,补不上=契约破坏。
58
54
  > - 完整规则以主会话已加载的 `references/reader-contract-and-progression.md` 为准,此处只是给 story-architect 的压缩版;agent 本身不部署该文件,不能自己读取。
59
55
 
60
56
  ---
@@ -100,7 +96,7 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
100
96
  - 终极 Boss/终极阻碍:{}
101
97
  ```
102
98
 
103
- 完成核心设定后,创建以下 artifact(加载 [references/artifact-protocols.md](artifact-protocols.md) 中对应模板):
99
+ 完整开书时创建以下 artifact;仅规划时只落与所请求结构有关的已定设定,不强制补全角色档案或题材正文提示卡(模板见 [references/artifact-protocols.md](artifact-protocols.md)):
104
100
  - **设定/关系.md**:角色关系映射(参考 character-relations.md「四种关系类型」)
105
101
  - **设定/题材定位.md**:题材核心梗三分法+对标分析(参考 long-genre-mechanics.md「核心梗解析」)。对标分析表保留 2-3 行摘要,详细数据见 `对标/` 目录
106
102
  - **设定/题材正文提示卡.md**:从 `设定/题材定位.md` + `references/genre-prose-cards.md`(索引)+ `references/genre-prose-cards/`(单题材正文卡目录,按题材分类优先)+ `references/style-genre-modules.md`(通用流派补充)抽取本书正文层题材卡,只写题材边界、核心逻辑、读者期待、核心爽点/情绪、正文落点、前中后期打法、节奏密度、场景颗粒、禁止漂移;不写通用格式规则,不覆盖 `设定/文风.md`
@@ -173,24 +169,28 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
173
169
 
174
170
  > **多对标书时**:参 `references/cross-book-recall.md`,副对标 `章节/*_摘要.md` + `剧情/*.md` 召回卷级节奏
175
171
 
176
- > **对标节奏回流(有主对标书时,卷纲定稿前做一次)**:读主对标 `对标/{书}/剧情/节奏.md`;缺失时设置 `missing_primary_contract: true` 并停止,提示重跑 `/story-long-analyze` Stage 3+ 或重新 `/story-import`,不得用章节摘要、故事线或拆文报告代替。文件存在时,按 references/outline-structure-theory.md「对标节奏迁移」把对标的一级结构关键点(1/4·中点·3/4)换素材排进本卷卷纲「对标结构坐标」——选段以主对标剧情单元为单位,按「类型/桥段标签」圈同类(详见该节步骤 1),选中的剧情单元写入剧情单元卡「对标剧情参照」。若尚未登记主对标书但 `拆文库/` 有同题材候选,先回 Phase 1「对标发现」登记再排节奏;确无对标书则按八节点占比自排。
172
+ > **对标节奏回流(有主对标书时,卷纲定稿前做一次)**:读主对标 `对标/{书}/剧情/节奏.md`;资料缺失时设置 `missing_primary_contract` 并停止,不得以摘要、故事线或报告代替。文件存在时,按 references/outline-structure-theory.md「对标节奏迁移」将 1/4·中点·3/4 换素材排入卷纲「对标结构坐标」,选中单元写入「对标剧情参照」(也可填「自创:{理由}」),并过排纲自查。未登记主对标但有同题材候选时先回 Phase 1;确无对标则按八节点自排。有 `灵感库/` 时可另按「适用阶段=卷纲」召回 Top 8 active CBA 辅助结构选型,零命中不阻塞。
177
173
 
178
- #### 细纲(全书每章)
174
+ #### 排纲自查与细纲
179
175
 
180
- ⚠️ **大纲安全七检(批次级必答:每卷/每批细纲设计前答一遍全量;逐章设计时只复答⑥⑦并把风险等级写入该章细纲「契约风险」行,不逐章重答全表;中途追加剧情单元时,⑦的关键情节锚定按单元内 1/4·中点·3/4 口径执行,不改已锁定的卷尺度坐标表)**:① 本卷交付什么情绪?什么剧情模式能可靠交付?② 本卷核心冲突是什么?③ 卷节奏(起承转合)哪段加速哪段减速?④ 本卷需要新埋设的伏笔有哪些?上一卷待回收的伏笔如何处理?⑤ 章节定位分布是否有高低层次(不是全程高压)、低压+过场是否克制(合计不超约 15%)?⑥ 本卷/本章处在全书哪个阶段,可释放什么,必须压住什么?⑦ 读者契约、主角代理权、期待债、终局储备(终局底牌/升级台阶)是否按 reader-contract-and-progression.md 评为 契约安全 / 需补强 / 契约破坏?有对标书时,1/4·中点·3/4 是否各锚定一个关键情节(见 references/outline-structure-theory.md「章节定位与张弛 / 对标节奏迁移」)?
176
+ **排纲自查**(每卷、每批细纲设计前答一遍;逐章不重答):
177
+ 1. **情绪引擎**:本卷交付什么情绪、靠什么剧情模式可靠交付、核心冲突是什么?先按 `references/emotional-methods.md` 设计正向发动机,再做两个删除检验——删掉题材核心的对象/关系/问题,或删掉主角,情绪兑现还基本成立吗?成立就说明引擎没立住,先修。
178
+ 2. **节奏与定位**:哪段加速哪段减速;章节定位有高低、不是全程高压,低压加过场合计不超约 15%;有对标书时 1/4、中点、3/4 各锚一个关键情节(中途追加单元按单元内的 1/4·中点·3/4,不改已锁定的卷尺度坐标表;见 references/outline-structure-theory.md「章节定位与张弛 / 对标节奏迁移」)。
179
+ 3. **伏笔与阶段边界**:本卷新埋哪些伏笔、上一卷待收的怎么处理;本卷在全书哪个阶段,可释放什么、必须压住什么(压住的写进细纲「本章禁止提前释放」)。
180
+ 4. **契约四问**:按 `references/reader-contract-and-progression.md` 逐剧情单元过一遍,把 契约安全 / 需补强 / 契约破坏 写进单元卡「风险等级」;契约破坏 先修纲,需补强 补交换、铺垫或成本。不要求主角亲自完成每个动作。
181
+ 5. **供给**:进入细纲层时按下方批次步骤 3 做供给自查。
181
182
 
182
- **大纲安全审查(顺序不可倒置;批次级执行一次,覆盖本批全部剧情单元与章)**:先按 `references/emotional-methods.md` 设计正向情绪发动机与题材核心兑现,再用权威文件的主角代理权/所有权/成长负向风险护栏诊断。后者按因果权 + 结算权、关键节点四问与期待所有权,检查每个剧情单元的主角目标、关键选择、兑现归属、核心资产交换、机构/势力边界、换书债和推进线;不要求主角亲自完成每个动作。契约破坏 必须修纲,需补强 必须补交换/铺垫/成本。再做两个可证伪降级检查:① 删除题材核心的对象/关系/问题后,是否退化为通用职业升级或换皮情节?② 删除主角后,情绪兑现是否仍基本不变?任一为“是”就先修引擎。
183
+ 只交付大纲/卷纲时,完成排纲自查 1–4 和本节末对应纲文件后停止,不执行下方细纲与设定补全。进入细纲层后,所请求范围内每章必须有 `大纲/细纲_第XXX章.md`,不跳章。
183
184
 
184
- **每章必须有一个细纲文件**(`大纲/细纲_第XXX章.md`),不允许跳章。
185
-
186
- 默认分批建纲:先建前 10 章细纲后**停靠**,报告"已可开始写第1章/日更";只有用户明确要求写正文时才进入 Phase 4。滚动补纲按编号规则执行(见 references/outline-structure-theory.md「按剧情批出细纲」):
187
- 1. **批次边界**:一批 ≈ 一个剧情单元(5-15 章);>10 章的剧情单元拆两批。**首批 = 前 10 章封顶、可跨单元**:跨入的剧情单元在建卡时召回一次,余章由后续滚动批共享该剧情单元卡结论。写到单元末段(剩余未建细纲 ≤2 章)即滚动补下一单元整批;用户显式给出章数/范围时按用户要求执行,单批仍建议 ≤10 章、分批连续交付。
185
+ 细纲按剧情批构建(见 references/outline-structure-theory.md「按剧情批出细纲」);仅未限定范围的完整开书默认前 10 章,其他按 SKILL.md 的范围与停点交付:
186
+ 1. **批次边界**:未指定章数时,一批 ≈ 一个剧情单元(5-15 章);>10 章拆两批。开书首批前 10 章封顶、可跨单元;每单元建卡时召回一次,后续批共享结论。用户指定章数/范围时,只建范围内细纲,不因单元未完或剩余 ≤2 章而扩批;单批仍建议 ≤10 章。日更缺纲按 workflow-daily 的补建流程处理。
188
187
  2. **批次定位与阶段约束**(每批补纲前先写):当前章节区间属于哪个阶段与哪个剧情单元(单元ID)、本批推进目标、本批可释放信息、本批严禁提前释放信息、章尾钩子不能越过的边界。
189
- 3. **剧情单元消费**:建卡批读本批剧情单元卡「对标剧情参照」指向的剧情单元(≤3 个文件,含结构分布/情节点索引),按节拍→章映射铺章、情节点换素材;同一剧情单元的后续批共享剧情单元卡固化结论,不重读剧情单元。当前卷纲缺少必需剧情单元字段时先补齐卷纲,不带缺失字段进入日更。
190
- 4. **批末结构复核**(每批建完必做):按现有大纲流程确认章级目标与 `visible_chars_v1` 口径、核心字段、禁止提前释放和可执行情节点齐全。不得用“每个情节点固定等于多少字”预测容量或自动补事件;每章细纲落盘后必须跑 `node scripts/check-outline-contract.js --json --project {书目录} --chapter {N}`:exit 1 只按 `repair_scope` 补点名字段再复验,最多两轮。**旧章细纲缺字段是常态,不要照抄同目录既有文件的字段集**,以本节模板为准。语义仍不设 checker。
188
+ 3. **供给自查**(排纲自查第 5 项):每批出细纲前检查六项:①对手戏由谁承接?具名对手间隔超过 2 章是复核提示;对手可为盟友或亲人,环境、关系章不为凑间隔新增反派。②未来 3 章出场角色的设定卡是否齐全?③能力增量与既有库存是否接得上?④本批引用的数字、制度、规矩、距离与脚程是否确实存在?引用前 grep 核对文件里的具体条目,不能只猜文件存在。⑤本批使用的地点空间属性先落档;仅提名不强补底图。是否与上一单元同场景、同对手、同胜负手连排,需要调整?⑥本批有哪些故事线推进,是否有可调存量?结果以「供给自查」小节写进 `大纲/排纲底稿_{单元ID}.md`(不写进卷纲):「写了要报」登记新增内容与设定路径,「先问作者」列候选及影响面交作者裁定;无缺口写「无缺口」。并检查上一批「本章没写成的」与「建纲追加」里的未解决缺口。
189
+ 4. **剧情单元消费**:建卡批读本批剧情单元卡「对标剧情参照」指向的剧情单元(≤3 个文件,含结构分布/情节点索引),按节拍→章映射铺章、情节点换素材;同一剧情单元的后续批共享剧情单元卡固化结论,不重读剧情单元。当前卷纲缺少必需剧情单元字段时先补齐卷纲,不带缺失字段进入日更。
190
+ 5. **建纲当场缺口**:按下方三级处置——直接写的写进细纲,写了要报的先落档再引用,先问作者的挂起受影响内容,其余部分继续。批末把后两级汇入同一份排纲底稿的「建纲追加」小节:章号、缺口、级别、设定路径或提案;无追加写「无」。不重复记录直接写的现场材料。
191
+ 6. **批末结构复核**(每批建完必做):按现有大纲流程确认章级目标与 `visible_chars_v1` 口径、核心字段、禁止提前释放和可执行情节点齐全。不得用“每个情节点固定等于多少字”预测容量或自动补事件;每章细纲落盘后必须跑 `node scripts/check-outline-contract.js --json --project {书目录} --chapter {N}`:exit 1 只按 `repair_scope` 补点名字段再复验,最多两轮;advisory 项逐条人工判断,不强制归零。批末另跑一次 `node scripts/check-outline-contract.js --json --supply {卷纲路径} {单元ID}` 验证本批供给自查已写进排纲底稿(含「无缺口」情形);脚本仅验供给小节存在,内容仍需人工判断。**旧章细纲缺字段是常态,不要照抄同目录既有文件的字段集**,以本节模板为准。语义仍不设 checker。
191
192
 
192
- 不要在单次对话里强行产出 30 章完整细纲。
193
- 如果全书章数较少(≤30 章),可以在 Phase 3 一次全部建完。
193
+ 不强行一次产出 30 章细纲;全书 ≤30 章且用户明确要全书细纲时,可分批连续交付。
194
194
 
195
195
  ```
196
196
  ## 细纲(第 N 章)
@@ -199,16 +199,12 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
199
199
  - 核心事件:{一句话;供日更与导入统一消费}
200
200
  - 字数目标:{X} 字
201
201
  - 字数口径:visible_chars_v1
202
- - 阶段位置:{开篇期/发展期/高潮期/收尾期;第X阶段第Y章;本章在阶段内承担什么}
203
202
  - 单元ID/位置:{卷纲剧情单元ID;单元内第几拍/承担功能}
204
203
  - 目标情绪:{具体情绪前状态→后状态;本章推进单元情绪引擎的哪一环;不得只写“热血/悲伤”等标签}
205
204
  - 主角目标/关键选择:{主角本章要什么;必须做出的判断或选择}
206
- - 章节定位:{高压/推进/修炼试错/关系回收/低压生活/信息整理;可留空,留空按推进章。见 references/outline-structure-theory.md「章节定位与张弛」}
207
- - 本章结构公式:{节点1(目的) + 节点2(目的) + 节点3(目的) + 节点4(目的)}
208
205
  - 章首钩子:{从章首7式中选择} — {具体内容;低压/过场章可写“弱钩子/仅情绪钩子,功能是…”}
209
206
  - 爽点:{本章爽点;低压/修炼/过场章可写“无显性爽点,功能是…”,但仍须给读者一个往下看的理由}
210
- - 本章禁止提前释放:{后续阶段核心真相/底牌/关系结论/终局矛盾;没有就写“无”}
211
- - 契约风险:{契约安全/需补强/契约破坏;逐章只按七检⑥⑦复核后填写,批次级已答全表}
207
+ - 本章禁止提前释放:{**只写本章特有的三五条**;卷级常任禁忌已在卷纲「本卷禁碰的终局底牌」,不逐章复读;没有就写“无”}
212
208
 
213
209
  #### 内容概括(五段式)
214
210
  - 起因:{本章事件为什么发生}
@@ -219,46 +215,50 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
219
215
 
220
216
  #### 情节安排(多线)
221
217
  - 主线推进:{本章对主目标的推进}
222
- - 辅线推进:{可写“无”,不能凭空制造}
223
- - 事件线 / 任务线:{外部事件链}
224
- - 任务卡点(如适用):{角色要办什么事 → 卡在哪里 → 卡出什么变化 → 删掉后损失 → 收束动作;没有就写“无”,不强补}
218
+ - 辅线推进:{指向卷纲「本卷故事线」的 L 编号,写“L0X 从哪一步推到哪一步”;本章确无非主线在动时写“无”,不凭空制造。一批细纲不许每章都是“无”}
219
+ - 事件线 / 任务线:{外部事件链;有“办事被卡住”时写清卡出什么变化,删掉无损的卡点不进细纲}
225
220
  - 感情线 / 关系线:{无显性感情线时写“无显性,但关系变化为…”}
226
221
  - 逻辑线:原因 → 行动 → 结果 → 后果/新问题
227
222
 
228
223
  #### 人物关系和出场顺序
229
224
  - 出场顺序:{角色/势力/关键物件按实际出现顺序列出}
230
225
  - 人物关系变化:{本章前 → 本章后}
231
- - 视角/信息差:{谁知道什么;读者知道什么;主角误判什么}
226
+ - 视角/信息差:{谁知道什么;读者知道什么;主角误判什么。取自 `追踪/时间线/读者已知.md`,不另起一套}
232
227
 
233
228
  #### 情节细化
234
- - 情节点序列(逐行填下表;写清动作与叙事功能,不填写逐点字数):
235
-
236
- | # | 情节点(谁做了什么) | 功能标签 | 执行边界 |
229
+ | # | 情节点(谁做了什么) | 功能标签 | 执行边界(禁+放) |
237
230
  |---|---|---|---|
238
- | 1 | {主角在账单上发现4800元转出} | {信息揭示} | {只确认异常,不揭露幕后者} |
231
+ | 1 | {主角在账单上发现4800元转出} | {信息揭示} | {禁:不揭露幕后者。放:他当场算出这笔钱等于几个月房租,允许写出来} |
239
232
 
240
- 功能标签=目的词:铺垫/高潮/爽点/打脸/人物塑造/设定,用于判断该点承担什么义务;执行边界写本点不能提前释放或新增什么。点数由语义需要决定,不用 `目标字数 / beat 数`、固定字数档位或历史偏差系数反推。结构预检只判输入是否可安全执行,不宣称细纲一定能撑到目标字数。
241
- - 任务卡点说明:如果某情节点是“办事被卡住”,功能标签必须写清它服务的是信息揭示、关系变化、代价兑现、伏笔推进、选择压力、节奏喘息或钩子承接;删掉无损的卡点不进细纲
233
+ - 功能标签=目的词:铺垫/高潮/爽点/打脸/人物塑造/设定。点数由语义需要决定,不填写逐点字数,不用 `目标字数 / beat 数` 反推。
234
+ - **执行边界写「禁+放」两半**:禁=本点不能提前释放或新增什么;放=本点允许什么落地、到什么量级(谁可以出声、谁可以失态、允不允许当场标价)。**每章至少一个点写了「放」**;放行是解除限制,不是义务。
242
235
  - 复沓锚句:{须一字不差进正文的原话(誓言、面板、旧案原话),一行一条并注明落点,如"点3:立此为凭…";没有写"无"}
243
- - 行动成本(可无)/收益归属:{可无行动成本;若有则写谁付出什么成本;收益归谁、如何可见、是否留下后续账}
236
+ - 行动成本(可无)/收益归属:{可无行动成本;收益归谁、如何可见、是否留下后续账}
244
237
 
245
238
  #### 结尾设定和钩子
246
239
  - 结尾设定:{收束落到什么具体动作或画面(不写"就这样……""他终于明白……"式状态判词);未解决问题;下一章推动力}
247
240
  - 章尾钩子:{从章尾13式中选择} — {具体内容,期待度:强/中/弱;低压/过场章可弱钩子或留阶段目标;与下一章如何承接}
241
+
242
+ #### 可选:需要时再写(写了写手照样消费,不写不拦)
243
+ - 阶段位置、章节定位(高压/推进/修炼试错/关系回收/低压生活/信息整理)、本章结构公式
244
+ - 本章标价(得失折算成读者已知的什么)、闭环状态(获得/使用/见效/估值走到哪一拍)
245
+ - 写手自由区(本章最值得放开、由写手发明的几处)、镜头准入(一场给谁台词位)、信息差触发点(在第几点提醒读者手里的牌)
246
+ - 情节点表加「分辨率」列(密/中/疏,同类并列递减)
247
+ - 契约风险:只在本章让单元卡「风险等级」变化时写
248
248
  ```
249
249
 
250
250
  **大纲锁定**:已进入正文写作的前 10 章细纲锁定,未经用户确认不得修改;后续滚动细纲可随正文反馈微调。**卷纲锁定的定义**:某卷一旦已有正文章节,该卷已写区间对应的既有剧情单元卡与对标结构坐标即视为锁定——未经用户确认不改既有内容,但允许在卷尾**追加**新剧情单元卡(只增不改)。追加同样只发生在用户明确要求补纲/扩纲时;日更/写正文流程不自动追加剧情单元卡。workflow-daily 各处「锁定卷纲绝不自动修改」均按此定义执行。
251
251
 
252
- **中途补纲/扩纲小流程**(项目已有大纲,用户要求"出细纲/补细纲/规划下一段剧情"时走这里):
253
- 1. 定位当前卷、已写进度与既有剧情单元卡:读 `大纲/大纲.md`、当前 `大纲/卷纲_第X卷.md`、`追踪/上下文.md`(续写状态卡,待回收伏笔取 `## 活跃伏笔`、主角当前状态取 `## 核心角色状态`),以及 `设定/题材定位.md`(终局底牌与升级台阶)——续写状态卡缺项按 workflow-daily「旧信息查找步骤」按需查询,不读全部逐章增量;
254
- 2. 按 references/outline-structure-theory.md「对标节奏迁移」步骤 1 选同类剧情单元,设计新剧情单元卡(含「对标剧情参照」),**追加**到当前卷卷纲卷尾,并随卡在卷纲「情绪弧线」表与「本卷伏笔」表**只增不改**地追加对应规划;尚未实际埋设的伏笔留在大纲,不提前登记为时间线/追踪事实——用户主动要求补纲即视为已授权追加,锁定的既有剧情单元卡不动;新剧情单元体量超出本卷规划时,先与用户确认扩卷还是开新卷;
255
- 3. 批次级答一遍上方「大纲安全七检」并执行「大纲安全审查」(追加剧情单元时⑦按单元内 1/4·中点·3/4 口径);
256
- 4. 按「按剧情批出细纲」以新剧情单元为批次滚动补细纲(一批 ≈ 一个剧情单元,>10 章拆两批共享召回),每批建完执行「细纲后设定补全」与批末合计核对;
257
- 5. 新剧情单元和未来揭示边界已经在卷纲/细纲落盘,不复制进追踪续写状态卡;只有下一章必须履行的承诺才在下一次逐章事务里进入 `next_chapter_commitments`。
252
+ **中途补纲/扩纲小流程**(项目已有大纲;只改细纲不进入正文大修):
253
+ 1. 定位请求范围、已写进度和所属单元:读 `大纲/大纲.md`;卷纲先用 `outline_view.py --toc {卷纲路径}` 定位,再 `--unit {单元ID}` 取闭包,尚无单元用 `--contract` 取契约,不整读。另读 `设定/题材定位.md` 和已有 `追踪/上下文.md`;有正文却缺追踪时停止补纲,提示按 workflow-daily 修复/迁移,不猜进度;无正文也无追踪时以现有纲/设定规划,不为读取状态先初始化。
254
+ 2. 请求章已属于既有单元时复用单元卡,只补/改点名细纲,不另建单元;沿用上方锁定规则。确需新单元才按 references/outline-structure-theory.md「对标节奏迁移」选同类单元,向卷尾**追加**卡及情绪弧线、故事线、伏笔规划,已锁定内容不动。用户补纲不等于授权修改其他章;超出本卷体量时先确认扩卷或开新卷。
255
+ 3. 答上方「排纲自查」1–4(追加单元时按单元内 1/4·中点·3/4 口径);进入细纲层时再做第 5 项供给自查。
256
+ 4. 按本次交付层级停止:只要大纲/卷纲则不展开细纲;需要细纲时按上述批次边界只做请求范围,完成「细纲后设定补全」与批末核对。
257
+ 5. 规划事件和未来揭示只落卷纲/细纲,不提前成为追踪事实。已有正文项目补纲不写 `追踪/`,不执行 init/commit;下一章必须履行的承诺在下一次正文事务里进入 `next_chapter_commitments`。
258
258
 
259
- **细纲质量要求**:每章细纲都要按当前章节蓝图直接指导正文(阶段位置、结构公式、禁止提前释放、内容概括、情节安排、人物关系/出场顺序、情节细化、结尾设定齐备),但**强度按章节定位分配、不是每章顶满**:高压/推进章配齐钩子+爽点+悬念;低压/关系/修炼/信息整理章允许无显性爽点、弱钩子或仅情绪钩子,重点是把功能(喘息、关系、铺垫、转场)写到位。底线是每章都给读者一个往下看的理由、相邻章不情绪趋同(见 references/outline-structure-theory.md「章节定位与张弛」)。字段不完整时先补齐;无法从材料确定的关系或副线写 `[待补充]`,不得杜撰。
259
+ **细纲质量要求**:每章细纲都要按当前章节蓝图直接指导正文(核心事件、字数目标、字数口径、单元ID/位置、目标情绪、主角目标/关键选择、章首钩子、爽点、本章禁止提前释放九个必填字段齐备),但**强度按章节定位分配、不是每章顶满**:高压/推进章配齐钩子+爽点+悬念;低压/关系/修炼/信息整理章允许无显性爽点、弱钩子或仅情绪钩子,重点是把功能(喘息、关系、铺垫、转场)写到位。底线是每章都给读者一个往下看的理由、相邻章不情绪趋同(见 references/outline-structure-theory.md「章节定位与张弛」)。字段不完整时先补齐;无法从材料确定的关系或副线写 `[待补充]`,不得杜撰。
260
260
 
261
- > **细纲钩子来源**:优先沿本批剧情单元卡「对标剧情参照」剧情单元的节拍与兑现方式设计钩子链;多对标书时参 `references/cross-book-recall.md`,副对标同基调 `章节/*_摘要.md` 仍可作单章钩子灵感(可选)
261
+ > **细纲钩子来源**:优先沿本批剧情单元卡「对标剧情参照」剧情单元的节拍与兑现方式设计钩子链;多对标书时参 `references/cross-book-recall.md`,副对标同基调 `章节/*_摘要.md` 仍可作单章钩子灵感(可选);有 `灵感库/` 时可按「适用阶段=细纲」召回 active CBA 辅助钩子设计,零命中不阻塞
262
262
 
263
263
  **章节标题规则**:只做轻量去重;发现同名或明显重复标题时,按本章核心事件改名,并保持细纲标题与正文文件名一致。
264
264
 
@@ -266,23 +266,42 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
266
266
  - 角色 → 建 `设定/角色/{名}.md`(填空模板见 character-basics.md 主角卡/配角卡);核心复用角色真正进入正文后,由追踪事务建立 `追踪/角色状态/{名}.md` 动态快照;
267
267
  - 势力/组织 → 建 `设定/势力/{名}.md`(名称、定位、核心目标、关键人物、与主角关系);
268
268
  - 影响多章的世界观规则 → 建/补 `设定/世界观/{主题}.md`(规则、适用范围)。
269
+ - **刻度与名目** → 建/补 `设定/世界观/{主题}.md` 里的对照表。凡是正文要拿来**比大小、算价钱、报名次、定档位**的东西都算:资质/评级档位、职级与待遇、货币与物价、等级与进度格、名次与席位、赏罚名目、时限与期限。写成**可数的序列**(几档、哪一档在哪、相邻两档差多少),不要只写一个孤立的值。
270
+
271
+ **缺什么按新增物三级处置——不许硬写,也不许一律停摆。** 与写手写正文同一套三级。 排纲或写正文时需要一样东西(角色、能力、物价、规矩、刻度、场景)而设定里查不到时,先查再分级:
272
+
273
+ 0. **先查**:`设定/世界观/`、`设定/势力/`、`设定/题材定位.md`(升级台阶)里是不是已经有(同一件事在不同文件里可能叫不同名字,换个说法登记的也算)。查不到的按下面三级处置。
274
+ 1. **直接写**(场景陈设、路人、地名细部、一次性对话、习俗细节):直接写进细纲,不落档、不上报。
275
+ 2. **写了要报**(发明+落档):既有框架内的具名配角、复用地点的空间属性、能力形态、物价内插、规矩细则、刻度序列,可直接补充,不与既有裁定冲突。先增量落设定,再供细纲引用,并在排纲底稿的供给自查里登记。项目引用用书目录相对路径(如 `设定/角色/张三.md`);`./`、`../` 相对细纲目录,裸文件名不校验。地点只补本批用到的分区、进出口、相对位置或脚程。补纲授权下的新故事线先在卷纲故事线表分配 L 编号并写清主线对接口,再供细纲引用;日更不自动扩纲。
276
+ 3. **先问作者**(提案裁定):牵连全书的金手指规则、真相、伏笔、主线、力量档位、经济锚点、读者契约及马甲归因,不自行决定。在排纲底稿的供给自查里列具体缺口、1-2 个候选及关联设定影响,批末按下方汇报模板用故事话问作者;裁定先落设定再引用,不以占位或临时编数代替。推翻既有裁定、两个设定文件互相冲突也归这一级,列出出处供作者判断。
269
277
 
270
278
  已存在的设定文件按细纲新信息**增量补充、不覆盖**。一次性路人、后文无戏份的配角不建静态档案或动态快照。建档只填细纲已确定的信息,未定字段留占位符,不提前杜撰。
271
279
 
272
- 大纲完成后,创建以下 artifact(加载 [references/artifact-protocols.md](artifact-protocols.md) 中对应模板):
280
+ 按本次交付范围创建以下 artifact(模板见 [references/artifact-protocols.md](artifact-protocols.md)):
273
281
  - **大纲/大纲.md**:全书卷级鸟瞰(卷名+字数+章数+核心事件+状态变化,一段式汇总)
274
- - **大纲/卷纲_第X卷.md**:每卷的剧情单元+情绪弧线(含章节定位)+人物弧线+伏笔+反转+对标结构坐标(参考 outline-methods.md「大纲三层结构法」 + outline-structure-theory.md「章节定位与张弛 / 对标节奏迁移」 + emotional-arc-design.md「六种弧线速查」 + long-reversal.md「反转类型」)
275
- - **追踪事务初始状态**:按 `references/tracking-transaction.md` 构造第 0 章初始化 JSON,执行 `scripts/tracking_commit.py init`,生成检查点、续写状态卡(固定 7 栏)、空的伏笔/时间线视图与目录;紧接着运行 `check`,通过后删除初始化事务 JSON;核心角色动态快照可在第一次正文事务中创建
282
+ - **大纲/卷纲_第X卷.md**:每卷的故事线(L 编号)+剧情单元+情绪弧线(含章节定位)+人物弧线+伏笔+反转+对标结构坐标+**刻度台阶/打脸债/压力线轮转**三表(按需填写,不适用时省略或写「无」;参考 outline-methods.md「大纲三层结构法」 + outline-structure-theory.md「章节定位与张弛 / 对标节奏迁移」 + emotional-arc-design.md「六种弧线速查」 + long-reversal.md「反转类型」;三表模板见 artifact-protocols.md)
283
+ - **追踪不在规划阶段初始化**:开书、大纲、细纲、补纲都不建 `追踪/`;首次进入正文时由 workflow-chapter 处理缺 state(无正文初始化第 0 章,事务 JSON 放书目录 `.story/work/`)。核心角色动态快照在首次正文事务中创建。
284
+
285
+ **规划交付后向作者汇报**(开书、大纲、卷纲、细纲、补纲、改细纲都用;按 SKILL.md「面向作者的汇报」):排纲自查、结构验收是内部核对,只把结论翻成故事话;「先问作者」的缺口和两个设定互相冲突都作为「要你定的事」问。
286
+
287
+ <!-- author-report -->
288
+ ```md
289
+ {做了什么,如「第二卷卷纲定好了」「补好了第22-26章细纲」「按你说的改了第23章细纲」}:
290
+ - {故事层要点,一行一件:这卷/这几章主要发生什么,主角得到或失去什么,停在哪个悬念上}
291
+ - {改细纲时:原来是什么,现在改成什么,会不会牵动别的章}
292
+ {要你定的事:一句问题+白话选项+推荐,如「沈栀的金手指每天能用几次?1. 一次(推荐,后面好加码)2. 不限次」;没有就删掉此行}
293
+ 下一步:{如「要接着写第22章正文吗?」「要继续出第27-31章细纲吗?」}
294
+ ```
276
295
 
277
296
  前 3 章细纲额外加载 [references/opening-design.md](opening-design.md)(黄金三章法则+六大标准)。
278
297
 
279
298
  #### Agent 调用:story-architect
280
299
 
281
- 大纲搭建阶段优先由主会话产出卷纲+首批细纲;只有结构复杂、反转链多或主会话方案不稳时,才调用 story-architect agent。
300
+ 规划优先由主会话按请求范围交付;只有结构复杂、反转链多或方案不稳时才调用 story-architect。
282
301
 
283
302
  当前端已部署 story-architect 时可让它辅助;Antigravity 调用规则同上:
284
- - 任务:卷级结构、首批细纲、钩子/反转/情绪弧线。
285
- - 章节定位:每章标高压/推进/修炼试错/关系回收/低压生活/信息整理;低压章可弱爽点,但仍要有往下看的理由。
303
+ - 任务:传入本次交付层级、章/卷范围与停点;只做卷纲时不让 agent 附带细纲或正文。
304
+ - 章节定位(可选):需要时标高压/推进/修炼试错/关系回收/低压生活/信息整理;低压章可弱爽点,但仍要有往下看的理由。
286
305
  - 目标字数:只填写章级 `字数目标` 与 `visible_chars_v1` 口径;情节点不分配精确字数,也不让模型心算容量。
287
306
  - 主会话校验:按既有细纲流程复核目标、核心字段、可执行情节点和 `[待补充]`;本阶段不把语义判断复制进多端 Hook。
288
307
  - **契约摘要必须原样附带**:本阶段的卷纲要直接产出终局储备(本卷主推线/战果、本卷解锁的终局里程碑、禁碰的未解锁底牌)和剧情单元(单元ID等字段),spawn prompt 必须带上 Phase 1「Agent 调用:story-architect」中的「story-architect 契约摘要」,让主线程与委托产出共用同一 schema。
@@ -0,0 +1,22 @@
1
+ # 写手 prompt 手动组装
2
+
3
+ 仅当组装脚本不可运行或用户指定不用脚本时加载。数据缺失导致 exit 2 应修数据后重跑。
4
+
5
+ - **prompt 第一行固定,逐字照抄、只替换 `{}`**:`本次任务:{写/续写/补写/重写/就地改}第 {N} 章,范围 {全章/哪几点、哪几段,范围外一字不动}。开始前先按「参考文件体系」逐行独立判定命中并读取,命中即必读,未命中不预加载;交付摘要里报出读了哪几个。`
6
+ - 动作写动手方式、不写「首稿」这类阶段名;退回补写、退化重写、自查返工都照实重填。
7
+ - 这行是**指令**不是材料栏目。**交付摘要没有读取清单 = 这行没传,重 spawn。**
8
+ - 第二行起传本章必需材料:
9
+ - 项目目录、章节、细纲文件(**只给路径,不给全文**)、上一章结尾切片(按整行回退约 400 字,**不给路径**)、输出路径与标题行字面量(使用当前平台的原生路径分隔符,章名从细纲 `### 第 N 章:章名` 解析,标题行形态照既有章)。
10
+ - 写前准备输出:本章意图、本节速记、情绪目标、涉及角色、参考技法、必读设定(**直接写出那几句,不给路径**)。
11
+ - 主对标/拆文路径、主/副对标召回摘要。
12
+ - `selected_emotion_module`、`rhythm_reference` 及来源路径。
13
+ - `genre_prose_card`(题材正文提示卡摘要,只含本章相关条目)。
14
+ - 文风全文路径、按 `style-resolution.md` 形成的 `style_resolution`、原文锚点;同一裁决原样交后续去味与审稿。
15
+ - `author_preferences`:作者记忆 `query` 结果中匹配本章的 `prose_style` / `story_design` 项;无则不传,禁止把完整画像或待确认项塞进 prompt;作为低优先级倾向自然吸收,不逐条展示或最大化命中,不牺牲连贯、节奏和字数。
16
+ - 本章禁止提前释放信息与各点「放」;细纲写了阶段位置、结构公式时一并传。
17
+ - 字数目标、`visible_chars_v1` 口径、格式硬约束;默认两组交付并由主会话测一次 checkpoint;用户明确要求一次成文时才写全章。字数目标按整章分量刻度使用,疏密自行分配,不填写逐情节点配额。
18
+ - **agent 定义里已有的不重述**,只留一行指针:细纲优先边界=铁律 1、正文形状=铁律 2、新增物三级=铁律 3、阅读体验字段(本章标价/闭环状态/信息差触发点/镜头准入档位/情节点分辨率列/执行边界「放」半边)=铁律 4、交付三附件(情节点落点/新增申报表含末行「本章没写成的」/参考文件读取清单)=被调用协议。申报表与「没写成的」行的去向见步骤 12 与 workflow-setup「排纲自查与细纲」步骤 3。
19
+
20
+ ## 检查分工
21
+
22
+ 手动组装同样传入:写手负责编排、内容覆盖与格式自检;父流程质量阶段负责语义去味和最终文件扫描。写手不提前重复整轮去味或相同检查链,情节点落点、新增申报与原定交付保留。
@@ -11,6 +11,7 @@
11
11
  - genre-prose-cards.md 提供题材声线与长线约束;本文件的「贯穿道具系统」提供跨章可执行设计模板
12
12
  - 本文件第 8 节「场景写法(三维度揉进)」是 Phase 3 的写作方法,`long-format.md` 负责长篇章节的段落、对话与工程元信息规范
13
13
  - 本文件「贯穿道具系统」只规定物件的三次出现编排时机和意义翻转规则;物件的初始情感含义设计(选什么物件、承载什么羁绊)由 emotional-methods.md 负责(信物型物件与羁绊铺设功能重叠,但视角不同)
14
+ - 本文件第 10 节「在场者的账」只管**谁能上镜、他的动机要不要露出来、分量由谁标价**;具体的对话怎么写(长度、权力反转、句式)仍见 dialogue-mastery.md,本文件不重复
14
15
 
15
16
  ---
16
17
 
@@ -20,6 +21,8 @@
20
21
 
21
22
  情绪没有固定译法。上下文已经让读者感到,就不另补反应;情绪推动了剧情,就优先写角色的选择、台词、策略、关系变化、物件变化或实际后果;一句直写最准确时可以直写("他听烦了")。身体状态只是候选之一,只有它带来新信息、影响动作,或确实属于这个角色和这个场景时才写。
22
23
 
24
+ **同一规则适用于设定、能力与威胁。** 一样东西"危险""碰不得"不由叙述者断言,由一次有代价的试探演示:伸手、被弹回、自己估出还差多远;多看两眼、开始恍惚、退后一步绕开。旁白不先给答案(保留读者的发现权)。
25
+
23
26
  ### 落地顺序
24
27
 
25
28
  写到情绪节点时按下面顺序判断,不做“情绪词逐个替换”:
@@ -41,7 +44,7 @@
41
44
  | 紧张妨碍正在做的事 | 可以写笔尖划坏签名、钥匙插错锁孔等具体后果 |
42
45
  | 身体细节只是在句尾标注情绪 | 删除;不要换一套部位或同义动作 |
43
46
 
44
- ### 反套话四问
47
+ ### 套式反应删除测试
45
48
 
46
49
  逐章检查重点情绪段,并指出对应原句;不是要求每段补一种反应:
47
50
 
@@ -108,6 +111,9 @@
108
111
  | 伤害递增 | 数字逐次增大 | 800 → 1000 → 8 万 → 120 万 |
109
112
  | 反差暴击 | 极端膨胀后骤降到极小值 | 「我姐为了供我读书,欠了八万块。我姐夫转给我一块钱。」 |
110
113
  | 时间重量 | 用年限承载情感 | 「二十年了,她第一次叫我妈」 |
114
+ | **二次锚定** | 数字不许停在数字上,折回角色能用掉的东西 | 「卖了一千二百块」→「够她妹妹一学期的住宿」 |
115
+
116
+ **新价值一律换算成读者已知的旧价值。** 换算的对象要选读者**已经付过代价认识**的东西:上一章刚花掉的钱、上一章刚见过的一个人花了多久、主角现在缺的那一样。**换算发生在同一段里**,不隔章补。
111
117
 
112
118
  ### 数字叙事模板
113
119
 
@@ -242,6 +248,10 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
242
248
  - 为显得自然而加流程细节;删掉无损就删
243
249
  - 为凑字数重复解释情绪,或给每段补一个无功能身体反应
244
250
 
251
+ **一处显式例外:人物余韵。** 上面「删掉无损就删」不针对给人物加层的段落——一次说岔了的关心、一个被误会的反应、一个空镜。它的"无损"只对情节成立:判断方法不是问它推进了什么,是问**删掉之后谁少了一层**。
252
+
253
+ **这是豁免,不是配额。** 材料里长出这样一处就别砍;没长出来就没有,**不要为了凑"每章一处"补一段**。
254
+
245
255
  ---
246
256
 
247
257
  ## 8. 场景写法(三维度揉进)
@@ -251,10 +261,11 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
251
261
  细纲各字段是本章"要发生什么"的规格,**不是正文的形状**。照着细纲的形状逐格填,正文就成了一条一条交代的电报体、一拍一句平推的生硬解说——这是"照抄大纲形状",和照抄范例形状同属 AI 味来源。
252
262
 
253
263
  - 情节点序列是"要发生什么"的清单,不是句子模板:不要一个情节点写成一句或一段、按序平推;把每个点演成角色此刻可感知的选择、动作、对话、物件、结果,必要时才用身体反应——**演出来,不是交代出来**。
264
+ - **状态变化要给出台阶,不只给前后。** 一样东西烧起来、一张脸沉下去、一个人的态度转过来——要让读者看见中间态:先怎样、跟着怎样、最后成了什么。只给起点和终点的是概述,不是场景。台阶是**序列**不是堆料:同一状态换十种说法说十遍,仍然只是一个台阶。
254
265
  - 同一约束如果在「核心事件 / 内容概括 / 情节安排 / 情节点」里重复出现,生成前只合并成**一个语义点**;重复字段不是强调,更不是四次复述额度。正文不得沿用提纲里反复出现的同一措辞逐项交代。
255
266
  - 五段式(起因/发展/转折/高潮/结尾)是给细纲作者的功能拆解,不是正文的五个自然段;正文不必逐段顺叙,也不必一段对一格。
256
267
  - "谁做了什么"的概括句、"A→B→C"箭头链、"收束到什么状态"是规划口径,不要原样搬进叙述。
257
- - 情节点之间可以合并、穿插、重排,让相邻的点织进同一个连续场景;密点展开成慢镜头,疏点带过(见「疏密分配」)。
268
+ - 同一场戏里的几个点可以合并、互相打断,不必排成逐点清单;因果依赖或刻意的节拍分隔才串行。只改顺序不会让正文变好看(交错与否的对照实验测不出差别),密点展开、疏点带过更要紧(见「疏密分配」)。
258
269
  - 章尾落在最后一个具体的动作、画面、台词或悬念上;细纲「结尾设定/收束状态」是规划口径,不要在正文里写成"就这样……""他终于明白……"式的状态总结句(结尾去升华见 anti-ai-writing.md)。
259
270
 
260
271
  ### 视角姿态:深度限知(贴地沉浸)
@@ -263,7 +274,7 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
263
274
 
264
275
  - **镜头不拉远、不俯瞰、不切他人内心**:别写"整个大厅陷入死寂"这种摄像机视角,写"她听见自己的心跳,旁边的呼吸声一下子全没了"。
265
276
  - **读者与角色同步获知**:角色不知道的不写;不提前剧透,不补全背景。悬念来自"她也不知道",禁止提前剧透句如"她不知道的是"。
266
- - **念头是动作的一部分**:心理用"闪念 + 身体"呈现——半句的、被打断的、带情绪偏见的主观判断,不写完整理性的内心独白。
277
+ - **念头是动作的一部分**:用半句的、被打断的、带情绪偏见的主观判断,不写完整理性的内心独白;不强配身体动作,情绪落地按第 1 节。
267
278
  - **主观偏差代替客观叙述**:场景被角色情绪染色。她恨谁,谁就被写得可憎;她慌,光线就晃。不写中立的、谁看都一样的描述。但只能是她此刻带偏见的瞬间感觉,不能写成"像在宣判一件早已定好的事"这类客观盖棺断言(那是作者下场定性,见 anti-ai-writing.md 模式 8)。
268
279
 
269
280
  深度限知是"自然去 AI"的根:把镜头钉死在角色身体里,作者就没有位置跳出来解释、总结、安排了(配合 anti-ai-writing.md 模式 8)。
@@ -314,7 +325,20 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
314
325
 
315
326
  ### 自检方法
316
327
 
317
- 对详写的关键场景用“三维遮盖法”:分别遮住发生、感知、反应,判断现有内容是否各自提供了不同信息。某维缺失不等于要补;只有读者因此看不懂现场、因果或角色下一步时,才把缺失信息织回同一镜头。若遮住一处身体/语气细节后什么也没损失,删掉它。逐章再做第 1 节“反套话四问”,指出原句处理,不用“已遵守”代替检查。
328
+ **写法抽查(质检侧用)**
329
+
330
+ 只许指出正文里**已有**的那一处,没有就答「无」,**不许为了让某一问有答案回头补内容**;只报告实际删改与保留理由,写手不另交验收说明。详写的关键场景里,遮住一处发生、感知或反应后读者什么也没损失,就删掉它;套式反应按第 1 节「套式反应删除测试」逐处过。
331
+
332
+ | # | 自问 | 不合格的样子 | 见 |
333
+ |---|---|---|---|
334
+ | 1 | 本章最大的那次状态变化,读者看见了几个中间态? | 只给了"起点"和"终点";或同一状态换十种说法说十遍 | 本节「从细纲到正文」 |
335
+ | 2 | 有没有一组同类并列项被平均分配了笔墨? | 三样物件、四拨人马各给同样的分辨率 | 本节「疏密分配」 |
336
+ | 3 | 本章的设定/能力/威胁,是被说出来的,还是被谁付了代价试出来的? | 旁白直接给出结论,读者没有自己发现的机会 | 第 1 节 |
337
+ | 4 | "厉害/难得/要命"这些判断,是谁给出的?他有什么立场? | 叙述者自己下的判断;结论由旁白先说出来、在场的人只负责吃惊;或标价人就在场却没标价 | 第 10 节「标价人」 |
338
+ | 5 | 每个给了镜头的人,此刻在为自己争取什么? | 遮住名字认不出是谁说的;所有人同向配合主角;用手部/喉部微动作代替立场;或把他的算计写成一段旁白独白 | 第 10 节「镜头准入」 |
339
+ | 6 | 该说出口的话,是写出来了还是被概括了? | "他吼了一声""他说了句什么""三言两语解释了缘由";本该来回几轮的交锋压成一次说完 | 第 3 节 |
340
+ | 7 | 本章最重的那一句,是不是最短的那一段? | 最重的一拍写成了全章最长的段落 | 本节「画面分段」 |
341
+ | 8 | 判为"密"的段落里,有没有量词加概括? | "一连七八下""半晌""众人纷纷"出现在密处 | 本节「疏密分配」 |
318
342
 
319
343
  ### 画面分段(防止一段到底)
320
344
 
@@ -337,6 +361,7 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
337
361
  - 长度只是诊断,不是强制阈值:读起来拥挤、包含多个动作/信息/视线切换时才拆;完整戏剧单元未结束时不要为凑短而硬拆。
338
362
  - 常规正文保持短段、稍长段、对话、动作段交替;高压冲突、打脸、反转段可以更碎更短。
339
363
  - 不要连续多段同长度,也不要把一个完整推理链切成机械碎片。
364
+ - **最重的一句要最短。** 全章最重的那一拍——底牌亮出、一句定生死的许诺、身份被说破——用最短的一段承接,能单句成段就单句成段。**长度表达绵延,不表达重量**;要"慢"用停顿,不用字数。
340
365
 
341
366
  输出前必须做一次自然节奏重排:
342
367
 
@@ -371,6 +396,10 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
371
396
 
372
397
  原则:一章里详写的 beat 集中在情绪节点,过场坚决压缩。读者记住的是密处的画面,疏处只是把他们快速送到下一个爽点。密度有起伏,节奏才有呼吸。
373
398
 
399
+ **同类并列项要递减,不要平均。** 三样物件、四拨人马、五次出手——第一个写足,第二个减半,后面的一句带过或只给一个区别点。**递减不是省略**:被压缩的那几个仍要各有一个不重复的记号,否则是漏写。
400
+
401
+ **判为"密"的地方禁止量词加概括。** "一连七八下""斗了半晌""众人纷纷点头""交手数十回合"(把过程折叠成一个数字,是疏处的手法)。密处只有一种写法:挑出其中**具体的几下**,逐拍写。
402
+
374
403
  ### 子事件连接
375
404
 
376
405
  子事件之间按真实关系连接:因果推进、对话接招、新信息、空间移动或角色下一步都可以;不规定必须插入身体动作,也不规定连接句长度。
@@ -419,3 +448,33 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
419
448
  1. 读本场景目标情绪和角色声线,给每个关键对话 beat 标一类语气(压迫/试探/爆发/迟疑/被打断)。
420
449
  2. 精修时扫一遍句尾:如果一整段只剩句号,检查是否把质问、迟疑、爆点压平;如果满屏 `?`/`!`,删到只保留有功能的位置。
421
450
  3. 正文(含对话)里的 `……`、`——`、`—`、`--` 都改成句号、逗号、短句、换行或动作断句。知乎盐言 `「」` 只是引号风格,不影响问号、感叹号的合法使用。
451
+
452
+ ---
453
+
454
+ ## 10. 在场者的账(镜头准入与标价)
455
+
456
+ 治的是"所有人一起转向、齐声承认"的场面(人都在场,却没有一个在为自己做事)。
457
+
458
+ ### 镜头准入:他在为自己争取什么
459
+
460
+ 写一个人之前先答一句:**他此刻在保什么、在算什么?** 答不上来就不给镜头;给了镜头,这件事必须在他的台词或动作里露出来,哪怕只露半句。
461
+
462
+ 同一件事,在场各人读出的东西应当不同:掌握资源的一方重算利害决定不必得罪,输的一方忙着把责任推给别人,拉不下脸的那个改去攻击对方另一处短板,当事人的亲近者只顾趁热把话钉死。
463
+
464
+ - 判断方法:**遮住名字,能不能认出这句反应是谁的?** 认不出,说明他们说的是同一句话的几种说法。
465
+ - 反应要**分层**:全体折服最没张力,留一两个不服、只把评价角度换到别处,可信得多。
466
+ - 群像场景最吃紧;独角戏里退化为"主角图的是什么",同样成立。
467
+
468
+ ### 说话权分级:惜墨表示地位
469
+
470
+ 在场的人不是平权的。**一场戏只给三到四个人台词**,其余降级为一个动作或一个目光——地位越高的人给的动作越少、越静,用惜墨表示分量;同等级同立场的合并成一句,连名字都不必给。**点名的时机 = 承担功能的时机**,提前点名是提前许诺。
471
+
472
+ 反面信号:五六个人各做一个等重量的小动作——镜头被平摊,谁也没立住。
473
+
474
+ ### 标价人:谁说这件事重要
475
+
476
+ "厉害/难得/要命"由**有立场的人**当场标价,不由叙述者断言。四种方式:**内行估价**(懂行的人给一句业内口径评语)、**最强者的姿态**(最有分量的人必须做出动作才顶得住)、**基准线被打破**(熟悉此地的人说"往常不该是这样")、**稀缺度**(交代平常要什么代价才换得到)。
477
+
478
+ **标价发生在事情起效之前**,不能等结果出来再补。反面:该标价的人就在场,却只写他"笑了笑,凑到旁边说了句什么"——位置留了,内容没给。
479
+
480
+ **尺子要先于被度量的事出场,至少两把**(同场另一个做到几寸、当年最好的那个用了多久)。事后补一轮尺子也可以(同一个爽点吃第二遍)。