@oh-story/dsh 0.1.9 → 0.1.11

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 (529) hide show
  1. package/README.md +14 -14
  2. package/lib/client.js +209 -73
  3. package/lib/client.js.map +3 -3
  4. package/lib/drama/manifest.json +248 -168
  5. package/lib/drama/skills/short-drama/SKILL.md +16 -4
  6. package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
  8. package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
  9. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +14 -0
  10. package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
  11. package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
  12. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
  13. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +10 -0
  14. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +6 -9
  15. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
  16. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  17. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
  18. package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
  19. package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
  20. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
  21. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
  22. package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
  23. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
  24. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
  25. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
  26. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
  27. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +51 -0
  28. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
  29. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
  30. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
  31. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
  32. package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
  33. package/lib/drama/skills/short-drama-edit/SKILL.md +65 -44
  34. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
  35. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
  36. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
  37. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
  38. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
  39. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
  40. package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
  41. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
  42. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
  43. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
  44. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
  45. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
  46. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
  47. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
  48. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
  49. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
  50. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +6 -4
  51. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +26 -67
  52. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +31 -56
  53. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +42 -78
  54. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +44 -92
  55. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +14 -16
  56. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1272 -125
  57. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +113 -9
  58. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
  59. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
  60. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
  61. package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
  62. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
  63. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
  64. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
  65. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
  66. package/lib/drama/skills/short-drama-produce/SKILL.md +5 -1
  67. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +14 -20
  68. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +8 -26
  69. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  70. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +142 -1
  71. package/lib/drama/skills/short-drama-review/SKILL.md +4 -5
  72. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +6 -19
  73. package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
  74. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
  75. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
  76. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +24 -35
  77. package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
  78. package/lib/drama/skills/short-drama-storyboard/SKILL.md +23 -11
  79. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
  80. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  81. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
  82. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +139 -34
  83. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +5 -3
  84. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +15 -12
  85. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +29 -0
  86. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
  87. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
  88. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +52 -39
  89. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -21
  90. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +9 -23
  91. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +14 -26
  92. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
  93. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +2 -3
  94. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +34 -9
  95. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -2
  96. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
  97. package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
  98. package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
  99. package/lib/drama/skills/short-drama-write/SKILL.md +10 -7
  100. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
  101. package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
  102. package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
  103. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
  104. package/lib/index.js +346 -98
  105. package/lib/index.js.map +4 -4
  106. package/lib/novel-to-game/README.md +299 -59
  107. package/lib/novel-to-game/README_ZH.md +299 -56
  108. package/lib/novel-to-game/VERSION +1 -1
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
  118. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
  119. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
  120. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
  121. package/lib/novel-to-game/manifest.json +77 -87
  122. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +7 -12
  123. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
  124. package/lib/novel-to-game/skills/game-build/SKILL.md +13 -14
  125. package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
  126. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
  127. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
  128. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
  129. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
  130. package/lib/novel-to-game/skills/game-concept/SKILL.md +13 -15
  131. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
  132. package/lib/novel-to-game/skills/game-qa/SKILL.md +6 -7
  133. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +9 -5
  134. package/lib/novel-to-game/skills/game-world-design/SKILL.md +12 -16
  135. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
  136. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
  137. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
  138. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +4 -10
  139. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
  140. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +9 -21
  141. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
  142. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +5 -8
  143. package/lib/oh-story/manifest.json +607 -327
  144. package/lib/oh-story/roles/chapter-extractor.md +177 -237
  145. package/lib/oh-story/roles/character-designer.md +1 -2
  146. package/lib/oh-story/roles/consistency-checker.md +15 -13
  147. package/lib/oh-story/roles/narrative-writer.md +36 -38
  148. package/lib/oh-story/roles/story-architect.md +9 -61
  149. package/lib/oh-story/roles/story-explorer.md +20 -125
  150. package/lib/oh-story/roles/story-researcher.md +0 -1
  151. package/lib/oh-story/skills/story/SKILL.md +15 -9
  152. package/lib/oh-story/skills/story/VERSION +1 -1
  153. package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
  154. package/lib/oh-story/skills/story/references/author-memory.md +46 -94
  155. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
  156. package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
  157. package/lib/oh-story/skills/story-deslop/SKILL.md +59 -73
  158. package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
  159. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +12 -11
  160. package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
  161. package/lib/oh-story/skills/story-deslop/references/author-memory.md +46 -94
  162. package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
  163. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +22 -5
  164. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
  165. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
  166. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
  167. package/lib/oh-story/skills/story-import/SKILL.md +64 -584
  168. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
  169. package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
  170. package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
  171. package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
  172. package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
  173. package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
  174. package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
  175. package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
  176. package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
  177. package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
  178. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +98 -92
  179. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
  180. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
  181. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +15 -11
  182. package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
  183. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +132 -27
  184. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +478 -15
  185. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +182 -23
  186. package/lib/oh-story/skills/story-long-analyze/SKILL.md +81 -270
  187. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +252 -0
  188. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +3 -3
  189. package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
  190. package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
  191. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
  192. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +138 -64
  193. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
  194. package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
  195. package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
  196. package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
  197. package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
  198. package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
  199. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +55 -128
  200. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +6 -6
  201. package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
  202. package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
  203. package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
  204. package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
  205. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1145 -0
  206. package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
  207. package/lib/oh-story/skills/story-long-scan/SKILL.md +45 -194
  208. package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
  209. package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
  210. package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
  211. package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
  212. package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
  213. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
  214. package/lib/oh-story/skills/story-long-write/SKILL.md +49 -81
  215. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
  216. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +12 -11
  217. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +24 -202
  218. package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
  219. package/lib/oh-story/skills/story-long-write/references/author-memory.md +46 -94
  220. package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
  221. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +7 -11
  222. package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
  223. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
  224. package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
  225. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +4 -0
  226. package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
  227. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
  228. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
  229. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  230. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +7 -15
  231. package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
  232. package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
  233. package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
  234. package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
  235. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
  236. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
  237. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
  238. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
  239. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
  240. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
  241. package/lib/oh-story/skills/story-long-write/references/project-files.md +19 -13
  242. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +13 -5
  243. package/lib/oh-story/skills/story-long-write/references/reference-index.md +5 -6
  244. package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
  245. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
  246. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  247. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
  248. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
  249. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +15 -11
  250. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +81 -121
  251. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +41 -139
  252. package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
  253. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +57 -67
  254. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -253
  255. package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
  256. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +6 -4
  257. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +19 -65
  258. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
  259. package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
  260. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +226 -25
  261. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
  262. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +132 -27
  263. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
  264. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +7 -4
  265. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +304 -46
  266. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +478 -15
  267. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +182 -23
  268. package/lib/oh-story/skills/story-review/SKILL.md +31 -302
  269. package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
  270. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +12 -11
  271. package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
  272. package/lib/oh-story/skills/story-review/references/author-memory.md +46 -94
  273. package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
  274. package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
  275. package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
  276. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +4 -0
  277. package/lib/oh-story/skills/story-review/references/review-quality.md +6 -11
  278. package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
  279. package/lib/oh-story/skills/story-review/references/solo.md +52 -0
  280. package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
  281. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
  282. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +15 -11
  283. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
  284. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
  285. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +478 -15
  286. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +182 -23
  287. package/lib/oh-story/skills/story-setup/SKILL.md +71 -452
  288. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
  289. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +12 -11
  290. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
  291. package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
  292. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
  293. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +22 -5
  294. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +4 -0
  295. package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
  296. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
  297. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
  298. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  299. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
  300. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +1 -1
  301. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
  302. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
  303. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
  304. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
  305. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
  306. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
  307. package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
  308. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
  309. package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
  310. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
  311. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  312. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +4 -4
  313. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +19 -65
  314. package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
  315. package/lib/oh-story/skills/story-short-analyze/SKILL.md +56 -110
  316. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
  317. package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
  318. package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
  319. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
  320. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
  321. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
  322. package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
  323. package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +611 -0
  324. package/lib/oh-story/skills/story-short-scan/SKILL.md +35 -65
  325. package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
  326. package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
  327. package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
  328. package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
  329. package/lib/oh-story/skills/story-short-write/SKILL.md +23 -175
  330. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
  331. package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
  332. package/lib/oh-story/skills/story-short-write/references/author-memory.md +46 -94
  333. package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
  334. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
  335. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +4 -0
  336. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
  337. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
  338. package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
  339. package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -47
  340. package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
  341. package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
  342. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
  343. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
  344. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
  345. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
  346. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
  347. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
  348. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +21 -13
  349. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +116 -0
  350. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +99 -0
  351. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
  352. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
  353. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
  354. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
  355. package/lib/types/client/drama-production-view.d.ts.map +1 -1
  356. package/lib/types/client/file-activity.d.ts +19 -1
  357. package/lib/types/client/file-activity.d.ts.map +1 -1
  358. package/lib/types/client/index.d.ts.map +1 -1
  359. package/lib/types/client/production-prompts.d.ts +7 -0
  360. package/lib/types/client/production-prompts.d.ts.map +1 -1
  361. package/lib/types/client/production-runtime.d.ts +16 -0
  362. package/lib/types/client/production-runtime.d.ts.map +1 -1
  363. package/lib/types/client/video-studio.d.ts.map +1 -1
  364. package/lib/types/drama-adapters.d.ts +5 -3
  365. package/lib/types/drama-adapters.d.ts.map +1 -1
  366. package/lib/types/native-hooks.d.ts +53 -1
  367. package/lib/types/native-hooks.d.ts.map +1 -1
  368. package/lib/types/role-identity.d.ts +17 -0
  369. package/lib/types/role-identity.d.ts.map +1 -0
  370. package/lib/types/role-tool.d.ts.map +1 -1
  371. package/lib/types/skill-provider.d.ts.map +1 -1
  372. package/lib/types/video-project.d.ts.map +1 -1
  373. package/lib/types/workspace-route.d.ts.map +1 -1
  374. package/lib/video-recap/CHANGELOG.md +60 -1
  375. package/lib/video-recap/README.en.md +348 -137
  376. package/lib/video-recap/README.md +340 -136
  377. package/lib/video-recap/manifest.json +406 -251
  378. package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
  379. package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
  380. package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
  381. package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
  382. package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
  383. package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
  384. package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
  385. package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
  386. package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
  387. package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
  388. package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
  389. package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
  390. package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
  391. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
  392. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
  393. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
  394. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
  395. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
  396. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
  397. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
  398. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
  399. package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
  400. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
  401. package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
  402. package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
  403. package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
  404. package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
  405. package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
  406. package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
  407. package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
  408. package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
  409. package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
  410. package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
  411. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
  412. package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
  413. package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
  414. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
  415. package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
  416. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
  417. package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
  418. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
  419. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
  420. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
  421. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
  422. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
  423. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
  424. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
  425. package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
  426. package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
  427. package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
  428. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
  429. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
  430. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
  431. package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
  432. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
  433. package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
  434. package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
  435. package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
  436. package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
  437. package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
  438. package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
  439. package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
  440. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
  441. package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
  442. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
  443. package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
  444. package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
  445. package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
  446. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
  447. package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
  448. package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
  449. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
  450. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
  451. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
  452. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
  453. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
  454. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
  455. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
  456. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
  457. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
  458. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
  459. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
  460. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
  461. package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
  462. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
  463. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
  464. package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
  465. package/lib/video-recap/skills/video-script/SKILL.md +16 -13
  466. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
  467. package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
  468. package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
  469. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
  470. package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
  471. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
  472. package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
  473. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
  474. package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
  475. package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
  476. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
  477. package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
  478. package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
  479. package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
  480. package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
  481. package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
  482. package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
  483. package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
  484. package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
  485. package/lib/video-recap/skills/{video-script/scripts/agent_brief.py → video-understanding/scripts/briefing/builder.py} +38 -35
  486. package/lib/video-recap/skills/video-understanding/scripts/{brief_context.py → briefing/context.py} +4 -35
  487. package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
  488. package/lib/video-recap/skills/{video-script/scripts/brief_timeline.py → video-understanding/scripts/briefing/timeline.py} +5 -6
  489. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
  490. package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
  491. package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
  492. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
  493. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
  494. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
  495. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
  496. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
  497. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
  498. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
  499. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
  500. package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
  501. package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
  502. package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
  503. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
  504. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
  505. package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
  506. package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
  507. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
  508. package/package.json +45 -45
  509. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -58
  510. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
  511. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -38
  512. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -530
  513. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -559
  514. package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
  515. package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
  516. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +0 -678
  517. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
  518. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
  519. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
  520. package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
  521. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
  522. package/lib/video-recap/skills/video-script/scripts/brief_context.py +0 -348
  523. package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
  524. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +0 -399
  525. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
  526. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +0 -327
  527. /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
  528. /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
  529. /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
