@oh-story/dsh 0.1.4 → 0.1.5
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.
- package/README.md +56 -12
- package/lib/client.js +2692 -268
- package/lib/client.js.map +4 -4
- package/lib/drama/manifest.json +136 -101
- package/lib/drama/skills/short-drama/SKILL.md +61 -1
- package/lib/drama/skills/short-drama/references/contract-and-ownership.md +7 -4
- package/lib/drama/skills/short-drama/references/creator-documents.md +133 -8
- package/lib/drama/skills/short-drama/references/creator-workflow.md +38 -2
- package/lib/drama/skills/short-drama/references/knowhow-index.md +3 -0
- package/lib/drama/skills/short-drama/references/reference-roles.md +10 -7
- package/lib/drama/skills/short-drama/references/runtime-preflight.md +3 -0
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
- package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
- package/lib/drama/skills/short-drama-assets/SKILL.md +13 -3
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
- package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +2 -1
- package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +19 -0
- package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +6 -2
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +4 -3
- package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +1 -1
- package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +1 -1
- package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +3 -1
- package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
- package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
- package/lib/drama/skills/short-drama-produce/SKILL.md +46 -10
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
- package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
- package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
- package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +12 -0
- package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +76 -7
- package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +6 -2
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
- package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +5 -2
- package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +16 -0
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +8 -3
- package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +81 -13
- package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
- package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +21 -1
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -6
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +11 -7
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +5 -2
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
- package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
- package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
- package/lib/drama/skills/short-drama-write/SKILL.md +3 -2
- package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
- package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
- package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
- package/lib/index.js +865 -33
- package/lib/index.js.map +4 -4
- package/lib/novel-to-game/LICENSE +21 -0
- package/lib/novel-to-game/README.md +180 -0
- package/lib/novel-to-game/README_ZH.md +178 -0
- package/lib/novel-to-game/VERSION +1 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
- package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
- package/lib/novel-to-game/manifest.json +508 -0
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
- package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
- package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
- package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
- package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
- package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
- package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
- package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
- package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
- package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
- package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
- package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
- package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
- package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
- package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
- package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
- package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
- package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
- package/lib/oh-story/manifest.json +415 -305
- package/lib/oh-story/roles/consistency-checker.md +1 -1
- package/lib/oh-story/roles/narrative-writer.md +32 -33
- package/lib/oh-story/roles/story-architect.md +16 -26
- package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
- package/lib/oh-story/skills/story/SKILL.md +16 -9
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
- package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-import/SKILL.md +19 -10
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
- package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
- package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
- package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
- package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
- package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
- package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
- package/lib/oh-story/skills/{story-setup/references/agent-references/genre-core-mechanics.md → story-long-write/references/long-genre-mechanics.md} +1 -1
- package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-long-write/references/long-reversal.md} +18 -32
- package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +14 -14
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-review/SKILL.md +26 -17
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-setup/SKILL.md +74 -33
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
- package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
- package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
- package/lib/oh-story/skills/{story-long-write/references/genre-core-mechanics.md → story-setup/references/agent-references/long-genre-mechanics.md} +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → long-reversal.md} +18 -32
- package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
- package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
- package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
- package/lib/oh-story/skills/{story-long-write/references/reversal-toolkit.md → story-setup/references/agent-references/short-reversal.md} +29 -23
- package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
- package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +55 -55
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
- package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
- package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
- package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
- package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
- package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
- package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
- package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +6 -6
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +7 -7
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +32 -44
- package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
- package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
- package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
- package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
- package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
- package/lib/types/client/drama-production-view.d.ts +34 -0
- package/lib/types/client/drama-production-view.d.ts.map +1 -0
- package/lib/types/client/drama-production.d.ts +92 -0
- package/lib/types/client/drama-production.d.ts.map +1 -0
- package/lib/types/client/file-activity.d.ts +4 -2
- package/lib/types/client/file-activity.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/production-intents.d.ts +9 -0
- package/lib/types/client/production-intents.d.ts.map +1 -0
- package/lib/types/client/production-prompts.d.ts +9 -0
- package/lib/types/client/production-prompts.d.ts.map +1 -0
- package/lib/types/client/production-runtime.d.ts +58 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -0
- package/lib/types/client/video-studio.d.ts +41 -0
- package/lib/types/client/video-studio.d.ts.map +1 -0
- package/lib/types/client/workbench-ui.d.ts +5 -0
- package/lib/types/client/workbench-ui.d.ts.map +1 -0
- package/lib/types/game-verification.d.ts +16 -0
- package/lib/types/game-verification.d.ts.map +1 -0
- package/lib/types/index.d.ts +3 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/production-intent.d.ts +21 -0
- package/lib/types/production-intent.d.ts.map +1 -0
- package/lib/types/production-tool.d.ts +5 -0
- package/lib/types/production-tool.d.ts.map +1 -0
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts +7 -0
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/types/video-project.d.ts +42 -0
- package/lib/types/video-project.d.ts.map +1 -0
- package/lib/types/workspace-request-trust.d.ts +6 -0
- package/lib/types/workspace-request-trust.d.ts.map +1 -1
- package/lib/types/workspace-route.d.ts +20 -0
- package/lib/types/workspace-route.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +282 -0
- package/lib/video-recap/LICENSE +21 -0
- package/lib/video-recap/README.en.md +257 -0
- package/lib/video-recap/README.md +255 -0
- package/lib/video-recap/manifest.json +684 -0
- package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
- package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
- package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
- package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
- package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
- package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
- package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
- package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
- package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
- package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
- package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
- package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
- package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
- package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
- package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
- package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
- package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
- package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
- package/lib/video-recap/skills/video-script/SKILL.md +248 -0
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
- package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
- package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
- package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
- package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
- package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
- package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
- package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
- package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
- package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
- package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
- package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
- package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
- package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
- package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
- package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
- package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
- package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
- package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
- package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
- package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
- package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
- package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
- package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
- package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
- package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
- package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
- package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
- package/package.json +55 -40
- package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
- package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
- package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
- package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
- package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
- package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
- package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
- package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
- /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
- /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
|
|
38
38
|
`追踪/伏笔.md`、`追踪/时间线/`、`追踪/逐章记录/` 默认不整份读取。续写状态卡没有某个旧信息时,才按「旧信息查找步骤」定点查询。
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
**按需加载**:需要期待感、爽点或信息差约束时,加载 `references/plot-emotion-system.md`、`references/plot-core-methods.md` 或当前 `references/genre-prose-cards/` 题材卡。默认不全量加载。
|
|
41
41
|
|
|
42
42
|
### 续写状态卡与追踪事务
|
|
43
43
|
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
|
|
70
70
|
**批量 continuation 规则**:进入本 Step 后,"继续"/"续写"/"日更"只表示继续当前日更批量流程。不得把这些词解释为跳过「状态筛选」或「对标模块/节奏/题材卡/文风召回」的直接正文续写;也不得在每章之间重复询问是否继续,除非用户明确要求逐章确认或出现阻塞。到达本轮 K(最多 3 章)后必须进入 Step 3/4 收尾并停止,不能因为仍有后续细纲就继续写下一批。
|
|
71
71
|
|
|
72
|
-
1. **读取写作计划**:写作计划按 **卷契约 → 当前剧情单元 → 章节细纲** 的顺序确定;已写内容仍以正文与 `追踪/` 文件为准。先从 `大纲/卷纲_第X卷.md` 读取卷契约、当前剧情单元(单元ID/位置)、单元情绪引擎、本卷主推线/战果与终局底牌边界,再加载本次要写的 2-3
|
|
72
|
+
1. **读取写作计划**:写作计划按 **卷契约 → 当前剧情单元 → 章节细纲** 的顺序确定;已写内容仍以正文与 `追踪/` 文件为准。先从 `大纲/卷纲_第X卷.md` 读取卷契约、当前剧情单元(单元ID/位置)、单元情绪引擎、本卷主推线/战果与终局底牌边界,再加载本次要写的 2-3 章细纲。卷纲或细纲缺少当前协议的必需字段时按既有流程先补齐,未知字段写 `[待补充]`;已锁定卷纲不得自动改动。细纲读取阶段位置、结构公式、禁止提前释放、内容概括、情节安排、人物关系/出场顺序、情节细化的语义义务/执行边界及结尾钩子,不读取或心算逐点字数预算。只有真正影响后续连续性的结果才进入本章事务。
|
|
73
73
|
- **批次定位与阶段约束**:写本批前先从 `大纲/大纲.md`、对应 `大纲/卷纲_第X卷.md` 和本批细纲提取:当前章节区间属于哪个阶段、本批推进目标、本批可释放的信息、本批严禁提前释放的信息、章尾钩子不能越过的边界。必须按终局储备确认本批主推线与战果,别动用本阶段还不该解锁的终局底牌(多线齐涨的战果允许);行动成本可无,不硬造代价。未来揭示计划留在大纲,不写入时间线事实;只有下一章必须消费的边界才进 `## 下一章承诺`。
|
|
74
74
|
- **阶段进度自检**:每批写完或补完细纲后检查是否超前、拖慢或偏离阶段节奏;若偏离,把下一章必须执行的补偿动作放入事务 `next_chapter_commitments`,跨多章风险放入 `continuity_risks`;不得通过提前泄露后期信息强行提速。
|
|
75
75
|
2. **逐章执行**:每章按 [workflow-chapter.md](workflow-chapter.md) 的「单章写作流程」步骤 1-13 完整走一遍(写前准备、正文执行、字数验证、钩子/爽点检查、元信息与禁用词扫描、追踪事务)。批量模式下再叠加下列日更专属动作:
|
|
@@ -91,14 +91,14 @@
|
|
|
91
91
|
1. 从刚落盘的正文、细纲和上一版续写状态卡提取 `result / character_changes / foreshadow_changes / timeline_events / constraints / next_chapter_commitments`。只记录会影响未来章节的变化;过程日志、质检计数、参照章和去 AI 味统计全部排除。
|
|
92
92
|
2. 需要长期复用的核心角色,把完整动态快照放进 `character_snapshots`,并在 `character_changes` 写对应变化;一次性路人只写变化、不交快照。已有动态快照的核心角色再次变化时必须提交新快照。静态人设继续以 `设定/角色/{名}.md` 为准。
|
|
93
93
|
3. `context.long_term_constraints`、当前卷/故事时间/场景、活跃核心角色名、连贯性风险提交当前完整值;活跃伏笔、近三章速记和下一章承诺由工具从当前视图/本章增量派生,不重复手填。
|
|
94
|
-
4.
|
|
94
|
+
4. 运行 `storyctl.py chapter check`,取 `state_revision` 写入无 `wordcount` 的事务。带内 + quality pass → `chapter commit`;`under` 不补,`over` 按 workflow-chapter 步骤 8 净删一次并复检;仍带外走该步骤三动作。提交会重读、重数、重跑 quality;成功后删临时 JSON,tracking 提交后才继续。
|
|
95
95
|
5. 失败时 `_tracking-state.json` 尚未推进;保留临时 JSON,修正写入环境后重跑同一 `commit`。不得另写下一章、不得手工补派生视图、不得忽略返回码。
|
|
96
96
|
|
|
97
97
|
`追踪/逐章记录/第NNN章.md` 由工具按 5 类变化生成,目标 ≤1536 字节、硬上限 3072 字节。它不是正文摘要大全,更不保存写作过程。`伏笔.md` 每个 ID 只有一行当前状态;角色状态按核心角色拆文件;时间线的客观事实和读者认知只在同一事件登记中维护,再派生作者/读者两个视图。
|
|
98
98
|
|
|
99
99
|
状态更新仍由主会话负责。narrative-writer 只写正文并回报必要的写作结果,不直接写 `追踪/`;主会话也不绕过事务工具直接修改最终追踪文件。
|
|
100
100
|
- **质检提示**(可选):本章写作完成。如需一致性检查,运行 `/story-review lean`。批量写作模式跳过此步骤,全部写完后再统一审查。
|
|
101
|
-
3.
|
|
101
|
+
3. **不中断但不并发**:tracking 已提交即进下一章(除非用户要求确认);`under` 或一次压缩后仍带外则展示证据/动作,不静默推进。下一章先读上一章正文与追踪更新。
|
|
102
102
|
|
|
103
103
|
**资料研究(按需)**:如果写作中遇到需要查证的外部事实(历史年代、地理方位、职业细节等),暂停写作,spawn `story-researcher` agent 搜索并输出到 `参考资料/` 目录。研究完成后再继续写作。
|
|
104
104
|
|
|
@@ -41,13 +41,13 @@
|
|
|
41
41
|
|
|
42
42
|
## Step 3:修改
|
|
43
43
|
|
|
44
|
-
1.
|
|
44
|
+
1. **阅读原文**:读完整章内容,用 `{PYTHON} {story-long-write skill 根}/scripts/storyctl.py wordcount check` 记录原始 `visible_chars_v1` 结果
|
|
45
45
|
2. **备份原文**:将原文复制为 `正文/第{X}章_章名_原稿_{YYYYMMDD}.md`,确保可回退
|
|
46
46
|
3. **确认修改范围**:问用户是"全文重写"还是"修改特定段落"
|
|
47
47
|
- 全文重写:基于细纲重新写,保留备份
|
|
48
48
|
- 局部修改:只改指定段落(按场景序号或关键词定位),保持其他部分不变
|
|
49
49
|
4. **执行修改**:改写文件
|
|
50
|
-
5.
|
|
50
|
+
5. **字数对比**:修改后重跑同一计数器;与原文差异 >30% 或 >800 字时提醒用户(取较大值),并报告 `internal_pass / borderline / under / over / invalid`。测量状态不触发静默覆盖或二次改写正文
|
|
51
51
|
|
|
52
52
|
**资料研究(按需)**:如果修改涉及需要验证的外部事实(历史年代、地理方位、职业细节等),spawn `story-researcher` agent 搜索验证。
|
|
53
53
|
|
|
@@ -102,14 +102,14 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
|
|
|
102
102
|
|
|
103
103
|
完成核心设定后,创建以下 artifact(加载 [references/artifact-protocols.md](artifact-protocols.md) 中对应模板):
|
|
104
104
|
- **设定/关系.md**:角色关系映射(参考 character-relations.md「四种关系类型」)
|
|
105
|
-
- **设定/题材定位.md**:题材核心梗三分法+对标分析(参考 genre-
|
|
105
|
+
- **设定/题材定位.md**:题材核心梗三分法+对标分析(参考 long-genre-mechanics.md「核心梗解析」)。对标分析表保留 2-3 行摘要,详细数据见 `对标/` 目录
|
|
106
106
|
- **设定/题材正文提示卡.md**:从 `设定/题材定位.md` + `references/genre-prose-cards.md`(索引)+ `references/genre-prose-cards/`(单题材正文卡目录,按题材分类优先)+ `references/style-genre-modules.md`(通用流派补充)抽取本书正文层题材卡,只写题材边界、核心逻辑、读者期待、核心爽点/情绪、正文落点、前中后期打法、节奏密度、场景颗粒、禁止漂移;不写通用格式规则,不覆盖 `设定/文风.md`
|
|
107
107
|
|
|
108
108
|
> **多对标书时**:参 `references/cross-book-recall.md`,副对标 anchor 入「对标分析」表附录
|
|
109
109
|
|
|
110
110
|
#### Agent 调用:story-architect + character-designer
|
|
111
111
|
|
|
112
|
-
|
|
112
|
+
核心设定阶段,当前端已部署对应 agent 时可 spawn;Antigravity 按 SKILL.md 用 `invoke_subagent` + 同名 `TypeName`:
|
|
113
113
|
- `Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:核心设定\n查询参数:世界观构建+核心冲突设计")` — 辅助世界观和核心冲突设计;spawn prompt 必须原样附带 Phase 1 的「story-architect 契约摘要」(升级台阶检查约束力量体系设计)
|
|
114
114
|
- `Agent(subagent_type: "character-designer", prompt: "项目目录:{dir}\n任务类型:角色设定\n查询参数:{主角设定信息}")` — 辅助角色设定和语言风格档案
|
|
115
115
|
|
|
@@ -187,7 +187,7 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
|
|
|
187
187
|
1. **批次边界**:一批 ≈ 一个剧情单元(5-15 章);>10 章的剧情单元拆两批。**首批 = 前 10 章封顶、可跨单元**:跨入的剧情单元在建卡时召回一次,余章由后续滚动批共享该剧情单元卡结论。写到单元末段(剩余未建细纲 ≤2 章)即滚动补下一单元整批;用户显式给出章数/范围时按用户要求执行,单批仍建议 ≤10 章、分批连续交付。
|
|
188
188
|
2. **批次定位与阶段约束**(每批补纲前先写):当前章节区间属于哪个阶段与哪个剧情单元(单元ID)、本批推进目标、本批可释放信息、本批严禁提前释放信息、章尾钩子不能越过的边界。
|
|
189
189
|
3. **剧情单元消费**:建卡批读本批剧情单元卡「对标剧情参照」指向的剧情单元(≤3 个文件,含结构分布/情节点索引),按节拍→章映射铺章、情节点换素材;同一剧情单元的后续批共享剧情单元卡固化结论,不重读剧情单元。当前卷纲缺少必需剧情单元字段时先补齐卷纲,不带缺失字段进入日更。
|
|
190
|
-
4.
|
|
190
|
+
4. **批末结构复核**(每批建完必做):按现有大纲流程确认章级目标与 `visible_chars_v1` 口径、核心字段、禁止提前释放和可执行情节点齐全。不得用“每个情节点固定等于多少字”预测容量或自动补事件;每章细纲落盘后必须跑 `node scripts/check-outline-contract.js --json --project {书目录} --chapter {N}`:exit 1 只按 `repair_scope` 补点名字段再复验,最多两轮。**旧章细纲缺字段是常态,不要照抄同目录既有文件的字段集**,以本节模板为准。语义仍不设 checker。
|
|
191
191
|
|
|
192
192
|
不要在单次对话里强行产出 30 章完整细纲。
|
|
193
193
|
如果全书章数较少(≤30 章),可以在 Phase 3 一次全部建完。
|
|
@@ -198,6 +198,7 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
|
|
|
198
198
|
### 第 N 章:{章名}
|
|
199
199
|
- 核心事件:{一句话;供日更与导入统一消费}
|
|
200
200
|
- 字数目标:{X} 字
|
|
201
|
+
- 字数口径:visible_chars_v1
|
|
201
202
|
- 阶段位置:{开篇期/发展期/高潮期/收尾期;第X阶段第Y章;本章在阶段内承担什么}
|
|
202
203
|
- 单元ID/位置:{卷纲剧情单元ID;单元内第几拍/承担功能}
|
|
203
204
|
- 目标情绪:{具体情绪前状态→后状态;本章推进单元情绪引擎的哪一环;不得只写“热血/悲伤”等标签}
|
|
@@ -230,13 +231,13 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
|
|
|
230
231
|
- 视角/信息差:{谁知道什么;读者知道什么;主角误判什么}
|
|
231
232
|
|
|
232
233
|
#### 情节细化
|
|
233
|
-
-
|
|
234
|
+
- 情节点序列(逐行填下表;写清动作与叙事功能,不填写逐点字数):
|
|
234
235
|
|
|
235
|
-
| # | 情节点(谁做了什么) | 功能标签 |
|
|
236
|
-
|
|
237
|
-
| 1 | {主角在账单上发现4800元转出} | {信息揭示} | {
|
|
236
|
+
| # | 情节点(谁做了什么) | 功能标签 | 执行边界 |
|
|
237
|
+
|---|---|---|---|
|
|
238
|
+
| 1 | {主角在账单上发现4800元转出} | {信息揭示} | {只确认异常,不揭露幕后者} |
|
|
238
239
|
|
|
239
|
-
|
|
240
|
+
功能标签=目的词:铺垫/高潮/爽点/打脸/人物塑造/设定,用于判断该点承担什么义务;执行边界写本点不能提前释放或新增什么。点数由语义需要决定,不用 `目标字数 / beat 数`、固定字数档位或历史偏差系数反推。结构预检只判输入是否可安全执行,不宣称细纲一定能撑到目标字数。
|
|
240
241
|
- 任务卡点说明:如果某情节点是“办事被卡住”,功能标签必须写清它服务的是信息揭示、关系变化、代价兑现、伏笔推进、选择压力、节奏喘息或钩子承接;删掉无损的卡点不进细纲
|
|
241
242
|
- 复沓锚句:{须一字不差进正文的原话(誓言、面板、旧案原话),一行一条并注明落点,如"点3:立此为凭…";没有写"无"}
|
|
242
243
|
- 行动成本(可无)/收益归属:{可无行动成本;若有则写谁付出什么成本;收益归谁、如何可见、是否留下后续账}
|
|
@@ -270,8 +271,8 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
|
|
|
270
271
|
|
|
271
272
|
大纲完成后,创建以下 artifact(加载 [references/artifact-protocols.md](artifact-protocols.md) 中对应模板):
|
|
272
273
|
- **大纲/大纲.md**:全书卷级鸟瞰(卷名+字数+章数+核心事件+状态变化,一段式汇总)
|
|
273
|
-
- **大纲/卷纲_第X卷.md**:每卷的剧情单元+情绪弧线(含章节定位)+人物弧线+伏笔+反转+对标结构坐标(参考 outline-methods.md「大纲三层结构法」 + outline-structure-theory.md「章节定位与张弛 / 对标节奏迁移」 + emotional-arc-design.md「六种弧线速查」 + reversal
|
|
274
|
-
- **追踪事务初始状态**:按 `references/tracking-transaction.md` 构造第 0 章初始化 JSON,执行 `scripts/tracking_commit.py init`,生成检查点、续写状态卡(固定 7
|
|
274
|
+
- **大纲/卷纲_第X卷.md**:每卷的剧情单元+情绪弧线(含章节定位)+人物弧线+伏笔+反转+对标结构坐标(参考 outline-methods.md「大纲三层结构法」 + outline-structure-theory.md「章节定位与张弛 / 对标节奏迁移」 + emotional-arc-design.md「六种弧线速查」 + long-reversal.md「反转类型」)
|
|
275
|
+
- **追踪事务初始状态**:按 `references/tracking-transaction.md` 构造第 0 章初始化 JSON,执行 `scripts/tracking_commit.py init`,生成检查点、续写状态卡(固定 7 栏)、空的伏笔/时间线视图与目录;紧接着运行 `check`,通过后删除初始化事务 JSON;核心角色动态快照可在第一次正文事务中创建
|
|
275
276
|
|
|
276
277
|
前 3 章细纲额外加载 [references/opening-design.md](opening-design.md)(黄金三章法则+六大标准)。
|
|
277
278
|
|
|
@@ -279,12 +280,11 @@ story-architect 属于高层级结构设计 agent。轻量题材定位优先由
|
|
|
279
280
|
|
|
280
281
|
大纲搭建阶段优先由主会话产出卷纲+首批细纲;只有结构复杂、反转链多或主会话方案不稳时,才调用 story-architect agent。
|
|
281
282
|
|
|
282
|
-
|
|
283
|
+
当前端已部署 story-architect 时可让它辅助;Antigravity 调用规则同上:
|
|
283
284
|
- 任务:卷级结构、首批细纲、钩子/反转/情绪弧线。
|
|
284
285
|
- 章节定位:每章标高压/推进/修炼试错/关系回收/低压生活/信息整理;低压章可弱爽点,但仍要有往下看的理由。
|
|
285
|
-
-
|
|
286
|
-
-
|
|
286
|
+
- 目标字数:只填写章级 `字数目标` 与 `visible_chars_v1` 口径;情节点不分配精确字数,也不让模型心算容量。
|
|
287
|
+
- 主会话校验:按既有细纲流程复核目标、核心字段、可执行情节点和 `[待补充]`;本阶段不把语义判断复制进多端 Hook。
|
|
287
288
|
- **契约摘要必须原样附带**:本阶段的卷纲要直接产出终局储备(本卷主推线/战果、本卷解锁的终局里程碑、禁碰的未解锁底牌)和剧情单元(单元ID等字段),spawn prompt 必须带上 Phase 1「Agent 调用:story-architect」中的「story-architect 契约摘要」,让主线程与委托产出共用同一 schema。
|
|
288
289
|
|
|
289
290
|
如 agent 不可用,由主线程直接执行。
|
|
290
|
-
|
|
@@ -8,46 +8,47 @@
|
|
|
8
8
|
- 本文件只管「贯穿道具的三次出现编排规则」,不管「羁绊铺设」(羁绊功能见 emotional-methods.md)
|
|
9
9
|
- 对话相关(含权力博弈的规则/模式/示例/操作指令)一律见 dialogue-mastery.md,本文件不重复
|
|
10
10
|
- 本文件只管「开头事件密度指令」,不管「开头设计」(开头设计见 opening-design.md)
|
|
11
|
-
- genre-
|
|
12
|
-
- 本文件第 8 节「场景写法(三维度揉进)」是 Phase 3
|
|
11
|
+
- genre-prose-cards.md 提供题材声线与长线约束;本文件的「贯穿道具系统」提供跨章可执行设计模板
|
|
12
|
+
- 本文件第 8 节「场景写法(三维度揉进)」是 Phase 3 的写作方法,`long-format.md` 负责长篇章节的段落、对话与工程元信息规范
|
|
13
13
|
- 本文件「贯穿道具系统」只规定物件的三次出现编排时机和意义翻转规则;物件的初始情感含义设计(选什么物件、承载什么羁绊)由 emotional-methods.md 负责(信物型物件与羁绊铺设功能重叠,但视角不同)
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
-
## 1.
|
|
17
|
+
## 1. 情绪落地:不把身体微动作当默认答案
|
|
18
18
|
|
|
19
19
|
### 规则
|
|
20
20
|
|
|
21
|
-
|
|
21
|
+
情绪没有固定译法。上下文已经让读者感到,就不另补反应;情绪推动了剧情,就优先写角色的选择、台词、策略、关系变化、物件变化或实际后果;一句直写最准确时可以直写("他听烦了")。身体状态只是候选之一,只有它带来新信息、影响动作,或确实属于这个角色和这个场景时才写。
|
|
22
22
|
|
|
23
|
-
###
|
|
23
|
+
### 落地顺序
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
写到情绪节点时按下面顺序判断,不做“情绪词逐个替换”:
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
| 害怕/恐惧 | 他的手指碰到门把手又缩回来,碰了三次才握住 |
|
|
33
|
-
| 委屈 | 她咬着下嘴唇,咬出一道白印,松开后迅速红了 |
|
|
34
|
-
| 绝望 | 他坐在那里,烟灰掉了一裤腿也没有弹 |
|
|
35
|
-
| 心如死灰 | 她把手机翻过来扣在桌上,再没拿起来过 |
|
|
27
|
+
1. **上下文已经成立**:前面的冲突、对话或结果足够让读者看懂,删掉补充说明,不再加一个动作尾巴。
|
|
28
|
+
2. **情绪改变下一步**:写角色因此说了什么、没说什么、选了哪条路、改了什么策略、付了什么代价。
|
|
29
|
+
3. **场内事物能承载变化**:写正在处理的合同、药、饭、门、消息、工具出了什么变化;物件必须来自当前场景,不临时搬一只茶杯来表演情绪。
|
|
30
|
+
4. **身体确实受影响**:写动作失败、疼痛、失衡、伤势或可见后果。只有“指尖动一下、指节白、嘴唇抿、目光移开、呼吸一顿”而没有后果,通常可以删。
|
|
31
|
+
5. **直写更准更省**:低强度或过场情绪可以一句直写,不必为避开一个普通情绪词绕成三十字表演。
|
|
36
32
|
|
|
37
|
-
|
|
33
|
+
同一节点只取最有信息量的一种,除非情绪升级确实产生连续后果,不把“动作 + 身体 + 比喻 + 心理解说”叠成四重注释。
|
|
38
34
|
|
|
39
|
-
###
|
|
35
|
+
### 好细节的功能
|
|
40
36
|
|
|
41
|
-
|
|
37
|
+
| 情况 | 处理 |
|
|
38
|
+
|------|------|
|
|
39
|
+
| 上下文已显出不耐烦 | 直接进入下一句对话,或一句“他听烦了”带过 |
|
|
40
|
+
| 愤怒使谈判改变 | 写他撤回报价、叫停合作或当面追问;变化比攥拳更有信息 |
|
|
41
|
+
| 紧张妨碍正在做的事 | 可以写笔尖划坏签名、钥匙插错锁孔等具体后果 |
|
|
42
|
+
| 身体细节只是在句尾标注情绪 | 删除;不要换一套部位或同义动作 |
|
|
42
43
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
44
|
+
### 反套话四问
|
|
45
|
+
|
|
46
|
+
逐章检查重点情绪段,并指出对应原句;不是要求每段补一种反应:
|
|
47
|
+
|
|
48
|
+
1. 删掉这处身体/语气细节,信息、选择、关系或物理结果有损失吗?没有就删。
|
|
49
|
+
2. 换个人名、换个房间仍然成立吗?成立说明它可能是通用表演,不是角色细节。
|
|
50
|
+
3. 本章是否反复出现“部位 + 轻微动作/状态 + 一下”,尤其指尖、指节、目光、嘴唇、呼吸、袖口?命中后回到整段重写或删除,不做同义词轮换。
|
|
51
|
+
4. 同一情绪是否已经被对话、上下文和动作重复解释?只留最有力的一处。
|
|
51
52
|
|
|
52
53
|
---
|
|
53
54
|
|
|
@@ -119,34 +120,33 @@
|
|
|
119
120
|
|
|
120
121
|
---
|
|
121
122
|
|
|
122
|
-
## 5.
|
|
123
|
+
## 5. 动静有起伏,不按节配额
|
|
123
124
|
|
|
124
125
|
### 规则
|
|
125
126
|
|
|
126
|
-
|
|
127
|
+
一章整体要有推进与停顿的起伏,但不要求每个小节各塞一个“动”和“静”。停顿可以来自信息悬置、对话空白、环境压力或角色暂不行动,不等于安排擦灰、理衣领一类微小动作。
|
|
127
128
|
|
|
128
129
|
### 动与静的分类
|
|
129
130
|
|
|
130
131
|
| 类型 | 内容 | 示例 |
|
|
131
132
|
|------|------|------|
|
|
132
133
|
| 动 | 物理冲击、暴力、冲突爆发 | 砍人、摔东西、打耳光、吐血、掀桌子 |
|
|
133
|
-
| 静 |
|
|
134
|
+
| 静 | 信息悬置、对话空白、环境压力、等待或必要的日常过程 | 回信迟迟没来、全桌没人接话、雨声盖住门外脚步 |
|
|
134
135
|
|
|
135
136
|
### 操作指令
|
|
136
137
|
|
|
137
|
-
-
|
|
138
|
-
-
|
|
139
|
-
-
|
|
140
|
-
-
|
|
141
|
-
- 情绪最低点(心死/余韵/释然)用「静」
|
|
138
|
+
- 按整章和场景需要安排动静,不给每个小节设数量指标
|
|
139
|
+
- 连续多节全「动」时复核是否造成暴力疲劳;追逐/战斗有意连续可保留
|
|
140
|
+
- 连续多节全「静」时复核是否停滞;等待/压迫有意延长可保留
|
|
141
|
+
- 情绪高低不对应固定动作类型:爆点可以突然安静,低谷也可以持续劳动
|
|
142
142
|
|
|
143
143
|
### 节奏编排示例
|
|
144
144
|
|
|
145
145
|
```
|
|
146
146
|
节5(动):萧衍一声令下,打了萧琅二十棍
|
|
147
|
-
节6
|
|
147
|
+
节6(静):报数停了,殿里没人替萧琅求情
|
|
148
148
|
节7(动):王氏扑过来,跪在地上磕头
|
|
149
|
-
节8
|
|
149
|
+
节8(静):王氏跪在原地,只听见宫门落锁
|
|
150
150
|
```
|
|
151
151
|
|
|
152
152
|
---
|
|
@@ -201,10 +201,10 @@
|
|
|
201
201
|
|
|
202
202
|
| 检查项 | 偏短原因 | 补救 |
|
|
203
203
|
|--------|----------|------|
|
|
204
|
-
|
|
|
204
|
+
| 关键子事件读得懂吗? | 现场、因果或角色下一步缺了必要信息 | 只补真正缺失的维度;不为凑齐三项补感官或身体动作(见第8节) |
|
|
205
205
|
| 对话只有 1-2 轮? | 缺少对话交锋 | 加一轮权力博弈对话(见第3节) |
|
|
206
|
-
|
|
|
207
|
-
|
|
|
206
|
+
| 情绪信息落地了吗? | 只贴标签,或又用无功能微动作重复解释 | 优先落到选择、台词、物件和后果;必要时直写,身体细节须有功能(见第1节) |
|
|
207
|
+
| 仍偏短且关键 beat 写薄? | 冲突、选择、代价或关系变化没有演到位 | 回到细纲内已有事件补交锋与后果;没有内容就补纲,不拿感官/回忆注水 |
|
|
208
208
|
|
|
209
209
|
### 子事件不够时怎么扩
|
|
210
210
|
|
|
@@ -240,7 +240,7 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
|
|
|
240
240
|
- 为凑字数加角色内心独白总结
|
|
241
241
|
- 为凑字数让角色做无意义的动作
|
|
242
242
|
- 为显得自然而加流程细节;删掉无损就删
|
|
243
|
-
-
|
|
243
|
+
- 为凑字数重复解释情绪,或给每段补一个无功能身体反应
|
|
244
244
|
|
|
245
245
|
---
|
|
246
246
|
|
|
@@ -250,7 +250,7 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
|
|
|
250
250
|
|
|
251
251
|
细纲各字段是本章"要发生什么"的规格,**不是正文的形状**。照着细纲的形状逐格填,正文就成了一条一条交代的电报体、一拍一句平推的生硬解说——这是"照抄大纲形状",和照抄范例形状同属 AI 味来源。
|
|
252
252
|
|
|
253
|
-
- 情节点序列是"要发生什么"
|
|
253
|
+
- 情节点序列是"要发生什么"的清单,不是句子模板:不要一个情节点写成一句或一段、按序平推;把每个点演成角色此刻可感知的选择、动作、对话、物件、结果,必要时才用身体反应——**演出来,不是交代出来**。
|
|
254
254
|
- 同一约束如果在「核心事件 / 内容概括 / 情节安排 / 情节点」里重复出现,生成前只合并成**一个语义点**;重复字段不是强调,更不是四次复述额度。正文不得沿用提纲里反复出现的同一措辞逐项交代。
|
|
255
255
|
- 五段式(起因/发展/转折/高潮/结尾)是给细纲作者的功能拆解,不是正文的五个自然段;正文不必逐段顺叙,也不必一段对一格。
|
|
256
256
|
- "谁做了什么"的概括句、"A→B→C"箭头链、"收束到什么状态"是规划口径,不要原样搬进叙述。
|
|
@@ -276,19 +276,19 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
|
|
|
276
276
|
|
|
277
277
|
### 规则
|
|
278
278
|
|
|
279
|
-
|
|
279
|
+
关键子事件不能只剩一句提纲概括。发生是主干;感知和反应只在提供新信息时加入,并与发生织进同一镜头,不按维度分段,也不要求三项齐全。
|
|
280
280
|
|
|
281
281
|
### 三维度揉进规则
|
|
282
282
|
|
|
283
|
-
|
|
283
|
+
发生、感知、反应是可选的信息维度,不是逐段配额。详写的关键子事件可以把其中确有内容的维度织在同一镜头里;上下文已经清楚的维度留空,不为凑齐三项补感官或身体动作。过场、赶路、信息交代类子事件 1-2 句带过即可(见「疏密分配」),把字数预算让给情绪节点。
|
|
284
284
|
|
|
285
285
|
| 维度 | 内容 | 要点 |
|
|
286
286
|
|---|---|---|
|
|
287
287
|
| 发生 | 事情出现了 | 1-2句,包含一个具体细节 |
|
|
288
|
-
| 感知 | 主角注意到什么 |
|
|
289
|
-
| 反应 |
|
|
288
|
+
| 感知 | 主角注意到什么 | 只取会改变理解、判断或气氛的一处声音、物件、空间或身体感受,不按感官凑数 |
|
|
289
|
+
| 反应 | 角色接下来怎么办 | 可以是选择、台词、策略、任务动作、明确感受或有后果的身体反应,不默认写微动作 |
|
|
290
290
|
|
|
291
|
-
|
|
291
|
+
任务卡点写法可从三维中取需要的内容:发生 = 事情办不下去;感知 = 被退回的纸、扣住的物件、对方半句话等具体凭据;反应 = 角色改策略、付代价、求助、硬闯、退让或记下一笔。不要把“为什么被卡住”解释成一段说明书,也不要在 scene 末尾另补动作尾巴来解释意义。
|
|
292
292
|
|
|
293
293
|
### 反模式:堆叠式描写(绝对禁止)
|
|
294
294
|
|
|
@@ -305,16 +305,16 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
|
|
|
305
305
|
|
|
306
306
|
### 正确写法:揉进式
|
|
307
307
|
|
|
308
|
-
|
|
308
|
+
需要的维度融进同一段连续正文,读者读到一个完整瞬间:
|
|
309
309
|
|
|
310
310
|
> ✅ **揉进式(正确)**:
|
|
311
311
|
> 林父左手压着文书,右手拿笔往纸上落,笔尖一触纸面就偏了,从肘到腕止不住地抖,那一横斜着拖出去。他顿了顿,把笔往下压,重写,写完的"林"字撇是歪的,笔在手里还是没稳住。
|
|
312
312
|
|
|
313
|
-
→
|
|
313
|
+
→ 这里的身体反应改变了落笔结果,承担信息;不是为了证明人物紧张而另加微动作
|
|
314
314
|
|
|
315
315
|
### 自检方法
|
|
316
316
|
|
|
317
|
-
|
|
317
|
+
对详写的关键场景用“三维遮盖法”:分别遮住发生、感知、反应,判断现有内容是否各自提供了不同信息。某维缺失不等于要补;只有读者因此看不懂现场、因果或角色下一步时,才把缺失信息织回同一镜头。若遮住一处身体/语气细节后什么也没损失,删掉它。逐章再做第 1 节“反套话四问”,指出原句处理,不用“已遵守”代替检查。
|
|
318
318
|
|
|
319
319
|
### 画面分段(防止一段到底)
|
|
320
320
|
|
|
@@ -373,10 +373,10 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
|
|
|
373
373
|
|
|
374
374
|
### 子事件连接
|
|
375
375
|
|
|
376
|
-
|
|
376
|
+
子事件之间按真实关系连接:因果推进、对话接招、新信息、空间移动或角色下一步都可以;不规定必须插入身体动作,也不规定连接句长度。
|
|
377
377
|
|
|
378
|
-
- ❌
|
|
379
|
-
- ✅
|
|
378
|
+
- ❌ 为了过渡另补“我把账本搁在膝盖上,手心出了一层薄汗。”
|
|
379
|
+
- ✅ “最后一笔支出没有收据,下一页却夹着他的签名。”(新信息直接推动下一拍)
|
|
380
380
|
|
|
381
381
|
### 感知素材库
|
|
382
382
|
|
|
@@ -391,9 +391,9 @@ IF 主事件是一连串动作 → 加「递进」:动作引发的连锁反应
|
|
|
391
391
|
### 三维度的边界
|
|
392
392
|
|
|
393
393
|
- ✓ 感知是主角主动注意到的细节(有注意力的焦点)
|
|
394
|
-
- ✓
|
|
394
|
+
- ✓ 反应是角色受此影响后的下一步,可落在选择、台词、策略、任务动作、明确感受或有后果的身体变化
|
|
395
395
|
- ✗ 感知不能是装饰性场景描写("阳光洒在窗台上")
|
|
396
|
-
- ✗
|
|
396
|
+
- ✗ 反应不能只用无功能微动作给已经清楚的情绪再贴一次标签
|
|
397
397
|
- ✗ 三个维度不能重复表达同一个信息
|
|
398
398
|
---
|
|
399
399
|
|