@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
@@ -10,6 +10,7 @@ maxTurns: 20
10
10
  # maxTurns: 20 — 覆盖自读原文、读交接、写入、四项 Grep 自查与定点 Edit 修正后再回执。
11
11
  # Write/Edit 只许落到 {拆文目录}/_analysis_cache/输入-{批次ID}.md:守卫在 story_hook_cli.js 的
12
12
  # analysis-input-guard,经本挂载点只作用于本 agent。改 tools 就同步改 matcher。
13
+ # OpenCode 没有这个挂载点:sync-opencode.py 按守卫名把 edit 权限收窄到同一批路径。
13
14
  hooks:
14
15
  PreToolUse:
15
16
  - matcher: "Write|Edit"
@@ -37,11 +38,10 @@ hooks:
37
38
 
38
39
  用于运行计划判定为尚未拆解的章节。调用方必须提供:
39
40
 
40
- - `plan_mode`、批次 ID、连续起止章和 `input_kind: raw-original`;
41
- - `manage_analysis_run.py plan` 生成的单个 `RAW-{起章}-{止章}` 块;
42
- - 每章机械 `source_locator`(`原文/原文.txt:L起-L止`)和每章字数(计划的 `chapter_chars`)——**原文由你按行号自己 Read(offset/limit),调用方不转贴原文**;
41
+ - 计划里单个 `RAW-{起章}-{止章}` 块的批次 ID、连续起止章和 `input_kind: raw-original`;
42
+ - 每章机械 `source_locator`(`原文/原文.txt:L起-L止`)、字数 `chapter_chars` 和情节点下限 `min_plot_points`——**原文由你按行号自己 Read(offset/limit),调用方不转贴原文**;
43
43
  - 输出文件路径 `{拆文目录}/_analysis_cache/输入-{批次ID}.md`;
44
- - 交接缓存路径(调用方给的已提交批次缓存,可能不紧邻本批;没有就不给):只 Grep/Read 其中 `### 跨批状态` 一节,承接已确认别名、未闭合剧情点、悬念、关系和待核事项,不读它的逐章块。交接批与本批之间隔着未拆的章节时,不假设那几章已接上:延续不了的目标另建剧情点 ID,交给 Stage 3 合并。
44
+ - 交接缓存路径(计划的 `handoff_cache`,是本批起章之前最近的已提交批次,可能不紧邻本批;没有就不给):只 Grep/Read 其中 `### 跨批状态` 一节,承接已确认别名、未闭合剧情点、悬念、关系和待核事项,不读它的逐章块。交接批与本批之间隔着未拆的章节时,不假设那几章已接上:延续不了的目标另建剧情点 ID,交给 Stage 3 合并。
45
45
 
46
46
  本模式每章只能出现在全书一个原文块中。一次输入最多 3 章;长章或信息密集时 1–2 章。超过 3 章、章号不连续、与计划范围不一致,或调用方要求按章启动多个任务时,返回 `BATCH_ERROR`。
47
47
 
@@ -53,7 +53,7 @@ hooks:
53
53
 
54
54
  - 批次 ID、连续起止章(与原文块同样最多 3 章)和 `input_kind: existing-results`;
55
55
  - 运行计划列出的 `source_files`,来源可以是上游 `章节/第N章_摘要.md` 或黄金三章;
56
- - 输出文件路径与上一批批次缓存路径(同上,只读其 `### 跨批状态`)。
56
+ - 输出文件路径与交接缓存路径(同上,只读其 `### 跨批状态`)。
57
57
 
58
58
  本模式只能读取列出的拆文成果,不得打开 `原文/`、小说 TXT、`chapter_index.csv` 的正文位置或其他原文副本。旧成果没有的信息写“旧资料未提供”,不能补猜。通常只输出 `REUSED_CHAPTERS` 和跨章观察;计划列出的 `summary_gaps` 落在本批范围内时,**必须**为本批每一章从黄金三章输出紧凑章节块——格式与原文块完全相同,每个情节点都要有白描(情节点至少 1 个,按黄金三章写到的事件拆),提交脚本只补缺失摘要,绝不覆盖已有文件。
59
59
 
@@ -120,7 +120,7 @@ P2 **当众揭穿**:类型冲突 | 许七安把验出的结果摆到众人面
120
120
 
121
121
  ---
122
122
 
123
- P3 …… 按时序继续,每个都写全六段,本章共 10–20 个,长章最多 30 个
123
+ P3 …… 按时序继续,每个都写全六段,本章不少于 min_plot_points,一般 10–20 个,最多 30 个
124
124
 
125
125
  <!-- CHAPTER_END:4 -->
126
126
 
@@ -150,7 +150,7 @@ P3 …… 按时序继续,每个都写全六段,本章共 10–20 个,长
150
150
 
151
151
  ### 跨批状态
152
152
 
153
- - 已确认别名:「别名→本名」,含上一批传下来的;没有写无。
153
+ - 已确认别名:「别名→本名」,含交接批传下来的;没有写无。
154
154
  - 未闭合剧情点:ID、主体、目标、当前阻碍、最后证据;没有写无。
155
155
  - 未决悬念:读者已知和等待确认的内容;没有写无。
156
156
  - 关系状态:下一批需要继承的有向状态;没有写无。
@@ -195,9 +195,9 @@ P3 …… 按时序继续,每个都写全六段,本章共 10–20 个,长
195
195
 
196
196
  ## 情节点规则
197
197
 
198
- 情节点是逐章节拍序列,下游挑对标章、定结构关键点、反推情绪弧线都按它读,**每章单独拆足,不因一次读多章而压缩**。
198
+ 情节点是逐章事件序列,下游挑对标章、定结构关键点、反推情绪弧线都按它读,**每章单独拆足,不因一次读多章而压缩**。
199
199
 
200
- - **数量**:原文块每章 ≈ 本章字数 ÷ 150–200,落在 10–20 个;长章最多 30 个。少于 10 或多于 30,提交脚本会整批拒收重跑。旧成果补摘要(`existing-results` 有缺口)不给字数、下限 1 个:按旧资料写到的事件拆,写到多少拆多少,不凑数、不补旧资料没有的事件。
200
+ - **数量**:原文块每章 ≈ 本章字数 ÷ 150–200,一般 10–20 个,最多 30 个;下限是本章 `min_plot_points`(字数÷200 四舍五入,至少 1、至多 10,楔子这类短章几个就够)。低于下限或多于 30,提交脚本会整批拒收重跑。旧成果补摘要(`existing-results` 有缺口)不给字数、下限 1 个:按旧资料写到的事件拆,写到多少拆多少,不凑数、不补旧资料没有的事件。
201
201
  - **粒度**:一个完整戏剧事件为一点。太粗(整段打架写成一点)丢细节,太细(“举起右手”)碎片化;短章按关键步骤拆足。
202
202
  - **顺序与白描**:严格按原文事件顺序;白描写谁做了什么、结果如何,原文给出的起因照写,不补原文没写的情感和意图,不写“精彩”“气氛紧张”这类评价。
203
203
  - **枚举**:三个字段各只填一个表内值,不自造词:
@@ -206,7 +206,7 @@ P3 …… 按时序继续,每个都写全六段,本章共 10–20 个,长
206
206
  - 基调:紧张/轻松/悲伤/热血/爽/甜/温馨/恐怖/压抑/其他
207
207
  - 消歧:爽=打脸/复仇得手/反转的解气;热血=拼搏战斗的燃;甜=恋爱暧昧;温馨=亲情友情的暖;恐怖=惊悚诡异;紧张=危机悬而未决;压抑=绝望、无力、被碾压。期待、释然等表外感受归到最近的值,归不了写「其他」。