@@ -1,173 +1,75 @@
1
1
  # workflow-daily.md:日更续写工作流
2
2
 
3
- 本文件为"日更续写"场景的完整指引。SKILL.md 路由到本文件后,按以下流程执行。
4
-
5
- > **日更准备步骤**:每章写作前 4 步——状态筛选 + 题材正文提示卡召回 + 文风召回 + 意图确认,嵌入 Step 2 逐章循环。
6
- >
7
- > 写前资料清单、对标书路径查找、题材正文提示卡、自定义文风模式、文风缺失 fail-fast、模块/节奏缺失停止、权威冲突规则、无对标项目处理,一律按 [project-files.md](project-files.md) 的「缺失文件处理」「对标分析权威优先级」和 [benchmark-recall.md](benchmark-recall.md) 的写前准备 (a)-(g) 执行;本文件不另立一套。读者契约、主角代理权、期待债、终局储备参 `reader-contract-and-progression.md`。
8
- >
9
- > **多本对标书**:从 `设定/题材定位.md` 读 `主对标书` 字段;字段指向当前作品时按缺失处理(老项目可能把本书自身登记成了主对标)。缺失时用 `对标/` 下字典序第一本并提示用户补字段——先按当前项目目录名、`.active-book` 和 `设定/题材定位.md` 中的本书信息识别当前作品,排除同名或来源指向当前正文的 `对标/{当前书}/`;排除后为空则按无对标处理。
10
-
11
- ---
12
-
13
- ## 适用条件
14
-
15
- - 项目已有 `正文/` 和 `追踪/` 目录
16
- - 用户明确说"日更""续写""继续写",或明确指定"写第 N-M 章"
17
- - 目标:每次会话写 2-3 章(4000-9000 字)
18
-
19
- > **裸调用不进日更**:如果用户只是触发 `/story-long-write` / `$story-long-write`,没有说"日更/续写/继续写/写第N章/只写1章/逐章确认",不得进入本 workflow。回到 `SKILL.md` 的"裸调用与停靠点",只展示当前进度与可选命令,避免重启会话后自动写 3 章。
3
+ SKILL.md 路由到「日更续写」后按本文件控制批次;每章正文走 [workflow-chapter.md](workflow-chapter.md),缺文件按它开头停下修,召回降档不成立才读 [benchmark-recall.md](benchmark-recall.md)。适用于已有正文与追踪、作者明确要日更/续写/写第 N-M 章的项目;裸调用、只规划或只改细纲不进本流程。
20
4
 
21
5
  ---
22
6
 
23
7
  ## Step 1:快速上下文加载
24
8
 
25
- **可选:使用 story-explorer agent 批量加载上下文**。如果项目已部署 story-explorer agent(检查 `.claude/agents/story-explorer.md` 是否存在),可以用 `Agent(subagent_type: "story-explorer", prompt: "项目目录:{dir}\n查询类型:context_load\n查询参数:准备写第 {N} 章\n追踪状态:last_committed_chapter={上一步 check 的值},state_revision={上一步 check 的值}")` 执行 `context_load` 查询,一次获取全部写作上下文。spawn 返回后直接使用其 results,跳过下方手动加载步骤。如果 agent 不可用或返回不完整,回退到下方手动加载。
26
-
27
- 手动加载(默认方式):
28
-
29
- | 序号 | 文件 | 用途 | 如果不存在 |
30
- |------|------|------|-----------|
31
- | 1 | `tracking_commit.py check` | 校验唯一结构化 state 与全部派生视图,并取得最后提交章和修订号;不把完整 state 加入 prompt | state 缺失且新书尚无正文时执行初始化;已有正文则停止并要求由 `story-import` 重新导入为标准项目 |
32
- | 2 | `追踪/上下文.md` | 续写状态卡(≤12KB,固定 7 栏,每章整份读) | 不手写;由初始化/逐章事务生成 |
33
- | 3 | `大纲/细纲_第{N}章.md` | 本章写作计划 | **必须先补建**,不允许跳过 |
34
- | 4 | 卷纲(**取段器读,不整读**:`outline_view.py --unit {单元ID} --stage write`,见 SKILL.md「卷纲不整读」) | 卷契约、全卷常任裁定、当前剧情单元、终局储备与未来揭示计划 | 缺必需字段时先补齐;锁定卷纲绝不自动修改;脚本 exit 1 不得改用整读绕过 |
35
- | 5 | `设定/角色/{角色名}.md` | 本章涉及角色的静态原始人设 | 只为核心复用角色按 Phase 3 规则补建 |
36
- | 6 | `追踪/角色状态/{角色名}.md` | 久别核心角色的派生当前快照;只按细纲涉及角色加载 | 缺失即视为派生视图损坏:先运行 `tracking_commit.py check`,再重跑产生当前状态的完整事务;已有正文却无 state 时重新 `story-import` |
37
-
38
- `追踪/伏笔.md`、`追踪/时间线/`、`追踪/逐章记录/` 默认不整份读取。续写状态卡没有某个旧信息时,才按「旧信息查找步骤」定点查询。
39
-
40
- **按需加载**:需要期待感、爽点或信息差约束时,加载 `references/plot-emotion-system.md`、`references/plot-core-methods.md` 或当前 `references/genre-prose-cards/` 题材卡。默认不全量加载。
41
-
42
- ### 续写状态卡与追踪事务
43
-
44
- `追踪/上下文.md` 不是历史档案,而是当前语义检查点中的续写状态卡;顶层只能有以下 7 个栏目:`当前位置 / 长期约束 / 核心角色状态 / 活跃伏笔 / 近三章速记 / 下一章承诺 / 连贯性风险`。目标 8192 字节,硬上限 12288 字节。文风每章从 `设定/文风.md` / 对标文风读取;质量计数、普通待办、文件行数索引、参照章使用记录、去 AI 味统计都不进入续写状态卡。
45
-
46
- 所有追踪文件的 schema、事务 JSON、初始化和失败修复统一见 [tracking-transaction.md](tracking-transaction.md)。每章只向工具提交一次结构化事务,由 `scripts/tracking_commit.py` 确定性生成逐章增量、角色快照、伏笔当前视图、作者/读者时间线和续写状态卡;主会话和子 agent 都不得分别直接改这些最终文件。
47
-
48
- **首次初始化**:
49
-
50
- 1. `_tracking-state.json` 不存在且项目尚无正文:先完整读取 [tracking-initialization.md](tracking-initialization.md),构造 `last_chapter=0` 的初始化事务,执行 `tracking_commit.py init`。
51
- 2. `_tracking-state.json` 不存在但项目已有正文:停止日更。该目录停在旧追踪结构上,走 `/story-import` 的「旧追踪项目迁移」重建 `追踪/`——**不用重跑全书拆解**,只按最后完整章号和现有追踪文件构造初始化事务。本 workflow 自己不解析旧追踪结构、不推测状态。`init` 会把旧结构按原样整体移入 `追踪/_旧追踪存档/` 再建当前协议——旧内容不删除也不参与解析。
52
- 3. `tracking_commit.py check` 报告派生视图与 state 不一致:重新提交该章的 `mode=revision` 事务让工具整份重建(`expected_state_revision` 取 `追踪/_tracking-state.json` 的 `state_revision` 字段——`check` 失败时只往 stderr 打 ERROR,不输出 JSON);不得手改 Markdown 或继续写下一章。手写出的逐章记录会让同章 append 永久报 `chapter delta N already exists with different content`,删掉那个手写文件后重跑原事务即可。
9
+ 运行 `tracking_commit.py check`,取 `last_committed_chapter + 1` 作本批首章 N、`state_revision` 作修订号,并核对 `追踪/上下文.md` 的当前位置;章号不一致先修,不扫描正文猜编号。每章要读的上下文按 workflow-chapter 步骤 2;`追踪/伏笔.md`、`时间线/`、`逐章记录/` 默认不整读,缺旧信息按下方「旧信息查找步骤」定点查。
53
10
 
54
- **长期约束溢出**:工具最多接受 6 条。出现第 7 条时,在提交事务前先合并语义重叠项或请用户裁定取舍;不得自动删除旧约束,也不得把待办塞进派生视图。
11
+ `追踪/上下文.md` 是续写状态卡(7 栏,由 `tracking_commit.py` 派生,禁止手改);schema、修订与修复见 [tracking-transaction.md](tracking-transaction.md),出错时才读。
55
12
 
