@oh-story/dsh 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (529) hide show
  1. package/README.md +14 -14
  2. package/lib/client.js +209 -73
  3. package/lib/client.js.map +3 -3
  4. package/lib/drama/manifest.json +248 -168
  5. package/lib/drama/skills/short-drama/SKILL.md +16 -4
  6. package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
  7. package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
  8. package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
  9. package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +14 -0
  10. package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
  11. package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
  12. package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
  13. package/lib/drama/skills/short-drama-assets/references/character-and-look.md +10 -0
  14. package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +6 -9
  15. package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
  16. package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
  17. package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
  18. package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
  19. package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
  20. package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
  21. package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
  22. package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
  23. package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
  24. package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
  25. package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
  26. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
  27. package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +51 -0
  28. package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
  29. package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
  30. package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
  31. package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
  32. package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
  33. package/lib/drama/skills/short-drama-edit/SKILL.md +65 -44
  34. package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
  35. package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
  36. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
  37. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
  38. package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
  39. package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
  40. package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
  41. package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
  42. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
  43. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
  44. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
  45. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
  46. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
  47. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
  48. package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
  49. package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
  50. package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +6 -4
  51. package/lib/drama/skills/short-drama-edit/references/cut-craft.md +26 -67
  52. package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +31 -56
  53. package/lib/drama/skills/short-drama-edit/references/generated-footage.md +42 -78
  54. package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +44 -92
  55. package/lib/drama/skills/short-drama-edit/references/stage-contract.md +14 -16
  56. package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1272 -125
  57. package/lib/drama/skills/short-drama-edit/scripts/selftest.py +113 -9
  58. package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
  59. package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
  60. package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
  61. package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
  62. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
  63. package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
  64. package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
  65. package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
  66. package/lib/drama/skills/short-drama-produce/SKILL.md +5 -1
  67. package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +14 -20
  68. package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +8 -26
  69. package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
  70. package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +142 -1
  71. package/lib/drama/skills/short-drama-review/SKILL.md +4 -5
  72. package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +6 -19
  73. package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
  74. package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
  75. package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
  76. package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +24 -35
  77. package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
  78. package/lib/drama/skills/short-drama-storyboard/SKILL.md +23 -11
  79. package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
  80. package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
  81. package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
  82. package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +139 -34
  83. package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +5 -3
  84. package/lib/drama/skills/short-drama-video-prompts/SKILL.md +15 -12
  85. package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +29 -0
  86. package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
  87. package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
  88. package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +52 -39
  89. package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -21
  90. package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +9 -23
  91. package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +14 -26
  92. package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
  93. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +2 -3
  94. package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +34 -9
  95. package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -2
  96. package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
  97. package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
  98. package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
  99. package/lib/drama/skills/short-drama-write/SKILL.md +10 -7
  100. package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
  101. package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
  102. package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
  103. package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
  104. package/lib/index.js +346 -98
  105. package/lib/index.js.map +4 -4
  106. package/lib/novel-to-game/README.md +299 -59
  107. package/lib/novel-to-game/README_ZH.md +299 -56
  108. package/lib/novel-to-game/VERSION +1 -1
  109. package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
  110. package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
  111. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
  112. package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
  113. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
  114. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
  115. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
  116. package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
  117. package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
  118. package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
  119. package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
  120. package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
  121. package/lib/novel-to-game/manifest.json +77 -87
  122. package/lib/novel-to-game/skills/game-art-direction/SKILL.md +7 -12
  123. package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
  124. package/lib/novel-to-game/skills/game-build/SKILL.md +13 -14
  125. package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
  126. package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
  127. package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
  128. package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
  129. package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
  130. package/lib/novel-to-game/skills/game-concept/SKILL.md +13 -15
  131. package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
  132. package/lib/novel-to-game/skills/game-qa/SKILL.md +6 -7
  133. package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +9 -5
  134. package/lib/novel-to-game/skills/game-world-design/SKILL.md +12 -16
  135. package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
  136. package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
  137. package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
  138. package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +4 -10
  139. package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
  140. package/lib/novel-to-game/skills/novel-to-game/SKILL.md +9 -21
  141. package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
  142. package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +5 -8
  143. package/lib/oh-story/manifest.json +607 -327
  144. package/lib/oh-story/roles/chapter-extractor.md +177 -237
  145. package/lib/oh-story/roles/character-designer.md +1 -2
  146. package/lib/oh-story/roles/consistency-checker.md +15 -13
  147. package/lib/oh-story/roles/narrative-writer.md +36 -38
  148. package/lib/oh-story/roles/story-architect.md +9 -61
  149. package/lib/oh-story/roles/story-explorer.md +20 -125
  150. package/lib/oh-story/roles/story-researcher.md +0 -1
  151. package/lib/oh-story/skills/story/SKILL.md +15 -9
  152. package/lib/oh-story/skills/story/VERSION +1 -1
  153. package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
  154. package/lib/oh-story/skills/story/references/author-memory.md +46 -94
  155. package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
  156. package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
  157. package/lib/oh-story/skills/story-deslop/SKILL.md +59 -73
  158. package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
  159. package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +12 -11
  160. package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
  161. package/lib/oh-story/skills/story-deslop/references/author-memory.md +46 -94
  162. package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
  163. package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +22 -5
  164. package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
  165. package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
  166. package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
  167. package/lib/oh-story/skills/story-import/SKILL.md +64 -584
  168. package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
  169. package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
  170. package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
  171. package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
  172. package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
  173. package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
  174. package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
  175. package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
  176. package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
  177. package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
  178. package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +98 -92
  179. package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
  180. package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
  181. package/lib/oh-story/skills/story-import/references/tracking-transaction.md +15 -11
  182. package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
  183. package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +132 -27
  184. package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +478 -15
  185. package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +182 -23
  186. package/lib/oh-story/skills/story-long-analyze/SKILL.md +81 -270
  187. package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +252 -0
  188. package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +3 -3
  189. package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
  190. package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
  191. package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
  192. package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +138 -64
  193. package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
  194. package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
  195. package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
  196. package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
  197. package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
  198. package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
  199. package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +55 -128
  200. package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +6 -6
  201. package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
  202. package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
  203. package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
  204. package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
  205. package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1145 -0
  206. package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
  207. package/lib/oh-story/skills/story-long-scan/SKILL.md +45 -194
  208. package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
  209. package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
  210. package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
  211. package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
  212. package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
  213. package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
  214. package/lib/oh-story/skills/story-long-write/SKILL.md +49 -81
  215. package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
  216. package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +12 -11
  217. package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +24 -202
  218. package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
  219. package/lib/oh-story/skills/story-long-write/references/author-memory.md +46 -94
  220. package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
  221. package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +7 -11
  222. package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
  223. package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
  224. package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
  225. package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +4 -0
  226. package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
  227. package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
  228. package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
  229. package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
  230. package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +7 -15
  231. package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
  232. package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
  233. package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
  234. package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
  235. package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
  236. package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
  237. package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
  238. package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
  239. package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
  240. package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
  241. package/lib/oh-story/skills/story-long-write/references/project-files.md +19 -13
  242. package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +13 -5
  243. package/lib/oh-story/skills/story-long-write/references/reference-index.md +5 -6
  244. package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
  245. package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
  246. package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
  247. package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
  248. package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
  249. package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +15 -11
  250. package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +81 -121
  251. package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +41 -139
  252. package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
  253. package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +57 -67
  254. package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -253
  255. package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
  256. package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +6 -4
  257. package/lib/oh-story/skills/story-long-write/references/writing-craft.md +19 -65
  258. package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
  259. package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
  260. package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +226 -25
  261. package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
  262. package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +132 -27
  263. package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
  264. package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +7 -4
  265. package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +304 -46
  266. package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +478 -15
  267. package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +182 -23
  268. package/lib/oh-story/skills/story-review/SKILL.md +31 -302
  269. package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
  270. package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +12 -11
  271. package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
  272. package/lib/oh-story/skills/story-review/references/author-memory.md +46 -94
  273. package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
  274. package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
  275. package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
  276. package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +4 -0
  277. package/lib/oh-story/skills/story-review/references/review-quality.md +6 -11
  278. package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
  279. package/lib/oh-story/skills/story-review/references/solo.md +52 -0
  280. package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
  281. package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
  282. package/lib/oh-story/skills/story-review/references/tracking-transaction.md +15 -11
  283. package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
  284. package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
  285. package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +478 -15
  286. package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +182 -23
  287. package/lib/oh-story/skills/story-setup/SKILL.md +71 -452
  288. package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
  289. package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +12 -11
  290. package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
  291. package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
  292. package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
  293. package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +22 -5
  294. package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +4 -0
  295. package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
  296. package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
  297. package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
  298. package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
  299. package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
  300. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +1 -1
  301. package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
  302. package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
  303. package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
  304. package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
  305. package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
  306. package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
  307. package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
  308. package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
  309. package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
  310. package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
  311. package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
  312. package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +4 -4
  313. package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +19 -65
  314. package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
  315. package/lib/oh-story/skills/story-short-analyze/SKILL.md +56 -110
  316. package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
  317. package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
  318. package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
  319. package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
  320. package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
  321. package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
  322. package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
  323. package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +611 -0
  324. package/lib/oh-story/skills/story-short-scan/SKILL.md +35 -65
  325. package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
  326. package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
  327. package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
  328. package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
  329. package/lib/oh-story/skills/story-short-write/SKILL.md +23 -175
  330. package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
  331. package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
  332. package/lib/oh-story/skills/story-short-write/references/author-memory.md +46 -94
  333. package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
  334. package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
  335. package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +4 -0
  336. package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
  337. package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
  338. package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
  339. package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -47
  340. package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
  341. package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
  342. package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
  343. package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
  344. package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
  345. package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
  346. package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
  347. package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
  348. package/lib/oh-story/skills/story-short-write/references/workflow-design.md +21 -13
  349. package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +116 -0
  350. package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +99 -0
  351. package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
  352. package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
  353. package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
  354. package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
  355. package/lib/types/client/drama-production-view.d.ts.map +1 -1
  356. package/lib/types/client/file-activity.d.ts +19 -1
  357. package/lib/types/client/file-activity.d.ts.map +1 -1
  358. package/lib/types/client/index.d.ts.map +1 -1
  359. package/lib/types/client/production-prompts.d.ts +7 -0
  360. package/lib/types/client/production-prompts.d.ts.map +1 -1
  361. package/lib/types/client/production-runtime.d.ts +16 -0
  362. package/lib/types/client/production-runtime.d.ts.map +1 -1
  363. package/lib/types/client/video-studio.d.ts.map +1 -1
  364. package/lib/types/drama-adapters.d.ts +5 -3
  365. package/lib/types/drama-adapters.d.ts.map +1 -1
  366. package/lib/types/native-hooks.d.ts +53 -1
  367. package/lib/types/native-hooks.d.ts.map +1 -1
  368. package/lib/types/role-identity.d.ts +17 -0
  369. package/lib/types/role-identity.d.ts.map +1 -0
  370. package/lib/types/role-tool.d.ts.map +1 -1
  371. package/lib/types/skill-provider.d.ts.map +1 -1
  372. package/lib/types/video-project.d.ts.map +1 -1
  373. package/lib/types/workspace-route.d.ts.map +1 -1
  374. package/lib/video-recap/CHANGELOG.md +60 -1
  375. package/lib/video-recap/README.en.md +348 -137
  376. package/lib/video-recap/README.md +340 -136
  377. package/lib/video-recap/manifest.json +406 -251
  378. package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
  379. package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
  380. package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
  381. package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
  382. package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
  383. package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
  384. package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
  385. package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
  386. package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
  387. package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
  388. package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
  389. package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
  390. package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
  391. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
  392. package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
  393. package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
  394. package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
  395. package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
  396. package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
  397. package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
  398. package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
  399. package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
  400. package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
  401. package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
  402. package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
  403. package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
  404. package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
  405. package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
  406. package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
  407. package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
  408. package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
  409. package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
  410. package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
  411. package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
  412. package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
  413. package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
  414. package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
  415. package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
  416. package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
  417. package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
  418. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
  419. package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
  420. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
  421. package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
  422. package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
  423. package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
  424. package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
  425. package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
  426. package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
  427. package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
  428. package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
  429. package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
  430. package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
  431. package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
  432. package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
  433. package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
  434. package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
  435. package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
  436. package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
  437. package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
  438. package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
  439. package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
  440. package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
  441. package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
  442. package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
  443. package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
  444. package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
  445. package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
  446. package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
  447. package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
  448. package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
  449. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
  450. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
  451. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
  452. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
  453. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
  454. package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
  455. package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
  456. package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
  457. package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
  458. package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
  459. package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
  460. package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
  461. package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
  462. package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
  463. package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
  464. package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
  465. package/lib/video-recap/skills/video-script/SKILL.md +16 -13
  466. package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
  467. package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
  468. package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
  469. package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
  470. package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
  471. package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
  472. package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
  473. package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
  474. package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
  475. package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
  476. package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
  477. package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
  478. package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
  479. package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
  480. package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
  481. package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
  482. package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
  483. package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
  484. package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
  485. package/lib/video-recap/skills/{video-script/scripts/agent_brief.py → video-understanding/scripts/briefing/builder.py} +38 -35
  486. package/lib/video-recap/skills/video-understanding/scripts/{brief_context.py → briefing/context.py} +4 -35
  487. package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
  488. package/lib/video-recap/skills/{video-script/scripts/brief_timeline.py → video-understanding/scripts/briefing/timeline.py} +5 -6
  489. package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
  490. package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
  491. package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
  492. package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
  493. package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
  494. package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
  495. package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
  496. package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
  497. package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
  498. package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
  499. package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
  500. package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
  501. package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
  502. package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
  503. package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
  504. package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
  505. package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
  506. package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
  507. package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
  508. package/package.json +45 -45
  509. package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -58
  510. package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
  511. package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -38
  512. package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -530
  513. package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -559
  514. package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
  515. package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
  516. package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +0 -678
  517. package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
  518. package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
  519. package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
  520. package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
  521. package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
  522. package/lib/video-recap/skills/video-script/scripts/brief_context.py +0 -348
  523. package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
  524. package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +0 -399
  525. package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
  526. package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +0 -327
  527. /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
  528. /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
  529. /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