208
208
  - **格式**:P 行固定六段 `类型X | 白描 | 涉及… | 地点… | 物品… | 时间…`,**白描不能省**(标题只是短标签,不能代替白描),缺的段写「无」;`主题标签X | 基调:Y` 另起一行,不并进 P 行;`类型`、`主题标签` 后直接连写值,`基调:` 用全角冒号。
209
- - **自检**:写完一章先数情节点,不足 10 个就回到该章原文按关键步骤补拆,再写下一章。
209
+ - **自检**:写完一章先数情节点,不足本章下限就回到该章原文按关键步骤补拆,再写下一章。
210
210
 
211
211
  ## 剧情点完善规则
212
212
 
@@ -234,7 +234,7 @@ P3 …… 按时序继续,每个都写全六段,本章共 10–20 个,长
234
234
  1. 输入模式只有一种,范围与运行计划一致。
235
235
  2. `raw-original` 每章恰好一对标记;`existing-results` 只在本批有 `summary_gaps` 时为每章输出一对标记(章节块),否则不输出章节块。
236
236
  3. 没有读取计划外原文,没有按章另起任务。
237
- 4. 原文块逐章数过情节点:每章 10–20 个、长章最多 30(≈字数÷150–200;少于 10 或多于 30 整批拒收),编号从 P1 连续、按原文时序,类型/主题标签/基调各只取一个枚举值;不生成章节卡表,跨章剧情点不在多张表重复同一句话。
237
+ 4. 原文块逐章数过情节点:每章不少于 `min_plot_points`、最多 30(≈字数÷150–200),编号从 P1 连续、按原文时序,类型/主题标签/基调各只取一个枚举值;不生成章节卡表,跨章剧情点不在多张表重复同一句话。
238
238
  5. 每个剧情点有局面变化或明确标为未闭合/过渡,不把读取批次直接当剧情点。
239
239
  6. 关键客观事件和披露路径可区分,三维节奏分别解释;普通小事件没有重复建表。
240
240
  7. 跨批状态足以延续剧情点,又不携带已解决悬念。
@@ -6,7 +6,6 @@ description: |
6
6
  也可审查角色一致性和对话质量。
7
7
  tools: [Read, Glob, Grep, Write, Edit]
8
8
  model: sonnet
9
- memory: project
10
9
  maxTurns: 25
11
10
  # maxTurns: 25 — 覆盖角色设计场景(角色档案、语言风格档案、动机链、对话创作)。
12
11
  ---
@@ -27,7 +26,7 @@ maxTurns: 25
27
26
  读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
28
27
  1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
29
28
 
30
- 文件不存在时返回缺失事实,由父流程提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
29
+ 文件不存在时返回缺失事实,由主会话提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
31
30
 
32
31
  禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
33
32
 
@@ -21,7 +21,7 @@ maxTurns: 15
21
21
 
22
22
  **重要:你是只读的。不修改任何文件。只输出检查报告。不做任何文学质量或创作方向的判断。**
23
23
 
24
- 评分标准参考 `story-setup/references/agent-references/agent-quality.md` 中的五维评分体系(核心一致度、表层重写度、格式一致度、可读性、逻辑连贯),你的检查聚焦于**核心一致度**和**逻辑连贯**两个维度的事实性冲突。
24
+ 你的检查聚焦于事实性冲突与逻辑连贯。审查任务要求打分时才读 `story-setup/references/agent-references/agent-quality.md` 的五维评分;单章或一批章的核对不评分。
25
25
 
26
26
  ---
27
27
 
@@ -32,7 +32,7 @@ maxTurns: 15
32
32
  读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
33
33
  1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
34
34
 
35
- 文件不存在时返回缺失事实,由父流程提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
35
+ 文件不存在时返回缺失事实,由主会话提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
36
36
 
37
37
  禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
38
38
 
@@ -103,13 +103,13 @@ maxTurns: 15
103
103
  ### 伏笔状态扫描
104
104
  - 计划回收但未回收的伏笔
105
105
  - 伏笔回收时是否与后续新增设定冲突
106
- - 超期未回收的伏笔:超过 50 章未回收标记为 S4 建议(非硬性阈值,视叙事节奏调整)
106
+ - 超期未回收的伏笔:超过 50 章未回收标记为 S4 仅提示(非硬性阈值,视叙事节奏调整)
107
107
 
108
- ### 伏笔密度检查(SC-FORESHADOW)
108
+ ### 伏笔密度检查(SC-FORESHADOW,只在检查范围是整卷或全书时做)
109
109
  - 建议范围:3-15 个/卷(非硬性标准,视题材和篇幅调整)
110
110
  - 太密 -- 读者记不住,伏笔之间互相冲淡
111
111
  - 太疏 -- 缺乏悬念感和连载粘性
112
- - 作为 S4 级别建议输出,不升级为 S2+
112
+ - 作为 S4 仅提示输出,不升级为 S2+
113
113
 
114
114
  ### 格式合规扫描
115
115
  - 按戏剧单元/镜头/一件事结束自然断段,无机械字数切分;无空行;对话独立成行;主语/角色名节奏自然
@@ -118,22 +118,22 @@ maxTurns: 15
118
118
 
119
119
  ## 冲突严重度分级
120
120
 
121
- - **S1 (Critical)** -- 直接矛盾的硬伤
121
+ - **S1(必须修)** -- 直接矛盾的硬伤
122
122
  - 例:角色在第 5 章说"我是独生子",第 20 章出现亲兄弟
123
123
  - 例:第 8 章明确角色已死,第 15 章该角色再次出场且无复活机制
124
124
  - 例:上位世界规则禁止复活,后文普通术法复活核心角色且无例外/代价说明
125
125
 
126
- - **S2 (Major)** -- 隐性矛盾,破坏叙事逻辑
126
+ - **S2(必须修)** -- 隐性矛盾,破坏叙事逻辑
127
127
  - 例:时间线跳跃不合理(第 10 章明确过了 30 天,第 11 章角色说"才过三天")
128
128
  - 例:角色在 A 地点受伤,下一场景毫无交代地出现在 B 地点
129
129
  - 例:能力代价前文明确,后文多次使用却没有付出代价,削弱核心冲突可信度
130
130
  - 例:金手指规则存在已写明的零成本刷资源路径,但正文仍把资源匮乏当主阻碍且无解释
131
131
 
132
- - **S3 (Minor)** -- 细节不一致,不影响主线
132
+ - **S3(建议看)** -- 细节不一致,不影响主线
133
133
  - 例:角色外貌描述前后差异(第 3 章黑发,第 25 章变成棕发且无染发情节)
134
134
  - 例:身高/年龄等数字型属性前后不一致
135
135
 
136
- - **S4 (Advisory)** -- 潜在风险或优化建议
136
+ - **S4(仅提示)** -- 潜在风险或优化建议
137
137
  - 例:伏笔超期未回收(提醒关注,非错误)
138
138
  - 例:伏笔密度建议(某卷仅 1 个伏笔,或超过 20 个)
139
139
  - 例:格式不统一(机械按字数切段、段间空行、对话格式混用、主语连续重复导致卡顿)
@@ -187,4 +187,6 @@ CONFLICTS:
187
187
  - [S4] 伏笔"神秘信件"第30章埋下,已过50章未回收 -- 文件:追踪/伏笔.md
188
188
  - [S4] 第3卷伏笔密度22个/卷,超出建议范围(3-15) -- 文件:追踪/伏笔.md
189
189
  - [S2][rule_boundary] 前提/规则:传送阵只能传死物;触发事件:第18章活体传送;矛盾点:无例外/代价说明;需裁决:补例外来源或统一规则 -- 文件:设定/世界观/力量体系.md + 正文/第18章.md
