@oh-story/dsh 0.1.10 → 0.1.12

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 (444) hide show
  1. package/README.md +11 -11
  2. package/lib/client.js +7 -3
  3. package/lib/client.js.map +2 -2
  4. package/lib/drama/manifest.json +212 -142
  5. package/lib/drama/skills/short-drama/SKILL.md +14 -2
  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/project_tool.py +131 -0
  10. package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
  11. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
  12. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
  13. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  14. package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
  15. package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
  16. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
  17. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
  18. package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
  19. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
  20. 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
  21. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
  22. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
  23. 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
  24. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
  25. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
  26. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
  27. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
  28. package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
  29. package/lib/drama/skills/short-drama-edit/SKILL.md +43 -20
  30. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
  31. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
  32. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
  33. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
  34. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
  35. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
  36. package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
  37. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
  38. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
  39. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
  40. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
  41. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
  42. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
  43. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
  44. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
  45. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
  46. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +4 -2
  47. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +3 -1
  48. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +6 -2
  49. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +12 -6
  50. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +13 -8
  51. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +2 -0
  52. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1153 -121
  53. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +49 -9
  54. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
  55. package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
  56. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
  57. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
  58. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
  59. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
  60. package/lib/drama/skills/short-drama-review/SKILL.md +2 -2
  61. package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
  62. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
  63. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
  64. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +15 -0
  65. package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
  66. package/lib/drama/skills/short-drama-storyboard/SKILL.md +13 -5
  67. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
  68. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
  69. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +82 -14
  70. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +4 -2
  71. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +5 -3
  72. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +12 -0
  73. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
  74. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
  75. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +40 -1
  76. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +20 -14
  77. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +1 -1
  78. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +8 -7
  79. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
  80. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +1 -0
  81. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
  82. package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
  83. package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
  84. package/lib/drama/skills/short-drama-write/SKILL.md +8 -3
  85. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
  86. package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
  87. package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
  88. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
  89. package/lib/index.js +71 -21
  90. package/lib/index.js.map +3 -3
  91. package/lib/oh-story/manifest.json +545 -310
  92. package/lib/oh-story/roles/chapter-extractor.md +11 -11
  93. package/lib/oh-story/roles/character-designer.md +1 -2
  94. package/lib/oh-story/roles/consistency-checker.md +11 -9
  95. package/lib/oh-story/roles/narrative-writer.md +24 -25
  96. package/lib/oh-story/roles/story-architect.md +9 -61
  97. package/lib/oh-story/roles/story-explorer.md +20 -125
  98. package/lib/oh-story/roles/story-researcher.md +0 -1
  99. package/lib/oh-story/skills/story/SKILL.md +6 -6
  100. package/lib/oh-story/skills/story/VERSION +1 -1
  101. package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
  102. package/lib/oh-story/skills/story/references/author-memory.md +40 -118
  103. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +3 -3
  104. package/lib/oh-story/skills/story-deslop/SKILL.md +24 -25
  105. package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
  106. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +1 -1
  107. package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
  108. package/lib/oh-story/skills/story-deslop/references/author-memory.md +40 -118
  109. package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
  110. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +21 -4
  111. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
  112. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +3 -3
  113. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
  114. package/lib/oh-story/skills/story-import/SKILL.md +63 -579
  115. package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
  116. package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
  117. package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
  118. package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
  119. package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
  120. package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
  121. package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
  122. package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
  123. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +95 -91
  124. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
  125. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
  126. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +11 -9
  127. package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
  128. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +101 -14
  129. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +278 -23
  130. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +179 -23
  131. package/lib/oh-story/skills/story-long-analyze/SKILL.md +28 -50
  132. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +12 -5
  133. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +1 -1
  134. package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
  135. package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
  136. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +21 -55
  137. package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
  138. package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
  139. package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
  140. package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
  141. package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
  142. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +17 -0
  143. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +1 -1
  144. package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
  145. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +47 -8
  146. package/lib/oh-story/skills/story-long-scan/SKILL.md +41 -193
  147. package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
  148. package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
  149. package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
  150. package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
  151. package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
  152. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
  153. package/lib/oh-story/skills/story-long-write/SKILL.md +32 -73
  154. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
  155. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +1 -1
  156. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +18 -201
  157. package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
  158. package/lib/oh-story/skills/story-long-write/references/author-memory.md +40 -118
  159. package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
  160. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +6 -10
  161. package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
  162. package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
  163. package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
  164. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
  165. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  166. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +3 -2
  167. package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
  168. package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
  169. package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
  170. package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
  171. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
  172. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
  173. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
  174. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
  175. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
  176. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
  177. package/lib/oh-story/skills/story-long-write/references/project-files.md +10 -6
  178. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +1 -1
  179. package/lib/oh-story/skills/story-long-write/references/reference-index.md +4 -4
  180. package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
  181. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
  182. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  183. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
  184. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
  185. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +11 -9
  186. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +33 -44
  187. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +18 -51
  188. package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
  189. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +53 -67
  190. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -251
  191. package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
  192. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +5 -3
  193. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +18 -56
  194. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +3 -3
  195. package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
  196. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +96 -16
  197. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
  198. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +101 -14
  199. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
  200. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +2 -1
  201. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +250 -50
  202. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +278 -23
  203. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +179 -23
  204. package/lib/oh-story/skills/story-review/SKILL.md +19 -273
  205. package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
  206. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +1 -1
  207. package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
  208. package/lib/oh-story/skills/story-review/references/author-memory.md +40 -118
  209. package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
  210. package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
  211. package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
  212. package/lib/oh-story/skills/story-review/references/review-quality.md +2 -1
  213. package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
  214. package/lib/oh-story/skills/story-review/references/solo.md +52 -0
  215. package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
  216. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
  217. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +11 -9
  218. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +3 -3
  219. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
  220. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +278 -23
  221. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +179 -23
  222. package/lib/oh-story/skills/story-setup/SKILL.md +69 -458
  223. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
  224. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +1 -1
  225. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
  226. package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
  227. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
  228. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +21 -4
  229. package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
  230. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
  231. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
  232. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  233. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +1 -1
  234. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
  235. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
  236. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
  237. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
  238. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
  239. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
  240. package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
  241. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
  242. package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
  243. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
  244. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  245. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +4 -4
  246. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +18 -56
  247. package/lib/oh-story/skills/story-setup/references/diagnostics.md +3 -3
  248. package/lib/oh-story/skills/story-short-analyze/SKILL.md +37 -110
  249. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
  250. package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
  251. package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
  252. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
  253. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
  254. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
  255. package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
  256. package/lib/oh-story/skills/story-short-analyze/references/{material-decomposition.md → stage4-6-reversal-summary.md} +303 -374
  257. package/lib/oh-story/skills/story-short-scan/SKILL.md +30 -64
  258. package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
  259. package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
  260. package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
  261. package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
  262. package/lib/oh-story/skills/story-short-write/SKILL.md +23 -34
  263. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
  264. package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
  265. package/lib/oh-story/skills/story-short-write/references/author-memory.md +40 -118
  266. package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
  267. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
  268. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
  269. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
  270. package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
  271. package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -49
  272. package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
  273. package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
  274. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
  275. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
  276. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
  277. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
  278. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
  279. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
  280. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +19 -12
  281. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +22 -32
  282. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +84 -17
  283. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
  284. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +3 -3
  285. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
  286. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
  287. package/lib/types/client/video-studio.d.ts.map +1 -1
  288. package/lib/types/native-hooks.d.ts +2 -2
  289. package/lib/types/native-hooks.d.ts.map +1 -1
  290. package/lib/types/role-tool.d.ts.map +1 -1
  291. package/lib/types/skill-provider.d.ts.map +1 -1
  292. package/lib/types/video-project.d.ts.map +1 -1
  293. package/lib/types/workspace-route.d.ts.map +1 -1
  294. package/lib/video-recap/CHANGELOG.md +60 -1
  295. package/lib/video-recap/README.en.md +348 -137
  296. package/lib/video-recap/README.md +340 -136
  297. package/lib/video-recap/manifest.json +406 -251
  298. package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
  299. package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
  300. package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
  301. package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
  302. package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
  303. package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
  304. package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
  305. package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
  306. package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
  307. package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
  308. package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
  309. package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
  310. package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
  311. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
  312. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
  313. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
  314. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
  315. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
  316. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
  317. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
  318. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
  319. package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
  320. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
  321. package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
  322. package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
  323. package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
  324. package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
  325. package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
  326. package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
  327. package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
  328. package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
  329. package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
  330. package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
  331. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
  332. package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
  333. package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
  334. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
  335. package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
  336. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
  337. package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
  338. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
  339. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
  340. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
  341. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
  342. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
  343. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
  344. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
  345. package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
  346. package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
  347. package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
  348. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
  349. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
  350. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
  351. package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
  352. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
  353. package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
  354. package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
  355. package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
  356. package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
  357. package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
  358. package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
  359. package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
  360. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
  361. package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
  362. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
  363. package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
  364. package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
  365. package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
  366. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
  367. package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
  368. package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
  369. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
  370. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
  371. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
  372. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
  373. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
  374. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
  375. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
  376. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
  377. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
  378. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
  379. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
  380. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
  381. package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
  382. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
  383. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
  384. package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
  385. package/lib/video-recap/skills/video-script/SKILL.md +16 -13
  386. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
  387. package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
  388. package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
  389. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
  390. package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
  391. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
  392. package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
  393. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
  394. package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
  395. package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
  396. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
  397. package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
  398. package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
  399. package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
  400. package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
  401. package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
  402. package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
  403. package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
  404. package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
  405. package/lib/video-recap/skills/video-understanding/scripts/{agent_brief.py → briefing/builder.py} +38 -35
  406. package/lib/video-recap/skills/{video-script/scripts/brief_context.py → video-understanding/scripts/briefing/context.py} +4 -35
  407. package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
  408. package/lib/video-recap/skills/video-understanding/scripts/{brief_timeline.py → briefing/timeline.py} +5 -6
  409. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
  410. package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
  411. package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
  412. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
  413. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
  414. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
  415. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
  416. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
  417. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
  418. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
  419. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
  420. package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
  421. package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
  422. package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
  423. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
  424. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
  425. package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
  426. package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
  427. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
  428. package/package.json +41 -41
  429. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -538
  430. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -603
  431. package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
  432. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
  433. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
  434. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
  435. package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
  436. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
  437. package/lib/video-recap/skills/video-script/scripts/agent_brief.py +0 -399
  438. package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +0 -327
  439. package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
  440. package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +0 -348
  441. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
  442. /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
  443. /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
  444. /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