56
- **退役必须显式声明**:`context.long_term_constraints` 和 `context.continuity_risks` 每章整份提交,因此每次都要把仍然成立的条目原样带上。凡是上一版有、本次不再提交的条目,必须逐条写进 `delta.retired_context_items`;漏写会被工具在任何写入前拒绝,不会被当成删除。不再复用的核心角色同理写进 `delta.retired_characters`;角色本章阵亡/退场时照常写 `character_changes`,不必再交一份马上要删的快照。两类退役都只能在 `mode=append` 提交——修订事务的记录属于被改写的旧章,写在那里会谎报退役章节;回炉必须原样重交当前全部上下文条目。两类退役都会留档在本章逐章记录,事后可回查。
13
+ **缺 state 或视图不一致**:停下,按 [stop-and-fix.md](stop-and-fix.md) 修好再开始。
57
14
 
58
- **与项目 rules 的关系**:永久生效的设定裁定进入事务 `context.long_term_constraints`;短期强承诺进入 `delta.next_chapter_commitments`;已完成或只影响本章的过程决策不进续写状态卡。
59
-
60
- > **确定下一章编号 N 与状态修订号**:执行 `tracking_commit.py check`,从其紧凑 JSON 输出取 `last_committed_chapter + 1` 与 `state_revision`,同时核对 `上下文.md` 的当前位置。逐章事务必须把该修订号写进 `expected_state_revision`;若提交前状态已经变化,工具会在任何写入前拒绝旧事务,此时重新读取当前状态并重构。不要把会随历史增长的完整 state 读进 prompt;章号不一致时修复,不扫描正文猜测编号。
61
-
62
- 确定本轮写作范围后直接进入 Step 2,不做"是否继续"式确认。K 默认 2-3 章;用户明确说"只写1章"/"日更3章"/"逐章确认"时按用户要求调整。用户给出 N>3 时,本轮只写前 3 章并在 Step 4 进度摘要提示"剩余章节下轮继续"。仅在章节号冲突、细纲缺失、请求范围超过已有细纲、用户要求会改变大纲/追踪,或存在其他会导致写错的阻塞信息时暂停确认。
15
+ 确定范围后直接进 Step 2,不问"是否继续";K 默认 2-3 章,作者另给按作者(单轮最多 3 章)。只在章号冲突、细纲缺失、范围超出已有细纲、要改大纲/追踪时暂停确认。
63
16
 
64
17
  ---
65
18
 
66
19
  ## Step 2:串行批量写作
67
20
 
68
- 一次加载多章细纲,但**必须在主会话内串行逐章写作**:不得把多章同时交给多个子代理并发写。长篇章节依赖上一章正文和追踪文件,并发会导致上下文断裂、追踪覆盖和标题去重失效。
69
-
70
- **批量 continuation 规则**:进入本 Step 后,"继续"/"续写"/"日更"只表示继续当前日更批量流程。不得把这些词解释为跳过「状态筛选」或「对标模块/节奏/题材卡/文风召回」的直接正文续写;也不得在每章之间重复询问是否继续,除非用户明确要求逐章确认或出现阻塞。到达本轮 K(最多 3 章)后必须进入 Step 3/4 收尾并停止,不能因为仍有后续细纲就继续写下一批。
71
-
72
- 1. **读取写作计划**:写作计划按 **卷契约 → 当前剧情单元 → 章节细纲** 的顺序确定;已写内容仍以正文与 `追踪/` 文件为准。先按 SKILL.md「卷纲不整读」跑 `outline_view.py --unit {单元ID} --stage write {卷纲路径}` 取卷契约、全卷常任裁定、当前剧情单元(单元ID/位置)、单元情绪引擎、本卷主推线/战果与终局底牌边界(单元ID 从本批首章细纲「单元ID/位置」取),再加载本次要写的 2-3 章细纲。卷纲或细纲缺少当前协议的必需字段时按既有流程先补齐,未知字段写 `[待补充]`;已锁定卷纲不得自动改动。细纲读取阶段位置、结构公式、禁止提前释放、内容概括、情节安排、人物关系/出场顺序、情节细化的语义义务/执行边界及结尾钩子,不读取或心算逐点字数预算。只有真正影响后续连续性的结果才进入本章事务。
73
- - **批次定位与阶段约束**:写本批前先从 `大纲/大纲.md`、上一步取段器的卷纲输出(不再重读卷纲)和本批细纲提取:当前章节区间属于哪个阶段、本批推进目标、本批可释放的信息、本批严禁提前释放的信息、章尾钩子不能越过的边界。必须按终局储备确认本批主推线与战果,别动用本阶段还不该解锁的终局底牌(多线齐涨的战果允许);行动成本可无,不硬造代价。未来揭示计划留在大纲,不写入时间线事实;只有下一章必须消费的边界才进 `## 下一章承诺`。
74
- - **阶段进度自检**:每批写完或补完细纲后检查是否超前、拖慢或偏离阶段节奏;若偏离,把下一章必须执行的补偿动作放入事务 `next_chapter_commitments`,跨多章风险放入 `continuity_risks`;不得通过提前泄露后期信息强行提速。
75
- 2. **逐章执行**:每章按 [workflow-chapter.md](workflow-chapter.md) 的「单章写作流程」步骤 1-13 完整走一遍(写前准备、正文执行、字数验证、钩子/爽点检查、元信息与禁用词扫描、追踪事务)。批量模式下再叠加下列日更专属动作:
76
- - **上一章欠账检查**:写本章正文前,确认上一章正文无未清 blocking 毒句式欠账(写前 hook 会自动拦;hook 不可用时对上一章跑 `node scripts/check-ai-patterns.js --check --fail-on=blocking`);有欠账先清完再写本章,除非上一章标了 `<!-- 去味:跳过 -->`(用户显式豁免)
77
- - **状态来源纪律**:不要为取状态/章号把完整 `_tracking-state.json` 加载进 prompt;缺失内容按下方「旧信息查找步骤」定点查询,不得用未标明来源的聊天记忆替代,也不得为了方便通读所有逐章记录。
78
- - **久别角色交叉检查**:本章细纲列出的核心复用角色若不在 `## 核心角色状态`,直接读取小文件 `追踪/角色状态/{名}.md`;不存在即视为当前检查点损坏,运行 `tracking_commit.py check` 并通过完整事务修复,不能临时扫描增量后手写替代。`设定/角色/{名}.md` 只有静态原始人设,不能替代动态快照。角色重新活跃后,把名字放进本章事务 `context.active_character_names`,由工具更新续写状态卡。
79
- - **story-explorer 召回的 gaps 分支**(用 `benchmark_style_load` query_type 一次拿到 `{style_profile_path, style_profile_summary, selected_emotion_module, rhythm_reference, module_source_path, rhythm_source_path, matched_chapter_K, matched_chapter_techniques, anchor_excerpts, gaps}` 后按此分流):
80
- - 若 `gaps.no_benchmark: true` → `custom_style` 为真则进入「自定义文风模式」(用 `设定/文风.md` 写作;无对标可召回,情绪 / 节奏目标改从本书细纲「目标情绪」、卷纲、`设定/题材定位.md` 等内部材料取,`selected_emotion_module` / `rhythm_reference` 记为「无」,不声称从对标召回);否则跳过文风召回,在「意图确认」标记"无对标参考"
81
- - 若 `gaps.missing_primary_contract: true` → 停止本章准备,按 `repair_action` 提示重跑 `/story-long-analyze` Stage 3+ 或重新 `/story-import`;不得进入 narrative-writer(情绪 / 节奏轴独立于文风轴,**自定义文风模式不豁免此停止**——补 `剧情/情绪模块.md` / `剧情/节奏.md`,而非写 `设定/文风.md`)
82
- - 若 `gaps.benchmark_book_missing: true` → 停止,核对 `expected_path` 与 题材定位.md 登记名(逐字一致)后重查;不得换书
83
- - 若 `gaps.conflict` 或 `gaps.module_rhythm_conflict: true` → 意图确认必须说明冲突并按 `剧情/情绪模块.md` / `剧情/节奏.md` 的权威优先级执行;不得让 `文风.md` 覆盖情绪/节奏目标
84
- - 若 `gaps.profile_missing: true` → `custom_style` 为真则进入自定义文风模式继续;否则按上文 fail-fast 流程停止
85
- - 若 `gaps.profile_degenerate: true`(对标文风不可用) → `custom_style` 为真则用 `设定/文风.md` 写作;否则跳过文风、回到默认 Gates 写作
86
- - 若 `gaps.tone_match_failed: true` → 仅用整书文风写作,不喂 matched_chapter
87
- - 否则原样传给 `style_profile_path`、`style_profile_summary`、`selected_emotion_module`、`rhythm_reference`、`module_source_path`、`rhythm_source_path`、`matched_chapter_K`、`matched_chapter_techniques`、`anchor_excerpts` 和 `genre_prose_card` 给 Step 2 末尾的 narrative-writer spawn prompt;其中 `selected_emotion_module` 必须进入情绪目标,`rhythm_reference` 必须进入节奏/爆发安排,`genre_prose_card` 必须进入题材取舍,`matched_chapter_techniques` 必须进入「文风召回指令」。写前准备记录必须保留 `gaps` 原值,尤其 `gaps.module_missing`、`gaps.rhythm_missing`、`gaps.conflict`、`gaps.matched_deep_dive_missing`;若 `matched_deep_dive_missing` 为 true,文风召回指令中明确写“同章深度拆解缺失,已回退黄金三章/文风技巧”,不得在后续报告中反转为 false
88
- - **无 story-explorer 时直接执行**:主会话按 workflow-chapter.md 写前准备 (a)-(f) 手动依次召回情绪模块、节奏、题材卡、文风与匹配章 K;模块或节奏文件缺失时设置 `missing_primary_contract` 并停止修复
89
- - **写后清零不拖到批末**:写后 hook 推回的毒句式命中当轮清零,不得攒到 Step 3。
90
- - 每章写完后**立即提交一次追踪事务**:
91
- 1. 从刚落盘的正文、细纲和上一版续写状态卡提取 `result / character_changes / foreshadow_changes / timeline_events / constraints / next_chapter_commitments`。只记录会影响未来章节的变化;过程日志、质检计数、参照章和去 AI 味统计全部排除。
92
- 2. 需要长期复用的核心角色,把完整动态快照放进 `character_snapshots`,并在 `character_changes` 写对应变化;一次性路人只写变化、不交快照。已有动态快照的核心角色再次变化时必须提交新快照。静态人设继续以 `设定/角色/{名}.md` 为准。
93
- 3. `context.long_term_constraints`、当前卷/故事时间/场景、活跃核心角色名、连贯性风险提交当前完整值;活跃伏笔、近三章速记和下一章承诺由工具从当前视图/本章增量派生,不重复手填。
94
- 4. 运行 `storyctl.py chapter check`,取 `state_revision` 写入无 `wordcount` 的事务。带内 + quality pass → `chapter commit`;`under` 不补,`over` 按 workflow-chapter 步骤 8 净删一次并复检;仍带外走该步骤三动作。提交会重读、重数、重跑 quality;成功后删临时 JSON,tracking 提交后才继续。
95
- 5. 失败时 `_tracking-state.json` 尚未推进;保留临时 JSON,修正写入环境后重跑同一 `commit`。不得另写下一章、不得手工补派生视图、不得忽略返回码。
96
-
97
- `追踪/逐章记录/第NNN章.md` 由工具按 5 类变化生成,目标 ≤1536 字节、硬上限 3072 字节。它不是正文摘要大全,更不保存写作过程。`伏笔.md` 每个 ID 只有一行当前状态;角色状态按核心角色拆文件;时间线的客观事实和读者认知只在同一事件登记中维护,再派生作者/读者两个视图。
98
-
99
- 状态更新仍由主会话负责。narrative-writer 只写正文并回报必要的写作结果,不直接写 `追踪/`;主会话也不绕过事务工具直接修改最终追踪文件。
100
- - **质检提示**(可选):本章写作完成。如需一致性检查,运行 `/story-review lean`。批量写作模式跳过此步骤,全部写完后再统一审查。
101
- 3. **不中断但不并发**:tracking 已提交即进下一章(除非用户要求确认);`under` 或一次压缩后仍带外则展示证据/动作,不静默推进。下一章先读上一章正文与追踪更新。
102
-
103
- **资料研究(按需)**:如果写作中遇到需要查证的外部事实(历史年代、地理方位、职业细节等),暂停写作,spawn `story-researcher` agent 搜索并输出到 `参考资料/` 目录。研究完成后再继续写作。
21
+ **必须在主会话内串行逐章写**,不把多章并发交给多个子代理(追踪会互相覆盖)。"继续/续写/日更"不逐章重复确认;到达本轮 K(最多 3 章)后必须进入 Step 3/4 收尾并停止,不因还有细纲续写下一批。
104
22
 