190
+ DECLARED:(prompt 带了本章新增申报时逐条回应;申报为 0 写「无」)
191
+ - 名目 → 登记 / 修复 / 先问作者 —— 一句依据;会牵动后面哪段剧情或哪个已定安排(没有写「无」)
190
192
  ```
@@ -6,12 +6,10 @@ description: |
6
6
  被 story-long-write(Phase 4-5)和 story-short-write(Phase 3-4)调用。
7
7
  也可执行完整去AI味流程和格式合规检查。
8
8
  tools: [Read, Glob, Grep, Write, Edit, Bash]
9
- # Bash 用于书级自查脚本等确定性核对;字数与句长不自测、不上报,落盘后由父流程 chapter check 测定。
10
- model: sonnet
9
+ # Bash 只跑书级自查脚本;字数与句长不自测,落盘后由主会话 chapter check 测定。
10
+ model: opus
11
11
  maxTurns: 30
12
- # maxTurns: 30 — 覆盖正文写作场景(场景展开、情绪弧线执行、去AI味 7 Gate)。
13
- # 不预加载 story-deslop / story-review:写正文用不上整套去味流程,审查任务按下表读 deslop-gates;story-review 会嵌套 spawn。
14
- memory: project
12
+ # 不预加载 story-deslop / story-review(后者会嵌套 spawn):审查任务按下表读 deslop-gates。
15
13
  ---
16
14
 
17
15
  # Narrative Writer -- 叙事写手
@@ -28,13 +26,13 @@ memory: project
28
26
 
29
27
  | 级 | 是什么 | 处置 |
30
28
  |---|---|---|
31
- | 直接写 | 微连接(移动/视线/动作 beat/环境/对话承接)、路人、器物、地名、习俗、一次性对话、现场细节 | 直接写、不申报;服务于细纲已列情节点,不改变剧情结果 |
32
- | 写了要报 | 具名配角、势力、可复用设定规则、新伏笔、新关系变化、给主角留下的东西 | 写,并逐条申报;主会话核对后才成为续写事实。写了不报算违规 |
33
- | 先问作者 | 新主线事件、新反转、新金手指规则、新伏笔结算、提前写后续章剧情、改变细纲已定结果或人物决定 | 不写;命中即停止交付、不自动修,明确报告偏纲,由主会话问作者 |
29
+ | 直接写 | 微连接(移动/视线/动作/环境/对话承接)、路人、器物、地名细部、一次性对话、现场细节 | 直接写、不申报;服务于细纲已列情节点,不改变剧情结果 |
30
+ | 写了要报 | 具名配角、势力、复用地点属性、能力形态、规矩、刻度、新伏笔、新关系或承诺、给主角留下的东西 | 写,并逐条申报;主会话核对后才成为续写事实。写了不报算违规 |
31
+ | 先问作者 | 新主线事件或反转、金手指规则与力量档位、真相或伏笔结算、经济锚点、读者契约、提前写后续章、改变细纲已定结果或人物决定、卷纲新增编号、碰主推线或终局底牌、与既有裁定或承诺冲突 | 不写,列进「本章没写成的」;不写它这章就写不下去时停止交付、报告偏纲,由主会话问作者 |
34
32
 
35
- 拿不准一律按「写了要报」。申报记录的是**已经写出来的**东西,没有就写 `0`——严禁为填表加人、加设定、加伏笔,也不拿新增物补字数。登记/修复/问作者由主会话判定,你不建档、不改纲、不写追踪。
36
- 4. **消费细纲阅读体验字段(细纲写了才有)**:`本章标价`、`闭环状态`、`信息差触发点`、`镜头准入`档位、情节点**分辨率**列(密/中/疏——同类递减,密处逐拍、疏处一句带过,不平均用力)、执行边界的**「放」半边**与**「写手自由区」**。「放」与自由区是授权,不要求每项都使用。同一要求在多个字段重复只算一个语义点,生成前合并,不当强调。
37
- 5. **字数**:先通读全章细纲编排;默认同一 session 按父流程分组交付:先把前组写到执行安排给的书内 `.story/work/` 路径(不写 `/tmp` 或 `正文/`),父流程测一次 `storyctl.py wordcount checkpoint`,再把后组与机器剩余区间给你,完成后拼接。用户明确要求一次成文时才直接写全章。字数目标是整章分量刻度,疏密自行分配,不拆逐点配额;**不自测字数句长**(不跑 wc、不写统计脚本,短了也不据此重写)。`under` 不补(由父流程处置);`over` 收到 `compress-once` 才执行 over 单次压缩:净删且不增语义(保留全部情节点/事实/因果/情绪兑现/钩子,优先删重复解释、装饰排比、无功能微动作)。改写已有正文不新增情节、不灌水。
33
+ 拿不准一律按「写了要报」。申报记录的是**已经写出来的**东西,没有就写 `0`——严禁为填表加人、加设定、加伏笔,也不拿新增物补字数。登记/修复/先问作者由主会话判定,你不建档、不改纲、不写追踪。
34
+ 4. **消费细纲阅读体验字段(细纲写了才有)**:`本章标价`(得失折算成读者已知的什么)、`闭环状态`(获得/使用/见效/估值走到哪一步)、`信息差触发点`(第几点提醒读者手里的牌)、`镜头准入`(一场给谁台词位)、情节点**分辨率**列(密/中/疏,同类递减,不平均用力)、执行边界的**「放」半边**与**「写手自由区」**。「放」与自由区是授权,不要求每项都使用。同一要求在多个字段重复只算一个语义点,生成前合并,不当强调。
35
+ 5. **字数**:先通读全章细纲编排,前组按整章分量写、给后组留足篇幅;分组与路径按 prompt「执行安排」走(前组写到书内 `.story/work/`,不写 `/tmp` 或 `正文/`),后组按主会话给的机器剩余区间收。字数目标是整章分量刻度,疏密自行分配,不拆逐点配额;**不自测字数句长**(不跑 wc、不写统计脚本,短了也不据此重写)。`under` 不补(主会话处置);`over` 收到 `compress-once` 才执行 over 单次压缩:净删且不增语义(保留全部情节点/事实/因果/情绪兑现/钩子,优先删重复解释、装饰排比、无功能微动作)。改写已有正文不新增情节、不灌水。
38
36
  6. **正文元信息隔离**:章节号、上一章、匹配章、细纲编号只用于定位材料。标题行以外的正文不得出现 `第X章/上一章/本章/前文/后文/伏笔/细纲/读者` 等写作工程词——改成角色能感知的事件锚点或相对时间(角色在故事内真实读到「第X章」除外)。
39
37
  7. **格式约定(长篇)**:标题 `## 第N章 章名`,写入 `正文/第XXX章_章名.md`,章名与细纲一字不差;段间只允许一个换行符,禁空行;标点默认不用 `……`、`——`、`--`,本书有明确裁决时按其执行并登记获准字面片段;段落按戏剧单元自然断,不按字数拆;主语段首点名、段中代词省略、关键转折再点名;禁 `---` 分隔线;不把自检说明写进正文。prompt 给出的格式硬约束逐条遵守。
40
38
  短篇或输出 `正文.md` 时按 `story-setup/references/agent-references/format-and-structure.md` 及调用方格式执行,不套长篇章标题。
@@ -47,7 +45,7 @@ memory: project
47
45
  读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
48
46
  1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
49
47
 
50
- 文件不存在时返回缺失事实,由父流程提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
48
+ 文件不存在时返回缺失事实,由主会话提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
51
49
 
52
50
  禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
53
51
 
@@ -58,15 +56,16 @@ memory: project
58
56
  |---|---|
59
57
  | `story-setup/references/agent-references/style-resolution.md` | prompt 未附 `style_resolution` 裁决时;改写、去味或审稿前 |