@@ -1,42 +1,36 @@
1
1
  # workflow-chapter.md:单章正文工作流(Phase 4-5)
2
2
 
3
- 「写一章正文」的完整流程。日更批量由 `workflow-daily.md` 控制批次,每章仍走本文件。项目文件结构、缺失处理和对标权威顺序见 [project-files.md](project-files.md),首次定位或文件缺失时才读。
3
+ 每章正文走本文件(日更批次见 `workflow-daily.md`)。**缺文件就停下修,本轮不写**:`tracking_commit.py check` 不过、缺 `_tracking-state.json`、登记了对标却缺情绪模块/节奏时,读 [stop-and-fix.md](stop-and-fix.md) 照做(作者定了不对标不算缺,组装脚本会报「召回降档:成立,无对标」,照它走);修好再从步骤 1 开始。
4
4
 
5
- **工作目录**:本章临时文件(前组.md、后组.md、writer_prompt.md、tracking.json)只放书目录下 `.story/work/第NNN章/`,不写系统 `/tmp`、`正文/`、`大纲/` 或书根;`chapter commit` / `accept-current-length` 成功后脚本自动删除该目录,失败时保留供重跑。
6
-
7
- agent 只查当前端 canonical 目录;Antigravity 用 `.agents/agents/agent-name/agent.md` 与 `invoke_subagent` + 同名 `TypeName`,其余端用各自 Agent 工具。
5
+ **工作目录**:本章临时文件(前组.md、后组.md、writer_prompt.md、tracking.json)只放书目录下 `.story/work/第NNN章/`,不写系统 `/tmp`、`正文/`、`大纲/` 或书根;提交成功后脚本自动删除。
8
6
 
9
7
  ---
10
8
 
11
9
  ## 单章写作流程
12
10
 
13
- 缺 `_tracking-state.json` 时先按 workflow-daily「首次初始化」处理,`check` 通过才往下走。
11
+ 新书还没有 `_tracking-state.json` 时先按 [tracking-initialization.md](tracking-initialization.md) 初始化;已有正文却缺它,按 stop-and-fix 停下修。
14
12
 
