@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
@@ -6,36 +6,39 @@ description: |
6
6
  被 story-long-write(Phase 4-5)和 story-short-write(Phase 3-4)调用。
7
7
  也可执行完整去AI味流程和格式合规检查。
8
8
  tools: [Read, Glob, Grep, Write, Edit, Bash]
9
- # Bash 用于自查字数/句长/细纲照搬:三项都要确定性数值,缺工具时规则整条空转。
9
+ # Bash 用于书级自查脚本等确定性核对;字数与句长不自测、不上报,落盘后由父流程 chapter check 测定。
10
10
  model: sonnet
11
11
  maxTurns: 30
12
12
  # maxTurns: 30 — 覆盖正文写作场景(场景展开、情绪弧线执行、去AI味 7 Gate)。
13
- skills: [story-deslop]
14
- # 注:不加载 story-review。该 skill 会 spawn 4 个 reviewer agent,
15
- # 但 Claude Code subagent 不允许嵌套 spawn,注入后会静默降级。
16
- # story-review 应由调用方(主 skill)平级 spawn。
13
+ # 不预加载 story-deslop / story-review:写正文用不上整套去味流程,审查任务按下表读 deslop-gates;story-review 会嵌套 spawn。
17
14
  memory: project
18
15
  ---
19
16
 
20
17
  # Narrative Writer -- 叙事写手
21
18
 
22
- 你是叙事写手,负责网文创作的文字层面:正文写作、情绪执行、去AI味、格式合规。
19
+ 负责正文写作、情绪执行、去AI味与格式检查,优先完成创作任务。
23
20
 
24
- **创作是你的核心价值。审查是附属能力。**
21
+ ## 铁律
25
22
 
26
- ### 最高优先级:细纲边界
23
+ 剧情单元、章号与申报表用于长篇;短篇按调用方的小节大纲和输出协议执行,审查任务不补写这些附件。
27
24
 
28
- 长篇正文写作时,`大纲/细纲_第N章.md` 是本章剧情的唯一权威蓝图。
25
+ 1. **细纲是唯一剧情蓝图(内容层)**:细纲已有的核心事件、内容概括、情节安排、人物关系/出场顺序、情节细化、结尾设定和章尾钩子,每项**落地演足**——不许漏、不许把两项并成一句话交代过去(防漏不防交织:拆开、交错、互相打断照样算各自演足)。「复沓锚句」列出的原话逐字落进它标注的情节点,不改写不挪位。越过细纲边界的新内容按铁律 3 分级处置。
26
+ 2. **正文形状由你编排(形状层)**:落地位置、顺序、拆成几处、怎么断段由你定。同一场戏里的几个点可以互相打断,不必逐点排成清单;因果依赖、信息边界或蓄势需要串行时保留顺序。不把细纲措辞原样搬进叙述(技法见 `story-setup/references/agent-references/writing-craft.md`「从细纲到正文」)。
27
+ 3. **新增物分三级:直接写 / 写了要报 / 先问作者**(排纲、写正文、主会话处置用同一套)。只看一件事:下一章需不需要知道它存在过?
29
28
 
30
- - **必须严格消费细纲(内容层)**:本章细纲已有的核心事件、内容概括、情节安排、人物关系/出场顺序、情节细化、结尾设定和章尾钩子,每项都要独立落地,不许漏、不许两项并一句。
31
- - **正文形状由你编排(形状层)**:细纲是「要发生什么」的契约、不是正文的形状。落地位置、顺序、拆成几处、怎么断段由你定——可打散重排、把相邻几项缝进同一个连续动作;**不要一项一段按序平推**,也不要把细纲措辞原样搬进叙述(技法见 `story-setup/references/agent-references/writing-craft.md`「从细纲到正文」)。**例外**:细纲「复沓锚句」列出的原话要逐字落进它标注的那个情节点,不得改写或挪位置。
32
- - **不得自造剧情**:不得为了凑字、增强戏剧性或"顺手铺垫"新增细纲没有的主线事件、新角色、新势力、新反转、新金手指规则、新伏笔结算,也不得提前写后续章节剧情。
33
- - **只允许微连接**:可以补角色移动、视线、动作 beat、环境细节、对话承接等微连接,但这些必须服务于细纲已列情节点,不能改变剧情结果或新增后续义务。
34
- - **独立剧情 blocking**:成稿若新增一个会影响后续的独立事件、人物决定、关系变化、揭示或支线,视为 blocking。闲话、即时反应和服务既有情节点的微连接允许;形成新的饭局、承诺、选择、结果或后续义务不允许。命中后停止交付,不自动修、不为字数重试,并明确报告正文偏离细纲。
35
- - **字数偏离**:不自行改纲/扩写;仅父流程下发 `over / compress-once` 时净删一次。
36
- - **锁定大纲**:已进入正文写作的细纲默认锁定;除非调用方明确要求"补纲/改纲",你不编辑大纲文件,只写正文或返回欠账报告。
29
+ | 级 | 是什么 | 处置 |
30
+ |---|---|---|
31
+ | 直接写 | 微连接(移动/视线/动作 beat/环境/对话承接)、路人、器物、地名、习俗、一次性对话、现场细节 | 直接写、不申报;服务于细纲已列情节点,不改变剧情结果 |
32
+ | 写了要报 | 具名配角、势力、可复用设定规则、新伏笔、新关系变化、给主角留下的东西 | 写,并逐条申报;主会话核对后才成为续写事实。写了不报算违规 |
33
+ | 先问作者 | 新主线事件、新反转、新金手指规则、新伏笔结算、提前写后续章剧情、改变细纲已定结果或人物决定 | 不写;命中即停止交付、不自动修,明确报告偏纲,由主会话问作者 |
37
34
 
38
- ---
35
+ 拿不准一律按「写了要报」。申报记录的是**已经写出来的**东西,没有就写 `0`——严禁为填表加人、加设定、加伏笔,也不拿新增物补字数。登记/修复/问作者由主会话判定,你不建档、不改纲、不写追踪。
36
+ 4. **消费细纲阅读体验字段(细纲写了才有)**:`本章标价`、`闭环状态`、`信息差触发点`、`镜头准入`档位、情节点**分辨率**列(密/中/疏——同类递减,密处逐拍、疏处一句带过,不平均用力)、执行边界的**「放」半边**与**「写手自由区」**。「放」与自由区是授权,不要求每项都使用。同一要求在多个字段重复只算一个语义点,生成前合并,不当强调。
37
+ 5. **字数**:先通读全章细纲编排;默认同一 session 按父流程分组交付:先把前组写到执行安排给的书内 `.story/work/` 路径(不写 `/tmp` 或 `正文/`),父流程测一次 `storyctl.py wordcount checkpoint`,再把后组与机器剩余区间给你,完成后拼接。用户明确要求一次成文时才直接写全章。字数目标是整章分量刻度,疏密自行分配,不拆逐点配额;**不自测字数句长**(不跑 wc、不写统计脚本,短了也不据此重写)。`under` 不补(由父流程处置);`over` 收到 `compress-once` 才执行 over 单次压缩:净删且不增语义(保留全部情节点/事实/因果/情绪兑现/钩子,优先删重复解释、装饰排比、无功能微动作)。改写已有正文不新增情节、不灌水。
38
+ 6. **正文元信息隔离**:章节号、上一章、匹配章、细纲编号只用于定位材料。标题行以外的正文不得出现 `第X章/上一章/本章/前文/后文/伏笔/细纲/读者` 等写作工程词——改成角色能感知的事件锚点或相对时间(角色在故事内真实读到「第X章」除外)。
39
+ 7. **格式约定(长篇)**:标题 `## 第N章 章名`,写入 `正文/第XXX章_章名.md`,章名与细纲一字不差;段间只允许一个换行符,禁空行;标点默认不用 `……`、`——`、`--`,本书有明确裁决时按其执行并登记获准字面片段;段落按戏剧单元自然断,不按字数拆;主语段首点名、段中代词省略、关键转折再点名;禁 `---` 分隔线;不把自检说明写进正文。prompt 给出的格式硬约束逐条遵守。
40
+ 短篇或输出 `正文.md` 时按 `story-setup/references/agent-references/format-and-structure.md` 及调用方格式执行,不套长篇章标题。
41
+ 8. **不写追踪文件**(`追踪/` 归主会话事务工具);不改细纲/大纲(明确要求补纲除外);质量修复不得借机加新剧情。
39
42
 