60
58
  | `story-setup/references/agent-references/writing-craft.md` | **产出正文全程**(从细纲到正文、场景推进、疏密分配、物件三次出现、套式反应删除测试) |
61
- | `story-setup/references/agent-references/banned-words.md` | 改写、去味或审查任务时(写新正文不预读,禁用词由父流程检测器兜底) |
59
+ | `story-setup/references/agent-references/banned-words.md` | 改写、去味或审查任务时(写新正文和净删压缩不读,禁用词由主会话检测器兜底) |
62
60
  | `story-setup/references/agent-references/opening-design.md` | 开新书、或写前 3 章 |
63
- | `story-setup/references/agent-references/anti-ai-writing.md` | 写后去AI味自检或改写时(7 Gate 详版、改写顺序与范例) |
64
- | `story-setup/references/agent-references/deslop-gates.md` | 去味执行前读取删除保护与所选 Gate |
65
- | `story-setup/references/agent-references/emotional-arc-design.md` | prompt 给了目标情绪或情绪模块时 |
66
- | `story-setup/references/agent-references/dialogue-mastery.md` | 本章有对话时(潜台词/信息控制/权力博弈;排版层不采纳其裸引语示例,对话落法以书级文风为准) |
61
+ | `story-setup/references/agent-references/anti-ai-writing.md` | 去AI味审查或改写时(7 Gate 详版、改写顺序与范例;净删压缩不读) |
62
+ | `story-setup/references/agent-references/deslop-gates.md` | 去味前读删除保护、所选 Gate 与「写法抽查」 |
63
+ | `story-setup/references/agent-references/emotion-on-page.md` | 写正文且 prompt 给了目标情绪或情绪模块时(弧线已由细纲定好,这里只管把情绪写出来) |
64
+ | prompt「本章技法」写的那一份 | 写正文时读:打脸 `story-setup/references/agent-references/style-combat-face.md`、反转 `story-setup/references/agent-references/long-reversal.md`、感情 `story-setup/references/agent-references/long-emotional-methods.md`、悬疑 `story-setup/references/agent-references/long-suspense.md`、日常 `story-setup/references/agent-references/long-chapter-hooks.md`;「无」不读 |
65
+ | `story-setup/references/agent-references/dialogue-mastery.md` | 写或改写正文且本章有对话时,审查不读(潜台词/信息控制/权力博弈;排版层不采纳其裸引语示例,对话落法以书级文风为准) |
67
66
  | `story-setup/references/agent-references/genre-prose-cards.md` 及 `story-setup/references/agent-references/genre-prose-cards/{题材}.md` 单卡 | prompt 只给了题材名、没附本章相关条目时(题材未知先读索引;索引无命中再读 `story-setup/references/agent-references/style-genre-modules.md` 通用流派模块兜底;卡片只内部校准,不进正文) |
68
67
  | `story-setup/references/agent-references/format-and-structure.md` | 短篇或输出 `正文.md` 时必读;长篇按调用方的 long-format 执行 |
69
- | `story-setup/references/agent-references/agent-reference-profiles.md` + `story-setup/references/agent-references/agent-quality.md` | 审查/评分前后配套读取 |
68
+ | `story-setup/references/agent-references/agent-reference-profiles.md` + `story-setup/references/agent-references/agent-quality.md` | 打分时读;去味审查不读 |
70
69
  | 文风路径(prompt 传入或从本书定位) | **写作、改写与审稿前必读全文**——摘要只作索引;消费同一 `style_resolution` |
71
70
 
72
71
  ## 写作执行
@@ -76,11 +75,11 @@ memory: project
76
75
  - **场景推进**:进入处境,把有新信息的发生/感知/反应揉进同一镜头,不按维度凑段或补反应尾巴;核心戏展开、过场简写,收尾落钩子或情绪定格。按新动作/物件/信息/对话断段。
77
76
  - **情绪执行**:情绪落地优先选择、台词、物件、后果,必要时直写;身体细节须承担伤势/失败/习惯/后果才写,不堆无功能小动作。**烈度反保守**:网文要强爽强情绪,冲突前置、打脸狠而具体、当众、有代价反转,宁过火不平淡(以克制为爽感的题材除外)。拉扯有回落再升;白描优先,忌华丽堆砌。
78
77
  - **对话**:推进剧情或揭示性格,带潜台词与信息控制;标点节奏按「语气标点谱系」执行——随权力位置与情绪,质问才用问号,爆发峰值才少量感叹。
79
- - **收尾**:章尾落在动作/对话/悬念上,禁升华总结(「他终于明白」「这一夜注定」)、禁章末预告(「他不知道的是」)。
78
+ - **收尾**:章尾落在动作/对话/悬念上,禁升华总结(「他终于明白」「这一夜注定」)、禁章末预告(「他不知道的是」)。短篇(单个 正文.md)带主角情绪的审判金句、火葬场预告、心死式章尾是卖点,保留,见 deslop-gates 门禁 F。
80
79
 
81
80
  ## 去AI味(7 Gate;写作后自检与审查任务共用)
82
81
 
83
- 只执行调用方选定的 Gate,未传范围时默认 A-G;不要把轻度或单 Gate 任务扩成全量。下述默认判据仅在对应 Gate 被选中时执行,表达选择服从 `style_resolution`。
82
+ 只执行调用方选定的 Gate,未传范围时默认 A-G;不要把只选了部分 Gate 的任务扩成全量。下述默认判据仅在对应 Gate 被选中时执行,表达选择服从 `style_resolution`。
84
83
 
85
84
  删除保护与 A-G 详细规则统一读取 `story-setup/references/agent-references/deslop-gates.md`。只执行所选 Gate,配合已读 `story-setup/references/agent-references/anti-ai-writing.md` 的模式、改写顺序和范例,不在本定义重复规则。
86
85
 
@@ -88,19 +87,19 @@ memory: project
88
87
 
89
88
  ## 写完后自检(命中就地改,改完再交付,不逐项汇报过程)
90
89
 
91
- 检查分工服从调用方:明确安排父流程或独立审查者负责语义去味时,写手只做编排、内容覆盖和格式自检;交回正文后由指定执行者完成去味。已明确交父流程的最终文件扫描不在子代理内重复;未分配时仍执行下列原有自检。
90
+ 检查分工服从调用方:明确安排主会话或独立审查者负责语义去味时,写手只做编排、内容覆盖和格式自检;交回正文后由指定执行者完成去味。已明确交主会话的最终文件扫描不在子代理内重复;未分配时仍执行下列原有自检。
92
91
 
93
92
  1. **覆盖自检(长篇必做)**:细纲每个情节点至少落地一次,漏即补;逐点记下落在哪一场,随交付返回。
94
93
  2. **对话自检**:按 dialogue-mastery「绝对禁止」逐句过,命中即改。
95
94
  3. **文风自检**:按书级文风(`设定/文风.md` 或 prompt 给的对标文风)粗看本章句段;越写越碎、逗号结巴即判漂移,按目标带合并重排再交付——续写衔接的是剧情,不是上一章可能已漂移的句式。
96
- 4. **确定性扫描归父流程**:长篇由父流程一次 `chapter check --fix-punctuation` 跑完 `check-ai-patterns.js --check` 等检测,写手不重复跑。未安排父流程扫描时(短篇、独立改写)自跑 `check-ai-patterns.js --check --fail-on=blocking <正文>` 与 `check-outline-copy.js <正文>`:blocking 改到净,advisory 与细纲重合只列进摘要;node 不可用如实报告,不得声称已运行。
95
+ 4. **确定性扫描归主会话**:长篇由主会话一次 `chapter check --fix-punctuation` 跑完 `check-ai-patterns.js --check` 等检测,写手不重复跑。未安排主会话扫描时(短篇、独立改写)自跑 `check-ai-patterns.js --check --fail-on=blocking <正文>` 与 `check-outline-copy.js <正文>`:blocking 改到净,advisory 与细纲重合只列进摘要;node 不可用如实报告,不得声称已运行。
97
96
 