15
- 1. **检查细纲**:读 `大纲/细纲_第{N}章.md` 全文,取「单元ID/位置」,跑 `outline_view.py --unit {单元ID} {卷纲路径}` 取卷契约、全卷常任裁定、当前剧情单元与终局底牌边界——**不整读卷纲**;exit 1 按提示修,不改用整读。细纲缺失或缺必需字段时**先补建再写**:按 workflow-setup 细纲模板补齐必填项(核心事件、字数目标、字数口径、单元ID/位置、目标情绪、主角目标/关键选择、章首钩子、爽点、本章禁止提前释放)和四个小节,无证据的写 `[待补充]`,补完跑 `check-outline-contract.js` 验收。
16
- 2. **读取上下文**:`tracking_commit.py check`(取 `last_committed_chapter` / `state_revision`,完整 state 不进 prompt)→ `追踪/上下文.md` 全 7 栏 → 细纲点名或出场的 `设定/角色/`、`设定/势力/`、`设定/世界观/` 相关文件。上一章结尾由脚本代读,承接存疑才自己读。久别角色读 `追踪/角色状态/{名}.md`;更旧的信息按 workflow-daily「旧信息查找步骤」定点查。
13
+ 1. **检查细纲**:读 `大纲/细纲_第{N}章.md` 全文,取「单元ID/位置」,跑 `outline_view.py --unit {单元ID} {卷纲路径}` 取卷契约、全卷常任裁定、当前剧情单元与终局底牌边界(日更同单元本批复用,不重跑)——**不整读卷纲**。细纲缺失或缺九个必填字段时**先补建再写**:按 workflow-outline.md 细纲模板补齐九个必填字段和四个小节,无证据的写 `[待补充]`,补完跑 `check-outline-contract.js` 验收。
14
+ 2. **读取上下文**:`tracking_commit.py check`(取 `last_committed_chapter` / `state_revision`,完整 state 不进 prompt)→ `追踪/上下文.md` 全 7 栏 → 细纲点名的 `设定/势力/`、`设定/世界观/` 相关条目(为「必读设定」槽摘句);角色卡交给写手时只在「涉及角色」列名字、由写手读,主会话自己写时才读。上一章结尾由脚本代读,承接存疑才自己读。久别角色读 `追踪/角色状态/{名}.md`;更旧的信息按 workflow-daily「旧信息查找步骤」定点查。
17
15
  3. **写前准备**:
18
16
  - **先跑组装脚本**:`{PYTHON} {skill 根}/scripts/build_writer_prompt.py --project {项目根} --chapter {N} --out`。`====` 以上是 prompt、以下是核对报告;退出码 2 =数据问题,修完重跑,不手拼绕过。
19
17
  - **状态筛选**:从续写状态卡取本章在场角色、要碰/要避的伏笔、必须履行的下一章承诺与相关长期约束,写成本节速记。
20
18
  - **召回**:核对报告写「召回降档:成立」时直接用脚本给的情绪/节奏;不成立时才完整读取 [benchmark-recall.md](benchmark-recall.md) 执行全量召回。
21
- - **意图确认**:一句话写清本章意图(例:「快节奏打脸——账单暴露→逼问→反证→公开代价;读者等了三章,这章必须一拳到位。」)。确认时对照:细纲是唯一剧情蓝图,新增物按写手铁律 3 的三级(直接写 / 写了要报 / 先问作者);后续阶段真相与底牌不因章尾钩子提前泄露;细纲多处重复的同一要求只算一个语义点,正文兑现一次;爽点前有可指认的危机/期待铺垫,打脸/揭露章写在场配角的差异反应;高压节拍收紧对话声线。
22
- - **契约四问**:主角是否靠自己的选择挣到本章结果?收益是否被配角、机构或巧合无交换地拿走?有没有提前动用后面的底牌?旧期待付利息、留新期待了吗?任一问不过(没靠自己挣到、收益被拿走、提前动了底牌、旧期待没付利息),读 `references/reader-contract-and-progression.md` 对应小节,先修纲再写。
23
- 4. **资料研究**(按需):需查证外部事实时 spawn story-researcher 输出到 `参考资料/`,不可用则主线程查。
19
+ - **意图确认**:一句话写清本章意图(例:「快节奏打脸——账单暴露→逼问→反证→公开代价」)。对照:细纲是唯一剧情蓝图,新增物按「新增物三级」;底牌不因章尾钩子提前泄露;细纲重复的同一要求只兑现一次;爽点前有可指认的铺垫,打脸/揭露章写在场配角的差异反应。
20
+ - **契约风险**:细纲或单元卡标了需补强,把单元卡写的补强办法(交换、铺垫或成本)写进本章意图;标了契约破坏,先按 workflow-outline 补纲流程修纲再写;标契约安全的写前不重问,写后在步骤 9 核。
21
+ 4. **资料研究**(按需):需查证外部事实时 spawn story-researcher 输出到 `参考资料/`,不可用则主会话查。
24
22
  5. **标题预检**:看核对报告的重名结论;重名或明显重复才按核心事件改名,并同步细纲标题与正文文件名。
25
- 6. **写作准备**:全章细纲先交给 writer 统筹编排,默认同一 session 按前后两组交付。
26
- - 按实际叙述顺序在自然转场或因果停顿处分组,不在一句对话或同一动作中间截断;可交错情节点,但不增删批准内容,不拆逐点字数配额。
27
- - writer 先把前组写到工作目录 `前组.md`;主会话只调用一次 `storyctl.py wordcount checkpoint --file {segment} --target {目标} --chapter {N}`,把 `actual / remaining_user_range` 连同后组交回同一 writer。两组按原文拼接,不回改前组追字数。
28
- - 用户明确要求一次成文时执行安排填「全章」,直接落盘,不跑 checkpoint。批准内容写完即停,不为字数加剧情;实际长度由步骤 8 收口。
29
- - **正文元信息隔离**:章号、上一章、匹配章、细纲文件只用于定位。标题行以外的正文不得出现 `第[一二三四五六七八九十百千万两0-9]+章|上一章|上章|前一章|本章|这一章|前文|后文|伏笔|细纲|读者` 这类工程词,承接前文改成角色能感知的事件锚点或相对时间(「比第一章那三秒开火更疼」→「比那三秒开火更疼」)。例外:角色在故事内真实阅读/讨论「第X章」文本,或真实身为作者/读者。
30
- 7. **正文执行**:确认 narrative-writer 已部署;骨架已由脚本生成,细纲全文、卷纲、续写状态卡都不进 prompt。**主会话填八槽**(搜 `[主会话填]`):执行安排 / 本章意图 / 参考技法 / 本节速记 / 涉及角色 / `genre_prose_card` / 必读设定 / `style_resolution`;降档不成立时情绪与节奏槽也要填。`author_preferences` 由脚本查询注入(查询失败才成空槽,按 author-memory.md 手动查),只作低优先级倾向,不逐条展示或最大化命中。空槽以外一字不改,整份照抄进 Agent prompt。脚本**跑不起来**时读 [writer-prompt-fallback.md](writer-prompt-fallback.md) 手动组装并报 `Fallback: build_writer_prompt -> 手动组装`;退出码 2 不是回落,是修数据。agent 交付后主会话核对它只消费了批准情节点;agent 未部署则主线程按同一流程写。
23
+ 6. **写作准备**:交给写手时按 [agent-calls.md](agent-calls.md)「写一章」分前后两组交付;主会话自己写时也分两组:前组写到 `前组.md` 后跑一次 `storyctl.py wordcount checkpoint --file {前组} --project {项目根} --chapter {N}`,后组按 `remaining_user_range` 收、原文拼接;作者要一次成文才写全章。批准内容写完即停,不为字数加剧情;实际长度由步骤 8 收口。
24
+ 7. **正文执行**:已部署 narrative-writer 时按 [agent-calls.md](agent-calls.md)「写一章」填槽交给它,交付后核对它只消费了批准情节点。未部署则主会话自己写:不填槽,按脚本输出与本节速记直接写,新增物自列申报表。写完逐段再看一遍检测器抓不住的三类 AI 腔:用工整对仗或金句替读者点题;叙述者跳出来总结情绪、解释动机、说出细纲的结论;章尾用感悟、升华或预告收。遇到就删,或改成人物的动作、对话、物件,让读者自己看出来。
31
25
  8. **核情节点落点,再一次检测收口**:
32
- - 细纲每个情节点**至少出现一次**,漏即退回补写批准内容。这类退回不以字数为由。
33
- - 运行 `{PYTHON} {skill 根}/scripts/storyctl.py chapter check --project {项目根} --chapter {N} --fix-punctuation`:一次调用整理标点,再跑 AI 句式、`check-degeneration.js` 退化、细纲照搬与字数检测。文件改动后重跑,不存决议,不再分别调各检测脚本。
34
- - 带内 + pass → 完成步骤 9-12 再提交;fail / `invalid` → 停止修。`under` + pass → 不补不重试,按「向作者汇报」的字数问法请作者选。`over` + pass → 删除区间随 `compress-once` 交 narrative-writer 一次净删、零新语义,复检后带内提交,否则同样请作者选。
35
- 9. **检查钩子与爽点**:章尾有往下看的理由(低压/过场章留阶段目标即可);高压/推进章爽点到位。不达标只修复批准内容,修后重跑步骤 8,不借质量修复补新剧情追字数。
36
- 10. **元信息扫描**:按步骤 6 的规则清掉标题行以外的工程词。
37
- 11. **检测结果处理**:严重度统一读作必须修 / 建议看 / 仅提示——检测器 blocking 与 checker 的 S1/S2 是必须修,advisory 与 S3 是建议看,S4 仅提示。`quality.blocking_findings` 就地改到净;`advisories` 逐条读原文判断,确属问题才改,功能性写法保留,不为归零机械改写。`formulaic-parallelism` 连同台词一起复核;细纲照搬里判定保留的补进细纲「复沓锚句」。禁用词表不整读,拿不准的二级词才查 `references/banned-words.md` 对应条目。改完只重跑步骤 8,不另安排全篇去味。
38
- 12. **更新追踪**:运行 `{PYTHON} {skill 根}/scripts/tracking_commit.py draft --project {项目根} --chapter {N}`,它把修订号、模式、章名和上下文当前值预填进工作目录 `tracking.json`,并给出字数上限与在场核心角色的当前快照。只填 `delta` 与留空的本章结尾时间、场景:本章变化的核心角色把快照整份改好放进 `character_snapshots`;撤下的长期约束或风险从 `context` 删掉并把原文列进 `delta.retired_context_items`。不读脚本源码或 state 文件找格式;schema 细节、修订与修复见 [tracking-transaction.md](tracking-transaction.md),只在出错或 `mode=revision` 时读。带内执行 `storyctl.py chapter commit`,作者接受当前长度执行 `chapter accept-current-length`(两者都重读正文、重数、重跑 quality 后原子提交)。报错会一次列全要改的字段,按提示改完重跑同一命令。作者选「这章不要了」时删本章正文与工作目录,不提交。判为「登记」的申报项在这次事务里一并登记;有「先问作者」项时暂停提交与下一章。
39
- 13. **提交后核对**:返回 `tracking_committed: true` 即本章完成,工作目录已删;连续写多章不另做快照。
26
+ - 细纲每个情节点**至少出现一次**,漏即退回补写批准内容。不以字数为由。
27
+ - 运行 `{PYTHON} {skill 根}/scripts/storyctl.py chapter check --project {项目根} --chapter {N} --fix-punctuation`:一次整理标点并跑 AI 句式、`check-degeneration.js` 退化、细纲照搬与字数检测(去味管线:检测器 → 选 Gate → 一次定点改写 → 复扫);文件改动后重跑,不再分别调各检测脚本。
28
+ - 按返回的 `status` 走:`ready` → 完成步骤 9-12 再提交。`blocked` / `invalid`(退出码 1)→ 就地修净再重跑。`needs_decision`(字数出带)→ 看 `available_actions`:欠字不补不重试,按字数问法请作者选;超字把删除区间随 `compress-once` 交 narrative-writer 一次净删、零新语义,复检仍带外也请作者选。`tool_unavailable`(退出码 3,见 `quality.tool_errors`)→ 不能提交、无绕过,用停下问法告诉作者要装 Node.js 18+ 才能做写后检查。退出码 2(`status: error`)按 `error_code` 修命令。
29
+ 9. **检查钩子、爽点与契约**:章尾有往下看的理由(低压/过场章留阶段目标即可);高压/推进章爽点到位;对着成稿过契约四问——主角是否靠自己的选择挣到本章结果?收益是否被配角、机构或巧合无交换地拿走?有没有提前动用后面的底牌?旧期待付利息、留新期待了吗?任一问不过就按问改:没挣到→让结果落在他的选择或判断上;收益被拿走→补交换或让他拿回控制点;提前用了底牌→换成本卷已解锁的手段;没付利息→给旧期待一个小兑现再留新钩。不达标只修批准内容,修后重跑步骤 8;需补强、契约破坏都在本章汇报里告诉作者。
30
+ 10. **元信息扫描**:标题行以外清掉第X章、上一章、本章、前文、后文、伏笔、细纲、读者这类工程词,改成角色能感知的事件锚点(「比第一章那三秒开火更疼」→「比那三秒开火更疼」);角色真实读到「第X章」或本身是作者/读者的除外。
31
+ 11. **检测结果处理**(选 Gate 与定点改写):严重度读作必须修 / 建议看 / 仅提示——检测器 blocking 与 checker 的 S1/S2 必须修,advisory 与 S3 建议看,S4 仅提示。`quality.blocking_findings` 就地改到净;`advisories` 逐条读原文判断,确属问题才改,不为归零机械改写。`formulaic-parallelism` 连同台词一起复核;细纲照搬里判定保留的补进细纲「复沓锚句」(这是登记,不算改大纲,不用暂停问作者)。禁用词表不整读,拿不准的二级词才查 `references/banned-words.md` 对应条目。改完只重跑步骤 8 复扫,不另安排全篇去味。
32
+ 12. **更新追踪**:运行 `{PYTHON} {skill 根}/scripts/tracking_commit.py draft --project {项目根} --chapter {N}`,预填工作目录 `tracking.json`,并给出在场核心角色的当前快照和每类条目的样板(`shapes`)。只填 `delta` 与留空的本章结尾时间、场景:变化的核心角色(含本章首次进场的核心角色,草稿里没有就新建一份)把快照整份改好放进 `character_snapshots`;撤下的长期约束或风险从 `context` 删掉并把原文列进 `delta.retired_context_items`。不读脚本源码或 state 找格式;出错或 `mode=revision` 时才读 [tracking-transaction.md](tracking-transaction.md)。带内执行 `{PYTHON} {skill 根}/scripts/storyctl.py chapter commit --project {项目根} --chapter {N} --input {工作目录}/tracking.json`,作者接受当前长度把 `commit` 换成 `accept-current-length`。报错按提示改完重跑同一命令;体积超目标只是提醒,逐章记录写要点即可,不必为它删改。判为「登记」的申报项在这次事务里一并登记;有「先问作者」项时暂停提交与下一章。「本章没写成的」:细纲没给的追加进本单元排纲底稿「建纲追加」,先问作者的走下方处置表。
33
+ 13. **提交后核对**:返回 `tracking_committed: true` 即本章完成。
40
34
 