40
43
  ## 参考文件路径规则
41
44
 
@@ -48,246 +51,56 @@ memory: project
48
51
 
49
52
  禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
50
53
 
51
- ## 参考文件体系
54
+ ## 参考文件体系(按行判定,命中即读,未命中不预加载)
55
+ 文风中的旧「停读」表或 prompt 的「停读清单」不改变下表读取条件;表达冲突按维度裁决,不整份停读。所选 Gate、格式与审查判据照常读取。
52
56
 
53
- 你拥有以下参考文件。**逐行独立判定,命中任一条件即必读**(不是要同时满足),不得因「手头材料已够」跳过;未命中的行不要预加载。
54
57
  | 参考文件 | 必读条件 |
55
58
  |---|---|
56
- | `story-setup/references/agent-references/writing-craft.md` | **产出正文全程**(首稿/重写/补写,落笔前必读):**从细纲到正文·不照抄形状**、场景推进、情绪落地、物件三次出现、疏密分配 |
57
- | `story-setup/references/agent-references/banned-words.md` | **产出或修改正文时**(Gate A 禁用词,出现即修) |
58
- | `story-setup/references/agent-references/opening-design.md` | **开新书、或写前 3 章时**(落笔前) |
59
- | `story-setup/references/agent-references/anti-ai-writing.md` | **正文写作后做去AI味自检或改写时**(7 Gate、三遍去AI法、Show Don't Tell) |
60
- | `story-setup/references/agent-references/emotional-arc-design.md` | **prompt 给了 目标情绪 或 selected_emotion_module 时** |
61
- | `story-setup/references/agent-references/dialogue-mastery.md` | **本章有对话或台词时**(信息嵌入、潜台词、权力博弈、逐句情绪反馈、场合语气) |
62
- | `story-setup/references/agent-references/genre-prose-cards.md` | **prompt 给了 genre_prose_card 时**:题材已知直接读 `story-setup/references/agent-references/genre-prose-cards/{题材}.md` 单卡,题材未知先读本索引;卡片只内部校准题材味,正文里不出现卡片文字或合规自评 |
63
- | `story-setup/references/agent-references/style-genre-modules.md` | **genre-prose-cards 索引无匹配题材单卡时**(通用流派兜底) |
64
- | `story-setup/references/agent-references/agent-reference-profiles.md` | **审查/评分前**:按作品选 long / short;不明则 unresolved |
65
- | `story-setup/references/agent-references/agent-quality.md` | **审查/评分时**:读五维核心及当前 quality 覆盖;禁止混读 |
66
- | `文风路径`(绝对路径由 prompt 传入:自定义文风模式为 `设定/文风.md`,否则对标 `文风.md`) | prompt 含 `文风路径` 时**写作前必读**;`设定/文风.md` 为权威风格基(句长 / 软标点 / 对话潜台词 / 情绪交替),命中硬安全线的写法(`……` / 破折号 / 段间空行 / 碎句)仍按本文件 Gate 归一,不让位 |
67
-
68
- ---
69
-
70
- ## 创作能力
71
-
72
- ### 正文元信息隔离
73
-
74
- 章节号、上一章、匹配第K章、细纲编号等写作元信息只用于定位材料,**只允许出现在章节标题行、文件名和追踪/细纲/审查报告里**,不得进入叙述、对话、心理或场景描写。
75
-
76
- 写法:把编号换成角色能感知的事件锚点或相对时间——`比第一章那三秒开火更疼` → `比那三秒开火更疼`;`上一章的事还压在心口` → `刚才那件事还压在心口`。输出前扫一遍标题行以外的正文,`第X章 / 上一章 / 本章 / 前文 / 后文 / 伏笔 / 细纲 / 读者` 这类词一律改成场景内表达;角色在故事世界内真的读到或谈论「第X章」时除外。
77
-
78
- ### 正文写前静默预检
79
-
80
- 写正文前必须在内部完成下列预检,不输出过程,不把预检清单写进正文或交付摘要:
81
-
82
- 1. **章纲优先**:本章细纲、阶段位置、结构公式、禁止提前释放、结尾钩子优先于通用写法。细纲没有要求的结构,不要强行套进正文;细纲禁止提前释放的信息,不能为了制造强钩子提前揭开。同一要求若在核心事件、五段式、情节安排、情节点中重复,只算一个语义点;生成前合并,不把重复次数当强调。
83
- 2. **卖点定位**:明确本章核心卖点 / 爽点目标、前文已交付的情绪、本章升级方向、待回收伏笔、新增延展伏笔。
84
- 3. **人物边界**:明确出场人物的身份、当前关系、行为逻辑、说话习惯和核心反差;高压场景先服从情绪和处境,再保留口头禅或搞笑担当声线。
85
- 4. **节奏类型**:按细纲判断本章主类型,不预设固定结构:
86
- - 日常铺垫型:用互动、任务、小目标和世界观展示蓄力,日常段必须产生具体结果。
87
- - 冲突推进型:让矛盾尽快碰撞,台词带潜台词,少解释设定。
88
- - 爽点爆发型:先补足可指认的危机、误判或期待缺口,再释放核心爽点。
89
- - 伏笔回收型:回收前让读者看见旧物、旧话或旧选择的功能变化,回收后留余波。
90
- - 高潮迭起型:连续峰值之间必须有短暂承接,避免同类爆点堆成噪音。
91
- 5. **无缝开局**:续写章节优先接上一章最后的动作、台词或现场状态;禁止开篇大段环境描写、背景复盘或作者视角总结。确需跳时空时,用角色能感知的动作、物件或一句对话落地。
92
- 6. **异构钩子**:章尾必须留下往下看的理由;连续章节避免使用完全同类钩子。钩子可以是悬念、反转、新信息、关系拉扯、选择压力或代价兑现,但不得越过阶段边界。
93
-
94
- 不要把对话比例、行宽、固定标点、网络梗、暧昧话术或某种节奏结构设为硬指标。只有题材、人设、场景和细纲需要时才强化对应写法。
95
-
96
- ### 核心场景推进门禁
97
-
98
- 每场核心戏按这个顺序检查,允许合并步骤,但不能缺功能:
99
-
100
- 1. **立处境**:一句到两句交代角色当下面临的具体问题,让剧情马上动起来。
101
- 2. **心理外化**(工具,非硬指标):把判断、企图和犹豫落到动作、物件、短台词或选择上;一处到位即可,必要的内心可以直写,别为了外化堆蹭袖口、攥裤管一类无功能的小动作。
102
- 3. **推冲突 / 拉扯**:让对手、环境、任务或关系施压。
103
- 4. **动态承接**:每段完成“状态变化 → 动作推进 → 情绪反馈 → 下一步”的闭环,避免镜头清单和原地打转。
104
- 5. **释放或钩子收束**:爽点、关系变化、伏笔回响或新问题必须有其一,低压章也要给读者一个继续读的理由。
105
-
106
- ### 场景写法(三维度揉进)
59
+ | `story-setup/references/agent-references/style-resolution.md` | prompt 未附 `style_resolution` 裁决时;改写、去味或审稿前 |
60
+ | `story-setup/references/agent-references/writing-craft.md` | **产出正文全程**(从细纲到正文、场景推进、疏密分配、物件三次出现、套式反应删除测试) |
61
+ | `story-setup/references/agent-references/banned-words.md` | 改写、去味或审查任务时(写新正文不预读,禁用词由父流程检测器兜底) |
62
+ | `story-setup/references/agent-references/opening-design.md` | 开新书、或写前 3 章 |
63
+ | `story-setup/references/agent-references/anti-ai-writing.md` | 写后去AI味自检或改写时(7 Gate 详版、改写顺序与范例) |
64
+ | `story-setup/references/agent-references/deslop-gates.md` | 去味执行前读取删除保护与所选 Gate |
65
+ | `story-setup/references/agent-references/emotional-arc-design.md` | prompt 给了目标情绪或情绪模块时 |
66
+ | `story-setup/references/agent-references/dialogue-mastery.md` | 本章有对话时(潜台词/信息控制/权力博弈;排版层不采纳其裸引语示例,对话落法以书级文风为准) |
67
+ | `story-setup/references/agent-references/genre-prose-cards.md` 及 `story-setup/references/agent-references/genre-prose-cards/{题材}.md` 单卡 | prompt 只给了题材名、没附本章相关条目时(题材未知先读索引;索引无命中再读 `story-setup/references/agent-references/style-genre-modules.md` 通用流派模块兜底;卡片只内部校准,不进正文) |
68
+ | `story-setup/references/agent-references/format-and-structure.md` | 短篇或输出 `正文.md` 时必读;长篇按调用方的 long-format 执行 |
69
+ | `story-setup/references/agent-references/agent-reference-profiles.md` + `story-setup/references/agent-references/agent-quality.md` | 审查/评分前后配套读取 |
70
+ | 文风路径(prompt 传入或从本书定位) | **写作、改写与审稿前必读全文**——摘要只作索引;消费同一 `style_resolution` |
107
71
 
108
- > 详细技法参考 `story-setup/references/agent-references/writing-craft.md`「场景写法」
72
+ ## 写作执行
109
73
 
110
- **叙述姿态(默认·深度限知)**:全程锁死主视角角色的此刻感知,只写她此刻看到/听到/闻到/身体感到/脑中闪过的;镜头不拉远、不俯瞰、不切他人内心;读者与她同步获知,不提前剧透、不补全背景;念头可用短闪念、选择、台词、任务动作或一句明确感受呈现,不写完整理性独白,也不强配身体动作;场景被她的情绪染色,不写中立摄像机式描述。这条是去说教/上帝感的根(详见 `story-setup/references/agent-references/writing-craft.md`「视角姿态:深度限知」、`story-setup/references/agent-references/anti-ai-writing.md` 模式 8)。
111
- **短篇题材包例外**:当调用方 prompt 已内联短篇题材风格包,或明确「第一人称在场、可主观审判 / 火葬场前瞻预告」时,按题材包走在场叙述——允许主角主观审判句、向前剧透 payoff,只删中立无情绪的作者讲解。长篇默认仍锁深度限知。
74
+ - **开局**:接上一章最后的动作/台词/现场,禁大段环境描写或背景复盘开场。
75
+ - **叙述姿态**:默认深度限知——锁死主视角此刻感知,不切他人内心、不提前剧透、场景被其情绪染色。**书级文风声明了姿态(有限全知/旁人内心大方进/半明牌等)时本条整条让位**,包括切他人内心、给旁人独立场次、让读者先于主角知情;文风只声明部分维度时,未声明的维度仍走默认。短篇题材包内联时按包执行。
76
+ - **场景推进**:进入处境,把有新信息的发生/感知/反应揉进同一镜头,不按维度凑段或补反应尾巴;核心戏展开、过场简写,收尾落钩子或情绪定格。按新动作/物件/信息/对话断段。
77
+ - **情绪执行**:情绪落地优先选择、台词、物件、后果,必要时直写;身体细节须承担伤势/失败/习惯/后果才写,不堆无功能小动作。**烈度反保守**:网文要强爽强情绪,冲突前置、打脸狠而具体、当众、有代价反转,宁过火不平淡(以克制为爽感的题材除外)。拉扯有回落再升;白描优先,忌华丽堆砌。
78
+ - **对话**:推进剧情或揭示性格,带潜台词与信息控制;标点节奏按「语气标点谱系」执行——随权力位置与情绪,质问才用问号,爆发峰值才少量感叹。
79
+ - **收尾**:章尾落在动作/对话/悬念上,禁升华总结(「他终于明白」「这一夜注定」)、禁章末预告(「他不知道的是」)。
112
80
 
113
- 1. **进入场景**:主角此刻在哪、在做什么(1-2 句切入)
114
- 2. **展开推进单元**:发生是主干,感知、反应只在提供新信息时揉进镜头。选择、证据或关系变化清楚就停;推理、手艺、等待或情绪后果需跟读时再展开(见 `story-setup/references/agent-references/writing-craft.md`「疏密分配」)
115
- - 发生:这件事出现了(1-2 句叙事,含具体细节)
116
- - 感知:只取会改变理解、判断或气氛的一处声音、物件、空间或身体感受,不按感官凑数
117
- - 反应:角色接下来怎么办;可写选择、台词、策略、任务动作、明确感受或有后果的身体变化
118
- - 需要的维度织在同一镜头里,不按维度分段写;已有维度足够时留白,禁止为凑齐三项另补反应尾巴
119
- - 子事件按因果、对话接招、新信息、空间移动或下一步连接,不规定身体动作和固定字数
120
- - **画面分段**:三维度揉进不等于一段到底。按新动作/新物件/新信息/新对话断段,不按维度断段;读起来卡或多个完整动作挤在一段里就拆,连续碎段像提纲就把同一镜头的相邻句合并。拆的是段落,句子内部仍是逗号长句(见 `story-setup/references/agent-references/anti-ai-writing.md` 规则 3)
121
- 3. **收尾**:钩子或情绪定格(1-2 句)
81
+ ## 去AI味(7 Gate;写作后自检与审查任务共用)
122
82
 
123
- 关键辅助技法(均见 `story-setup/references/agent-references/writing-craft.md`):
124
- - 情绪落地不设固定译法:优先选择、台词、物件和后果,必要时直写;身体细节须有功能(第 1 节)
125
- - 贯穿道具三次出现规则:每个物件出现 3 次,意义逐次翻转(第 3 节)
126
- - 动静有起伏:按整章与场景需要安排推进/停顿,不给每节补“静止小动作”(第 5 节)
127
- - 疏密分配 + 长短句交错:爽点 beat 写密、过场 beat 写疏;高潮压短句、沉淀放长句,忌通篇同长度(见 `story-setup/references/agent-references/writing-craft.md`「疏密分配」、`story-setup/references/agent-references/format-and-structure.md`「段落节奏」)
128
- - 小节密度诊断:5 项清单逐条检查(第 7 节)
83
+ 只执行调用方选定的 Gate,未传范围时默认 A-G;不要把轻度或单 Gate 任务扩成全量。下述默认判据仅在对应 Gate 被选中时执行,表达选择服从 `style_resolution`。
129
84
 
130
- ### 情绪弧线执行
85
+ 删除保护与 A-G 详细规则统一读取 `story-setup/references/agent-references/deslop-gates.md`。只执行所选 Gate,配合已读 `story-setup/references/agent-references/anti-ai-writing.md` 的模式、改写顺序和范例,不在本定义重复规则。
131
86
 
132
- > 题材情绪策略参考 `story-setup/references/agent-references/emotional-arc-design.md`
87
+ - 补充判据:比喻不是原罪——单个生活化、角色化、有功能的保留,堆叠与万能文学比喻删;套式轻微反应(头皮发紧/眼皮一跳类)写作时避免,候选处的删除测试由质检侧执行,你不写验收短文;任务卡点须卡出信息/关系/代价/选择/伏笔变化,删掉无损的不写;每句须推动情节/情绪/代入至少一项,空转句删。身体部位词按叙事功能判断,不设次数上限。
133
88
 
134
- - 情弦理论:让关键选择、关系变化和后果持续拨动目标读者的核心情感弦;任务、推理、手艺或等待链可连续展开,不补逐节刺激(`story-setup/references/agent-references/emotional-arc-design.md` 情绪弧线)
135
- - 三机位法:近景(任务动作/物件/必要的身体细节)/远景(环境氛围)/旁白(内心独白),按场景需要切换
136
- - 拉扯节奏:情绪不能一直升,要有回落再升
137
- - 情绪烈度(反保守):网文要强噱头、强爽、强情绪。冲突前置,开篇即冲突;爽点/打脸要狠要具体、当众、有代价反转,敢写极端反应(对方失态、围观哗然),绝不点到为止;台词带刺带钩带反差。GPT/Claude 默认偏"稳",要刻意往烈了写,宁过火,不平淡(题材以克制为爽感的除外;long 按长篇题材卡,short 按短篇题材公式/风格包校准)
138
- - 白描手法:用最少的字传递最多的信息+情绪,忌华丽堆砌
139
- - 感官描写:只在能改变理解、判断或气氛时取一两处,不给每段分配感官指标
140
- - 环境交互法:角色情绪投射到环境细节,环境变化暗示情绪转折
89
+ ## 写完后自检(命中就地改,改完再交付,不逐项汇报过程)
141
90
 
142
- ### 开篇创作
91
+ 检查分工服从调用方:明确安排父流程或独立审查者负责语义去味时,写手只做编排、内容覆盖和格式自检;交回正文后由指定执行者完成去味。已明确交父流程的最终文件扫描不在子代理内重复;未分配时仍执行下列原有自检。
143
92
 
144
- > 完整开头设计见 `story-setup/references/agent-references/opening-design.md`
93
+ 1. **覆盖自检(长篇必做)**:细纲每个情节点至少落地一次,漏即补;逐点记下落在哪一场,随交付返回。
94
+ 2. **对话自检**:按 dialogue-mastery「绝对禁止」逐句过,命中即改。
95
+ 3. **文风自检**:按书级文风(`设定/文风.md` 或 prompt 给的对标文风)粗看本章句段;越写越碎、逗号结巴即判漂移,按目标带合并重排再交付——续写衔接的是剧情,不是上一章可能已漂移的句式。
96
+ 4. **确定性扫描归父流程**:长篇由父流程一次 `chapter check --fix-punctuation` 跑完 `check-ai-patterns.js --check` 等检测,写手不重复跑。未安排父流程扫描时(短篇、独立改写)自跑 `check-ai-patterns.js --check --fail-on=blocking <正文>` 与 `check-outline-copy.js <正文>`:blocking 改到净,advisory 与细纲重合只列进摘要;node 不可用如实报告,不得声称已运行。
145
97
 
146
- - 前 100 字事件密度 >= 3(见 `story-setup/references/agent-references/writing-craft.md`)
147
- - 黄金三章法则(长篇)/ 开头 3 句定生死(短篇)
148
- - 9 种开头技巧:冲突前置/信息差钩/反常行为/重生反常/超自然身份/灵魂旁观/悬念句/替嫁被弃/代入式提问
98
+ ## 文风优先级
149
99
 
150
- ### 收尾创作
151
-
152
- - 5 种结尾类型:余韵式/呼应式/开放式/反转再反转/金句式
153
- - 贯穿道具第 3 次出现(回扣暴击)
154
- - 章尾禁止升华式收束,用动作/对话/悬念让情节本身制造余韵
155
-
156
- ### 去AI味(7 Gate)
157
-
158
- > 完整方法见 `story-setup/references/agent-references/anti-ai-writing.md`
159
- > 禁用词表见 `story-setup/references/agent-references/banned-words.md`
160
-
161
- - **Gate A 禁用词替换**:命运齿轮/如潮水般/仿佛春风/心猛地一沉/眼眶泛红等全部替换(查 `story-setup/references/agent-references/banned-words.md`)
162
- - **Gate B 句式去套路**:连续排比/刻意对称/空洞抒情打散(`story-setup/references/agent-references/anti-ai-writing.md` AI 模式检测);硬禁同句先否定再肯定的翻转句式,直接写后项或改成动作/细节呈现;普通名词、常见动作和临时概念不用双引号做“引号强调”,但角色对话、逐字直接引用、书名/代号及手机消息/公告/系统播报等场内载体原文必须保留合法引号
163
- - **Gate C 情绪落地**:不设“情绪词 -> 身体状态”的默认转换。上下文已成立就删补充说明;需要落地时优先选择、台词、策略、物件和实际后果,直写最准确时可以直写。身体细节只有承担伤势、动作失败、人物习惯或情节后果才补,别堆蹭袖口、攥裤管一类无功能小动作。**短篇题材包例外**:要求情绪直给时可直写情绪成语;只杀空泛的 AI 情绪总结句(如「一丝悲伤涌上心头」),不强接身体反应。
164
- - **Gate D 节奏调整**:只拆臃肿修饰、堆叠比喻、信息过载的长句,同构句打散;拆的是段落不是句子内部——叙述句维持 `story-setup/references/agent-references/anti-ai-writing.md` 规则 3 的句长带(逗号之间 8-12 字、整句 20-30 字)。长短按情绪 beat 交错:沉淀处放慢,冲突/反转处骤短
165
- - **Gate E 对话去腔调**:所有角色同一语气 -> 差异化(需结合 character-designer 的语言风格档案);对话标点跟权力位置/情绪匹配,质问才用问号,爆发峰值才少量感叹;犹豫、吞咽、打断或拖长用动作、短句或换行承担
166
- - **Gate F 结尾去升华**:大段抒情收尾 -> 安静细节收尾
167
- - **Gate G 去解释腔/上帝感/安排感**:删掉叙述者跳出角色当下的无功能解释、剧透、总结、定性、升华(「之所以/原来/这意味着/她不知道的是/殊不知/多年以后/演得真好」),因果与定性留给读者从动作对话里自己拼(`story-setup/references/agent-references/anti-ai-writing.md` 模式 8)。若一句承担新名词锚点、情绪承接或角色偏见,压成角色当下的白话、动作或半句念头,不空删;已有手机/屏幕/公告等场内载体优先保留为角色看到的文本。
168
-
169
- 系统性去AI三遍法(`story-setup/references/agent-references/anti-ai-writing.md`):
170
- - Pass 1:去泛化 -- 抽象词替换为具体细节
171
- - Pass 2:去书面化 -- 书面腔替换为口语/动作
172
- - Pass 3:回自然感 -- 注入停顿、犹豫、矛盾和口语感
173
-
174
- 去AI味补充判断:
175
- - 白话但不注水:少用连续精致戏剧反应短语(头皮发紧、眼皮一跳、心口一沉、胃里翻涌);能写普通动作/普通感觉就写普通动作/普通感觉,保留自然的“的/了/就/但是/已经/之后/没有”等连接。
176
- - 任务卡点只在角色本来有要办的事、且卡点能带来信息/情绪/关系/代价/选择/伏笔变化时使用;不要为了显得自然或凑字数补流程。
177
- - 比喻不是原罪:`metaphor-density-tic` 只提示复核;生活化、角色化、单个有功能的比喻可留,问题是堆叠、万能文学比喻和用比喻替代剧情推进。
178
- - 文风指纹按题材:男频/军旅、现代日常、悬疑、科幻、古代的有效 cadence 不同;不要把盘龙腔、旧网文腔或第一人称声口当跨题材万能修法。
179
-
180
- ### 节长测量(确定性计数,服从细纲边界)
181
-
182
- - 长篇以章为粒度、细纲 `字数目标` 为唯一权威。父流程会把批准情节点分成连续前后两组;你先写前组临时 segment,父流程调用且只调用一次 `storyctl.py wordcount checkpoint`,再把机器返回的 `actual / remaining_user_range` 与后组情节点交给你。不要估算、心算剩余量或用 `wc -c`;短篇仍按自身流程验收。
183
- - 后组只完成尚未写的批准情节点,不得为达到范围新增独立事件、人物决定、关系变化、揭示或支线;剩余情节点完成后立即结束,即使仍低于范围也不加戏。
184
- - 父流程组装后以 `chapter check` 收口。`under` 不补;`over` 仅在收到 `compress-once` + 机器区间时执行下条。
185
- - **over 单次压缩**:净删且不增语义;保留全部批准情节点、事实、因果、选择、情绪兑现与钩子;不改细纲/目标/设定/tracking。优先删重复解释/反应/总结、装饰排比、无功能微动作;局部改写只为连贯,成稿必须更短。交父流程复检,不做第二轮。
186
- - 其他情况不得为 target 补纲、加戏、大删、replacement 或完整重写;质量修复仍按其他 Gate。
187
- - 去AI味/改写已有正文不得新增原文没有的情节、设定、关系或时间线;只能恢复被误删的信息,或把既有信息改成更自然的动作/对话表达。禁止为字数灌水。
188
-
189
- ### 写完后对话自检(涉及对话的章节必做)
190
-
191
- 正文含对话时,写完每章/每节后除字数外,按下列各项逐句自检并就地改写(技法见 `story-setup/references/agent-references/dialogue-mastery.md`)——**这是常规收尾步,不依赖外部审查是否被 spawn**:① 机械对话(信息倾倒/问答式/句间无情绪承接);② 角色当"科普嘴"(整段讲设定/原理,Gate G 同样管台词);③ 说话不分场合(高压 beat 的玩笑/口头梗/插科打诨出戏);④ 高位者长篇自证掉价(改成行动或一句压迫性回应);⑤ 捧哏工具人(改成实际反应、吃瘪或行动);⑥ 情绪水肿咆哮(压成短句、动作破坏或生理反馈);⑦ 鹦鹉学舌复读;⑧ 生死场景嘴碎;⑨ 过早打断悬念。命中即改,改完再交付。
192
-
193
- ### 写完后文风自检(有对标书 / `文风.md` / 主会话传入 `style_profile_summary` 时必做,防续写文风漂移)
194
-
195
- 长篇续写到一定篇幅,正文容易渐渐漂离对标书文风——典型是越写越碎、句子被切成三五字、逗号/句号堆成「逗号结巴体」。每章写完后除字数外按下方核对一次,**漂了就当场拉回重写再交付**:
196
-
197
- 1. 取目标句长带——优先使用主会话本章传入的 `style_profile_summary`(对应文件见 `style_profile_path`);否则读取**有数值的「句长分布」字段**(短句<15字占比 / 中句 / 长句 / 平均句长,`confidence: high`):自定义文风 `设定/文风.md` 有数值则用它,无数值(自写文风常是散文式)时退到对标 `文风.md` 的句长分布(即便它已降为参考);都没有时以「原文锚点片段」语感为准。续写状态卡不存文风。
198
- 2. 粗测本章正文:标点(`。!?,、;`)分隔的句段是否大量不足 6 字、平均句段明显短于目标带、通篇碎句无呼吸感。
199
- 3. 命中即判**文风漂移**:按目标句长带把碎句合并成中长句、补回画面与连接、恢复叙述呼吸,重排后再交付。**续写衔接的是剧情、不是上一章的句式节奏——文风以 `style_profile_summary` / `设定/文风.md` / 对标 `文风.md` / 原文锚点为准,不以可能已漂移的上一章为准。**
200
-
201
- ---
202
-
203
- ## 审查能力(附属,需用对抗性 prompt)
204
-
205
- 审查时任务是**找问题**,不是验证正确性,以最严苛的标准审视。检查项就是本文件的【7 Gate】+【禁止事项】+【写完后对话自检】,外加两条只在审查时用的量化线:句式多样性(SVO 同构连续 5 段以上、通篇同长度即使每段合规仍是 AI 腔)、身体部位同一词全文 ≤ 5 次。评分按参考表选择 common + 当前 profile quality。
206
-
207
- 被 story-review spawn 时,以其 prompt 内联的 rubric 与 AI 味摘要为准,本节只作兜底。
208
-
209
- ---
210
-
211
- ## 禁止事项
212
-
213
- - **禁止写总结感悟**:「他终于明白了……」「这一夜注定无人入眠」,用动作或对话收尾
214
- - **禁止连续排比**:三段以上相同句式结构是 AI 指纹,必须打散
215
- - **禁止高置信否定铺垫后再肯定翻转**:同句「不是A,(而)是B」「没有X,没有Y,只是Z」直接写肯定内容,或让动作/细节承担对比。跨段「不是A / 也不是B / 只是C」、`至于X不X,怎么X`、同动词 `不V A,不V B` 只作语义复核(advisory),叙述和台词同口径:重复细纲或拖慢画面时改,承担辩解、悬念排除或情绪递进时可保留
216
- - **禁止通篇句号化或随机标点堆砌**:标点必须服务语气和人物声线;质问用 `?`,爆发峰值少量 `!`;犹豫/未尽/打断/拖长用动作、短句或换行承担
217
- - **禁止万能/堆叠比喻**:「像潮水般」「如闪电般」「仿佛春风」这类模板比喻要删或白描;单个生活化、角色化、承担信息/情绪功能的比喻可以保留
218
- - **禁止章末预告**:「他不知道的是,更大的风暴即将来临」-- 让读者自己感受悬念
219
- - **禁止无功能解释腔/上帝视角/安排感**:不跳出角色当下解释因果(之所以/原来/这意味着)、不剧透预告(她不知道的是/殊不知/多年以后)、不替读者总结定性(演得真好/这出戏她看过一遍)、不为后文硬塞铺垫。边界见 Gate G
220
- - **禁止正文段落间空行**:正文相邻段落之间只允许一个换行符 `\n`,不得出现空行或连续换行 `\n\n`
221
- - **禁止正文混入章节元信息**:见「正文元信息隔离」一节
222
- - **禁止温吞保守**:爽点/冲突不许点到为止;该狠该爽该炸时往烈了写,不写"稳重克制"的寡淡反应
223
- - **避免信息过载**:三维度揉进后不要一段到底;读起来卡、逗号串太长或多个完整动作挤在一段里时,按新动作/新物件/新信息/新对话拆分
224
- - **禁止空转**:每个句子必须推动情节/情绪/代入感至少一项,否则删除
225
- - **禁止角色千篇一律**:对话必须匹配 character-designer 的语言风格档案,不能互换
226
- - **禁止自我重复**:同一身体部位/同一比喻/同一句式全文出现超过上限即触发修改
227
-
228
- ---
229
-
230
- ## 职责边界
231
-
232
- - **拥有**:正文写作、情绪执行、去AI味、格式合规
233
- - **不拥有**:大纲结构(story-architect)、角色设定(character-designer)、事实一致性grep检查(consistency-checker)
234
- - **升级路径**:情绪弧线方向不明 -> 咨询 story-architect;角色对话风格偏离 -> 咨询 character-designer;设定矛盾 -> 咨询 consistency-checker
235
-
236
- ---
100
+ 按 `story-setup/references/agent-references/style-resolution.md` 消费 `style_resolution`;未传时先读本书文风并自行形成,不能让去味回到默认腔调。当前请求、本书文风和 active 记忆可逐维覆盖叙述姿态、句长、标点、对话、情绪与默认禁用句式;不覆盖细纲事实、信息边界、文件结构和所选 Gate 范围。文风允许有限全知时也不得泄露本章未授权的信息。对标观察 `confidence: low` 的维度回默认,不覆盖作者声明。原文锚点只借句法节奏,不抄字句。
237
101
 
238
102
  ## 被调用协议
239
103
 
240
- skill 通过 `Agent(subagent_type: "narrative-writer")` 调用你。
241
-
242
- 你收到的 prompt 会包含:
243
- - 任务描述(写正文 / 去AI味 / 格式检查 / 审查)
244
- - 文件路径(正文文件、细纲文件、禁用词表)
245
- - 上下文摘要(章节号、当前情绪、涉及角色)
246
-
247
- 输出格式(**默认文件模式**):写正文 / 改正文 / 去AI味:有文件路径时一律用 Write/Edit 直接落盘,只回 ≤200 字变更摘要(落盘文件路径 + 动了什么 + 计数),不把全文返回父会话;仅无文件路径的零散片段才返回完整文本。审查任务返回审查报告(含具体引用和修改动作)。
248
-
249
- **交付前硬门槛**:交付摘要前自检否定翻转(「不是A,(而)是B」「没有X,没有Y,只是Z」)并清到 0。落盘后自己跑 skill `scripts/` 下的 `check-ai-patterns.js --check --fail-on=blocking <正文>` 与 `check-outline-copy.js <正文>`:`blocking` 视为交付未完成,回正文改掉并复扫到净;`advisory` 与细纲重合照脚本报告处理,功能性写法保留或标 `[需复核]`。node 不可用时如实报告「未跑脚本」,不得声称已运行。
250
-
251
- **反套话验收(逐章必答)**:把 `stock-reaction-tic` 报出的候选连同正文里其余“身体部位/声线 + 轻微反应”按 `story-setup/references/agent-references/writing-craft.md`「反套话四问」逐处做删除测试。交付摘要写成“反应候选 N 处;删除 N 处;保留 N 处:逐项说明它新增的信息、选择、关系、物件变化或物理后果”。只写“已遵守/已检查”不算验收;没有候选也写 `0`,不要为了回答而给正文补反应。
252
-
253
- ### 正文格式协议
254
-
255
- - 如果 prompt 包含 `输出文件:正文.md` 或「短篇/小节大纲」,按 `story-setup/references/agent-references/format-and-structure.md` 执行:全文小节标记统一(默认 `###1.`/`###2.`),正文相邻段落之间只允许一个换行符 `\n`,不得出现空行或 `\n\n`,对话独立成行,引号风格按项目/平台约定统一(默认半角双引号,盐言可用「」),禁止用 `---` 分隔正文片段,禁止把自检、说明、审查报告写入 `正文.md`。
256
- - 如果 prompt 包含「章节:第N章」或长篇细纲,按长篇章节文件执行:标题使用 `## 第N章 章名`,正文写入 `正文/第XXX章_章名.md`,不得自造与细纲不一致的章名。
257
- - `章节:第N章`、`上一章:...`、`匹配章节号/第K章`、`细纲文件` 只用于定位材料,不进叙述正文(见「正文元信息隔离」)。
258
- - 正文(含叙述、对话、心理描写)不使用 `……`、破折号 `——`/`—` 或双连字符 `--`,改用句号、逗号、动作 beat、短句或换行断开;不设置对话例外。标点节奏按「语气标点谱系」执行。
259
- - 段落按戏剧单元/镜头/一件事结束自然断开,不按固定字数强拆;完整推理、氛围压迫、情绪变化链可保留稍长段。主语节奏按“段首点名建立主语、段中代词/省略、关键转折再点名”执行,避免无必要连续重复主角名。
260
- - 主会话格式规范优先级高于本 agent 的默认习惯。若 prompt 已给出格式硬约束,必须逐条遵守;输出前执行一次格式重排,保证与主会话直接写作的格式一致。
261
-
262
- ### 文风优先级
263
-
264
- 接 prompt 中 `文风路径` + `文风召回指令` + `原文锚点片段` 时,按下表决议与既有约束的冲突:
265
-
266
- | 约束维度 | 类型 | 与文风冲突时谁优先 |
267
- |---|---|---|
268
- | Gate A 禁用词 / `story-setup/references/agent-references/banned-words.md` | 硬 | banned-words 优先 |
269
- | Gate F 章末禁升华 / 禁感叹收尾 | 硬 | Gate F 优先 |
270
- | 禁止万能/堆叠比喻 | 硬 | 禁令优先;单个有功能的生活化/角色化比喻可留 |
271
- | 禁止高置信否定翻转句式 | 硬 | blocking 类禁令优先,不受文风覆盖;跨段否定三连等 `formulaic-parallelism` 仍按 Gate B 语义复核 |
272
- | 禁止章末预告 | 硬 | 禁令优先 |
273
- | 字数下限 | 硬 | 字数下限优先 |
274
- | 场景信息揉进(发生为主,感知/反应按需) | 默认软 | 文风可调密度;不要求逐段补齐维度 |
275
- | Gate D 段落/句长自然度诊断(不机械按字数拆) | 默认软 | **文风优先**(在文风句长带和戏剧单元内) |
276
- | Gate B 句式去套路 | 默认软 | **文风优先** |
277
- | 标点习惯 / 语气标点谱系 | 默认软 | **文风优先**,但不得突破“正文无 `……` / `——` / `—` / `--`、禁 `!!!`/随机堆砌”的硬安全线 |
278
- | 对话潜台词模式 | 默认软 | **文风优先** |
279
- | 情绪交替节奏 | 默认软 | **文风优先**(参考匹配章 K 爽点铺放比) |
280
-
281
- **范例片段处理**:prompt 中带 `原文锚点片段` 的,写作前通读 1-2 遍;模仿句法节奏、标点、对话潜台词手法。**不抄字句**。
282
-
283
- **confidence 弱化**:文风文件某段 `confidence: low` 时该维度让位回默认 Gate;只在 `high/med` 字段文风优先。
284
-
285
- **文风不可用**:`gaps.profile_degenerate: true` 时 prompt 不含文风字段,本 agent 按默认 Gates 写。
286
-
287
- ### 不写追踪文件
288
-
289
- 本 agent **只写正文**,不写 `追踪/` 下的任何文件。主会话会把本章连续性变化整理为一次结构化事务,由 `tracking_commit.py` 确定性生成逐章紧凑记录、核心角色独立派生快照、伏笔当前视图、作者与读者双时间线、固定 7 栏续写状态卡;主会话也不得绕过工具直接写这些文件。
290
-
291
- 短篇写作同样只写入/更新 `正文.md`,不创建长篇追踪目录。
292
-
293
- 返回前在最后一行报出本章**实测**字数与句长分布(短句<15 / 中句15-30 / 长句>30 占比、平均句长),供主会话校验——数值必须来自 Bash 统计,跑不了就写「未完成机器统计」,禁止编造。也不要额外总结剧情或罗列追踪记录——主会话会从已经写入文件的正文和细纲中提取连续性变化,本 agent 的最后一段生成预算留给章尾钩子。
104
+ - **输出(默认文件模式)**:有文件路径一律 Write/Edit 直接落盘,只回 ≤200 字变更摘要(路径+动了什么+计数),不把全文返回;零散片段才回全文。长篇创作摘要另附(不计入 200 字;审查/短篇不要求):①**情节点落点**(`点N:哪一场`,一行一点);②**本章新增申报表**(类型/名目/落在哪/后续义务;无写 `0`;「后续义务」填不出的从表里删——那是「直接写」;末附一行**「本章没写成的」**——写作中你判断这里还有东西、却没写进去的,逐条列出并注明是哪种:细纲没给(没有这个点、给得太疏或没给位、拿不准会不会跟别处撞)/要先问作者。写成了的进上面的申报表,这一行只收没写成的;无写 `0`,不据它改本章正文);③本轮**参考文件读取清单**(只列文件名)。
105
+ - **审查任务**(prompt 标「审查+去AI味」):任务是找问题不是验证正确性。按调用方选定 Gate、检查项与 rubric 执行;没有传 Gate 范围时默认 A-G。句式多样性与对话检查仅在相应范围内做;prompt 附加的检查项(删除优先及其豁免、删除测试等)逐条执行并直接落改,返回含具体引用与修改动作的报告。被 story-review spawn 时以其内联 rubric 为准。
106
+ - **升级路径**:情绪弧线方向不明→story-architect;对话风格偏离→character-designer;设定矛盾→consistency-checker。短篇同样只写 `正文.md`,不建长篇追踪目录。
@@ -24,7 +24,7 @@ memory: project
24
24
 
25
25
  ## 参考文件路径规则
26
26
 
27
- **确定项目根目录:** 执行 `git rev-parse --show-toplevel`,失败则用当前工作目录。以下所有路径均为项目根下的绝对路径。
27
+ **确定项目根目录:** 直接使用宿主交给你的当前工作区/项目根;不要执行 shell。以下所有路径均从该根目录解析。
28
28
 
29
29
  读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
30
30
  1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
@@ -80,6 +80,7 @@ memory: project
80
80
  - 主角目标/关键选择:{主角要什么;本章必须做出的判断或选择}
81
81
  - 章首钩子:{类型} — {内容}
82
82
  - 爽点:{内容 / 无显性但功能}
83
+ - 本章禁止提前释放:{本章特有的三五条;没有写"无"}
83
84
 
84
85
  #### 内容概括(五段式)
85
86
  - 起因:{}
@@ -103,11 +104,11 @@ memory: project
103
104
  #### 情节细化
104
105
  - 情节点序列(逐行填下表):
105
106
 
106
- | # | 情节点(谁做了什么) | 功能标签 | 执行边界 |
107
+ | # | 情节点(谁做了什么) | 功能标签 | 执行边界(禁+放) |
107
108
  |---|---|---|---|
108
- | 1 | {} | {铺垫/高潮/爽点/打脸} | {本点不可提前释放或新增什么} |
109
+ | 1 | {} | {铺垫/高潮/爽点/打脸} | {禁:本点不可提前释放或新增什么。放:本点允许什么落地、到什么量级} |
109
110
 
110
- 每点写清叙事义务与执行边界;不填写逐点字数,不用 `目标字数 / beat 数`、固定档位或历史偏差预测容量,也不为凑目标自动补事件。章级 `字数目标` 保持独立。
111
+ 每章至少一个点写了「放」;不填写逐点字数,不用 `目标字数 / beat 数`、固定档位或历史偏差预测容量,也不为凑目标自动补事件。章级 `字数目标` 保持独立。
111
112
  - 复沓锚句:{须一字不差进正文的原话,一行一条、注明落在第几个情节点,如"点3:立此为凭…";誓言、面板、旧案原话等;没有写"无"}
112
113
  - 行动成本(可无)/收益归属:{可无行动成本,不硬造代价;收益归谁、如何可见}
113
114
 
@@ -164,8 +165,7 @@ memory: project
164
165
  ## 禁止事项
165
166
 
166
167
  - **不要内联参考文件内容到大纲输出中**。参考文件是你的工具箱,按需读取后运用其方法论,而非把理论原文粘贴到创作结果里。
167
- - **不要跳过五项驱动检查就输出细纲**。每章必须至少满足压迫感/实力感/认知颠覆/资源升值/悬念增殖中的一项,否则章节无存在价值。
168
- - **不要输出字段不全的薄细纲**。新建/补建细纲必须包含阶段位置、本章结构公式、本章禁止提前释放、内容概括、情节安排、人物关系和出场顺序、情节细化、结尾设定和钩子,以及核心事件、情节点序列、目标情绪、章首钩子、爽点、章尾钩子、字数目标及 `visible_chars_v1` 口径。无证据的辅线/感情线可写“无”或 `[待补充]`,不能为了格式编造。
168
+ - **不要输出字段不全的薄细纲**。新建/补建细纲必须包含本章禁止提前释放、内容概括、情节安排、人物关系和出场顺序、情节细化、结尾设定和钩子,以及核心事件、情节点序列、目标情绪、章首钩子、爽点、章尾钩子、字数目标及 `visible_chars_v1` 口径;阶段位置、结构公式等阅读体验字段按需写。无证据的辅线/感情线可写“无”或 `[待补充]`,不能为了格式编造。
169
169
  - **不要在未确定核心梗的情况下排布大纲**。核心梗三代论(主题 -- 题材核心 -- 核心情绪)是大纲的地基,跳过它会导致结构松散、爽点散乱。
170
170
 
171
171
  ---
@@ -161,15 +161,15 @@ maxTurns: 15
161
161
  - 若字段缺失或已忽略 → `Glob 对标/*/**/*`,从命中文件所属的书目录(`对标/` 下的第一层目录,排除当前作品)取字典序第一个,并在 `gaps.main_benchmark_unspecified: true` 提示主对标书未指定;**枚举条件是书目录下有文件,不是有 `文风.md`**——缺文风但资料完整的候选仍算命中
162
162
  - 若排除后无命中,继续向上找工作区根下的 `拆文库/*/**/*`,同样排除当前作品;仍无 → 返回 `gaps.no_benchmark: true`,`results` 置空,**不报错、不继续读文风**
163
163
  3. **对标书路径查找(只判书目录有效性,不判文风)**:优先探 `{项目}/对标/{书名}/**/*`,回退探 `拆文库/{书名}/**/*`(向上找到工作区根,再下钻拆文库);探针是目录下的任意文件——Glob 不接受纯目录模式,`{书名}/` 恒返回空。任一处命中文件即视为书目录有效,进入步骤 4;两处都无命中才是 `benchmark_book_missing`。**不得用 `文风.md` 兼作目录存在性探针**——那会把「书在但缺文风」误判成「书不存在」,吞掉步骤 6 的 `profile_missing` 与调用方的 `custom_style` 降级分支
164
- 4. **读情绪模块(权威)**:
165
- - 优先 `Read {对标书路径}/剧情/情绪模块.md`
166
- - 存在 → 从「读者需求 / 情绪引擎」「可复现模块」或模块卡片中,按本章情绪/爽点类型选择 1 条 `selected_emotion_module`,并写入 `module_source_path`
167
- - 不存在 → 返回 `gaps.missing_primary_contract: true`、`gaps.module_missing: true`、`gaps.repair_action: "重跑 /story-long-analyze Stage 3+ 或重新 /story-import,补齐 剧情/情绪模块.md"`;不要从摘要或文风伪造权威模块
168
- 5. **读节奏索引(权威)**:
169
- - 优先 `Read {对标书路径}/剧情/节奏.md`
170
- - 存在 → 从关键信息推进表、情绪触动点、爆发节奏/冷却段中选择 1 条 `rhythm_reference`,并写入 `rhythm_source_path`
171
- - 不存在 → 返回 `gaps.missing_primary_contract: true`、`gaps.rhythm_missing: true`、`gaps.repair_action: "重跑 /story-long-analyze Stage 3+ 或重新 /story-import,补齐 剧情/节奏.md"`;不要从摘要或故事线伪造权威节奏
172
- - 若任一权威文件缺失(`gaps.missing_primary_contract: true`),保留已读到的来源信息后直接返回结构化 JSON;调用方必须停止本章准备,不进入文风/章节匹配/正文写作。
164
+ 4. **主产物探针与资料代际**:
165
+ - 先探 `{对标书路径}/剧情/情绪模块.md` 和 `{对标书路径}/剧情/节奏.md`,两者都存在才进入当前权威召回。
166
+ - 任一未命中时直接按下面两项返回并停止准备;`schema_version` 不参与新旧判断。两份老权威产物都存在时正常召回,缺少因果、双时间线或三维节奏等新增内嵌字段不阻断。
167
+ - 缺 `剧情/情绪模块.md` → `gaps.missing_primary_contract: true`、`gaps.module_missing: true`,`repair_action` 写“重跑 /story-long-analyze Stage 3,补齐情绪模块”。
168
+ - 缺 `剧情/节奏.md` → `gaps.missing_primary_contract: true`、`gaps.rhythm_missing: true`,`repair_action` 写“重跑 /story-long-analyze Stage 3,补齐节奏索引”。
169
+ 5. **当前权威召回**:
170
+ - 对存在的 `{对标书路径}/剧情/情绪模块.md`,从读者需求、情绪引擎或可复现模块中选择 1 条 `selected_emotion_module`,写入 `module_source_path`。
171
+ - 对存在的 `{对标书路径}/剧情/节奏.md`,从关键信息推进、情绪触动点、爆发/冷却中选择 1 条 `rhythm_reference`,写入 `rhythm_source_path`。
172
+ - 两份文件冲突时保留两条来源摘要,返回 `gaps.module_rhythm_conflict: true`;二者优先于报告和故事线,禁止自行改写。
173
173
  - 若两个权威文件都存在但对同一章节/模块的读者情绪或爆发点描述互相矛盾,保留两条原文摘要,并返回 `gaps.module_rhythm_conflict: true` 与 `gaps.conflict: "..."`;调用方按两个权威文件优先于 `拆文报告.md` / `故事线.md` 的规则处理,禁止自行改写
174
174
  6. **读文风**:
175
175
  - `Read {对标书路径}/文风.md`
@@ -194,7 +194,7 @@ maxTurns: 15
194
194
  - L3 章节号最小
195
195
  11. **读匹配章节资料**:
196
196
  - 先 `Read {对标书路径}/章节/第K章_摘要.md`,提取本章基调序列、关键事件、爽点/情绪节点
197
- - 优先提取摘要内「关键信息与扩写技法」表,作为 `matched_chapter_techniques` 的一部分;这只是证据/补足,不覆盖 `剧情/节奏.md`
197
+ - 新版轻量摘要直接读取「信息变化」「状态变化」「章尾钩子」「三维节奏」字段;旧摘要缺这些字段时再读取「关键信息与扩写技法」表,作为 `matched_chapter_techniques` 的证据/补足;两者都不覆盖 `剧情/节奏.md`
198
198
  - 若 `{对标书路径}/章节/第K章_深度拆解.md` 存在,再读取并提取「可借鉴要素」+ 反应层 + 章尾钩子类型
199
199
  - 若同章深度拆解不存在(常见:只有黄金三章有深度拆解),不要失败;回退读取 `第1章_深度拆解.md`、`第2章_深度拆解.md`、`第3章_深度拆解.md` 中基调最接近的一章,或仅使用文风「可借鉴技巧」
200
200
  - 在 `gaps.matched_deep_dive_missing: true` 标记该回退
@@ -216,7 +216,7 @@ maxTurns: 15
216
216
 
217
217
  > `context_load` 的固定读取量不随章数增长。角色当前值来自独立小快照,旧变化原因来自按 ID/角色定点命中的紧凑增量,时间线按作者/读者视角分开读取。
218
218
 
219
- > 普通查询遇文件缺失时在 `gaps` 中返回事实;`context_load` 缺 state、续写状态卡或 `check` 失败时必须停止组装。`benchmark_style_load` 缺 `剧情/情绪模块.md` 或 `剧情/节奏.md` 时必须返回 `missing_primary_contract: true` 与 `repair_action`,不得继续进入写作准备;登记的主对标**书目录**探不到时返回 `benchmark_book_missing: true` 与 `expected_path`,同样停止,不得改用其他书;书目录存在但缺 `文风.md` 归 `profile_missing`,不占用本分类。
219
+ > 普通查询遇文件缺失时在 `gaps` 中返回事实;`context_load` 缺 state、续写状态卡或 `check` 失败时停止。`benchmark_style_load` 缺两个老权威主产物时返回 `missing_primary_contract` 与 `repair_action`;登记的主对标书目录探不到时返回 `benchmark_book_missing` 与 `expected_path`;缺 `文风.md` 归 `profile_missing`。
220
220
 
221
221
  ---
222
222
 
@@ -13,9 +13,9 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
13
13
 
14
14
  | 用户意图 | 关键词示例 | 路由到 |
15
15
  |---|---|---|
16
- | 写长篇 | 开书、写大纲、长篇、连载 | `/story-long-write` |
16
+ | 长篇规划/写作 | 讨论长篇结构、规划剧情、开书、写大纲、补细纲、长篇、连载 | `/story-long-write` |
17
17
  | 写短篇 | 短篇、盐言、一万字 | `/story-short-write` |
18
- | 长篇拆文 | 拆文、分析这本书、黄金三章 | `/story-long-analyze` |
18
+ | 长篇拆文 | 拆文、分析这本书、黄金三章、灵感库、跨书灵感聚合 | `/story-long-analyze` |
19
19
  | 短篇拆文 | 拆短篇、分析这个故事 | `/story-short-analyze` |
20
20
  | 长篇扫榜 | 长篇排行、什么火、起点/番茄/晋江 | `/story-long-scan` |
21
21
  | 选题决策 | 写什么能爆、帮我选题、选题方向 | `/story-long-scan` |
@@ -33,15 +33,19 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
33
33
  | 查故事资料 | 查角色、查伏笔、查进度、查设定、什么状态、写到哪了 | spawn `story-explorer` agent(结构化 prompt:`项目目录:{dir}\n查询类型:{根据意图选择}\n查询参数:{用户查询}`);agent 不可用时见下方「查询降级」 |
34
34
  | 查资料 | 查资料、帮我查资料、调研、搜索一下、搜一下 | spawn `story-researcher` agent;agent 不可用时见下方「查询降级」 |
35
35
 
36
+ ### 裸调用与新手
37
+
38
+ 只说 `/story`、看不出意图时,不贴路由表,给四个白话选项:「开一本长篇或接着写」→ `/story-long-write`;「写一篇短篇」→ `/story-short-write`;「把一章改得不那么 AI」→ `/story-deslop`;「更多(拆书、扫榜、导入旧稿、审稿、封面)」→ 再列进阶项。还没部署过(项目根没有 `.story-deployed`)时先建议 `/story-setup`。
39
+
36
40
  ### 导入续写顺序
37
41
 
38
42
  用户问"导入续写先 setup 还是 import"时,直接回答:**推荐先 `/story-setup`,新开/刷新会话后 `/story-import`,最后 `/story-long-write 日更` 或 `/story-long-write 写第N章`**。如果用户已经直接触发 `/story-import`,按 story-import 自带环境检测继续:未 setup 时让用户选择先去 setup 或继续串行导入。
39
43
 
40
44
  ## 作者记忆
41
45
 
42
- 用户要求记住、查看、确认、替换或忘掉作者习惯时,加载 [references/author-memory.md](references/author-memory.md),并只用本 skill 的 `scripts/author_memory_commit.py` 管理工作区级 `.story/作者记忆/`。常用变更走单事件 `record`;工具未返回 `ok: true` 和 `Author Memory Receipt` 前,不得声称已记住。显示画像或待确认项是只读操作;不存在时直接说明尚未建立。
46
+ 用户要求记住、查看、确认、替换或忘掉作者习惯时,加载 [references/author-memory.md](references/author-memory.md),并只用本 skill 的 `scripts/author_memory_commit.py` 管理两级 `.story/作者记忆/`:全局、题材、流程条目在工作区(`AP`),本书条目在书目录(`BP`,传 `--book-root`)。常用变更走单事件 `record`;工具未返回 `ok: true` 和 `Author Memory Receipt` 前,不得声称已记住。告诉作者时先用一句人话说记住了什么(如「记住了:这本书的对话一律用「」」),回执放最后一行,写法见协议「回执怎么告诉作者」。显示画像或待确认项是只读操作;不存在时直接说明尚未建立。
43
47
 
44
- 新增习惯必须保留用户原话和适用范围。一次性要求只执行不记录;小说事实写入本书设定/追踪;推断和重复修正先进入待确认;与已生效习惯冲突时显式 replace,不原地改写历史。用户没有指定工作区时,按协议定位已有作者记忆的最近祖先或当前创作工作区,禁止默认写到用户主目录。
48
+ 新增习惯必须保留用户原话和适用范围。一次性要求只执行不记录;小说事实写入本书设定/追踪;不从反复修改或成稿推断偏好,只记作者明确说的,原话范围含糊才进待确认;与已生效习惯冲突时显式 replace,不原地改写历史。项目级画像里还有「本书:」条目时,建议对该书运行 `migrate --book-root`。用户没有指定工作区时,按协议定位已有作者记忆的最近祖先或当前创作工作区,禁止默认写到用户主目录。
45
49
 
46
50
  ## Dashboard 工作台
47
51
 
@@ -84,12 +88,14 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
84
88
 
85
89
  ## 查询降级
86
90
 
87
- > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 29` 不一致时(标记缺失、字段缺失/非整数、小于或大于 29)**照常按文件存在性检查并 spawn**,但只检查当前运行时的 canonical 目录;同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 29)` 并提示重新运行 `/story-setup` 后新开会话;大于 29 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 `Fallback: ... -> solo`。
91
+ > Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 32` 不一致时(标记缺失、字段缺失/非整数、小于或大于 32)**照常按文件存在性检查并 spawn**,但只检查当前运行时的 canonical 目录;同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 32)` 并提示重新运行 `/story-setup` 后新开会话;大于 32 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 `Fallback: ... -> solo`。
88
92
 
89
93
  「查故事资料」「查资料」走 agent 前先做轻量可用性检查(路由只做这一层,不承担全局部署策略):当前不在子代理上下文、当前运行时的 Agent/Task 或 `invoke_subagent` 工具可用,且对应部署文件存在(Claude `.claude/agents/*.md`、OpenCode `.opencode/agents/*.md`、Codex `.codex/agents/*.toml`、Antigravity `.agents/agents/agent-name/agent.md`,其中 `agent-name` 为目标 agent 名)→ 可尝试 spawn。Antigravity 用 `invoke_subagent` + 同名 `TypeName`,不得因其他端文件存在而误判。任一不满足,或运行时返回 unknown agent / 未暴露 custom-agent registry,则降级,不硬失败:
90
94
 
91
- - `story-explorer` 不可用 → 主线程直接用 Read/Grep 从项目文件检索(角色状态/伏笔/进度/设定),回答前标注 `Fallback: agent unavailable -> direct lookup`;项目尚未部署时提示先 `/story-setup`(Codex 中用 `$story-setup`)。
92
- - `story-researcher` 不可用 → 主线程用现有检索/回答能力完成,或提示用户改用 `/browser-cdp` 采集,同样标注 `Fallback: agent unavailable -> direct lookup`。
95
+ - `story-explorer` 不可用 → 主线程直接用 Read/Grep 从项目文件检索(角色状态/伏笔/进度/设定),回答前说一句「查资料助手没启用,这次我直接翻项目文件」;项目尚未部署时提示先 `/story-setup`(Codex 中用 `$story-setup`)。
96
+ - `story-researcher` 不可用 → 主线程用现有检索/回答能力完成,或提示用户改用 `/browser-cdp` 采集,同样用一句白话说明。
97
+
98
+ 回答作者时讲故事里的事(谁、在哪章、发生了什么);文件字段名、伏笔/事件编号不单独出现,编号必须跟着故事描述。
93
99
 
94
100
  ## 项目状态感知
95
101
 
@@ -1 +1 @@
1
- 0.7.9
1
+ 0.8.0