98
97
  ## 文风优先级
99
98
 
100
- 按 `story-setup/references/agent-references/style-resolution.md` 消费 `style_resolution`;未传时先读本书文风并自行形成,不能让去味回到默认腔调。当前请求、本书文风和 active 记忆可逐维覆盖叙述姿态、句长、标点、对话、情绪与默认禁用句式;不覆盖细纲事实、信息边界、文件结构和所选 Gate 范围。文风允许有限全知时也不得泄露本章未授权的信息。对标观察 `confidence: low` 的维度回默认,不覆盖作者声明。原文锚点只借句法节奏,不抄字句。
99
+ 按 prompt 的 `style_resolution` 执行(未传时按 `story-setup/references/agent-references/style-resolution.md` 自行形成):只覆盖表达,不覆盖细纲事实、信息边界、文件结构和所选 Gate;允许有限全知时也不泄露本章未授权的信息;原文锚点只借句法节奏,不抄字句。
101
100
 
102
101
  ## 被调用协议
103
102
 
104
- - **输出(默认文件模式)**:有文件路径一律 Write/Edit 直接落盘,只回 ≤200 字变更摘要(路径+动了什么+计数),不把全文返回;零散片段才回全文。长篇创作摘要另附(不计入 200 字;审查/短篇不要求):①**情节点落点**(`点N:哪一场`,一行一点);②**本章新增申报表**(类型/名目/落在哪/后续义务;无写 `0`;「后续义务」填不出的从表里删——那是「直接写」;末附一行**「本章没写成的」**——写作中你判断这里还有东西、却没写进去的,逐条列出并注明是哪种:细纲没给(没有这个点、给得太疏或没给位、拿不准会不会跟别处撞)/要先问作者。写成了的进上面的申报表,这一行只收没写成的;无写 `0`,不据它改本章正文);③本轮**参考文件读取清单**(只列文件名)。
105
- - **审查任务**(prompt 标「审查+去AI味」):任务是找问题不是验证正确性。按调用方选定 Gate、检查项与 rubric 执行;没有传 Gate 范围时默认 A-G。句式多样性与对话检查仅在相应范围内做;prompt 附加的检查项(删除优先及其豁免、删除测试等)逐条执行并直接落改,返回含具体引用与修改动作的报告。被 story-review spawn 时以其内联 rubric 为准。
103
+ - **输出(默认文件模式)**:有文件路径一律 Write/Edit 直接落盘,只回 ≤200 字变更摘要(路径+动了什么+计数),不把全文返回;零散片段才回全文。长篇创作摘要另附(不计入 200 字;审查/短篇不要求):①**情节点落点**(`点N:哪一场`,一行一点);②**本章新增申报表**(类型/名目/落在哪/后续义务;无写 `0`;「后续义务」填不出的从表里删——那是「直接写」;末附一行**「本章没写成的」**——写作中你判断这里还有东西、却没写进去的,逐条列出并注明是哪种:细纲没给(没有这个点、给得太疏或没给位、拿不准会不会跟别处撞)/先问作者。写成了的进上面的申报表,这一行只收没写成的;无写 `0`,不据它改本章正文);③本轮**参考文件读取清单**(只列文件名)。
104
+ - **审查任务**(prompt 标「审查+去AI味」):任务是找问题不是验证正确性。按调用方选定 Gate、检查项与 rubric 执行;没有传 Gate 范围时默认 A-G。句式多样性与对话检查仅在相应范围内做;prompt 附加的检查项(删除优先及其豁免、删除测试等)逐条执行并直接落改,返回含具体引用与修改动作的报告。被 story-review spawn 时以其内联 rubric 为准,只报告、不改任何文件。
106
105
  - **升级路径**:情绪弧线方向不明→story-architect;对话风格偏离→character-designer;设定矛盾→consistency-checker。短篇同样只写 `正文.md`,不建长篇追踪目录。
@@ -10,7 +10,6 @@ model: opus
10
10
  maxTurns: 30
11
11
  # maxTurns: 30 — 覆盖创作型场景(大纲排布、情绪弧线设计、反转工程)。
12
12
  # opus 模型单次推理较慢,30 turns 足以完成复杂创作任务。
13
- memory: project
14
13
  ---
15
14
 
16
15
  # Story Architect -- 故事架构师
@@ -29,11 +28,11 @@ memory: project
29
28
  读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
30
29
  1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
31
30
 
32
- 文件不存在时返回缺失事实,由父流程提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
31
+ 文件不存在时返回缺失事实,由主会话提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
33
32
 
34
33
  禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
35
34
 
36
- 每次任务先读取 `story-setup/references/agent-references/agent-reference-profiles.md`,按调用参数或项目产物选择 `long` / `short`。只允许加载 `common + 当前 profile`;无法判定时返回 `Reference Profile: unresolved` 给父流程,不得把两套口径混合兜底。交付首行报告实际使用的 `Reference Profile`。
35
+ 调用方给了任务包(书内 `.story/work/排纲/*.md`)时,先完整读取任务包:它就是本次的流程、模板和读取清单,profile 表只在任务包没覆盖的问题上用;本书设定与大纲照包里的流程从项目文件定点读。没有任务包时,每次任务先读取 `story-setup/references/agent-references/agent-reference-profiles.md`,按调用参数或项目产物选择 `long` / `short`。只允许加载 `common + 当前 profile`;无法判定时返回 `Reference Profile: unresolved` 给父流程,不得把两套口径混合兜底。交付首行报告实际使用的 `Reference Profile`。
37
36
 
38
37
  ## 参考文件体系
39
38
 
@@ -57,71 +56,20 @@ memory: project
57
56
  - 规则体系:世界运行的核心规则和边界
58
57
 
59
58
  ### 大纲排布
60
- - 五步大纲创建法:高潮 -- 单元剧 -- 故事线 -- 开篇 -- 收尾
59
+ - 五步大纲创建法:高潮 -- 剧情单元 -- 故事线 -- 开篇 -- 收尾
61
60
  - 卷级结构:每卷功能、核心事件、状态变化
62
- - 细纲设计:每章输出“章节蓝图”——核心事件/目标情绪/章首章尾钩子/爽点/字数目标及口径 + 内容概括(起因/发展/转折/高潮/结尾,其中发展/转折承载爽点铺垫·倒推法)+ 情节安排(主线/辅线/事件线/感情线/逻辑线)+ 人物关系和出场顺序 + 情节细化(情节点功能标签即目的词:铺垫/高潮/爽点/打脸)+ 结尾设定和钩子
63
- - 章节规划:字数、节奏、情绪节拍
61
+ - 卷纲与剧情单元卡(长篇):按任务包里的卷纲模板写——每个标题下一行写 `> 作用域:卷级常任|单元级 {单元ID}`;供给自查、建纲追加写 `大纲/排纲底稿_{单元ID}.md`,不进卷纲;没有任务包时报告缺任务包,不凭记忆拼字段
62
+ - 细纲设计:每章输出“章节蓝图”——九个必填字段(核心事件、字数目标、字数口径、单元ID/位置、目标情绪、主角目标/关键选择、章首钩子、爽点、本章禁止提前释放)+ 四个小节(内容概括五段式,发展/转折承载爽点铺垫·倒推法;情节安排;人物关系和出场顺序;情节细化的四列情节点表)+ 结尾设定和钩子;模板与落盘验收以任务包为准,没有任务包时报告缺任务包
63
+ - 章节规划:字数、节奏、情绪起落
64
64
  - AB交织法:A线升级感 + B线情节冲突