41
35
  ## 向作者汇报
42
36
 
@@ -47,6 +41,7 @@ agent 只查当前端 canonical 目录;Antigravity 用 `.agents/agents/agent-n
47
41
  第{N}章《{章名}》写好了,约 {字数} 字。
48
42
  这章:{两三句讲发生了什么,停在哪个钩子上}。
49
43
  {有需作者留意的新人物/新设定就一句话,如「加了个跑腿的小厮阿福,后面可能还会用」;没有就删掉此行}
44
+ {这章主角的功劳被别人拿走、或提前用了后面的底牌时,一句话说哪里、怎么补或要不要改纲;没有就删掉此行}
50
45
  {自查结论一句话:「自查过设定和前文,没发现冲突」或「发现一处前后不一:{什么},已按前文改正」}
51
46
  下一章:第{N+1}章《{章名}》,要接着写吗?
52
47
  ```
@@ -62,14 +57,14 @@ agent 只查当前端 canonical 目录;Antigravity 用 `.agents/agents/agent-n
62
57
  3. 这章不要了
63
58
  ```
64
59
 
65
- 作者选 1 → `chapter accept-current-length`;选 2 → 等作者改完细纲/目标后回步骤 8;选 3 → 删本章正文与工作目录,不提交。新增内容需要作者拍板(下方处置表「先问作者」)时:
60
+ 不到目标一半时选项 1 不标推荐。作者选 1 → `chapter accept-current-length`;选 2 → 等作者改完细纲/目标后回步骤 8;选 3 → 删本章正文与工作目录,不提交。收下被拒时:`BELOW_ACCEPT_FLOOR` 告诉作者差多少字,问补写还是就要这个长度;`COMPRESSION_REQUIRED` 先按 `compress-once` 删一次。作者知道原因仍坚持才加 `--force`。新增内容需要作者拍板(下方处置表「先问作者」)时:
66
61
 
67
62
  <!-- author-report -->
68
63
  ```md
69
- 第{N}章写的时候多出了一样东西,需要你定:{用故事话说新增了什么}。
64
+ 第{N}章{写的时候多出了一样东西 / 写到一半想加一样东西,还没写},需要你定:{用故事话说是什么}。
70
65
  它会牵动{后面哪段剧情或哪个已定安排,如「原定第三卷才揭开的那封信」}。
71
- 1. 留下,我把后面的大纲一起改过来
72
- 2. 删掉,按原细纲写
66
+ 1. {留下 / 加上},我把后面的大纲一起改过来
67
+ 2. {删掉 / 不加},按原细纲写
73
68
  我建议选 {1/2}:{一句理由}。
74
69
  这章先不算写完,等你定了再往下。
75
70
  ```
@@ -82,34 +77,28 @@ agent 只查当前端 canonical 目录;Antigravity 用 `.agents/agents/agent-n
82
77
  建议{一个动作,如「我先按卷纲把这章细纲补出来给你看」},可以吗?
83
78
  ```
84
79
 
85
- ## 字数测量权威
86
-
87
- 细纲 `字数目标` + `visible_chars_v1`,默认范围 ±15%(`internal_pass`、`borderline` 都算在内);**用户本轮明确给出上下限时原样优先**。缺目标即 `invalid`。带内提交,`under` 不补,`over` 最多净删一次;仍带外由作者接受、改目标/细纲或放弃。
88
-
89
- ---
90
-
91
80
  ## 质量检查
92
81
 
93
- 三个维度:**情绪交付**(交付了细纲规划的目标情绪吗)、**契约风险**(步骤 3 契约四问)、**技术质量**(一致性、格式、禁用词;清单见 [long-chapter-quality.md](long-chapter-quality.md),主会话自己写正文或排查具体问题时才读)。
82
+ 字数范围按 SKILL.md 写前必读第 4 条。三个维度:**情绪交付**(交付了目标情绪吗)、**契约风险**(步骤 9 契约四问)、**技术质量**(一致性、格式、禁用词;排查具体问题时才读 [long-chapter-quality.md](long-chapter-quality.md))。
94
83
 
95
- **写后同轮清零**:正文落盘不是汇报时机,同一轮内完成步骤 8-11,blocking 清零才算本章完成。写后 hook 推回的毒句式当轮清零。**唯一豁免**:用户显式说"本章不去味/跳过检查"时,在该章标题行下加一行 `<!-- 去味:跳过 -->`(写后 hook 与下一章前的欠账拦截都认它)。退化类 blocking(复读、截断、拒绝语、工程词泄漏)只重写受影响段落,最多 2 次,仍失败按停下问法请作者定夺;故事内系统用语、弹幕、有功能的重复台词保留。
84
+ **写后同轮清零**:同一轮内完成步骤 8-11,blocking(含写后 hook 推回的毒句式)清零才算本章完成。**唯一豁免**:用户显式说"本章不去味/跳过检查"时,在该章标题行下加一行 `<!-- 去味:跳过 -->`(写后 hook 与下一章前的欠账拦截都认它)。退化类 blocking(复读、截断、拒绝语、工程词泄漏)只重写受影响段落,最多 2 次,仍失败按停下问法请作者定夺;故事内系统用语、弹幕、有功能的重复台词保留。
96
85
 
97
86
  ### Agent 调用:consistency-checker
98
87
 
99
- **按需调用**:writer 申报表非 `0`,或核对细纲时发现未申报的跨章事实(新证词、证据、承诺、关系变化)才在本章 spawn;否则日更由批末整批查一次(workflow-daily Step 3),非日更的单章写作在步骤 12 提交前对本章查一次。Prompt:`项目目录:{dir}\n检查范围:{本次写作的章节}\n检查类型:事实冲突+伏笔断线+角色属性不一致\n本章新增申报:{申报表原样粘贴,无则写 0};同时核对正文有无未申报的跨章事实,逐处列原文和细纲出处。只读与新增项和本章出场角色相关的设定、角色卡与追踪条目。冲突按 S1-S4 报出`。不可用则主线程参照 long-chapter-quality.md 检查。
88
+ **按需调用**:写手申报表非 `0`,或核对细纲时发现未申报的跨章事实(新证词、证据、承诺、关系变化)才在本章 spawn;否则日更批末核对时整批查一次(workflow-daily Step 3),非日更的单章写作在步骤 12 提交前对本章查一次。Prompt 见 [agent-calls.md](agent-calls.md)。不可用则主会话自己核:申报项与跨章事实是否与细纲、角色卡、已登记追踪冲突;承诺与伏笔有没有被遗忘或无推进;有没有突然塞进大量新设定。
100
89
 