105
- ### 旧信息查找步骤
23
+ 1. **读取写作计划**:按 卷契约 → 当前剧情单元 → 章节细纲 确定;`outline_view.py --unit {单元ID}` 取一次卷级与单元级内容,本批复用,不整读卷纲。写前明确本批推进目标、可释放与严禁提前释放的信息、章尾钩子不能越过的边界,别动用本阶段还不该解锁的终局底牌。批写完检查是否超前、拖慢或偏离阶段节奏(细节适配不算;已改变卷契约、单元承诺、推进线或兑现归属的,修正文或重规划后续细纲):下一章要补偿的进 `next_chapter_commitments`,跨章风险进 `continuity_risks`,不靠提前泄露后期信息提速。
24
+ 2. **逐章执行**:每章按 workflow-chapter「单章写作流程」步骤 1-13 走完,叠加:
25
+ - **上一章欠账**:写本章前上一章不得有未清 blocking 毒句式(写前 hook 会拦;hook 不可用时对上一章跑一次 `chapter check`),标了 `<!-- 去味:跳过 -->` 的除外。
26
+ - **状态来源**:不把完整 `_tracking-state.json` 读进上下文,缺的信息定点查,不用来源不明的聊天记忆替代。久别核心角色读 `追踪/角色状态/{名}.md`,重新活跃后放进本章事务的 `context.active_character_names`。
27
+ - **本章技法**:主会话自己写时一批只读一份(选法见 SKILL.md「本章技法」),交给写手时每章照填类别。
28
+ - **用 story-explorer 召回时**:`gaps` 按 [agent-calls.md](agent-calls.md)「story-explorer:写前对标召回」分流。
29
+ - **写后清零不拖到批末**:hook 推回的命中当轮清零。
30
+ - **每章写完立即提交追踪**:按 workflow-chapter 步骤 12,提交成功才进下一章;只记会影响后续章节的变化,过程日志、质检计数、去味统计不进事务。narrative-writer 不写 `追踪/`。
31
+ 3. **不中断但不并发**:追踪已提交即进下一章;字数出带(欠字,或一次压缩后仍超),按 workflow-chapter 的字数问法请作者选,不静默推进。
106
32
 
107
- 状态摘要里没有、但本章确实需要的旧信息(20 章前埋的伏笔、久别角色的当前状态、某个时间锚点),按以下顺序查找,**每一步的读取量都有上限**。不允许因为"查着方便"退化成读历史记录文件全文。
33
+ ### 旧信息查找步骤
108
34
 
109
- | 级别 | 手段 | 成本 |
110
- |------|------|------|
111
- | 1 | 续写状态卡已有 → 直接用 | 0 |
112
- | 2 | 伏笔 ID 查 `grep -n "F007" 追踪/伏笔.md`;角色查 `追踪/角色状态/{名}.md`;读者认知查 `时间线/读者已知.md`,作者真相查 `时间线/作者真相.md` | 一个当前行或一个有界小文件 |
113
- | 3 | 需要变化原因/历史时,调用 story-explorer 的 `foreshadow_status / character_status / timeline`;各 adapter 按自身 agent 调用方式,agent 不可用就直接 Grep/Read | 子代理/主会话只返回相关条目 |
114
- | 4 | explorer 不可用 → `grep -R -n --include='第*.md' "F007" 追踪/逐章记录/ 2>/dev/null \| tail -5`,只取最近 5 条匹配增量 | 只读取匹配行 |
115
- | 5 | 仍不够 → `Read` 对应增量或埋设章正文 | 1 个紧凑增量或单章正文 |
116
- | 6 | 全量读取所有逐章增量/正文 | **日更禁止**。只在 `/story-review` 或用户明确要求全面审计时 |
35
+ 续写状态卡没有、但本章确实需要的旧信息,由近到远查,查到就停:
117
36
 
118
- **查询次数限制**:单章执行步骤 3 和步骤 4 合计超过 3 次,说明细纲没写清本章要消费哪些旧信息。这时一次性让 story-explorer 查询多项,并在批末口头提示细纲需补清回收项,不另写过程日志。
37
+ 1. **定点读追踪**:伏笔 `grep -n "F007" 追踪/伏笔.md`;角色读 `追踪/角色状态/{名}.md`;读者认知读 `时间线/读者已知.md`,作者真相读 `时间线/作者真相.md`。
38
+ 2. **查变化原因或历史**:调 story-explorer 的 `foreshadow_status / character_status / timeline`(不可用则 `grep -R -n --include='第*.md' "F007" 追踪/逐章记录/ | tail -5`,只取最近 5 条)。
39
+ 3. **读一个原文件**:对应逐章记录或埋设章正文,只读 1 个。全量读属 `/story-review` 或作者要求的全面审计,日更不做。
119
40
 
120
- 查询结果只有在本章结束后仍影响后续时才进入追踪事务;当前伏笔由 `foreshadow_changes` 更新,核心角色由快照更新,事实/认知由 `timeline_events` 更新。不要直接改续写状态卡某一行。
41
+ 单章第 2 级超过 3 次,说明细纲没写清要消费哪些旧信息:一次性让 story-explorer 查多项,并在日更批末汇报里提示细纲需补清回收项。
121
42
 
122
43
  ---
123
44
 
124
- ## Step 3:质量检查
45
+ ## Step 3:日更批末核对
125
46
 
126
- 每章的质量检查已在 Step 2 随 [workflow-chapter.md](workflow-chapter.md)「质量检查」节完成。批末只做下列**跨章**核对,不重复逐章项:
47
+ 逐章检查已在 Step 2 完成,这里只做**跨章**核对:
127
48
 
128
- 1. **标题去重检查**:汇总本轮新写章节与既有标题;发现同名或明显重复时,回到对应细纲和正文文件统一重命名
129
- 2. **契约与细纲双向核对**:先按 `reader-contract-and-progression.md` 检查读者契约、因果权 + 结算权、关键节点四问、期待所有权、期待债偿还、终局储备(透支两问);章级推进按权威文件七类状态分档(快节奏保留可见事件/爽点下限),相对本书题材与对标判断;高潮后允许短暂低压和小而可见的收益/奖励。新地图/机构/能力/敌人/谜团须检查换书债;履约爽文/能力幻想另查主角是否反复以可避免的无能制造灾难再由他人收拾。再核对正文是否消费了细纲的内容概括五段式、情节安排多线、人物关系变化/出场顺序、行动成本(可无)/收益归属;并加三条写作要求兑现核对(不达标→修复):① 爽点出手前是否有可指认的危机/期待铺垫段落?指不出=空洞 → 回 Step 2 补铺垫情节点(plot-emotion-system 倒推法);② 装逼/打脸/揭露章是否写出在场配角差异化反应(集体震惊/各异),还是只写主角动作?没有 → 补在场配角反应(plot-core-methods);③ 详略是否按目的词(爽点/卖点点展开、过渡点带过、信息密度交替),还是均匀注水?均匀 → 删过渡、扩爽点点。
130
- 3. **伏笔盘点(仅本轮增量)**:确认本批新增/推进/回收的每个 ID 在 `追踪/伏笔.md` 恰好有一行当前状态,并能在对应 `逐章记录/第NNN章.md` 找到本次变化;不得追加第二行历史,也不得在日更流程扫描全部正文做全量伏笔审计
49
+ 1. **标题去重**:本轮新写章与既有标题同名或明显重复时,统一改细纲与正文文件名。
50
+ 2. **契约与细纲双向核对**:逐章已在 workflow-chapter 步骤 9 过契约四问,这里只看跨章:几章连起来,主角的功劳、底牌和旧期待有没有累积失衡(有问题按 workflow-chapter 步骤 9 的改法修;需补强、契约破坏写进批末汇报);正文是否消费了细纲的内容概括、情节安排、人物关系变化与收益归属;爽点前有可指认的铺垫、打脸/揭露章写了在场配角差异反应、详略按目的分配而非均匀注水。不达标回 Step 2 修批准内容。
51
+ 3. **伏笔盘点(仅本轮增量)**:本批新增/推进/回收的每个 ID 在 `追踪/伏笔.md` 恰好一行当前状态,并能在对应逐章记录找到本次变化;不做全量伏笔审计。
52
+ 4. **一致性检查(整批一次)**:各章都没单独查过时,这里查一次本批全部章节(prompt 见 agent-calls.md,申报栏写各章申报汇总;无 agent 时主会话按 workflow-chapter 同节自己核),冲突照「新增物处置」表处理。
131
53
 