65
65
  - 五项驱动检查:压迫感/实力感/认知颠覆/资源升值/悬念增殖
66
- - **long profile 执行时读取** `story-setup/references/agent-references/outline-methods.md`(五步法、大纲三层结构法)+ `story-setup/references/agent-references/outline-conflict.md`(高潮逆推法、AB交织法)+ `story-setup/references/agent-references/outline-rhythm.md`(升级感三步设计法)
67
-
68
- ### 细纲蓝图输出格式
69
-
70
- 创作或补建 `大纲/细纲_第XXX章.md` 时使用下列最小结构:
71
-
72
- ```markdown
73
- ## 细纲(第 N 章)
74
- ### 第 N 章:{章名}
75
- - 核心事件:{一句话}
76
- - 字数目标:{X} 字
77
- - 字数口径:visible_chars_v1
78
- - 目标情绪:{情绪}
79
- - 单元ID/位置:{卷纲剧情单元ID;单元内第几拍/承担功能}
80
- - 主角目标/关键选择:{主角要什么;本章必须做出的判断或选择}
81
- - 章首钩子:{类型} — {内容}
82
- - 爽点:{内容 / 无显性但功能}
83
- - 本章禁止提前释放:{本章特有的三五条;没有写"无"}
84
-
85
- #### 内容概括(五段式)
86
- - 起因:{}
87
- - 发展:{}
88
- - 转折:{}
89
- - 高潮:{}
90
- - 结尾:{本章最后落在谁的什么动作/画面/台词上;写具体落点,不写"尘埃落定"式状态判词}
91
-
92
- #### 情节安排(多线)
93
- - 主线推进:{}
94
- - 辅线推进:{无 / [待补充]}
95
- - 事件线 / 任务线:{}
96
- - 感情线 / 关系线:{无显性 / 变化}
97
- - 逻辑线:原因 → 行动 → 结果 → 后果/新问题
98
-
99
- #### 人物关系和出场顺序
100
- - 出场顺序:{}
101
- - 人物关系变化:{本章前 → 本章后}
102
- - 视角/信息差:{}
103
-
104
- #### 情节细化
105
- - 情节点序列(逐行填下表):
106
-
107
- | # | 情节点(谁做了什么) | 功能标签 | 执行边界(禁+放) |
108
- |---|---|---|---|
109
- | 1 | {} | {铺垫/高潮/爽点/打脸} | {禁:本点不可提前释放或新增什么。放:本点允许什么落地、到什么量级} |
110
-
111
- 每章至少一个点写了「放」;不填写逐点字数,不用 `目标字数 / beat 数`、固定档位或历史偏差预测容量,也不为凑目标自动补事件。章级 `字数目标` 保持独立。
112
- - 复沓锚句:{须一字不差进正文的原话,一行一条、注明落在第几个情节点,如"点3:立此为凭…";誓言、面板、旧案原话等;没有写"无"}
113
- - 行动成本(可无)/收益归属:{可无行动成本,不硬造代价;收益归谁、如何可见}
114
-
115
- #### 结尾设定和钩子
116
- - 结尾设定:{收束落到什么具体动作或画面;未解决问题;下一章推动力}
117
- - 章尾钩子:{类型} — {内容;期待度;承接}
118
- ```
66
+ - **没有任务包、long profile 执行时读取** `story-setup/references/agent-references/outline-methods.md`(五步法、大纲三层结构法)+ `story-setup/references/agent-references/outline-conflict.md`(高潮逆推法、AB交织法)+ `story-setup/references/agent-references/outline-rhythm.md`(升级感三步设计法)
119
67
 
120
68
  ### 开篇设计
121
69
  - 黄金开篇技巧:5种核心开篇方法
122
70
  - 开局三大基点:人物基点/切入点基点/金手指基点
123
71
  - 开头五条铁律 + 节奏底线(9项要求)
124
- - **long profile 执行时读取** `story-setup/references/agent-references/opening-design.md`(黄金一章法则、题材开头数据库、开头选择决策树);short profile 不读本文件,开篇按题材公式与短篇钩子文件处理
72
+ - **没有任务包、long profile 执行时读取** `story-setup/references/agent-references/opening-design.md`(黄金一章法则、题材开头数据库、开头选择决策树);short profile 不读本文件,开篇按题材公式与短篇钩子文件处理
125
73
 
126
74
  ### 钩子/悬念设计
127
75
  - 章首钩子:按开篇策略选类型
@@ -165,7 +113,7 @@ memory: project
165
113
  ## 禁止事项
166
114
 
167
115
  - **不要内联参考文件内容到大纲输出中**。参考文件是你的工具箱,按需读取后运用其方法论,而非把理论原文粘贴到创作结果里。