@@ -1,20 +1,11 @@
1
1
  # 产物创建模板
2
2
 
3
- 各产物的标准模板与创建指引。agent 在 Phase 2-3 过渡时按需加载此文件。
3
+ 大纲与卷纲的模板,出卷纲时(workflow-volume.md)读。
4
4
 
5
- **模板列表:**
6
- - 设定/关系.md
7
- - 设定/题材定位.md(含读者契约 + 终局底牌/升级台阶 + 对标登记字段)
5
+ **模板列表:**(设定/关系、设定/题材定位的模板在 workflow-setup.md 文末;细纲模板与排纲底稿模板在 workflow-outline.md)
8
6
  - 大纲/大纲.md(全书鸟瞰 + 全书体量与阶段总览)
9
7
  - 大纲/卷纲_第X卷.md(含卷契约+终局储备+剧情单元+情绪弧线+反转规划)
10
- - 追踪/_tracking-state.json(唯一结构化权威状态)
11
- - 追踪/逐章记录/第NNN章.md(未来相关紧凑增量)
12
- - 追踪/伏笔.md
13
- - 追踪/时间线/作者真相.md + 读者已知.md(派生视图)
14
- - 追踪/角色状态/{角色名}.md
15
- - 追踪/上下文.md(续写状态卡,固定 7 栏)
16
- - 对标/{对标书名}/拆文报告.md
17
- - 对标/{对标书名}/原文/第XXX章_{章名}.md
8
+ - 追踪/(首次写正文前由脚本生成,见文末「追踪体系」)
18
9
 
19
10
  **层级关系(全书 › 卷 › 剧情单元 › 章 › 情节点;故事线横向贯穿多个剧情单元):**
20
11
  - 大纲.md = 全书鸟瞰(每卷一两句话定位)
@@ -22,151 +13,21 @@
22
13
  - 细纲_第XXX章.md = 单章蓝图(单元ID/位置 + 主角目标/关键选择 + 内容概括 + 多线情节安排 + 人物关系/出场顺序 + 情节细化 + 结尾设定/钩子)
23
14
 
24
15
  **概念对照(统一叫法,减少混淆):**
25
- - **剧情单元** = 一段完整剧情(1.5-3 万字/数章,一个矛盾从起到收)。拆书侧就是 `剧情/{剧情单元名}.md`,本书侧就是卷纲里的**剧情单元卡**;理论叫法是「一级结构」。同一粒度,统一叫剧情单元。
26
- - **故事线** = 贯穿多个剧情单元的线(主线/感情线/成长线/夺宝线…),比剧情单元大一层。拆书侧是 `剧情/故事线.md`,本书侧是卷纲的**本卷故事线**表(L 编号)。剧情单元纵向切段,故事线横向贯穿,同一卷的两个视角。
16
+ - **剧情单元** = 一段完整剧情(1.5-3 万字/数章,一个矛盾从起到收)。拆书侧就是 `剧情/{剧情单元名}.md`,本书侧就是卷纲里的**剧情单元卡**,统一叫剧情单元。outline-structure-theory.md 的「一级/二级/三级结构」指全书结构类型,不是单元名。
17
+ - **故事线** = 贯穿多个剧情单元的线(主线/感情线/成长线/夺宝线…),比剧情单元大一层。拆书侧是 `剧情/故事线.md`,本书侧是卷纲的**本卷故事线**表(L 编号)。剧情单元纵向切段,故事线横向贯穿,同一卷的两个视角。故事线编号是 `L01` 式两位数,单元ID 是 `L1-03` 式(卷号+连字符+序号),别混用。
27
18
  - 「循环」一词只在**节奏义**保留(爽点循环、升级循环、小/中/大循环等),不再指代规划单元。
28
19
 
29
20
  ---
30
21
 