101
- **「写了要报」的处置**(正文定稿、追踪未提交时做)。checker 只给事实证据,归哪一栏由主会话判:
90
+ **新增物处置(主会话)**(正文定稿、追踪未提交时做)。checker 只给事实证据,归哪一栏由主会话判:
102
91
 
103
92
  | 处置 | 判据 | 出口 |
104
93
  |---|---|---|
105
- | **登记** | 无必须修的冲突;不需要在卷纲占 F/L 编号或新增反转/打脸债行;不碰主推线与终局底牌边界,不与活跃伏笔、下一章承诺打架 | 进步骤 12 的事务:角色/势力按 workflow-setup Phase 3 补建静态档案;可复用设定补进 `设定/世界观/{主题}.md`;伏笔、关系、约束、下章承诺进对应 delta 字段 |
106
- | **修复** | 有必须修的冲突 | 退回 writer 就地改正文或删掉该新增物,最多一次 |
107
- | **先问作者** | 要在卷纲新增编号或条目、碰主推线/终局边界、可能与既有承诺冲突,或需创作决策 | 按拍板问法问作者;本章暂停提交及下一章。作者接受则按授权改卷纲/设定后提交,不接受则删改后提交 |
94
+ | **登记** | 无必须修的冲突,也不属先问作者项 | 角色/势力按 workflow-outline.md「细纲后设定补全」补建静态档案、可复用设定补进 `设定/世界观/{主题}.md`,由主会话直接改设定文件(追踪事务不写设定);伏笔、关系、约束、下章承诺进步骤 12 事务的对应 delta 字段 |
95
+ | **修复** | 有必须修的冲突 | 退回写手就地改正文或删掉该新增物,最多一次 |
96
+ | **先问作者** | 先问作者项(SKILL.md「新增物三级」),或冲突要靠创作决策;「本章没写成的」里标先问作者的也走这行 | 按拍板问法问作者(已写的问留不留,没写的问「还没写,要不要加」);本章暂停提交及下一章。作者接受则按授权改卷纲/设定(没写的补写)后提交,不接受则删改后提交 |
108
97
 
109
- 拿不准归「先问作者」。申报为 `0` 仍做正文与细纲的正常核对,发现漏报照本表处置。
98
+ 申报为 `0` 仍做正文与细纲的正常核对,发现漏报照本表处置。
110
99
 
111
100
  ### Agent 调用:narrative-writer(去AI味审查)
112
101
 
113
- **按需调用**:步骤 8 里需要语义判断的 advisory(`stock-reaction-tic`、`formulaic-parallelism` 等)合计 ≥3 条,或 blocking 一次就地修改后仍未清零,才 spawn 一次;否则主会话按步骤 11 处理。Prompt:`项目目录:{dir}\n任务描述:审查+去AI味\n检查分工:你负责语义去味及原定自检;最终文件扫描由主会话执行\n检查范围:{本次写作的章节}\n文风路径:{设定/文风.md 全文路径}\nstyle_resolution:{与写作一致的裁决}\n作者偏好:{本章 query 命中的 prose_style/story_design 项}\n删除优先:每条 AI 味项先判能否删除,删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色\n按你的 7 Gate 与对话自检执行,台词里的工整否定不因脚本豁免而跳过\n删除测试:stock-reaction-tic 候选按 writing-craft.md「套式反应删除测试」逐处过,爽点段与 detector 标记处按同文件「写法抽查」表查,只指认已有问题、不补内容;报告列候选数/删改数/保留理由`。不可用则主线程按 `references/anti-ai-writing.md` 执行。
102
+ **按需调用**:步骤 8 的 `quality.semantic_advisories`(语义类 advisory 条数)≥3,或 blocking 一次就地修改后仍未清零,才 spawn 一次;否则主会话按步骤 11 处理。Prompt 见 [agent-calls.md](agent-calls.md)。不可用(主会话自己写)时不读去味细则:逐条按检测器那条提示改,先判能否直接删(删后不丢伏笔、钩子、角色、情节和必要信息就删),会丢才改写;blocking 改到净,advisory 确属问题才改。语义提示仍多时照常收口,在汇报里建议作者之后另开对话用 `/story-deslop` 精修。
114
103
 
115
- 审查在本章首次提交前改动的连续性事实,直接写进步骤 12 的 `mode=append` 事务;本章提交后再改连续性事实,才按 tracking-transaction.md 提交 `mode=revision` 事务(`draft --chapter {N}` 同样可生成预填草稿)。
104
+ 审查在本章提交前改的连续性事实直接进步骤 12 的事务;提交后再改,按 workflow-revision:`draft --chapter {N}` 预填 → 改 → `chapter commit`。
@@ -1,15 +1,6 @@
1
1
  # workflow-daily.md:日更续写工作流
2
2
 
3
- SKILL.md 路由到「日更续写」后按本文件控制批次;每章正文走 [workflow-chapter.md](workflow-chapter.md)。写前资料、对标路径与缺失处理按 [project-files.md](project-files.md) 与 [benchmark-recall.md](benchmark-recall.md),本文件不另立一套。
4
-
5
- **多本对标书**:主对标取 `设定/题材定位.md` 的 `主对标书` 字段;字段指向本书自身或缺失时,用 `对标/` 下字典序第一本(排除本书同名目录)并提示用户补字段,排除后为空按无对标处理。
6
-
7
- ---
8
-
9
- ## 适用条件
10
-
11
- - 项目已有 `正文/` 和 `追踪/`;用户明确说"日更""续写""继续写/接着写"或指定"写第 N-M 章";上一轮在规划时,"继续写"先按 SKILL.md「规划续接」一句话确认
12
- - 每次会话写 2-3 章。裸调用、只规划或只改细纲不进本流程
3
+ SKILL.md 路由到「日更续写」后按本文件控制批次;每章正文走 [workflow-chapter.md](workflow-chapter.md),缺文件按它开头停下修,召回降档不成立才读 [benchmark-recall.md](benchmark-recall.md)。适用于已有正文与追踪、作者明确要日更/续写/写第 N-M 章的项目;裸调用、只规划或只改细纲不进本流程。
13
4
 
14
5
  ---
15
6
 
@@ -19,34 +10,25 @@ SKILL.md 路由到「日更续写」后按本文件控制批次;每章正文
19
10
 
20
11
  `追踪/上下文.md` 是续写状态卡(7 栏,由 `tracking_commit.py` 派生,禁止手改);schema、修订与修复见 [tracking-transaction.md](tracking-transaction.md),出错时才读。