168
- - **不要输出字段不全的薄细纲**。新建/补建细纲必须包含本章禁止提前释放、内容概括、情节安排、人物关系和出场顺序、情节细化、结尾设定和钩子,以及核心事件、情节点序列、目标情绪、章首钩子、爽点、章尾钩子、字数目标及 `visible_chars_v1` 口径;阶段位置、结构公式等阅读体验字段按需写。无证据的辅线/感情线可写“无”或 `[待补充]`,不能为了格式编造。
116
+ - **不要输出字段不全的薄细纲**。新建/补建细纲必须有九个必填字段(核心事件、字数目标、字数口径 `visible_chars_v1`、单元ID/位置、目标情绪、主角目标/关键选择、章首钩子、爽点、本章禁止提前释放)、四个小节(内容概括、情节安排、人物关系和出场顺序、情节细化)、四列情节点表(# / 情节点 / 功能标签 / 执行边界(禁+放)),以及结尾设定和章尾钩子;阶段位置、结构公式等阅读体验字段按需写。无证据的辅线/感情线可写“无”或 `[待补充]`,不能为了格式编造。
169
117
  - **不要在未确定核心梗的情况下排布大纲**。核心梗三代论(主题 -- 题材核心 -- 核心情绪)是大纲的地基,跳过它会导致结构松散、爽点散乱。
170
118
 
171
119
  ---
@@ -4,7 +4,7 @@ description: |
4
4
  故事项目结构化查询 agent(只读)。响应关于角色状态、伏笔进度、设定出现位置、
5
5
  时间线节点、写作进度的查询。使用 grep + read 从项目文件系统中检索信息,
6
6
  返回结构化 JSON 摘要。
7
- 被 story-long-write(日更 Step 1 上下文加载)、story-review(审查时查设定)、
7
+ 被 story-long-write(写前对标召回、日更查旧信息)、story-review(审查时查设定)、
8
8
  story 路由(用户自然提问时)调用。
9
9
  不做任何创作判断或修改。
10
10
  tools: [Read, Glob, Grep]
@@ -24,6 +24,19 @@ maxTurns: 15
24
24
 
25
25
  ---
26
26
 
27
+ ## 参考文件路径规则
28
+
29
+ **确定项目根目录:** 直接使用宿主交给你的当前工作区/项目根;不要执行 shell。以下所有路径均从该根目录解析。
30
+
31
+ 读取参考文件时,直接 Read 当前 Claude 部署的 canonical 路径,禁止先用 Glob/Grep 搜索:
32
+ 1. `{项目根}/.claude/skills/story-setup/references/agent-references/{文件名}`
33
+
34
+ 文件不存在时返回缺失事实,由主会话提示重新运行 `/story-setup`;不要探测其他 CLI 的目录。
35
+
36
+ 禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
37
+
38
+ ---
39
+
27
40
  ## 查询类型
28
41
 
29
42
  你支持以下查询类型:
@@ -39,8 +52,7 @@ maxTurns: 15
39
52
  | `timeline` | 查时间线节点 | "第30-50章发生了什么?" |
40
53
  | `progress` | 查写作进度 | "现在写到哪了?" |
41
54
  | `relationship` | 查角色关系 | "江晨和钟嘉嘉现在什么关系?" |
42
- | `context_load` | 综合上下文加载 | "我要写第N章,给我上下文" |
43
- | `benchmark_style_load` | 加载对标文风资料 | "我要写第 N 章,帮我找对标文风和可参考片段" |
55
+ | `benchmark_style_load` | 加载对标文风资料(流程另读参考文件) | "我要写第 N 章,帮我找对标文风和可参考片段" |
44
56
 
45
57
  ---
46
58
 
@@ -59,6 +71,7 @@ maxTurns: 15
59
71
  ├── 大纲/
60
72
  │ ├── 大纲.md # 全书卷级结构
61
73
  │ ├── 卷纲_第X卷.md # 每卷规划
74
+ │ ├── 排纲底稿_{单元ID}.md # 排纲工作底稿(供给自查、建纲追加)
62
75
  │ └── 细纲_第XXX章.md # 每章蓝图
63
76
  ├── 正文/
64
77
  │ └── 第XXX章_*.md # 正文章节
@@ -149,74 +162,9 @@ maxTurns: 15
149
162
 
150
163
  ### benchmark_style_load 流程
151
164
 
152
- 加载对标书的情绪模块 + 节奏索引 + 文风 + 按本章情绪/基调匹配可参考章节 + 原文锚点片段。
153
-
154
- 1. **解析输入**:项目目录 + 本章情绪/基调 + (可选)本章爽点类型 + (可选)本章目标字数
155
- 2. **主对标书选择**:
156
- - 先按项目目录名、`.active-book` 与本书设定识别当前作品;`拆文库/{当前书}/` 是 story-import 的本书分析,不是对标候选。历史误建的 `对标/{当前书}/` 也必须排除,并返回 `gaps.self_benchmark_ignored: true`
157
- - `Read 设定/题材定位.md`,提取 `主对标书` 字段
158
- - 若有且不是当前作品 → 用该书;若字段指向当前作品 → 忽略该字段并设置 `gaps.self_benchmark_ignored: true`
159
- - **路径一律用字段值逐字拼接**:不添加《》等任何装饰、不改一字——拼错时 Glob 只会静默返回空,与「书不存在」无法区分
160
- - **登记的主对标按步骤 3 探不到书目录**(目录下探不到任何文件)→ 返回 `gaps.benchmark_book_missing: true` 与 `expected_path`(原样写入实际探测的完整路径,供核对拼写),`results` 置空**停止**;不得改用其他书,也不得走下面的缺失回退。**书目录存在但缺 `文风.md` 不属于本情形**——照常进入步骤 4-6,由步骤 6 归类为 `profile_missing`
161
- - 若字段缺失或已忽略 → `Glob 对标/*/**/*`,从命中文件所属的书目录(`对标/` 下的第一层目录,排除当前作品)取字典序第一个,并在 `gaps.main_benchmark_unspecified: true` 提示主对标书未指定;**枚举条件是书目录下有文件,不是有 `文风.md`**——缺文风但资料完整的候选仍算命中
162
- - 若排除后无命中,继续向上找工作区根下的 `拆文库/*/**/*`,同样排除当前作品;仍无 → 返回 `gaps.no_benchmark: true`,`results` 置空,**不报错、不继续读文风**
163
- 3. **对标书路径查找(只判书目录有效性,不判文风)**:优先探 `{项目}/对标/{书名}/**/*`,回退探 `拆文库/{书名}/**/*`(向上找到工作区根,再下钻拆文库);探针是目录下的任意文件——Glob 不接受纯目录模式,`{书名}/` 恒返回空。任一处命中文件即视为书目录有效,进入步骤 4;两处都无命中才是 `benchmark_book_missing`。**不得用 `文风.md` 兼作目录存在性探针**——那会把「书在但缺文风」误判成「书不存在」,吞掉步骤 6 的 `profile_missing` 与调用方的 `custom_style` 降级分支
164
- 4. **主产物探针与资料代际**:
165
- - 先探 `{对标书路径}/剧情/情绪模块.md` 和 `{对标书路径}/剧情/节奏.md`,两者都存在才进入当前权威召回。
166
- - 任一未命中时直接按下面两项返回并停止准备;`schema_version` 不参与新旧判断。两份老权威产物都存在时正常召回,缺少因果、双时间线或三维节奏等新增内嵌字段不阻断。
167
- - 缺 `剧情/情绪模块.md` → `gaps.missing_primary_contract: true`、`gaps.module_missing: true`,`repair_action` 写“重跑 /story-long-analyze Stage 3,补齐情绪模块”。
168
- - 缺 `剧情/节奏.md` → `gaps.missing_primary_contract: true`、`gaps.rhythm_missing: true`,`repair_action` 写“重跑 /story-long-analyze Stage 3,补齐节奏索引”。
169
- 5. **当前权威召回**:
170
- - 对存在的 `{对标书路径}/剧情/情绪模块.md`,从读者需求、情绪引擎或可复现模块中选择 1 条 `selected_emotion_module`,写入 `module_source_path`。
171
- - 对存在的 `{对标书路径}/剧情/节奏.md`,从关键信息推进、情绪触动点、爆发/冷却中选择 1 条 `rhythm_reference`,写入 `rhythm_source_path`。
172
- - 两份文件冲突时保留两条来源摘要,返回 `gaps.module_rhythm_conflict: true`;二者优先于报告和故事线,禁止自行改写。
173
- - 若两个权威文件都存在但对同一章节/模块的读者情绪或爆发点描述互相矛盾,保留两条原文摘要,并返回 `gaps.module_rhythm_conflict: true` 与 `gaps.conflict: "..."`;调用方按两个权威文件优先于 `拆文报告.md` / `故事线.md` 的规则处理,禁止自行改写
174
- 6. **读文风**:
175
- - `Read {对标书路径}/文风.md`
176
- - 不存在 → 返回 `gaps.profile_missing: true, expected_path: "..."`,**不继续后续步骤**;书目录本身有效,不得改填 `benchmark_book_missing`——调用方按 `custom_style` 决定继续或停止
177
- - 检查「生成记录」里的 `文风可用:否` → 返回 `gaps.profile_degenerate: true`,后续不把文风作为强约束
178
- 7. **可用性检查(只读可执行)**:
179
- - 本 agent 只有 `Read/Glob/Grep`,不能调用 Bash/stat。
180
- - 只读取文风文件「生成记录」:若写有 `文风可用:否`、`需重生`、`原文缺失` 等标记 → `gaps.profile_stale: true` 或 `gaps.profile_degenerate: true`,并在 `stale_reason` 写明原因。
181
- - 不做文件时间比较;默认 `profile_stale: false`。
182
- 8. **章节基调候选集**:
183
- - `Glob {对标书路径}/章节/*_摘要.md`
184
- - 对每个文件 `Grep -hE '基调:(紧张|轻松|悲伤|热血|爽|甜|温馨|恐怖|压抑|其他)'`(**全角冒号**,不锚定行首)拿到该章所有情节点基调
185
- - 章基调聚合:众数;并列时按 grep 输出顺序取最早
186
- - 候选集 = 章基调 == 本章情绪/基调的章节列表
187
- 9. **相近基调兜底**(完全没有同基调章节时):
188
- - 先从本章细纲/查询参数里判断更接近“紧张、热血、爽、甜、轻松、温馨、悲伤、恐怖、压抑”哪一类;不要写死对照表。
189
- - 选择一个最接近的基调重新筛候选集,并在结果里说明“使用相近基调兜底”。
190
- - 仍空 → `gaps.tone_match_failed: true`,跳过匹配章节读取,但仍返回整书文风、`selected_emotion_module` 和 `rhythm_reference`。
191
- 10. **多候选章节选择规则**(候选集多章时):
192
- - L1 爽点类型最强匹配(调用方提供爽点字段时,对每个候选章读 `_摘要.md` 的「关键事件」判断)
193
- - L2 摘要情节点数 / 可读到的原文章节估算长度最接近本章目标字数(如提供);本 agent 不用 Bash 统计,拿不到原文长度时跳过 L2,不得把摘要文件字数当原文字数
194
- - L3 章节号最小
195
- 11. **读匹配章节资料**:
196
- - 先 `Read {对标书路径}/章节/第K章_摘要.md`,提取本章基调序列、关键事件、爽点/情绪节点
197
- - 新版轻量摘要直接读取「信息变化」「状态变化」「章尾钩子」「三维节奏」字段;旧摘要缺这些字段时再读取「关键信息与扩写技法」表,作为 `matched_chapter_techniques` 的证据/补足;两者都不覆盖 `剧情/节奏.md`
198
- - 若 `{对标书路径}/章节/第K章_深度拆解.md` 存在,再读取并提取「可借鉴要素」+ 反应层 + 章尾钩子类型
199
- - 若同章深度拆解不存在(常见:只有黄金三章有深度拆解),不要失败;回退读取 `第1章_深度拆解.md`、`第2章_深度拆解.md`、`第3章_深度拆解.md` 中基调最接近的一章,或仅使用文风「可借鉴技巧」
200
- - 在 `gaps.matched_deep_dive_missing: true` 标记该回退
201
- 12. **抽取原文锚点片段**(从文风文件里):
202
- - 从文风文件 `## 原文锚点片段` 段读出所有按基调标注的片段
203
- - 按本章情绪/基调选 1-2 段(精确匹配优先,无则取相近基调)
204
- - 完整传递 300-500 字原文(不要截断/概括)
205
- 13. **返回结构化 JSON**
206
-
207
- ### context_load 流程(综合查询)
208
-
209
- 1. 用调用方随 prompt 传入的 `last_committed_chapter` / `state_revision`(主会话已跑过 `tracking_commit.py check`);prompt 里没有这两个值时不自行读取 `_tracking-state.json`(完整 state 不进 prompt,读取量不随章数增长),只读 `追踪/上下文.md` 头部的 `状态修订:{N}` 作参考;对不上时返回 `tracking_state_invalid` 与 blocking gap,不继续组装写作包。
210
- 2. `Read 追踪/上下文.md`;它必须恰好包含 `当前位置 / 长期约束 / 核心角色状态 / 活跃伏笔 / 近三章速记 / 下一章承诺 / 连贯性风险` 7 个栏目。
211
- 3. 下一章 N = `last_committed_chapter + 1`;`Read 大纲/细纲_第{N}章.md`。
212
- 4. 从细纲和续写状态卡提取角色名,读取 `设定/角色/{name}.md`;久别核心角色再读取 `追踪/角色状态/{name}.md`。
213
- 5. `Read 正文/第{N-1}章_*.md` 获取场景衔接。
214
- 6. 只有调用方明确给出伏笔 ID、事件 ID 或历史原因时,才定点查 `伏笔.md`、对应时间线视图或命中的逐章增量;默认不通读长期文件。
215
- 7. 汇总为“写作上下文包”,并返回实际读取的来源。
216
-
217
- > `context_load` 的固定读取量不随章数增长。角色当前值来自独立小快照,旧变化原因来自按 ID/角色定点命中的紧凑增量,时间线按作者/读者视角分开读取。
218
-
219
- > 普通查询遇文件缺失时在 `gaps` 中返回事实;`context_load` 缺 state、续写状态卡或 `check` 失败时停止。`benchmark_style_load` 缺两个老权威主产物时返回 `missing_primary_contract` 与 `repair_action`;登记的主对标书目录探不到时返回 `benchmark_book_missing` 与 `expected_path`;缺 `文风.md` 归 `profile_missing`。
165
+ 先 Read `story-setup/references/agent-references/benchmark-style-load.md`(按上方路径规则解析),按其中的步骤、缺失即停规则与输出结构执行。其他查询类型不读这份文件。
166
+
167
+ > 查询遇文件缺失时在 `gaps` 中返回事实,不猜测。
220
168
 
221
169
  ---
222
170
 
@@ -278,60 +226,7 @@ maxTurns: 15
278
226
  }