31
- ## 对标/{对标书名}/拆文报告.md
32
-
33
- > **拆文库/对标关系**:`拆文库/` = analyze skill 的原始产出(数据源)。`对标/` = 写作项目的引用视图。首次引用时从 `拆文库/` 复制到 `对标/`。
34
-
35
- 此文件由 `story-long-analyze` 拆解管道输出(快速预览报告或完整拆文报告)。write skill 的职责是**读取**,不创建。
36
-
37
- 如需手动创建简版对标摘要(未使用 analyze skill 时):
38
-
39
- ```markdown
40
- # {对标书名} 对标摘要
41
-
42
- ## 基本信息
43
- - 书名:{}
44
- - 作者:{}
45
- - 题材/类型:{}
46
- - 目标平台:{}
47
- - 成绩:{均订/在读/热度}
48
-
49
- ## 核心发现
50
- - 开篇钩子:{类型 + 手法}
51
- - 爽点密度:{约 N 字/次}
52
- - 节奏模式:{描述}
53
- - 可借鉴套路:
54
- 1. {}
55
- 2. {}
56
- 3. {}
57
-
58
- ## 不建议模仿(禁止照搬)
59
- - {}(只学结构,不抄桥段)
60
- ```
61
-
62
- 创建参考:`plot-special-topics.md` (对标书选择法则)
63
-
64
- ---
65
-
66
- ## 对标/{对标书名}/原文/第XXX章_{章名}.md
67
-
68
- 对标书章节原文,由用户手动放入或拆文管道导入。
69
-
70
- ```markdown
71
- # 第{N}章 {章名}
72
-
73
- {本章完整原文内容}
74
-
75
- ---
76
- > 来源:{手动输入 / story-long-analyze 导入}
77
- > 原始字数:{约N字}
78
- ```
79
-
80
- ---
81
-
82
- ## 设定/关系.md
83
-
84
- ```markdown
85
- # 角色关系图
86
-
87
- ## 关系总览
88
-
89
- | 角色 A | 角色 B | 关系类型{亲情/爱情/友情/敌对/师生/主从/利益} | 情感倾向{正面/负面/中性/复杂} | 当前状态 | 起始章节 | 变化节点 |
90
- |--------|--------|---------------------------------------------|-----------------------------|---------|---------|---------|
91
- | {名} | {名} | {类型} | {倾向} | {描述} | 第{N}章 | {事件} |
92
-
93
- ## 关系演变
94
-
95
- {角色A}<->{角色B}:
96
- - 起点:{初始关系}
97
- - 转折:{章节·事件·变化}
98
- - 当前:{现状}
99
-
100
- ## 核心冲突关系
101
-
102
- {列出推动剧情的2-3对核心对立/合作关系}
103
- ```
104
-
105
- 创建参考:`character-relations.md` (人物关系类型 + 关系图绘制)
106
-
107
- ---
108
-
109
- ## 设定/题材定位.md
110
-
111
- ```markdown
112
- # 题材定位
113
-
114
- ## 基本信息
115
- - 题材类型:{玄幻/都市/系统/...}
116
- - 目标平台:{起点/番茄/晋江/其他;story-review 据此选平台 rubric}
117
- - 核心梗:{一句话卖点}
118
- - 微创新点:{与同类题材的差异}
119
-
120
- ## 读者契约(参 `reader-contract-and-progression.md`)
121
- - 核心读者承诺:{读者来追什么爽感/情绪/关系/事业}
122
- - 主角代理权承诺:{主角不可替代的判断、关键选择或贡献}
123
- - 利益安全线:{核心资产/卖点不得被没收、转赠、无交换暴露的边界}
124
- - 期待债:{开篇/本卷已承诺,何时以什么形式偿还}
125
- - 题材边界:{个人逆袭/群像/导师/制度合作等;高层级机构出现时先核对}
126
-
127
- ## 终局底牌与升级台阶(防写无可写;开书填一次,日更只查。参 `reader-contract-and-progression.md`「终局储备与推进节奏」)
128
- - 终局底牌(一次性资源,标最早解锁卷):头号宿敌={}·第{X}卷;终极真相/身世={}·第{X}卷;金手指上限={}·第{X}卷;身份/地位终点={}·第{X}卷;核心情感确定={无感情主线可删}·第{X}卷
129
- - 升级台阶:主体系{境界/等级/地图/势力层级}共{N}档 × 每档约{W}万字 应 ≥ 全书目标字数(不足则拉长体系/加地图层);敌人/目标成梯队逐级解锁,禁止越级秒顶级
130
- - 透支红线:① 未到解锁卷就动用终局底牌 ② 某条升级线逼近天花板、后面没台阶接
131
-
132
- ## 核心梗三分法
133
- - 表层卖点:{读者一眼看到的吸引力}
134
- - 深层爽点:{持续追读的情绪驱动力}
135
- - 长线钩子:{支撑全书的悬念/目标}
136
-
137
- ## 对标分析(概要)
138
- > 完整对标数据见 `对标/` 目录。此表仅做快速概览。
139
-
140
- | 对标书 | 相似点 | 差异点 | 可借鉴 |
141
- |--------|-------|-------|-------|
142
- | {书名} | {点} | {点} | {点} |
143
-
144
- ## 对标登记(多对标时必填;cross-book-recall 跨书召回按此排序与预算)
145
- - 主对标书:{书名;单对标可省,多对标必填}
146
- - 对标书列表:
147
-
148
- | 书名 | 题材类型 | 引用强度{辅/参考} | 用途 |
149
- |------|---------|-----------------|------|
150
- | {书名} | {类型} | {辅/参考} | {文风主对标/结构参考/…} |
151
-
152
- ## 题材框架
153
- - 八节点位置:{当前处于哪个节点}
154
- - 关键转折节点:{列出}
155
- ```
156
-
157
- 创建参考:`long-genre-mechanics.md` (核心梗解析与运用 + 微创新与差异化设计)
158
-
159
- ---
160
-
161
22
  ## 大纲/大纲.md
162
23
 