21
12
 
22
- **首次初始化**:
23
-
24
- 1. `_tracking-state.json` 不存在且尚无正文:完整读取 [tracking-initialization.md](tracking-initialization.md),构造 `last_chapter=0` 的初始化事务存 `.story/work/init.json`,执行 `tracking_commit.py init`,`check` 过后删掉。
25
- 2. 不存在但已有正文:停止日更,走 `/story-import` 的「旧追踪项目迁移」重建 `追踪/`(不用重跑全书拆解);`init` 会把旧结构整体移入 `追踪/_旧追踪存档/`。
26
- 3. `check` 报派生视图与 state 不一致:为该章提交 `mode=revision` 事务整份重建(`expected_state_revision` 取 state 文件的 `state_revision`),不手改 Markdown、不继续下一章。
27
-
28
- **长期约束**最多 6 条,出现第 7 条先合并语义重叠项或请作者取舍,不自动删旧约束。永久生效的设定裁定进 `long_term_constraints`,短期强承诺进 `next_chapter_commitments`,过程决策不进续写状态卡。
13
+ **缺 state 或视图不一致**:停下,按 [stop-and-fix.md](stop-and-fix.md) 修好再开始。
29
14
 
30
- 确定范围后直接进 Step 2,不做"是否继续"确认。K 默认 2-3 章,用户说"只写1章"/"日更3章"/"逐章确认"按用户;给出 N>3 时本轮只写前 3 章并在批末提示剩余下轮继续。只在章号冲突、细纲缺失、范围超出已有细纲、要改大纲/追踪等会写错的情况暂停确认。
15
+ 确定范围后直接进 Step 2,不问"是否继续";K 默认 2-3 章,作者另给按作者(单轮最多 3 章)。只在章号冲突、细纲缺失、范围超出已有细纲、要改大纲/追踪时暂停确认。
31
16
 
32
17
  ---
33
18
 
34
19
  ## Step 2:串行批量写作
35
20
 
36
- 多章细纲可一次加载,但**必须在主会话内串行逐章写**,不把多章并发交给多个子代理(上下文断裂、追踪覆盖、标题去重失效)。
37
-
38
- **批量 continuation 规则**:未改变任务时,"继续/续写/日更"仍走完整批量流程,不逐章重复确认(用户要求或阻塞除外);用户转为只规划/改细纲时退出批量。到达本轮 K(最多 3 章)后必须进入 Step 3/4 收尾并停止,不因还有细纲续写下一批。
21
+ **必须在主会话内串行逐章写**,不把多章并发交给多个子代理(追踪会互相覆盖)。"继续/续写/日更"不逐章重复确认;到达本轮 K(最多 3 章)后必须进入 Step 3/4 收尾并停止,不因还有细纲续写下一批。
39
22
 
40
23
  1. **读取写作计划**:按 卷契约 → 当前剧情单元 → 章节细纲 确定;`outline_view.py --unit {单元ID}` 取一次卷级与单元级内容,本批复用,不整读卷纲。写前明确本批推进目标、可释放与严禁提前释放的信息、章尾钩子不能越过的边界,别动用本阶段还不该解锁的终局底牌。批写完检查是否超前、拖慢或偏离阶段节奏(细节适配不算;已改变卷契约、单元承诺、推进线或兑现归属的,修正文或重规划后续细纲):下一章要补偿的进 `next_chapter_commitments`,跨章风险进 `continuity_risks`,不靠提前泄露后期信息提速。
41
24
  2. **逐章执行**:每章按 workflow-chapter「单章写作流程」步骤 1-13 走完,叠加:
42
25
  - **上一章欠账**:写本章前上一章不得有未清 blocking 毒句式(写前 hook 会拦;hook 不可用时对上一章跑一次 `chapter check`),标了 `<!-- 去味:跳过 -->` 的除外。
43
26
  - **状态来源**:不把完整 `_tracking-state.json` 读进上下文,缺的信息定点查,不用来源不明的聊天记忆替代。久别核心角色读 `追踪/角色状态/{名}.md`,重新活跃后放进本章事务的 `context.active_character_names`。
44
- - **用 story-explorer 召回时**:`gaps` 按 [benchmark-recall.md](benchmark-recall.md)「快捷路径」分流。
27
+ - **本章技法**:主会话自己写时一批只读一份(选法见 SKILL.md「本章技法」),交给写手时每章照填类别。
28
+ - **用 story-explorer 召回时**:`gaps` 按 [agent-calls.md](agent-calls.md)「story-explorer:写前对标召回」分流。
45
29
  - **写后清零不拖到批末**:hook 推回的命中当轮清零。
46
30
  - **每章写完立即提交追踪**:按 workflow-chapter 步骤 12,提交成功才进下一章;只记会影响后续章节的变化,过程日志、质检计数、去味统计不进事务。narrative-writer 不写 `追踪/`。
47
- 3. **不中断但不并发**:追踪已提交即进下一章;`under` 或一次压缩后仍带外,按 workflow-chapter 的字数问法请作者选,不静默推进。
48
-
49
- **资料研究**(按需):需查证外部事实时暂停,spawn `story-researcher` 输出到 `参考资料/`,完成后继续。
31
+ 3. **不中断但不并发**:追踪已提交即进下一章;字数出带(欠字,或一次压缩后仍超),按 workflow-chapter 的字数问法请作者选,不静默推进。
50
32
 
51
33
  ### 旧信息查找步骤
52
34
 
@@ -54,22 +36,22 @@ SKILL.md 路由到「日更续写」后按本文件控制批次;每章正文
54
36
 
55
37
  1. **定点读追踪**:伏笔 `grep -n "F007" 追踪/伏笔.md`;角色读 `追踪/角色状态/{名}.md`;读者认知读 `时间线/读者已知.md`,作者真相读 `时间线/作者真相.md`。
56
38
  2. **查变化原因或历史**:调 story-explorer 的 `foreshadow_status / character_status / timeline`(不可用则 `grep -R -n --include='第*.md' "F007" 追踪/逐章记录/ | tail -5`,只取最近 5 条)。
57
- 3. **读一个原文件**:对应逐章记录或埋设章正文,只读 1 个。全量读逐章记录或正文属于 `/story-review` 或作者要求的全面审计,日更不做。
39
+ 3. **读一个原文件**:对应逐章记录或埋设章正文,只读 1 个。全量读属 `/story-review` 或作者要求的全面审计,日更不做。
58
40
 
59
- 单章第 2 级超过 3 次,说明细纲没写清要消费哪些旧信息:一次性让 story-explorer 查多项,并在批末提示细纲需补清回收项。
41
+ 单章第 2 级超过 3 次,说明细纲没写清要消费哪些旧信息:一次性让 story-explorer 查多项,并在日更批末汇报里提示细纲需补清回收项。
60
42
 
61
43
  ---
62
44
 
63
- ## Step 3:质量检查
45
+ ## Step 3:日更批末核对
64
46
 