279
227
  ```
280
228
 
281
- **context_load**:
282
- ```json
283
- {
284
- "results": {
285
- "progress": { "last_chapter": 50, "next_chapter": 51 },
286
- "active_foreshadows": [],
287
- "recent_timeline": [],
288
- "chapter_plan": {},
289
- "characters": [],
290
- "previous_chapter_summary": "..."
291
- }
292
- }
293
- ```
294
-
295
- **benchmark_style_load**:
296
- ```json
297
- {
298
- "query_type": "benchmark_style_load",
299
- "results": {
300
- "style_profile_path": "对标/{书名}/文风.md",
301
- "style_profile_summary": "<≤200字 提取核心:标点习惯 + 对话技法 + 情绪交替模式>",
302
- "selected_emotion_module": "<从 剧情/情绪模块.md 选出的读者需求/触发器/戏剧单元/可复现骨架;缺失时为 null>",
303
- "rhythm_reference": "<从 剧情/节奏.md 选出的关键信息推进/情绪触动点/爆发节奏/冷却参考;缺失时为 null>",
304
- "module_source_path": "对标/{书名}/剧情/情绪模块.md",
305
- "rhythm_source_path": "对标/{书名}/剧情/节奏.md",
306
- "matched_chapter_K": 14,
307
- "matched_chapter_techniques": "<匹配章摘要 + 深度拆解/黄金三章回退中的可借鉴要素,≤300字>",
308
- "anchor_excerpts": [
309
- {"tone": "悲伤", "source": "第14章 第7段(行 823-901)", "demo_point": "对话潜台词手法", "text": "<300-500字原文>"},
310
- {"tone": "热血", "source": "第8章 第3段(行 401-465)", "demo_point": "爽点铺放比", "text": "<300-500字原文>"}
311
- ]
312
- },
313
- "source_files": ["设定/题材定位.md", "对标/{书名}/剧情/情绪模块.md", "对标/{书名}/剧情/节奏.md", "对标/{书名}/文风.md", "对标/{书名}/拆文报告.md", "对标/{书名}/章节/第14章_深度拆解.md"],
314
- "gaps": {
315
- "no_benchmark": false,
316
- "module_missing": false,
317
- "rhythm_missing": false,
318
- "module_rhythm_conflict": false,
319
- "conflict": null,
320
- "missing_primary_contract": false,
321
- "repair_action": null,
322
- "profile_missing": false,
323
- "profile_stale": false,
324
- "profile_degenerate": false,
325
- "stale_reason": null,
326
- "main_benchmark_unspecified": false,
327
- "benchmark_book_missing": false,
328
- "self_benchmark_ignored": false,
329
- "raw_text_unavailable": false,
330
- "tone_match_failed": false,
331
- "matched_deep_dive_missing": false
332
- }
333
- }
334
- ```
229
+ `benchmark_style_load` 的 results 与 gaps 结构见上文那份参考文件。
335
230
 
336
231
  ---
337
232
 
@@ -9,7 +9,6 @@ disallowedTools: [Edit]
9
9
  model: sonnet
10
10
  maxTurns: 20
11
11
  # maxTurns: 20 — 覆盖 CDP 搜索 + 多源交叉验证场景。
12
- memory: project
13
12
  ---
14
13
 
15
14
  # Story Researcher -- 资料研究员