132
- 批末再对本批全部落盘正文整体跑一遍 workflow-chapter.md「质量检查」的确定性收尾三脚本(`check-ai-patterns.js` → `normalize-punctuation.js` → `check-degeneration.js`),确认逐章清零后没有回潮。
133
-
134
- > 若本步修文改变了会影响后续的事实、角色状态、伏笔、时间线或下一章承诺,必须在进入 Step 4 前为受影响章节提交 `mode=revision` 事务并通过 `check`;其中 `delta` 要重算修订后该章仍成立的完整当前记录,不能只传本次改动;纯措辞调整不重复提交。
54
+ 只对本步改过的章重跑 `chapter check --fix-punctuation`;改动影响后续事实、状态、伏笔或承诺的,进 Step 4 前按 workflow-revision 为该章提交修订(`draft` 预填 → 改 → `chapter commit`),纯措辞调整不重复提交。
135
55
 
136
56
  ---
137
57
 
138
58
  ## Step 4:批末收尾
139
59
 
140
- **本步不再写任何追踪内容**——每章 Step 2 已完成事务。只做两项验证:
141
-
142
- 1. 对项目运行 `tracking_commit.py check`;验证 state schema、逐章记录连续/规范/未超限、续写状态卡固定 7 栏且不超过 12288 字节,以及全部派生视图与 state 一致。
143
- 2. 确认本批每章都有对应 `追踪/逐章记录/第NNN章.md`,每个文件 ≤3072 字节。缺失或超限时不手工补文件,回到该章事务修正并重跑 `commit`。
144
- 3. **「本章没写成的」汇集**:把本批各章申报表末行按**挡住它的原因**分流处置——「细纲没有这个点」进下一批补纲供给自查(workflow-setup「按剧情批出细纲」步骤 3)作扩产候选;「分辨率是疏/镜头准入没给位」进下一批同类拍的分辨率与准入参考;「拿不准会不会跟别处撞」当章就查设定,有既定值的补进下一章 prompt、查无既定值的即写手可自定,不再往下传;「属三档不能写」并入三档处置。连同本批细纲「本章新增物处置」里状态仍为 `待裁定` 的行,一并随批末汇报给出;全部为 `0` 则记「无」。
145
-
146
- 然后向用户口头汇报本批完成情况(章数、字数、漂移、供给反馈、下一批建议),不另存为文件。
60
+ **本步不再写追踪内容**,只做:
147
61
 
148
- ---
149
-
150
- > **漂移处理**:aligned = 按计划推进;adaptive = 细节适配但不改契约;structural 漂移 / 结构性漂移 = 正文已经改变卷契约、单元承诺、推进线或兑现归属,必须修正文或重规划未来章节细纲,不能只在增量里备注。下一章必须修的漂移进入 `next_chapter_commitments`,跨章风险进入 `continuity_risks`;两者都受续写状态卡上限约束,完整语义以紧凑增量和大纲为准。
151
-
152
- ## 细纲缺失补建流程
153
-
154
- 当检测到细纲不存在时,不能跳过。按以下步骤补建:
155
-
156
- 1. 按 SKILL.md「卷纲不整读」跑 `outline_view.py --unit {单元ID} --stage write` 取本章所属剧情单元卡与卷级常任(**不整读卷纲**);剧情单元卡含「对标剧情参照」时加读其指向的剧情单元文件(1 个),以其「结构分布」对应位置作本章功能参照;若本章起整个剧情单元均无细纲,按 outline-structure-theory.md「按剧情批出细纲」整批补建而非单章补。卷纲缺必需字段时先补齐,不绕过当前模板继续
157
- 2. 加载本章涉及的 `设定/角色/{角色名}.md`(角色状态)
158
- 3. 读取最新一章正文(情节衔接)
159
- 4. 按 SKILL.md Phase 3 的新版细纲模板补建本章细纲,补齐阶段位置、本章结构公式、本章禁止提前释放、内容概括、情节安排、人物关系/出场顺序、情节细化、结尾设定;无法从卷纲/正文/设定确认的字段写 `[待补充]`,不杜撰
160
- 5. 补建完成后继续 Step 2 写作
161
-
162
- ---
62
+ 1. `tracking_commit.py check` 通过,本批每章都有逐章记录;缺失或超限回到该章事务修正重跑,不手补文件。
63
+ 2. **「本章没写成的」汇集**:各章申报表末行只分两路——「细纲没给」追加进排纲底稿「建纲追加」,涉及既有设定的先查设定、有既定值补进下一章 prompt;「先问作者」并入 workflow-chapter「新增物处置(主会话)」表的「先问作者」一行。连同排纲底稿里「先问作者」尚未裁定的条目,一并随批末汇报给出;全部为 `0` 记「无」。
163
64
 
164
- ## 常见问题
65
+ 然后按 SKILL.md「面向作者的汇报」口头汇报,不另存文件;内部核对翻成故事话再说:
165
66
 