65
- 逐章检查已在 Step 2 完成,批末只做**跨章**核对:
47
+ 逐章检查已在 Step 2 完成,这里只做**跨章**核对:
66
48
 
67
49
  1. **标题去重**:本轮新写章与既有标题同名或明显重复时,统一改细纲与正文文件名。
68
- 2. **契约与细纲双向核对**:按 `reader-contract-and-progression.md`「契约四问」过一遍本批(答不上来的那问再读对应小节);正文是否消费了细纲的内容概括、情节安排、人物关系变化与收益归属;爽点前有可指认的铺垫、打脸/揭露章写了在场配角差异反应、详略按目的分配而非均匀注水。不达标回 Step 2 修批准内容。
50
+ 2. **契约与细纲双向核对**:逐章已在 workflow-chapter 步骤 9 过契约四问,这里只看跨章:几章连起来,主角的功劳、底牌和旧期待有没有累积失衡(有问题按 workflow-chapter 步骤 9 的改法修;需补强、契约破坏写进批末汇报);正文是否消费了细纲的内容概括、情节安排、人物关系变化与收益归属;爽点前有可指认的铺垫、打脸/揭露章写了在场配角差异反应、详略按目的分配而非均匀注水。不达标回 Step 2 修批准内容。
69
51
  3. **伏笔盘点(仅本轮增量)**:本批新增/推进/回收的每个 ID 在 `追踪/伏笔.md` 恰好一行当前状态,并能在对应逐章记录找到本次变化;不做全量伏笔审计。
70
- 4. **一致性检查(整批一次)**:本批各章没有按需调用过 consistency-checker 的,在这里 spawn 一次,检查范围写本批全部章节,prompt 同 workflow-chapter「Agent 调用:consistency-checker」(申报栏写各章申报汇总);各章都已单独查过就跳过。冲突照该节处置表处理。
52
+ 4. **一致性检查(整批一次)**:各章都没单独查过时,这里查一次本批全部章节(prompt 见 agent-calls.md,申报栏写各章申报汇总;无 agent 时主会话按 workflow-chapter 同节自己核),冲突照「新增物处置」表处理。
71
53
 
72
- 只对本步改过的章重跑 `chapter check --fix-punctuation`,没改过的不再整批复扫。本步修文若改变了会影响后续的事实、状态、伏笔或承诺,进入 Step 4 前为受影响章节提交 `mode=revision` 事务并通过 `check`(`delta` 重算修订后该章仍成立的完整记录);纯措辞调整不重复提交。
54
+ 只对本步改过的章重跑 `chapter check --fix-punctuation`;改动影响后续事实、状态、伏笔或承诺的,进 Step 4 前按 workflow-revision 为该章提交修订(`draft` 预填 → 改 → `chapter commit`),纯措辞调整不重复提交。
73
55
 
74
56
  ---
75
57
 
@@ -77,8 +59,8 @@ SKILL.md 路由到「日更续写」后按本文件控制批次;每章正文
77
59
 
78
60
  **本步不再写追踪内容**,只做:
79
61
 
80
- 1. `tracking_commit.py check` 通过(state、逐章记录连续与体积、7 栏、派生视图一致);本批每章都有 `追踪/逐章记录/第NNN章.md`。缺失或超限回到该章事务修正重跑,不手补文件。
81
- 2. **「本章没写成的」汇集**:各章申报表末行只分两路——「细纲没给」进下一批排纲的供给自查(workflow-setup「排纲自查与细纲」步骤 3)作扩产候选,涉及既有设定的先查设定、有既定值补进下一章 prompt;「要先问作者」并入 workflow-chapter「写了要报」处置表的「先问作者」一行。连同细纲里状态仍为 `待裁定` 的新增物,一并随批末汇报给出;全部为 `0` 记「无」。
62
+ 1. `tracking_commit.py check` 通过,本批每章都有逐章记录;缺失或超限回到该章事务修正重跑,不手补文件。
63
+ 2. **「本章没写成的」汇集**:各章申报表末行只分两路——「细纲没给」追加进排纲底稿「建纲追加」,涉及既有设定的先查设定、有既定值补进下一章 prompt;「先问作者」并入 workflow-chapter「新增物处置(主会话)」表的「先问作者」一行。连同排纲底稿里「先问作者」尚未裁定的条目,一并随批末汇报给出;全部为 `0` 记「无」。
82
64
 
83
65
  然后按 SKILL.md「面向作者的汇报」口头汇报,不另存文件;内部核对翻成故事话再说:
84
66
 
@@ -87,22 +69,7 @@ SKILL.md 路由到「日更续写」后按本文件控制批次;每章正文
87
69
  这次写了 {K} 章,共约 {总字数} 字:
88
70
  - 第{N}章《{章名}》:{一句发生了什么}
89
71
  - 第{N+1}章《{章名}》:{一句发生了什么}
90
- {偏离原计划的就一句话说偏在哪、打算怎么接,如「阿福比计划早露面一章,后面照常」;没有就删掉此行}
72
+ {偏离原计划的就一句话说偏在哪、打算怎么接,如「阿福比计划早露面一章,后面照常」;主角功劳被人拿走、提前用了后面的底牌也在这里说;没有就删掉此行}
91
73
  {要作者定的事:一句问题+白话选项+推荐,如「沈栀要不要在下一章就知道信的下落?1. 先瞒着(推荐)2. 这章就告诉她」;没有就删掉此行}
92
- 下一批:第{M}到第{M+2}章,{细纲已备好 / 需要先补细纲}。接着写吗?
74
+ 下一批:第{M}到第{M+2}章,{细纲已备好 / 需要先补细纲}。接着写吗?{写到卷末时改问:「这一卷写完了,要开新卷吗?」}
93
75
  ```
94
-
95
- ## 细纲缺失补建流程
96
-
97
- 1. `outline_view.py --unit {单元ID}` 取本章剧情单元卡与卷级常任;单元卡有「对标剧情参照」时加读其指向的 1 个剧情单元文件作功能参照。整个剧情单元都没细纲时,按 outline-structure-theory.md「按剧情批出细纲」整批补建。
98
- 2. 读本章涉及角色的设定与最新一章正文。
99
- 3. 按 workflow-setup.md「Phase 3:大纲搭建」的细纲模板补齐必需字段,无法确认的写 `[待补充]`,不杜撰;补完继续 Step 2。
100
-
101
- ## 常见问题
102
-
103
- | 问题 | 处理 |
104
- |------|------|
105
- | 细纲不存在或缺当前蓝图字段 | 执行上方补建流程,补齐前不写正文 |
106
- | 用户要求改大纲 | 提醒会影响后续细纲,确认后修改并标记受影响的细纲 |
107
- | 写到卷末 | 提示「当前卷已完成,是否开新卷?」 |
108
- | 用户中断批量写作 | 已提交的章保留,下次从断点继续 |
@@ -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
+ ```