163
- 全书鸟瞰。顶部为「全书体量与阶段总览」(总章节数/目标字数/全书情绪曲线/阶段划分/各阶段节奏公式/关键节点与钩子链,结构见 [Phase 3:大纲搭建](workflow-setup.md#phase-3大纲搭建)),其后接卷级大纲一段式汇总:
24
+ 全书鸟瞰。顶部为「全书体量与阶段总览」(总章节数/目标字数/全书情绪曲线/阶段划分/各阶段节奏公式/关键节点与钩子链,结构见 [workflow-volume.md](workflow-volume.md)),其后接卷级大纲一段式汇总:
164
25
 
165
26
  ```markdown
166
27
  # 大纲
167
28
 
168
29
  ## 全书体量与阶段总览
169
- {按 Phase 3「全书体量与阶段总览」结构填写}
30
+ {按 workflow-volume.md「全书体量与阶段总览」结构填写}
170
31
 
171
32
  ## 卷级大纲
172
33
  ### 第一卷:{卷名}(约 {X} 万字,{Y} 章)
@@ -211,13 +72,13 @@
211
72
 
212
73
  ## 剧情单元卡(1–3 万字为可调经验值;存于卷纲内;不另建单独文件)
213
74
 
214
- > 剧情单元 = 卷纲里的一级结构单元(见 outline-structure-theory.md「对标节奏迁移」),与下方「对标结构坐标」是同一单元的不同视角,不重复编排。单元长度按本书题材、既有兑现节奏与对标调整,不是硬门槛。规划各关键节点时消费权威文件的“关键节点四问”和期待所有权;无需主角亲自执行每个动作。高潮/兑现后可留短暂低压,以小而可见的收益/奖励承接下一轮压力。引入新地图/机构/能力/敌人/谜团时先检查换书债,不得借新鲜感逃避旧承诺。
75
+ > 剧情单元卡与下方「对标结构坐标」是同一单元的不同视角(见 workflow-volume.md「对标节奏迁移」),不重复编排。单元长度按本书题材、既有兑现节奏与对标调整,不是硬门槛。规划各关键节点时按 `reader-contract-and-progression.md`「契约四问」检查;无需主角亲自执行每个动作。高潮/兑现后可留短暂低压,以小而可见的收益/奖励承接下一轮压力。引入新地图/机构/能力/敌人/谜团时按第 4 问检查,不得借新鲜感逃避旧承诺。
215
76
 
216
- ### 剧情单元 {L卷号-序号}
217
- - 单元ID:{L卷号-序号}
77
+ ### 剧情单元 L{卷号}-{序号}
78
+ - 单元ID:L{卷号}-{序号}(字母 L 开头,如 L1-03;不能写成 1-03,也别和故事线编号 L01 混)
218
79
  - 章节范围:{第A-B章}
219
- - 对标剧情参照:{{书名}《剧情标题》(类型/桥段标签;借什么:结构分布/情节点索引/兑现方式);可列 2-3 条,无对标写「无」;**允许填「自创:{一句话理由}」**——单元内容形态不强制映射对标,自创单元照常过大纲安全七检与批末复核}
220
- - 单元节拍/章功能分配:{建立期待→尝试→加压/转向→决定性行动→兑现→余波;标对应章范围,可按题材删改;建卡时可按「对标剧情参照」剧情单元提炼的共性节拍填写,见 outline-structure-theory.md「按剧情批出细纲」}
80
+ - 对标剧情参照:{{书名}《剧情标题》(类型/桥段标签;借什么:结构分布/情节点索引/兑现方式);可列 2-3 条,无对标写「无」;**允许填「自创:{一句话理由}」**——单元内容形态不强制映射对标,自创单元照常过排纲自查与建纲批末复核}
81
+ - 单元节拍/章功能分配:{建立期待→尝试→加压/转向→决定性行动→兑现→余波;标对应章范围,可按题材删改;建卡时可按「对标剧情参照」剧情单元提炼的共性节拍填写,见 workflow-outline.md「按剧情批出细纲」}
221
82
  - 单元承诺:{本单元向读者建立的情绪命题/期待,以及要偿还的期待债}
222
83
  - 单元情绪引擎:{核心情绪命题→承载对象/情绪缺口→受阻或缺口维持原因→本轮触发→主角不可替代的点火/转化动作→意义变化或可见兑现→题材/契约兑现;承载对象可为人物/关系/目标/规则/场景;不适用环节可写无/即时,但须保持因果闭合;机制按题材选,不强制误解/物件/反转}
223
84
  - 卷级贡献:{它如何服务本卷契约、阶段节奏或卷级目标}
@@ -228,37 +89,28 @@
228
89
  - 兑现方式与归属:{核心兑现如何发生,收益归谁、如何可见}
229
90
  - 本单元主推线/战果:{沿用卷契约划分——主推线1条承担高潮,其余线给战果,一战多得允许}
230
91
  - 本单元在跑的线:{按 L 编号列,主线之外至少 1 条;每条写「L0X 从哪一步推到哪一步」,不重述线本身。本单元不动的线不列}
231
- - 终局底牌边界:{本单元不得动用的未解锁宿敌/真相/身份/金手指上限;碰到就按权威文件透支两问改纲}
92
+ - 终局底牌边界:{本单元不得动用的未解锁宿敌/真相/身份/金手指上限;碰到就按契约四问第 3 问改纲}
232
93
  - 禁止提前释放:{本单元不能提前解决/揭露/升级的内容}
233
94
  - 下一单元因果钩子:{自然推入下一单元的问题、代价、线索或新目标}
234
- - 风险等级:{契约安全 / 需补强 / 契约破坏;需补强时写清补强方式}
95
+ - 契约风险:{契约安全 / 需补强 / 契约破坏;需补强时写清补强方式}
235
96
 
236
- > **段位契约(新建卷纲必须照此写;取段器按此解析)**:每个 `##`/`###`/`####` 标题的**下一行**写一行 `> 作用域:X`,X 取三值之一——
237
- > `卷级常任`(全卷有效,取段器恒定带出)/`单元级 {单元ID}`(只在该单元的闭包里出现)/`批次底稿 {单元ID}|状态:在用|已退役`(排纲期工作底稿,批次完成且有效结论已下沉后改「已退役」,默认不再取出,--history 可查看)。
238
- > 四条纪律:**①全卷常任规则不许写在单元块里**——单元块只写本单元落点+一行指针,规则本文放 `## 全卷常任裁定`(checker 会按「全卷/常任/全程生效」字样报 E4)。
97
+ > **段位契约(新建卷纲必须照此写;取段器按此解析)**:每个 `##`/`###`/`####` 标题的**下一行**写一行 `> 作用域:X`,X 取二值之一——
98
+ > `卷级常任`(全卷有效,取段器恒定带出)/`单元级 {单元ID}`(只在该单元的闭包里出现)。
99
+ > 三条纪律:**①全卷常任规则不许写在单元块里**——单元块只写本单元落点+一行指针,规则本文放 `## 全卷常任裁定`(checker 会按「全卷/常任/全程生效」字样报 E4)。
239
100
  > **②被推翻的内容不留旧文**——改成 `⊘ 已退役 → 见 {何处}` 起头的行,取段器默认不输出,读到的一定是当前有效值。
240
- > **③每批建完把过程性底稿改为「已退役」**。
241
- > **④批次底稿不是写作期输入**——写正文走 `--stage write`,底稿一概不给。底稿里凡有**写作期约束力**的条目(跨章祈使:全程不许/往后任何章/此后不再…),
242
- > **建纲当场就要下沉**到该单元的单元级段(排纲纪律/时间轴/账链)或直接写进细纲;`--check` 的 W1 告警专盯这类句子,逐条确认下沉过再放行。
243
- > 底稿仅用于排纲期(批末交作者裁定、下一批供给自查的输入)。
244
- > 落盘后跑 `outline_view.py --check --strict {卷纲路径}`,问题数归零;读取方式见 SKILL.md「卷纲不整读(取段器)」。
101
+ > **③排纲底稿不进卷纲**——供给自查、建纲追加写在 `大纲/排纲底稿_{单元ID}.md`(模板见文末),底稿里凡有写作期约束力的条目(跨章祈使:全程不许/往后任何章/此后不再…),**建纲当场就写进**该单元的单元级段或细纲。老卷纲里的 `批次底稿 {单元ID}|状态:在用|已退役` 段仍可读(排纲时 `--stage outline` 取出,`--check` 的 W1 告警盯其中的跨章祈使),新卷纲不再写。
102
+ > 落盘后跑 `outline_view.py --check --strict {卷纲路径}`,问题数归零;读取方式见 SKILL.md「卷纲不整读」。取段器输出闭包:全部卷级常任段+该单元的单元级段,逐章表按单元章区间裁行,退役行默认不输出(看历史加 `--history`);未声明作用域的段会被保守纳入并告警。老卷纲里还留着「作用域:批次底稿」段的,排纲时加 `--stage outline` 一并取出,写正文不加。
245
103
 
246
104
  ## 全卷常任裁定
247
105
  > 作用域:卷级常任
248
106
 
249
107
  {对本卷每个剧情单元生效的规则本文写在这里,单元卡与排纲纪律只写落点、不复读规则。编号列出,单元侧按「常任 N +本单元落点」引用}
250
108
 
251
- #### 供给自查(本单元出细纲前产出,见 workflow-setup.md「按剧情批出细纲」步骤 3)
252
- {六行答完落此处:对手供给 / 角色供给 / 能力与金手指供给 / 刻度供给 / 场景与底图供给 / 故事线供给。B 级发明各列一行「发明了什么+落在哪个设定文件」;C 级提案列候选+影响面待作者裁定;无缺口写「无缺口」。批末 `check-outline-contract.js --supply` 验证本小节存在}
253
-
254
- #### 建纲追加(本批建完后回填,见 workflow-setup.md「按剧情批出细纲」步骤 5)
255
- {逐章落笔时才发现的缺口,一条一行,**不与上面六行混写**(批前预见与当场发现分列)。格式:`第 N 章排到哪一步发现缺什么 / A・B・C / 落在哪个设定文件或提案编号`。一条也没有写「无追加」。下一批做供给自查时以本小节为固定输入}
256
-
257
109
  ## 核心矛盾
258
110
  {一句话:本卷要解决什么问题或达到什么目标}
259
111
 
260
112
  ## 对标结构坐标
261
- {有对标书时填;无则写"无对标,按八节点占比自排"。迁移步骤见 outline-structure-theory.md「对标节奏迁移」;对标关键情节优先取自被参照剧情单元的「情节点索引」}
113
+ {有对标书时填;无则写"无对标,按八节点占比自排"。迁移步骤见 workflow-volume.md「对标节奏迁移」;对标关键情节优先取自被参照剧情单元的「情节点索引」}
262
114
  - 主对标卷段:{对标书}第{A}-{B}章(核心矛盾对应:{一句话})
263
115
 
264
116
  | 归一化位置 | 本卷章区间 | 对标关键情节 | 本卷对应(换素材) | 类型{逆转/转折/激励} |
@@ -275,7 +127,7 @@
275
127
  |------|------------|-----------------------------------------|--------------|---------|
276
128
  | 第{N}章 | {高压/推进/修炼试错/关系回收/低压生活/信息整理} | {基调} | {N} | {事件} |
277
129
 
278
- > 章节定位可留空,留空按普通推进章处理(即退化为现状)。情绪强度是情感烈度,和章节定位的爆发压力是两回事——关系/泪目章可低压力但高情绪强度。一卷要有高低层次,低压 + 过场克制(合计不超约 15%,题材分档见 outline-structure-theory.md),别全程同一力度;逐行看相邻章情绪基调,别同一母题连超 2-3 章。章节定位与底线见 outline-structure-theory.md「章节定位与张弛」。
130
+ > 章节定位可留空,留空按普通推进章处理(即退化为现状)。情绪强度是情感烈度,和章节定位的爆发压力是两回事——关系/泪目章可低压力但高情绪强度。一卷要有高低层次,低压 + 过场克制(合计不超约 15%,题材分档见 outline-structure-theory.md),别全程同一力度;逐行看相邻章情绪基调,别同一母题连超 2-3 章。章节定位与底线见 workflow-volume.md「章节定位与张弛」。
279
131
 
280
132
  ## 人物弧线
281
133
  | 角色 | 本卷起点 | 本卷终点 | 关键转变 |
@@ -320,42 +172,12 @@
320
172
 
321
173
  ## 大纲/细纲_第XXX章.md
322
174
 
323
- 细纲是正文写作的章节蓝图,而不是只列事件和钩子的清单。**模板唯一权威副本**见 [Phase 3:大纲搭建](workflow-setup.md#phase-3大纲搭建) 的「细纲(全书每章)」模板(含单元ID/位置、主角目标/关键选择、任务卡点、结构公式、契约风险行,以及不含逐点字数的情节点表格);本文件不再保留模板副本。新建、补建、回填都按权威模板补齐,未知字段写 `[待补充]`,不为补齐字段杜撰副线或人物关系。
324
-
325
- `目标情绪` 与 `主角目标/关键选择` 要写实际内容,不能留 `[待补充]`:隔离实验里只补这两个字段就能复现补齐全部字段的正文收益,补满其余字段与只补这两个不可区分。其余字段未知时仍按上文写 `[待补充]`。
326
-
327
- 落盘后运行 `node scripts/check-outline-contract.js --json --project {书目录} --chapter {N}` 做结构验收:它只判字段、四个小节、五段式、情节点表结构(五列 `# / 情节点 / 功能标签 / 分辨率 / 执行边界`;加分辨率列之前的四列旧表仍收)和字数目标口径是否在场,不判内容好坏。exit 1 时只按 `repair_scope` 补报告点名的字段并复验,最多两轮;仍失败就报告检查 ID 停下,不改其他章。exit 2、脚本缺失或 node 不可用时如实报告验收未完成,不得声称细纲已合规。本检查只在新建/补建/回填时执行;既有项目的旧细纲不因此阻断写正文。
175
+ 模板、字段规则与落盘验收见 [workflow-outline.md](workflow-outline.md)。
328
176
 
329
177
  ---
330
178
 
331
179
  ## 追踪体系
332
180
 
333
- 追踪产物由 `scripts/tracking_commit.py` 统一生成,完整 schema 和事务字段见 [tracking-transaction.md](tracking-transaction.md)。以下文件不得由模型各自追加或局部 Edit:
334
-
335
- ### `追踪/_tracking-state.json`
336
-
337
- 唯一结构化权威状态。记录 schema、最后提交章、导入截止章、`state_revision`、续写上下文结构,以及全部角色、伏笔和时间线当前状态。日更通过 `tracking_commit.py check` 的紧凑输出取章号和修订号,不把完整 state 加入正文 prompt。所有 Markdown 都从本文件确定性派生,程序不反向解析 Markdown。
338
-
339
- ### `追踪/逐章记录/第NNN章.md`
340
-
341
- 本章未来相关连续性记录,目标 ≤1536 字节、硬上限 3072 字节,只含:实际结果、角色变化、伏笔变化、时间/揭示、连续性约束、下一章承诺。过程日志、质检统计、参照章和提示词记录不进入。它不承诺单独无损重建全部当前状态;完整当前语义以 `_tracking-state.json` 为准。
342
-
343
- ### `追踪/伏笔.md`
344
-
345
- 每个 ID 只保留一行当前状态:内容、埋设章、计划回收章、状态、重要度、最近变更章。变化历史由对应逐章增量承担。尚未实际埋设的未来伏笔规划留在大纲;当前表只接受 `已埋 / 已回收 / 已过期 / 放弃`。
181
+ 规划阶段不建 `追踪/`,首次写正文前才初始化;各文件的分工、字段与体积上限见 [tracking-transaction.md](tracking-transaction.md),全部由 `tracking_commit.py` 生成,不得各自追加或局部 Edit。
346
182
 
347
- ### `追踪/角色状态/{角色名}.md`
348
-
349
- 只为核心、会复用角色建立动态快照,含截至章节、身份、位置、当前目标、身心状态、能力资源、关键关系、已知信息和未结事项。目标 ≤4096 字节、硬上限 8192 字节;超过目标先合并失效能力、旧关系和已结事项,不把角色履历塞进当前快照。静态原始人设仍在 `设定/角色/{角色名}.md`;路人、一次性角色不建动态文件。
350
-
351
- ### `追踪/时间线/`
352
-
353
- - `_tracking-state.json.timeline`:同一事件登记故事时间、客观事实、读者当前认知、实际揭示状态/章节。
354
- - `作者真相.md`:从 `_tracking-state.json.timeline` 派生,作者侧可见全部客观事实和认知差。
355
- - `读者已知.md`:从 `_tracking-state.json.timeline` 派生,只显示读者已经知道/相信的内容,不泄露客观真相。
356
-
357
- 未来揭示计划写卷纲/细纲,不写进既成事实登记;`未揭示` 事件的 `reveal_chapter` 必须为空。
358
-
359
- ### `追踪/上下文.md`
360
-
361
- 续写状态卡不超过 12288 字节,固定 7 栏:`当前位置 / 长期约束 / 核心角色状态 / 活跃伏笔 / 近三章速记 / 下一章承诺 / 连贯性风险`。它是当前语义检查点之一;不放文风、质量计数、普通待办、索引统计和长期概要。
183
+ ---
@@ -0,0 +1,75 @@
1
+ # 作者记忆维护
2
+
3
+ [author-memory.md](author-memory.md) 的少见时刻补充:记一条、确认、替换、忘掉和优先级仍按那份协议,本文件只在下列情况读——作者说「整理作者记忆」,或回执 `warnings`/查询 `omitted_ids` 提示超编;写入因 `作者画像.md` 写满失败;书根就是工作区,或工具报 `state.book`、单书布局错误;要做存量迁移 `migrate`、多事件原子 `commit`、派生视图 `check`;冲突候选要落定;碰到升级前留下的旧条目。
4
+
5
+ 作者记忆借鉴“原始证据 → 候选 → 已确认画像 → 变更记录”的记忆管道,但把决定权留给作者。
6
+
7
+ ## 文件
8
+
9
+ ```text
10
+ {工作区}/.story/作者记忆/ # 项目级 store:global / genre / workflow 条目,编号 AP
11
+ ├── _author-memory-state.json # 唯一结构化权威
12
+ ├── 作者画像.md # 仅 active,供作者查看与管理
13
+ ├── 待确认.md # pending / conflict,不参与约束
14
+ └── 变更记录.md # 最近 100 次、最新在前的事务记录
15
+ {书}/.story/作者记忆/ # 书级 store:只存这本书的 book 条目,编号 BP,同样四个文件
16
+ ```
17
+
18
+ 三个 Markdown 文件都从 state 确定性生成,禁止手改;完整历史保留在 state,变更记录只展示最近 100 次。`作者画像.md` 是人类管理视图,普通写作 agent 不整份注入,而是调用 `query` 取得本次相关的紧凑上下文。
19
+
20
+ ## 任务映射表
21
+
22
+ 各 skill 入口的 `query` 命令按此表选 kind;写入时的预算提醒也按这四类任务组合估算。
23
+
24
+ | 任务 | query kinds | 注入位置 |
25
+ |---|---|---|
26
+ | 正文初稿 / 续写 | `prose_style` + `story_design` | 主会话与实际正文 agent |
27
+ | 去 AI 味 / 改写 | `prose_style` | 主会话与实际改写 agent |
28
+ | 设定 / 大纲 | `story_design` + `workflow` + `interaction` | 主会话,不传正文 agent |
29
+ | 审稿 | `delivery` + `interaction` + 必要的 `prose_style` | 主会话,不降低 rubric |
30
+
31
+ 审稿匹配项只用于交付格式、协作方式和“作者有意采用的表达选择”说明;问题严重度和 PASS/FAIL 仍由 rubric 决定。
32
+
33
+ ## 注入预算与容量
34
+
35
+ - **写入不因注入预算失败**:`record` / `commit` 照常成功、给回执;工具按上表四类任务组合估算最坏查询情形(全局条目+各 scope 维度最重的单一切片,切片按大小写无关归并、轻重按写作时真正读到的字段算,与真实查询同一把尺),装不进 2048 字节的组合在返回的 `warnings` 里点名将被略过的条目及其断言首句。
36
+ - 写入落盘后另一级 store 读不出来(书目录不存在、`--book` 与书级记录不符等)也照常给回执,`warnings` 注明本次提醒没算上它。写书级条目时「本书+全局」按实际条目精确计算;写项目级条目时只看得到项目级 store,顺手传 `--book-root` 就把当前这本书也算进提醒。
37
+ - 查询按 **重要度 → 本书例外 → 最近更新** 排序装填(同一范围的条目必在同一 store,「最近」按该 store 的修订号比,不跨 store 比较),先丢的恒是重要度较低的条目——`importance` 决定超编时谁留在 prompt 里。装不下的条目跳过而不中断(一条长的不挡后面的短条),漏下的 ID 按同一优先级报进 `omitted_ids`(最多列 20 条,`omitted` 是真实总数)。
38
+ - 注入预算之外还有一道硬上限:`作者画像.md` 超过 12288 字节时写入会直接失败并要求先整理。active 条目攒到几十上百条才会碰到(远在注入预算之后),碰到就走「整理作者记忆」;`forget` 这类减量操作在满编时照常可用。
39
+
40
+ ## 整理作者记忆
41
+
42
+ 作者说「整理作者记忆」,或回执 `warnings`/查询 `omitted_ids` 提示超编、写入因画像写满失败时:读项目级与当前书的 `作者画像.md`(每条都标了范围、重要度、把握和确认次数,重要度就是超编时的去留依据),提出合并同义条(`replace` 多合一)、退役过时条(`forget`)、给错标成 `high` 的条目下调重要度、把超长断言压缩成一句话的提案;项目级画像里还有「本书:」条目时,「对该书运行 `migrate --book-root`」列为默认提案项。清单用原话逐条列给作者确认(编号只放括号里),确认后按 store 各汇成一份 `commit` 事务提交(一份事务只写一个 store)。合并时保住每条的否定词、限定词和适用范围——合不动就退役其中一条,不要靠删限定词把两条凑成一条。整理只由作者发起或确认,不自动执行。
43
+
44
+ ## 冲突候选
45
+
46
+ 冲突候选(`conflict`)不能绕过旧规则直接 `decide=activate`。作者选新说法:用 `replace`,`old_ids` 同时列旧 active 条目和这条冲突候选,新条目直接 active、两条旧的标 `superseded`;作者留旧规则:对候选 `decide=reject`。旧条目被 `replace` / `forget` 撤下后,它不再是任何候选的冲突对象,冲突对象清空的候选退回 `pending`。
47
+
48
+ ## 单书布局
49
+
50
+ 书根就是工作区(`--book-root` 与 `--workspace` 同一目录)时,书级 store 改住 `{工作区}/.story/作者记忆/书级/`,与项目级各自一份 state;首次建立的书名优先取项目级存量本书条目里唯一的书名,再取目录名。旧版曾把书级 state 写在项目级位置,此后项目级读写都报 `state.book`;带 `--book-root {工作区}` 运行任一命令(含 `query`)会先把它原样移进 `书级/`,不改内容。这个目录其实是某个工作区里的一本书时(上一层叫 `长篇/` 或 `短篇/`,或某个祖先有 `.active-book` 或项目级 state),工具直接报错、不动任何文件,按报错改传 `--workspace`。
51
+
52
+ ## 存量迁移
53
+
54
+ 不做双读:升级前写进项目级 store 的 book 条目不再参与查询与预算估算,也不再接受新的 book 写入;它们仍在 `作者画像.md` 里可见、可 `decide` / `forget`。对每本书运行一次 `migrate --book-root {书目录}` 即可整批搬回来:断言、证据、确认次数、重要度原样保留,换成 `BP` 编号,原 `AP` 条目标 `superseded` 并注明去向;与全局条目的冲突关系在迁移后不再成立,这类候选退回 `pending`。书级每个源条目一笔事务,重跑只补没做完的一半。「整理作者记忆」看到项目级画像里还有「本书:」条目时,把迁移列为默认提案项。
55
+
56
+ ## 旧条目
57
+
58
+ - 升级前写下的长断言不受 120 字节新建上限约束:原样重申它会**强化**原条目(确认次数 +1),不会因超长被拒;只有真正新建条目才校验 120 字节。
59
+ - 存量 state 里推断类旧来源的条目照常可读、可确认、可退役;新写入仍只接受 `explicit_user`、`accepted_suggestion`、`manual`。
60
+
61
+ ## 其他命令
62
+
63
+ 先依次尝试 `python3`、`python`、`py -3` 找到 Python 3,再从当前 skill 根运行本地副本(`record` / `query` 见 author-memory.md):
64
+
65
+ ```text
66
+ {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py init --workspace {工作区} [--book-root {书目录}]
67
+ {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py commit --workspace {工作区} [--book-root {书目录}] --input {工作区}/.story/work/作者记忆-事务.json
68
+ {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py migrate --workspace {工作区} --book-root {书目录}
69
+ {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py check --workspace {工作区} [--book-root {书目录}]
70
+ ```
71
+
72
+ - `commit`:高级批量入口,只在需要把多个动作绑定成一次原子提交时用(如整理作者记忆)。顶层传 `schema_version`、唯一 `transaction_id`、当前 `expected_state_revision` 和含 1–32 项的 `operations`(每项与单事件的 `operation` 同形)。一份事务只写一个 store;先在内存完成 schema、引用、容量和所有视图校验,操作按数组顺序应用,任一步失败则整份事务零写入,最后原子替换 state。过期修订会在任何写入前失败。事务文件在成功前必须保留,成功后删除;显式记忆请求按 author-memory.md「回执怎么告诉作者」转告。
73
+ - `migrate`:把项目级 store 里某本书的存量 book 条目整批搬进 `--book-root` 的书级 store,幂等,中途失败直接重跑;返回 `migrated`(源→新编号),没有存量时为空。
74
+ - `check`:从 state 重建并逐字核验所有派生视图;传 `--book-root` 时两级一起核验。
75
+ - `init`:显式初始化 store;平常不需要,首次 `record` 会随事务创建。
@@ -1,6 +1,6 @@
1
1
  # 作者记忆协议
2
2
 
3
- 作者记忆用于保存跨会话复用的创作偏好,不保存小说世界里的事实。它借鉴“原始证据 → 候选 → 已确认画像 → 变更记录”的记忆管道,但把决定权留给作者。
3
+ 作者记忆保存跨会话复用的创作偏好,不保存小说世界里的事实,决定权留给作者。本文件管最常见的时刻:作者说出一条偏好,或要确认、替换、忘掉某条。少见情况读 [author-memory-maintenance.md](author-memory-maintenance.md):整理作者记忆与超编、画像写满、单书布局与 `state.book` 报错、存量迁移、多事件 `commit`、`check`、冲突候选落定、升级前的旧条目。
4
4
 
5
5
  ## 边界与优先级
6
6
 
@@ -17,95 +17,73 @@
17
17
 
18
18
  作者记忆不能把本书事实写进 `.story/作者记忆/`,不能覆盖当前请求,不能降低审稿 rubric,也不能让去 AI 味改动剧情意图。小说事实继续由各书的 `追踪/` 和 `设定/` 管理。
19
19
 
20
- ## 文件与所有权
20
+ ## 存放与路由
21
21
 
22
- 工作区级目录:
22
+ 两级 store,记忆随书走:`{工作区}/.story/作者记忆/` 存 global / genre / workflow 条目(编号 `AP`),`{书}/.story/作者记忆/` 只存本书的 book 条目(编号 `BP`)。每级各有 `作者画像.md`(生效条目)和 `待确认.md`(候选,不参与约束),都从 state 生成,禁止手改;不存在时写作、审稿、去味照常继续,首次 `record` 自动创建。
23
23
 
24
- ```text
25
- {工作区}/.story/作者记忆/
26
- ├── _author-memory-state.json # 唯一结构化权威
27
- ├── 作者画像.md # 仅 active,供作者查看与管理
28
- ├── 待确认.md # pending / conflict,不参与约束
29
- └── 变更记录.md # 最近 100 次、最新在前的事务记录
30
- ```
31
-
32
- 三个 Markdown 文件都从 state 确定性生成,禁止手改;完整历史保留在 state,变更记录只展示最近 100 次。`作者画像.md` 是人类管理视图,普通写作 agent 不整份注入,而是调用 `query` 取得本次相关的紧凑上下文。`query` 要显式传 `--book`、已知的 `--genre` / `--workflow`;只传 kind 不会返回本书或题材项。作者记忆不存在时,普通写作、审稿和去味任务直接继续,不自动初始化空目录;首次 `record` 会随事务创建。
33
-
34
- 工作区必须显式传给脚本。优先使用已经包含 `.story/作者记忆/` 的最近祖先;首次初始化时使用承载多本书、`.active-book`、`长篇/`、`短篇/` 或 `拆文库/` 的创作工作区根。不要把用户主目录当默认工作区。
35
-
36
- ## 什么时候读取
37
-
38
- 长篇、短篇、去 AI 味开始前,如果 state 已存在,用 `query` 按本书、题材、流程和类型筛选 active 条目。查询输出固定不超过 2048 字节。不要先查询全部再让 agent 自行筛选,按任务直接选择 kind:
24
+ - `--workspace` 必须显式传,指创作工作区根——承载多本书、`.active-book`、`长篇/`、`短篇/` 或 `拆文库/` 的那一层;已有记忆时,是项目级 state(不带 `book` 字段)所在的最近祖先。`长篇/`、`短篇/` 下的书目录永远不当 `--workspace`,也不要把用户主目录当默认工作区。
25
+ - `--book-root` 是当前书的项目目录(`.active-book` 指向、或含 `设定/`、`正文/` 的那一层,如 `{工作区}/长篇/{书名}/`);书名默认取书级 state 记的名字,首次取目录名,`--book` 可覆盖。书根就是工作区时读维护文件「单书布局」。
26
+ - ID 前缀就是 store:`decide` / `forget` 看 `item_id`(`AP` 项目级,`BP` 书级),`remember` / `replace` 看 `scope.level`(`book` 书级,其余项目级)。书级操作必须传 `--book-root`,没传直接报错,不会退而写进项目级。
27
+ - `replace` 与 `conflicts_with` 不能跨 store:本书例外按优先级覆盖全局规则,不算冲突,直接 `remember` 为 book 条目;要把全局规则改成本书规则,拆成 `forget` + `remember` 两个事件。
39
28
 
40
- | 任务 | query kinds | 注入位置 |
41
- |---|---|---|
42
- | 正文初稿 / 续写 | `prose_style` + `story_design` | 主会话与实际正文 agent |
43
- | 去 AI 味 / 改写 | `prose_style` | 主会话与实际改写 agent |
44
- | 设定 / 大纲 | `story_design` + `workflow` + `interaction` | 主会话,不传正文 agent |
45
- | 审稿 | `delivery` + `interaction` + 必要的 `prose_style` | 主会话,不降低 rubric |
29
+ ## 查询
46
30
 
47
- 审稿匹配项只用于交付格式、协作方式和“作者有意采用的表达选择”说明;问题严重度和 PASS/FAIL 仍由 rubric 决定。
31
+ 各 skill 入口已写好本任务的 `query` 命令(长篇正文由组装脚本代查);没写命令的长篇设定、大纲等任务查 `story_design` + `workflow` + `interaction`,结果只给主会话、不传正文 agent。四类任务的映射表见维护文件。state 存在才查(两级都不存在时返回空结果、零写入);结果合并项目级与 `--book-root` 所指书级(不传就拿不到本书条目),`--kind` 必传,输出不超过 2048 字节。
48
32
 
49
- 待确认项不进入 prompt 约束,也不应为了确认它们中断当前任务。只有用户主动查看作者画像、候选积累到适合回顾的节点,或新偏好与 active 条目冲突时,才集中呈现。
33
+ 普通创作只做一次本地 `query`,完整画像、证据、候选和 journal 不进 prompt。查询项是低优先级倾向,不是逐条打卡清单:自然吸收,不复述画像、不刻意提高词面命中率,不为命中牺牲连贯、节奏、字数或本书既定笔调。**`omitted_ids` 非空=记忆超编**,不是「没有更多了」:转告作者并建议「整理作者记忆」,不得改读完整画像规避预算。待确认项不进 prompt,也不为确认它们中断任务;只在作者主动查看、候选积累到适合回顾的节点,或新偏好与 active 条目冲突时集中呈现。
50
34
 
51
- ## 可靠性与负荷边界
35
+ ## 记不记、记成什么
52
36
 
53
- - 明确“记住 / 确认 / 替换 / 忘掉”的请求走单事件 `record`,不要求 agent 手工读取修订号或拼多操作事务。成功响应会给出 `Author Memory Receipt: rN · APxxx`;没有回执就不得声称“已经记住”。
54
- - 普通创作只做一次本地 `query`,没有 state 时返回空结果且不创建文件;有记忆时也只返回相关 active 条目,硬上限 2048 字节。完整画像、证据、候选和 journal 不进入正文 prompt。
55
- - 查询项是低优先级倾向,不是逐条打卡清单。自然吸收即可,不复述画像、不刻意提高词面命中率,也不得为命中偏好牺牲正文连贯、节奏、字数或本书既定笔调。
56
- - 不安装会记录全部用户消息的 prompt hook。自然语言是否属于长期习惯仍需 agent 判断;这样不能承诺隐式偏好 100% 捕获,但避免把一次性要求、私人对话和小说事实静默写入长期记忆。需要确定写入时,用户可明确说“记住:……”,并以回执验收。
57
-
58
- ## 捕获判定
37
+ 不装记录全部用户消息的 prompt hook,不在作者没开口时观察他,只记作者明确表达的偏好。是否属于长期习惯由 agent 判断,拿不准就只执行不记录;作者可明说“记住:……”,以回执验收。
59
38
 
60
39
  | 输入证据 | 处理 |
61
40
  |---|---|
62
41
  | “以后都这样”“我一直习惯……”等直接、稳定、范围清楚的原话 | `active`,`source=explicit_user` |
63
42
  | 用户明确接受助手提出的长期做法 | `active`,`source=accepted_suggestion` |
64
- | 同类修改反复出现,但用户没说这是长期规则 | `pending`,`source=repeated_correction` |
65
- | 从成稿或操作轨迹推断出的模式 | `pending`,`source=inferred_pattern` |
43
+ | 作者原话像长期偏好但范围或稳定性含糊 | `pending`,取当前最窄合理范围;待确认只来自作者自己的话 |
44
+ | 同类修改反复出现、从成稿或操作轨迹看出的模式 | 不记录、不推断;作者没开口的偏好不进记忆 |
66
45
  | “这一章别……”“这次给我……”等一次性要求 | 只执行,不记录 |
67
46
  | 角色、时间线、伏笔、世界观、当前剧情走向 | 写项目设定/追踪,不写作者记忆 |
68
47
  | 助手自己生成的文字、默认模板、工具告警、rubric 结论 | 不自我学习 |
69
48
 
70
- 保留用户的否定词、限定词和适用范围,`quote` 写原话,`assertion` 只做不改变语义的紧凑归纳。范围规则:
49
+ 保留否定词、限定词和适用范围:`quote` 写原话,`assertion` 只做不改变语义的紧凑归纳,**新建条目限一句话(≤120 字节,约 40 个字)**,写不下就压缩措辞、不切限定词;背景写进 `reason`(不进 prompt),不另开字段。
50
+
51
+ **一条偏好就是一条记录,例外和限定不许拆出去单列。** 「以后少用破折号,对话里也别用,除非表示打断」整条写成「破折号少用、对话里也不用,只在表示打断时保留」:超编时条目逐条被丢,拆开就可能只丢掉例外,把作者说过的限定变成绝对禁令。只有原话塞了**几条互不依赖**的偏好(如「多用短句」+「章末留钩子」)才拆。
52
+
53
+ 范围:“本书 / 这个角色 / 这次连载” → `book`;“都市文 / 这类题材” → `genre`;交稿、检查、确认节奏等操作习惯 → `workflow`;“以后 / 一贯 / 我习惯”且无更窄限定 → `global`;含糊但可能稳定 → 最窄合理范围并置 `pending`。
71
54
 
72
- - “本书 / 这个角色 / 这次连载” → `book`;
73
- - “都市文 / 这类题材” → `genre`;
74
- - 交稿、检查、确认节奏等操作习惯 → `workflow`;
75
- - “以后 / 一贯 / 我习惯”且无更窄限定 → `global`;
76
- - 范围含糊但可能稳定 → 取当前最窄合理范围并置 `pending`。
55
+ 类型:`prose_style`、`story_design`、`workflow`、`delivery`、`interaction`。置信度与重要度均为 `low | medium | high`;超编时先丢重要度低的,按偏好的实际分量填,不要一律 `high`。`source` 只接受 `explicit_user`、`accepted_suggestion`、`manual`,工具拒绝推断类来源。
77
56
 
78
- 类型可选:`prose_style`、`story_design`、`workflow`、`delivery`、`interaction`。置信度与重要度均为 `low | medium | high`。
57
+ ## 确认、替换、忘掉与冲突
79
58
 
80
- ## 冲突、撤回与强化
59
+ - 同一类型、范围、归纳文本再出现,脚本强化原条目(累加证据与确认次数),不重复建条。
60
+ - 新偏好与同一 store 的 active 条目矛盾:以 `conflict` 记候选,`conflicts_with` 列冲突 ID,本轮仍按当前要求执行;本书例外与全局规则不算冲突。冲突候选不能直接 activate,落定见维护文件「冲突候选」。
61
+ - pending 用 `decide=activate|reject`。同一范围的规则改版用 `replace`,新条目启用、旧条目标 `superseded`;只有作者明确撤销或改变旧规则范围才跨范围替换。
62
+ - 作者说“忘掉 / 这不再是我的习惯”用 `forget`,保留历史证据但不再加载。active 条目的语义不可原地偷改,语义变化必须 replace,历史才可审计。
81
63
 
82
- - 同一类型、范围、归纳文本再次出现时,脚本强化原条目,累加证据和确认次数,不重复建条目。
83
- - 新偏好与 active 条目矛盾时,先以 `conflict` 记候选,并在 `conflicts_with` 列出冲突 ID;当前任务仍按本轮明确要求执行。
84
- - 同一范围的规则改版用 `replace`,启用新条目并将旧条目标成 `superseded`。本书例外用 `remember` 新建 book 条目,保留 global 习惯;只有作者明确撤销或改变旧规则范围时才跨范围替换。
85
- - pending 可以用 `decide=activate|reject`;冲突候选不能绕过旧规则直接 activate。
86
- - 作者说“忘掉 / 这不再是我的习惯”时用 `forget`,保留历史证据但不再加载。
87
- - active 条目的语义不可原地偷改;语义变化必须 replace,历史才可审计。
64
+ ## 回执怎么告诉作者
65
+
66
+ 回复就两行纯文本,不加代码块或引用格式:第一行用一句人话说记住了什么、管哪本书或哪类场合,如「记住了:《{书名}》的对话一律用「」,以后写这本书都照这个来;想改随时说。」;第二行是机器回执作凭证,如「技术备注:Author Memory Receipt: r1 · BP001」。
67
+
68
+ - 确认、替换、忘掉同理:「好,这条生效了:……」「换成了:……,原来的「……」不再用」「忘掉了:……」。只进待确认时说「这条先记在待确认里,你说"确认"才生效」;有冲突时用原话说明跟哪条旧习惯冲突。
69
+ - `warnings` / `omitted_ids` 不原样贴:说「你的习惯攒得有点多,写正文时这几条可能顾不上:「……」」,并建议说「整理作者记忆」。不提字节、prompt、kind、scope;编号只能跟着原话出现。
88
70
 
89
71
  ## 运行工具
90
72
 
91
- 先依次尝试 `python3`、`python`、`py -3` 找到 Python 3,再从当前 skill 根运行本地副本:
73
+ 依次尝试 `python3`、`python`、`py -3` 找到 Python 3,从当前 skill 根运行本地副本:
92
74
 
93
75
  ```text
94
- {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py init --workspace {工作区}
95
- {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py record --workspace {工作区} --input {单事件.json}
96
- {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py query --workspace {工作区} [--kind prose_style] [--book {书名}] [--genre {题材}] [--workflow {流程}]
97
- {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py commit --workspace {工作区} --input {事务.json}
98
- {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py check --workspace {工作区}
76
+ {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py record --workspace {工作区} [--book-root {书目录}] --input {工作区}/.story/work/作者记忆-事件.json
77
+ {PYTHON} {当前 skill 根}/scripts/author_memory_commit.py query --workspace {工作区} --book-root {书目录} --kind {类型}(必传,可重复) [--genre {题材}] [--workflow {流程}]
99
78
  ```
100
79
 
101
- - `record`:常用单事件入口,自动读取当前修订、首次自动初始化;`event_id` 相同且内容相同会幂等返回原回执,内容不同会失败。
102
- - `query`:只读相关 active 条目;`--kind` 可重复,不存在 state 时返回空结果且零写入。返回的 `omitted > 0` 时收窄 kind / book / genre / workflow 后重查,不得改读完整画像规避预算。
103
- - `commit`:高级批量入口;先在内存完成 schema、引用、容量和所有视图校验,最后原子替换 state。事务文件在成功前必须保留;过期修订会在任何写入前失败。
104
- - `check`:从 state 重建并逐字核验所有派生视图。
80
+ - 子命令都可加 `--book {书名}`;写某本书时一律带 `--book-root`。事件 JSON 写在 `{工作区}/.story/work/`(不写系统 `/tmp`),成功后删掉;book 条目的 `scope.value` 填书名(书级 store 已记的名字,首次取目录名)。
81
+ - 明确的“记住 / 确认 / 替换 / 忘掉”都走单事件 `record`:自动读该 store 当前修订、首次自动初始化,不手工读修订号或拼多操作事务。同一 `event_id` 同内容幂等返回原回执,内容不同则失败;返回的 `store` / `book` 说明写到了哪一级。
82
+ - 成功才有 `Author Memory Receipt: rN · APxxx`,没有回执不得声称“已经记住”。**写入不因注入预算失败**:`warnings` 只是提醒(另一级 store 读不出来也在这里注明),按上节转告;有回执就是已记住,不要换 `event_id` 重试。
105
83
 
106
- ## 事务格式
84
+ ## 事件格式
107
85
 
108
- 常用单事件新增或强化:
86
+ 新增或强化(`record` 输入;book 范围传 `--book-root`):
109
87
 
110
88
  ```json
111
89
  {
@@ -117,11 +95,11 @@
117
95
  "kind": "prose_style",
118
96
  "scope": {"level": "global", "value": null},
119
97
  "assertion": "对话尽量短,用动作承接情绪,不用大段解释",
120
- "quote": "以后对话都短一点,情绪放动作里,别让角色长篇解释。",
121
- "source_ref": "conversation:2026-08-25",
122
- "source": "explicit_user",
123
- "confidence": "high",
124
- "importance": "high",
98
+ "quote": "以后对话都短一点,情绪放动作里,别让角色长篇解释。",
99
+ "source_ref": "conversation:2026-08-25",
100
+ "source": "explicit_user",
101
+ "confidence": "high",
102
+ "importance": "high",
125
103
  "status": "active",
126
104
  "reason": "用户以“以后”明确声明长期偏好",
127
105
  "conflicts_with": []
@@ -130,36 +108,10 @@
130
108
  }
131
109
  ```
132
110
 
133
- 把文件交给 `record`。待确认项的 `status` 用 `pending`;冲突候选用 `conflict` 并填写 active ID。确认或拒绝候选时,把下列对象作为新事件的 `operation`:
111
+ 待确认用 `"status": "pending"`;冲突候选用 `conflict` 并填同一 store 的 active ID。确认、替换、忘掉时,把下列对象换进新事件的 `operation`(`BP` 编号传 `--book-root`);`replace.preference` 字段同上但不传 `status`、`conflicts_with`,新条目直接 active:
134
112
 
135
113
  ```json
136
114
  {"action":"decide","item_id":"AP002","decision":"activate","quote":"对,这就是我的长期习惯。","reason":"作者明确确认"}
137
- ```
138
-
139
- 用新规则替代一个或多个旧条目时,`replace.preference` 与上例字段相同,但不传 `status`、`conflicts_with`,新条目直接 active;下列对象同样作为 `operation`:
140
-
141
- ```json
142
- {
143
- "action": "replace",
144
- "old_ids": ["AP001"],
145
- "preference": {
146
- "kind": "prose_style",
147
- "scope": {"level": "global", "value": null},
148
- "assertion": "以后对话允许更长的试探,但避免解释设定",
149
- "quote": "把以前对话都要短的习惯替换掉:以后可以让对话慢一点,多试探,但还是别拿台词讲设定。",
150
- "source_ref": "conversation:2026-08-25",
151
- "source": "explicit_user",
152
- "confidence": "high",
153
- "importance": "high",
154
- "reason": "作者明确替换原有全局规则,不是新增本书例外"
155
- }
156
- }
157
- ```
158
-
159
- 撤回条目的 `operation`:
160
-
161
- ```json
115
+ {"action":"replace","old_ids":["AP001"],"preference":{"kind":"prose_style","scope":{"level":"global","value":null},"assertion":"以后对话允许更长的试探,但避免解释设定","quote":"……","source_ref":"conversation:2026-08-25","source":"explicit_user","confidence":"high","importance":"high","reason":"作者明确替换原有全局规则,不是新增本书例外"}}
162
116
  {"action":"forget","item_id":"AP003","quote":"忘掉这个偏好。","reason":"作者明确撤回"}
163
117
  ```
164
-
165
- 需要把多个动作绑定成一次原子提交时才用高级 `commit`:顶层传 `schema_version`、唯一 `transaction_id`、当前 `expected_state_revision` 和含 1–32 项的 `operations`。操作按数组顺序应用,任一步失败则整份事务零写入。成功后删除临时输入文件;显式记忆请求还要把工具返回的回执原样告诉用户。
@@ -6,7 +6,7 @@
6
6
 
7
7
  ## 默认优先检查的句式(先对照本书文风)
8
8
 
9
- 写网文最毒的 AI 句式,作者一旦养成就会反复出现。Gate A 第一遍扫描必须命中:
9
+ 写网文最毒的 AI 句式,作者一旦养成就会反复出现。以下是优先检查的句式:
10
10
 
11
11
  | 毒级 | 句式 | 错误例 | 修法 |
12
12
  |------|------|--------|------|
@@ -21,7 +21,7 @@
21
21
  | ★★★ | 抽象命运/开端收束:"命运……棋局/獠牙" / "这一刻终于明白" / "反击才刚刚开始" | "命运终于露出獠牙;属于他的反击才刚刚开始" | 回到角色当下可见的文件、动作、对话或物理后果 |
22
22
  | ★★ | 章末预告 "他不知道的是……" | "他不知道的是,更大的风暴即将来临" | 用具体钩子物件/事件收束,避免空泛预告 |
23
23
 
24
- > 凡命中 ★★★★★ 一处即视为重度AI味的强证据;★★★★ 命中 ≥2 处即触发中度复扫。
24
+ > ★★★★★ 命中一处就要改;轻/中/重分档只按去 AI 味诊断的密度指标定。
25
25
 
26
26
  `check-ai-patterns.js` 的 `formulaic-parallelism` 还会提示「至于X不X,怎么X」和同动词「不V A,不V B」。这两类可能是功能性口语,因此只做 advisory;Gate B 必须连同台词读语境复核,若只是复述细纲/前文就压成一次判断,不能因 hook 豁免台词而跳过。
27
27