166
- | 问题 | 处理 |
167
- |------|------|
168
- | 细纲不存在 | 执行上方"细纲缺失补建流程" |
169
- | 细纲缺当前蓝图字段 | 先按当前模板补齐,未知项写 `[待补充]`;未补齐前不写正文 |
170
- | 追踪文件为空 | 正常继续,写作中逐步填充 |
171
- | 用户要求改大纲 | 提醒"改大纲会影响后续细纲",确认后修改,标记受影响的细纲 |
172
- | 写到卷末 | 提示用户"当前卷已完成,是否开新卷?" |
173
- | 用户中断批量写作 | 保存当前章节,已更新追踪文件,下次从断点继续 |
67
+ <!-- author-report -->
68
+ ```md
69
+ 这次写了 {K} 章,共约 {总字数} 字:
70
+ - 第{N}章《{章名}》:{一句发生了什么}
71
+ - 第{N+1}章《{章名}》:{一句发生了什么}
72
+ {偏离原计划的就一句话说偏在哪、打算怎么接,如「阿福比计划早露面一章,后面照常」;主角功劳被人拿走、提前用了后面的底牌也在这里说;没有就删掉此行}
73
+ {要作者定的事:一句问题+白话选项+推荐,如「沈栀要不要在下一章就知道信的下落?1. 先瞒着(推荐)2. 这章就告诉她」;没有就删掉此行}
74
+ 下一批:第{M}到第{M+2}章,{细纲已备好 / 需要先补细纲}。接着写吗?{写到卷末时改问:「这一卷写完了,要开新卷吗?」}
75
+ ```
@@ -0,0 +1,157 @@
1
+ # workflow-outline.md:出细纲(按剧情批出细纲、补纲)
2
+
3
+ 作者要看一批章节怎么走、或要补/改细纲时读本文件。卷纲只用 `outline_view.py --unit {单元ID}` 取本单元闭包,设定从 `设定/` 定点读,不回翻对话;前 3 章细纲另读 [opening-design.md](opening-design.md),建角色档案时读 character-basics.md。没有子代理时先给本批走向提案、作者确认后落盘;交付汇报最后一句建议新开对话说「写第N章」,技术备注在它后面。
4
+
5
+ 所请求范围内每章必须有 `大纲/细纲_第XXX章.md`,不跳章。
6
+
7
+ 细纲按剧情批构建(见文末「按剧情批出细纲」);仅未限定范围的完整开书默认前 10 章,其他按 SKILL.md 的范围与停点交付:
8
+ 1. **批次边界**:未指定章数时,一批 ≈ 一个剧情单元(5-15 章);>10 章拆两批。开书首批前 10 章封顶、可跨单元;每单元建卡时召回一次,后续批共享结论。用户指定章数/范围时,只建范围内细纲,不因单元未完或剩余 ≤2 章而扩批;单批仍建议 ≤10 章。日更缺纲按 workflow-daily 的补建流程处理。
9
+ 2. **批次定位与阶段约束**(每批补纲前先写):当前章节区间属于哪个阶段与哪个剧情单元(单元ID)、本批推进目标、本批可释放信息、本批严禁提前释放信息、章尾钩子不能越过的边界。
10
+ 3. **供给自查**(排纲自查第 5 项):每批出细纲前检查六项:①对手戏由谁承接?具名对手间隔超过 2 章是复核提示;对手可为盟友或亲人,环境、关系章不为凑间隔新增反派。②未来 3 章出场角色的设定卡是否齐全?③能力增量与既有库存是否接得上?④本批引用的数字、制度、规矩、距离与脚程是否确实存在?引用前 grep 核对文件里的具体条目,不能只猜文件存在。⑤本批使用的地点空间属性先落档;仅提名不强补底图。是否与上一单元同场景、同对手、同胜负手连排,需要调整?⑥本批有哪些故事线推进,是否有可调存量?结果以「供给自查」小节写进 `大纲/排纲底稿_{单元ID}.md`(模板见文末,不写进卷纲):「写了要报」登记新增内容与设定路径,「先问作者」列候选及影响面交作者裁定;无缺口写「无缺口」。并检查上一批「本章没写成的」与「建纲追加」里的未解决缺口。
11
+ 4. **剧情单元消费**:建卡批读本批剧情单元卡「对标剧情参照」指向的剧情单元(≤3 个文件,含结构分布/情节点索引),按单元节拍→章映射铺章、情节点换素材;同一剧情单元的后续批共享剧情单元卡固化结论,不重读剧情单元。当前卷纲缺少必需剧情单元字段时先补齐卷纲,不带缺失字段进入日更。
12
+ 5. **建纲当场缺口**:按下方三级处置——直接写的写进细纲,写了要报的先落档再引用,先问作者的挂起受影响内容,其余部分继续。建纲批末把后两级汇入同一份排纲底稿的「建纲追加」小节:章号、缺口、级别、设定路径或提案;无追加写「无」。不重复记录直接写的现场材料。
13
+ 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。
14
+
15
+ 不强行一次产出 30 章细纲;全书 ≤30 章且用户明确要全书细纲时,可分批连续交付。
16
+
17
+ #### 细纲模板与验收
18
+
19
+ 细纲是正文写作的章节蓝图,而不是只列事件和钩子的清单。模板见下(唯一权威副本:九个必填字段、四个小节、不含逐点字数的四列情节点表,阶段位置、结构公式等在末尾「可选」块)。新建、补建、回填都按权威模板补齐,未知字段写 `[待补充]`,不为补齐字段杜撰副线或人物关系。
20
+
21
+ `目标情绪` 与 `主角目标/关键选择` 要写实际内容,不能留 `[待补充]`:隔离实验里只补这两个字段就能复现补齐全部字段的正文收益,补满其余字段与只补这两个不可区分。其余字段未知时仍按上文写 `[待补充]`。
22
+
23
+ 落盘后运行 `node scripts/check-outline-contract.js --json --project {书目录} --chapter {N}` 做结构检查:它只判字段、四个小节、五段式、情节点表结构(默认四列 `# / 情节点 / 功能标签 / 执行边界(禁+放)`;需要时可在功能标签后加「分辨率」列)和字数目标口径是否在场,不判内容好坏。exit 1 时只按 `repair_scope` 补报告点名的字段并复验,最多两轮;仍失败就报告检查 ID 停下,不改其他章。exit 2、脚本缺失或 node 不可用时如实报告验收未完成,不得声称细纲已合规。本检查只在新建/补建/回填时执行;既有项目的旧细纲不因此阻断写正文。
24
+
25
+ ```
26
+ ## 细纲(第 N 章)
27
+
28
+ ### 第 N 章:{章名}
29
+ - 核心事件:{一句话;供日更与导入统一消费}
30
+ - 字数目标:{X} 字
31
+ - 字数口径:visible_chars_v1
32
+ - 单元ID/位置:{卷纲剧情单元ID;单元内第几拍/承担功能}
33
+ - 目标情绪:{具体情绪前状态→后状态;本章推进单元情绪引擎的哪一环;不得只写“热血/悲伤”等标签}
34
+ - 主角目标/关键选择:{主角本章要什么;必须做出的判断或选择}
35
+ - 章首钩子:{从章首7式中选择} — {具体内容;低压/过场章可写“弱钩子/仅情绪钩子,功能是…”}
36
+ - 爽点:{本章爽点;低压/修炼/过场章可写“无显性爽点,功能是…”,但仍须给读者一个往下看的理由}
37
+ - 本章禁止提前释放:{**只写本章特有的三五条**;卷级常任禁忌已在卷纲「本卷禁碰的终局底牌」,不逐章复读;没有就写“无”}
38
+
39
+ #### 内容概括(五段式)
40
+ - 起因:{本章事件为什么发生}
41
+ - 发展:{冲突如何推进}
42
+ - 转折:{信息/关系/局势哪里改变}
43
+ - 高潮:{本章情绪或动作峰值}
44
+ - 结尾:{本章最后落在谁的什么动作/画面/台词上——写具体落点,不写"尘埃落定""一切结束"式状态判词}
45
+
46
+ #### 情节安排(多线)
47
+ - 主线推进:{本章对主目标的推进}
48
+ - 辅线推进:{指向卷纲「本卷故事线」的 L 编号(L01 式两位数,不是单元ID L1-03),写“L0X 从哪一步推到哪一步”;本章确无非主线在动时写“无”,不凭空制造。一批细纲不许每章都是“无”}
49
+ - 事件线 / 任务线:{外部事件链;有“办事被卡住”时写清卡出什么变化,删掉无损的卡点不进细纲}
50
+ - 感情线 / 关系线:{无显性感情线时写“无显性,但关系变化为…”}
51
+ - 逻辑线:原因 → 行动 → 结果 → 后果/新问题
52
+
53
+ #### 人物关系和出场顺序
54
+ - 出场顺序:{角色/势力/关键物件按实际出现顺序列出}
55
+ - 人物关系变化:{本章前 → 本章后}
56
+ - 视角/信息差:{谁知道什么;读者知道什么;主角误判什么。取自 `追踪/时间线/读者已知.md`,不另起一套;还没有追踪的新书按设定与卷纲写}
57
+
58
+ #### 情节细化
59
+ | # | 情节点(谁做了什么) | 功能标签 | 执行边界(禁+放) |
60
+ |---|---|---|---|
61
+ | 1 | {主角在账单上发现4800元转出} | {信息揭示} | {禁:不揭露幕后者。放:他当场算出这笔钱等于几个月房租,允许写出来} |
62
+
63
+ - 功能标签=目的词:铺垫/高潮/爽点/打脸/人物塑造/设定。点数由语义需要决定,不填写逐点字数,不用 `目标字数 / beat 数` 反推。
64
+ - **执行边界写「禁+放」两半**:禁=本点不能提前释放或新增什么;放=本点允许什么落地、到什么量级(谁可以出声、谁可以失态、允不允许当场标价)。**每章至少一个点写了「放」**;放行是解除限制,不是义务。
65
+ - 复沓锚句:{须一字不差进正文的原话(誓言、面板、旧案原话),一行一条并注明落点,如"点3:立此为凭…";没有写"无"}
66
+ - 行动成本(可无)/收益归属:{可无行动成本;收益归谁、如何可见、是否留下后续账}
67
+
68
+ #### 结尾设定和钩子
69
+ - 结尾设定:{收束落到什么具体动作或画面(不写"就这样……""他终于明白……"式状态判词);未解决问题;下一章推动力}
70
+ - 章尾钩子:{从章尾13式中选择} — {具体内容,期待度:强/中/弱;低压/过场章可弱钩子或留阶段目标;与下一章如何承接}
71
+
72
+ #### 可选:需要时再写(写了写手照样消费,不写不拦)
73
+ - 字数范围:{作者给了上下限才写,如 2000-2600}
74
+ - 阶段位置、章节定位(高压/推进/修炼试错/关系回收/低压生活/信息整理)、本章结构公式
75
+ - 本章标价(得失折算成读者已知的什么)、闭环状态(获得/使用/见效/估值走到哪一拍)
76
+ - 写手自由区(本章最值得放开、由写手发明的几处)、镜头准入(一场给谁台词位)、信息差触发点(在第几点提醒读者手里的牌)
77
+ - 情节点表加「分辨率」列(密/中/疏,同类并列递减)
78
+ - 契约风险:只在本章让单元卡「契约风险」变化时写
79
+ ```
80
+
81
+ **大纲锁定**:已进入正文写作的前 10 章细纲锁定,未经用户确认不得修改;后续滚动细纲可随正文反馈微调。已进入正文的卷的卷纲锁定规则见 workflow-volume.md。
82
+
83
+ **中途补纲/扩纲小流程**(项目已有大纲;只改细纲不进入正文大修):
84
+ 1. 定位请求范围、已写进度和所属单元:读 `大纲/大纲.md`;卷纲先用 `outline_view.py --toc {卷纲路径}` 定位,再 `--unit {单元ID}` 取闭包,尚无单元用 `--contract` 取契约,不整读。另读 `设定/题材定位.md` 和已有 `追踪/上下文.md`;有正文却缺追踪时停止补纲,提示按 workflow-daily 修复/迁移,不猜进度;无正文也无追踪时以现有纲/设定规划,不为读取状态先初始化。
85
+ 2. 请求章已属于既有单元时复用单元卡,只补/改点名细纲,不另建单元;沿用上方锁定规则。确需新单元先按 workflow-volume.md 追加单元卡(含「对标节奏迁移」选同类单元),向卷尾**追加**卡及情绪弧线、故事线、伏笔规划,已锁定内容不动。用户补纲不等于授权修改其他章;超出本卷体量时先确认扩卷或开新卷。
86
+ 3. 追加单元时答 workflow-volume.md「排纲自查」1–4(按单元内 1/4·中点·3/4 口径);进入细纲层时做本文件步骤 3 供给自查。
87
+ 4. 按本次交付层级停止:需要细纲时按上述批次边界只做请求范围,完成「细纲后设定补全」与建纲批末复核。
88
+ 5. 规划事件和未来揭示只落卷纲/细纲,不提前成为追踪事实。已有正文项目补纲不写 `追踪/`,不执行 init/commit;下一章必须履行的承诺在下一次正文事务里进入 `next_chapter_commitments`。
89
+
90
+ **细纲质量要求**:每章细纲都要按当前章节蓝图直接指导正文(核心事件、字数目标、字数口径、单元ID/位置、目标情绪、主角目标/关键选择、章首钩子、爽点、本章禁止提前释放九个必填字段齐备),但**强度按章节定位分配、不是每章顶满**:高压/推进章配齐钩子+爽点+悬念;低压/关系/修炼/信息整理章允许无显性爽点、弱钩子或仅情绪钩子,重点是把功能(喘息、关系、铺垫、转场)写到位。底线是每章都给读者一个往下看的理由、相邻章不情绪趋同(见 workflow-volume.md「章节定位与张弛」)。字段不完整时先补齐;无法从材料确定的关系或副线写 `[待补充]`,不得杜撰。
91
+
92
+ > **细纲钩子来源**:优先沿本批剧情单元卡「对标剧情参照」的单元节拍与兑现方式设计钩子链;对标登记 ≥2 本时读 `references/cross-book-recall.md`,副对标同基调 `章节/*_摘要.md` 仍可作单章钩子灵感(可选);有 `灵感库/` 时可按「适用阶段=细纲」召回 active CBA 辅助钩子设计,零命中不阻塞
93
+
94
+ **章节标题规则**:只做轻量去重;发现同名或明显重复标题时,按本章核心事件改名,并保持细纲标题与正文文件名一致。
95
+
96
+ **细纲后设定补全(每批细纲建完后执行)**:扫描本批细纲新出现的具名角色/势力/关键设定,对**会复用**的(按卷纲/细纲判断:后续多次出场或承担剧情功能)自动建档,不等用户确认:
97
+ - 角色 → 建 `设定/角色/{名}.md`(填空模板见 character-basics.md 主角卡/配角卡);核心复用角色真正进入正文后,由追踪事务建立 `追踪/角色状态/{名}.md` 动态快照;
98
+ - 势力/组织 → 建 `设定/势力/{名}.md`(名称、定位、核心目标、关键人物、与主角关系);
99
+ - 影响多章的世界观规则 → 建/补 `设定/世界观/{主题}.md`(规则、适用范围)。
100
+ - **刻度与名目** → 建/补 `设定/世界观/{主题}.md` 里的对照表。凡是正文要拿来**比大小、算价钱、报名次、定档位**的东西都算:资质/评级档位、职级与待遇、货币与物价、等级与进度格、名次与席位、赏罚名目、时限与期限。写成**可数的序列**(几档、哪一档在哪、相邻两档差多少),不要只写一个孤立的值。
101
+
102
+ **缺什么按新增物三级处置——不许硬写,也不许一律停摆。** 判据见 SKILL.md「新增物三级」(交给 story-architect 时任务包末尾已附原文)。排纲时需要一样东西(角色、能力、物价、规矩、刻度、场景)而设定里查不到时,先查再分级:
103
+
104
+ 0. **先查**:`设定/世界观/`、`设定/势力/`、`设定/题材定位.md`(升级台阶)里是不是已经有(同一件事在不同文件里可能叫不同名字,换个说法登记的也算)。查不到的按下面三级处置。
105
+ 1. **直接写**:写进细纲,不落档、不上报。
106
+ 2. **写了要报**(发明+落档):不与既有裁定冲突时直接补充。先增量落设定,再供细纲引用,并在排纲底稿的供给自查里登记。项目引用用书目录相对路径(如 `设定/角色/张三.md`);`./`、`../` 相对细纲目录,裸文件名不校验。地点只补本批用到的分区、进出口、相对位置或脚程。补纲授权下的新故事线先在卷纲故事线表分配 L 编号并写清主线对接口,再供细纲引用;日更不自动扩纲。
107
+ 3. **先问作者**(提案裁定):不自行决定。在排纲底稿的供给自查里列具体缺口、1-2 个候选及关联设定影响,建纲批末按下方汇报模板用故事话问作者;裁定先落设定再引用,不以占位或临时编数代替。设定互相冲突时列出出处供作者判断。
108
+
109
+ 已存在的设定文件按细纲新信息**增量补充、不覆盖**。一次性路人、后文无戏份的配角不建静态档案或动态快照。建档只填细纲已确定的信息,未定字段留占位符,不提前杜撰。
110
+
111
+ **规划交付后向作者汇报**(细纲、补纲、改细纲用;按 SKILL.md「面向作者的汇报」):供给自查、建纲批末复核是内部核对,只把结论翻成故事话;「先问作者」的缺口和两个设定互相冲突都作为「要你定的事」问。
112
+
113
+ <!-- author-report -->
114
+ ```md
115
+ {做了什么,如「第二卷卷纲定好了」「补好了第22-26章细纲」「按你说的改了第23章细纲」}:
116
+ - {故事层要点,一行一件:这卷/这几章主要发生什么,主角得到或失去什么,停在哪个悬念上}
117
+ - {改细纲时:原来是什么,现在改成什么,会不会牵动别的章}
118
+ {某段剧情主角的功劳被别人拿走、或提前用掉了后面的底牌时一句话说清,如「第三段剧情里功劳落到了师父身上,我先把纲改成沈栀自己拿主意」;没有就删掉此行}
119
+ {前面吊起的期待还没兑现时说清哪章兑现;没有就删掉此行}
120
+ {要你定的事:一句问题+白话选项+推荐,如「沈栀的金手指每天能用几次?1. 一次(推荐,后面好加码)2. 不限次」;没有就删掉此行}
121
+ 下一步:{如「要接着写第22章正文吗?」「要继续出第27-31章细纲吗?」}
122
+ ```
123
+
124
+ #### Agent 调用:story-architect
125
+
126
+ 已部署时,每批细纲在 story-architect 的新上下文里出,调用见 [agent-calls.md](agent-calls.md);主会话拿到后对每章跑 `check-outline-contract.js`,按建纲批末复核汇报。
127
+
128
+ ---
129
+
130
+ ## 附:按剧情批出细纲与排纲底稿模板
131
+
132
+ ### 按剧情批出细纲(细纲分批边界)
133
+
134
+ 一批细纲 = 卷纲里的一个剧情单元(约 5-15 章)。体量换算:剧情单元字数 ÷ 单章目标字数 → 章数,单章目标字数取本书既有细纲惯例,无惯例按题材节奏档取默认(快节奏/短平快约 2000,均衡约 3000);剧情单元超过 1.5 万字且单元节拍含两个以上独立高潮时拆成多个剧情单元,否则单个剧情单元。剧情单元 >10 章拆两批建纲,两批共享同一次召回;首批 = 前 10 章封顶、可跨单元(跨入的剧情单元建卡时召回一次,余章由后续滚动批共享剧情单元卡结论),停靠规则见上文批次步骤 1。
135
+
136
+ 建卡时做一次**剧情批召回**:读剧情单元卡「对标剧情参照」指向的剧情单元(≤3 个文件)的「结构分布」「情节点索引」,回查该书 `剧情/节奏.md` 同章节区间的爽点循环 / 触动点与被引情绪模块卡,提炼 5-8 拍共性节拍写入剧情单元卡「单元节拍/章功能分配」,单元情绪引擎字段对照主对标 `剧情/情绪模块.md` 的可复现模块校准。若主产物存在但被引的单个情绪模块卡未命中,只跳过该卡;`剧情/情绪模块.md` 或 `剧情/节奏.md` 文件缺失按 workflow-volume.md「对标节奏迁移」的 fail-fast 先修复。换素材与修硬伤纪律同该节步骤 3/4——保留情绪链和功能位,对象、场景、事件全换,对标弱处理就地修正。结论固化进剧情单元卡后,逐章细纲只消费剧情单元卡,不重读剧情单元。
137
+
138
+ **「只消费剧情单元卡」管的是不重读对标,不冻结逐章建纲。** 排纲当场发现的缺口(某拍无对手、数值没验过、地点无底图、角色既定规矩挡场之类)按新增物三级处置(直接写/写了要报:先落档再引用/先问作者:挂起提案,见上文「缺什么按新增物三级处置」),处置完记一行,批末汇进排纲底稿的「**建纲追加**」小节(见上文批次步骤 5);下一批供给自查以该小节为固定输入(按当场缺口类别加问批前盘点项)。
139
+
140
+ 日更中途发现卷纲缺少「对标剧情参照」等当前协议必需字段时,先补齐卷纲再建细纲;锁定卷纲不得自动回写,必须停在补纲边界。单元节拍分析过程不写进追踪文件,只有最终影响未来连续性的约束或下一章承诺才进入本章追踪事务。
141
+
142
+ ## 排纲底稿模板(`大纲/排纲底稿_{单元ID}.md`)
143
+
144
+ 排纲期的工作底稿,每个剧情单元一份,只在排纲/补纲时读,写正文不读。
145
+
146
+ ```markdown
147
+ # {单元ID} 排纲底稿
148
+
149
+ ## 批次定位
150
+ {每批补纲前先写,见步骤 2:阶段与单元、本批推进目标、可释放与严禁提前释放的信息、章尾钩子的边界;多批时一批一段}
151
+
152
+ ## 供给自查
153
+ {本单元出细纲前产出,见本文件步骤 3。六行:对手供给 / 角色供给 / 能力与金手指供给 / 刻度供给 / 场景与底图供给 / 故事线供给。「写了要报」的发明各列一行「发明了什么+落在哪个设定文件」;「先问作者」的提案列候选+影响面待作者裁定;无缺口写「无缺口」。建纲批末 `check-outline-contract.js --supply {卷纲路径} {单元ID}` 验证本小节存在}
154
+
155
+ ## 建纲追加
156
+ {本批建完后回填,见步骤 5;写正文时申报表「本章没写成的」里「细纲没给」的也追加在这里。逐章落笔时才发现的缺口,一条一行,不与上面六行混写。格式:`第 N 章排到哪一步发现缺什么 / 级别 / 落在哪个设定文件或提案编号`。一条也没有写「无追加」。下一批供给自查以本小节为固定输入}
157
+ ```
@@ -1,99 +1,89 @@
1
1
  # workflow-revision.md:大修工作流
2
2
 
3
- 本文件为"大修/回炉"场景的完整指引。SKILL.md 路由到本文件后,按以下流程执行。
3
+ 作者说「修改/回炉/重写第X章」时用本文件;只改细纲不进本流程(走 workflow-outline.md)。作者要先说清是哪一章,推断不出就问。
4
4
 
5
5
  ---
6
6
 
7
- ## 适用条件
7
+ ## Step 1:定位与改动范围
8
8
 
9
- - 用户说"修改第X章""回炉第X章""重写第X章"
10
- - 目标:修改已写好的章节内容
9
+ 1. 找文件:`正文/第{X}章_*.md`;作者给的是章名就按关键词找,找不到让作者确认。
10
+ 2. **先定范围再读东西**:从作者的话判断改多大——点到了段落或场面(「那场打斗」「结尾那段对话」)就是局部修改;说「重写」「回炉」就是整章重写。判断不了才问,给选项:
11
11
 
12
- > 用户必须指定章节号或章节名。无法自动推断需要修改哪一章。
13
-
14
- ---
15
-
16
- ## Step 1:定位章节
12
+ <!-- author-report -->
13
+ ```md
14
+ 第{X}章《{章名}》想怎么改?
15
+ 1. 只改你点到的地方,其他不动(推荐)
16
+ 2. 按原细纲整章重写
17
+ 3. 先改这章的细纲,再按新细纲重写
18
+ {你想改掉的是什么,一句话说说也行,比如「打脸不够狠」「他俩对话太客气」}
19
+ ```
17
20
 
18
- 1. 根据"第X章"找到文件:`正文/第{X}章_*.md`
19
- 2. 如果用户说的是章节名而非编号,用 `find 正文/ -name "*{关键词}*"` 搜索
20
- 3. 找不到时让用户确认具体章节
21
- 4. 如果用户指定段落范围("第3-5段"/"那场打斗"/"对话部分"),记录为局部修改目标
21
+ 选 3 → 先按 workflow-outline.md 改细纲,改完回到本流程按整章重写。
22
22
 
23
23
  ---
24
24
 
25
- ## Step 2:加载上下文
25
+ ## Step 2:按范围加载
26
26
 
27
- 加载比日常写作更多的上下文(因为修改需要理解前后衔接):
28
-
29
- | 序号 | 文件 | 用途 | 如果不存在 |
30
- |------|------|------|-----------|
31
- | 1 | `正文/第{X}章_*.md` | 待修改章节 | 必须存在 |
32
- | 2 | `大纲/细纲_第{X}章.md` | 原始写作计划 | 跳过 |
33
- | 3 | `正文/第{X-1}章_*.md` | 前一章(衔接) | 第1章时加载 `设定/世界观/背景设定.md` 替代 |
34
- | 4 | `正文/第{X+1}章_*.md` | 后一章(衔接) | 末章时检查 `大纲/细纲_第{X+1}章.md`(如有)确保连续性 |
35
- | 5 | `tracking_commit.py check` + `追踪/上下文.md` | 用工具确认唯一 state 与派生视图一致;续写状态卡提供当前连续性,不把完整 state 加入 prompt | 缺 state 时停止;已有正文项目必须经 `story-import` 生成标准追踪状态 |
36
- | 6 | `设定/角色/{相关角色}.md` + `追踪/角色状态/{相关角色}.md` | 静态人设 + 动态当前快照 | 动态快照缺失时从相关增量重算 |
37
-
38
- **相关角色判定**:从 `大纲/细纲_第{X}章.md` 中提取角色名。如果细纲不存在,从待修改章节正文中搜索 `设定/角色/` 目录下的角色名关键词。将角色名映射为文件名:`设定/角色/{角色名}.md`。
27
+ - 都要:待改章全文、`大纲/细纲_第{X}章.md`、`tracking_commit.py check`(取 `state_revision`)与 `追踪/上下文.md`;缺 state 时停止,已有正文的项目先经 `story-import` 生成标准追踪。
28
+ - 局部修改:前一章只看最后几段(第 1 章没有就不看)、后一章只看开头几段,确认衔接;涉及的角色读 `设定/角色/{名}.md` 与 `追踪/角色状态/{名}.md`。
29
+ - 整章重写:前后两章全文,加上细纲点名的角色与设定;第 1 章没有前一章时看 `设定/题材定位.md`。
39
30
 
40
31
  ---
41
32
 
42
- ## Step 3:修改
33
+ ## Step 3:改写与提交前检查
43
34
 
44
- 1. **阅读原文**:读完整章内容,用 `{PYTHON} {story-long-write skill 根}/scripts/storyctl.py wordcount check` 记录原始 `visible_chars_v1` 结果
45
- 2. **备份原文**:将原文复制为 `正文/第{X}章_章名_原稿_{YYYYMMDD}.md`,确保可回退
46
- 3. **确认修改范围**:问用户是"全文重写"还是"修改特定段落"
47
- - 全文重写:基于细纲重新写,保留备份
48
- - 局部修改:只改指定段落(按场景序号或关键词定位),保持其他部分不变
49
- 4. **执行修改**:改写文件
50
- 5. **字数对比**:修改后重跑同一计数器;与原文差异 >30% 或 >800 字时提醒用户(取较大值),并报告 `internal_pass / borderline / under / over / invalid`。测量状态不触发静默覆盖或二次改写正文
35
+ 1. **备份**:原文复制为 `正文/第{X}章_章名_原稿_{YYYYMMDD}.md`;用 `{PYTHON} {skill 根}/scripts/storyctl.py wordcount measure --file {正文文件}` 记下原字数。
36
+ 2. **改写**:已部署 narrative-writer 时按 [agent-calls.md](agent-calls.md)「改写一章」交给它;否则主会话自己改,读 `references/writing-craft.md` 与 `references/long-format.md`;改的是情绪对抗、打脸这类戏时,按 SKILL.md「本章技法」只读对应那一节。局部修改只动点到的段落,其余一字不改;不借改稿新增细纲外的剧情。
37
+ 3. **检测**:`{PYTHON} {skill 根}/scripts/storyctl.py chapter check --project {项目根} --chapter {X} --fix-punctuation`,按返回的 `status` 走:
51
38
 
52
- **资料研究(按需)**:如果修改涉及需要验证的外部事实(历史年代、地理方位、职业细节等),spawn `story-researcher` agent 搜索验证。
39
+ | 状态 | 处理 |
40
+ |---|---|
41
+ | `ready` | 往下走 |
42
+ | `blocked` / `invalid` | 改到净再重跑(工程词泄漏也在报告里) |
43
+ | `needs_decision`(字数出带) | 欠字不补;超字把删除区间交写手按 agent-calls「超字一次净删」删一次(自己改就同样只删不加),复检仍带外用下面的字数问法请作者选 |
44
+ | `tool_unavailable`(退出码 3) | 停下,不提交,告诉作者「要装 Node.js 18 或更新版本,才能做改后检查」 |
45
+ | 退出码 2 | 按 `error_code` 修命令重跑 |
46
+ 4. **人物与节奏**:改后的角色行为与设定、前后章一致;改动没把这章的节奏打散。
47
+ 5. **篇幅**:与原文差异超过 30% 或 800 字(取较大)时告诉作者「改后约 X 字,比原来多/少 Y 字,比目标多/少 Z 字」;字数本身不触发再改一遍。
48
+ 6. 需要查证外部事实时 spawn `story-researcher`。
53
49
 
54
50
  ---
55
51
 
56
- ## Step 4:级联检查
52
+ ## Step 4:级联更新与提交
57
53
 
58
- 修改完成后,用一次 `mode=revision` 追踪事务完成级联更新,协议见 [tracking-transaction.md](tracking-transaction.md):
54
+ 用一次 `mode=revision` 追踪事务更新;下面几条是修订的要点,[tracking-transaction.md](tracking-transaction.md) 只在报错时读:
59
55
 
60
- 1. **重算修订章增量**:对比旧正文/旧增量与新正文,只保留新版本对未来仍有效的 `result / 角色变化 / 伏笔变化 / 时间与揭示 / 约束 / 下一章承诺`。事务工具整份重写 `追踪/逐章记录/第{X}章.md`,不保留被新正文推翻的结论。
61
- 2. **伏笔当前值**:对受影响 ID 从第 X 章检查到最后已写章 M,提交修订后的**截至 M 章当前状态**。若修订删除了埋设,但后文仍引用该 ID,先列为正文冲突,不能简单删除;确定整条线不存在时才用 `action=delete`。`伏笔.md` 始终每 ID 一行,不追加修订历史。
62
- 3. **时间与读者认知**:为受影响事件提交客观事实、读者截至 M 章的当前认知、实际揭示状态/章节;删掉的事件用 `action=delete`。未来揭示计划仍留大纲。工具把事件合并进 `_tracking-state.json` 并重建作者/读者视图,禁止分别手改。
56
+ 1. **重算修订章记录**:先跑 `{PYTHON} {skill 根}/scripts/tracking_commit.py draft --project {项目根} --chapter {X}`,草稿已按本章现有记录预填;对照新正文,仍有效的保留,被推翻的改写或删掉,不清空重写。工具整份重写 `追踪/逐章记录/第{X}章.md`。
57
+ 2. **伏笔当前值**:对受影响 ID 从第 X 章检查到最后已写章 M,提交修订后的**截至 M 章当前状态**。若修订删除了埋设,但后文仍引用该 ID,先列为正文冲突,不能简单删除;确定整条线不存在时才用 `action=delete`。
58
+ 3. **时间与读者认知**:为受影响事件提交客观事实、读者截至 M 章的当前认知、实际揭示状态/章节;删掉的事件用 `action=delete`。未来揭示计划仍留大纲。工具重建作者/读者视图,禁止手改。
63
59
  4. **角色当前快照**:对受影响核心角色从 X 检查到 M,按身份、位置、目标、能力资源、关系对象、已知信息、未结事项分别重算,提交一份截至 M 的完整快照;不得用最后一条单维度变化覆盖其它维度。
64
60
  5. **导入截止范围**:若 X ≤ `_tracking-state.json.imported_through_chapter`,事务为第 X 章新增覆盖记录;导入截止章不变,当前结构化状态按修订结果更新。
65
- 6. **提交与重试**:把修订开始时 `tracking_commit.py check` 返回的 `state_revision` 写入 `expected_state_revision`,再执行 `tracking_commit.py commit`;若期间状态已变化,重新读取当前状态并重构事务。任一步骤失败时保留原事务 JSON,修正写入环境后重跑同一 `commit`;成功并通过 `check` 前禁止继续修下一章或写新章。
66
- 7. **后续影响**:如果修改改变了角色状态/关系/世界观设定,扫描后续章节正文标记受影响项:
67
-
68
- ```
69
- ⚠️ 修改第{X}章后,以下章节可能需要同步调整:
70
- - 第{X+1}章:{原因}(建议检查)
71
- - 第{X+3}章:{原因}(建议检查)
61
+ 6. **提交与重试**:跑 `{PYTHON} {skill 根}/scripts/storyctl.py chapter commit --project {项目根} --chapter {X} --input {项目根}/.story/work/第{XXX}章/tracking.json`,它重新计数并清理本章工作目录。带外时先问作者:
62
+
63
+ <!-- author-report -->
64
+ ```md
65
+ 第{X}章改完约 {实际} 字,比目标{少/多}了约 {差额} 字(目标约 {目标} 字)。{一句原因,如「按你说的删掉了那场追逐」}
66
+ 你想怎么处理?
67
+ 1. 就按现在的长度收下(推荐)
68
+ 2. 我再调整这章,往目标靠
69
+ 3. 退回原稿
72
70
  ```
73
71
 
74
- 8. **正文元信息扫描**:检查标题行以外是否混入 `第[一二三四五六七八九十百千万两0-9]+章|上一章|上章|前一章|本章|这一章|前文|后文|伏笔|细纲|读者` 这类写作工程词,命中即改成角色当下可感知的事件锚点或相对时间;故事内真实阅读/讨论“第X章”或真实读者身份语境除外
75
- 9. **禁用词扫描**:对照 `references/banned-words.md` 检查修改后的内容,并运行 `tracking_commit.py check` 验证 state 与全部派生视图一致
72
+ 不到目标一半时选项 1 不标推荐。选 1 → 改用 `chapter accept-current-length`,不到目标一半、或超字还没压缩过一次会被拒,把差多少字告诉作者,作者明确坚持才加 `--force`;选 2 → 回 Step 3;选 3 → 用备份原稿覆盖回去,不提交。失败时保留草稿,修正后重跑同一命令;通过 `check` 前不修下一章、不写新章。
73
+ 7. **收口**:`{PYTHON} {skill 根}/scripts/tracking_commit.py check --project {项目根}` 验证 state 与派生视图一致。改变了角色状态、关系或世界观设定的,扫一遍后续章正文,把受影响的列进汇报。
76
74
 
77
75
  ---
78
76
 
79
- ## Step 5:质量检查
80
-
81
- 对修改后的章节执行 Phase 5 质量检查(至少包含):
82
-
83
- 1. **禁用词扫描**:如 Step 4 未覆盖全章,再次扫描
84
- 2. **正文元信息扫描**:同「级联检查」中的「正文元信息扫描」,确认覆盖全章。
85
- 3. **人物一致性**:修改后的角色行为是否与角色设定一致
86
- 4. **节奏检查**:修改是否破坏了章节节奏
77
+ ## Step 5:向作者汇报
87
78
 
88
- > 完整检查清单见 [workflow-chapter.md 的「质量检查」节](workflow-chapter.md)。
79
+ 按 SKILL.md「面向作者的汇报」;追踪修订与各项扫描只作内部核对。
89
80
 
90
- ---
91
-
92
- ## 常见问题
81
+ <!-- author-report -->
82
+ ```md
83
+ 第{X}章《{章名}》改好了,原稿留着,想退回随时说:
84
+ - {改了什么,用故事话:原来怎样 → 现在怎样}
85
+ - 篇幅:{差异超过步骤 3 第 5 条的阈值才写:约 X 字,比原来多/少约 Y 字;没超就删掉这行}
86
+ {后面受影响的章:「第{X+1}章《{章名}》里{谁/什么}还按旧说法写,要一起改吗?1. 一起改(推荐)2. 先不动」;没有就写「后面的章不受影响」}
87
+ ```
93
88
 
94
- | 问题 | 处理 |
95
- |------|------|
96
- | 用户没说改哪里 | 问"你想改哪一章?哪方面?情节/节奏/对话/描写?" |
97
- | 修改后字数暴增/暴减 | 提醒用户,由用户决定是否调整 |
98
- | 连续改多章 | 逐章修改,每章独立执行 Step 2-5 |
99
- | 改完发现后续不一致 | 列出受影响章节,由用户决定是否现在修改 |
89
+ 连续改多章时逐章走 Step 1-5;改完发现后续不一致,列出受影响的章由作者决定是否现在改。