@oh-story/dsh 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +11 -11
- package/lib/client.js +7 -3
- package/lib/client.js.map +2 -2
- package/lib/drama/manifest.json +212 -142
- package/lib/drama/skills/short-drama/SKILL.md +14 -2
- package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
- package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
- package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
- package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
- package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
- package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
- package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
- package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
- package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
- package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
- package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
- package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
- package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
- 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
- package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
- 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
- package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
- package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
- package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
- package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
- package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
- package/lib/drama/skills/short-drama-edit/SKILL.md +43 -20
- package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
- package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +4 -2
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +3 -1
- package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +6 -2
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +12 -6
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +13 -8
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1153 -121
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +49 -9
- package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
- package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
- package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
- package/lib/drama/skills/short-drama-review/SKILL.md +2 -2
- package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
- package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
- package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +15 -0
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +13 -5
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +82 -14
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +4 -2
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +5 -3
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +12 -0
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
- package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +40 -1
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +20 -14
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +8 -7
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +1 -0
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
- package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
- package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
- package/lib/drama/skills/short-drama-write/SKILL.md +8 -3
- package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
- package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
- package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
- package/lib/index.js +71 -21
- package/lib/index.js.map +3 -3
- package/lib/oh-story/manifest.json +545 -310
- package/lib/oh-story/roles/chapter-extractor.md +11 -11
- package/lib/oh-story/roles/character-designer.md +1 -2
- package/lib/oh-story/roles/consistency-checker.md +11 -9
- package/lib/oh-story/roles/narrative-writer.md +24 -25
- package/lib/oh-story/roles/story-architect.md +9 -61
- package/lib/oh-story/roles/story-explorer.md +20 -125
- package/lib/oh-story/roles/story-researcher.md +0 -1
- package/lib/oh-story/skills/story/SKILL.md +6 -6
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-deslop/SKILL.md +24 -25
- package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +21 -4
- package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-import/SKILL.md +63 -579
- package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
- package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
- package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
- package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
- package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
- package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
- package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +95 -91
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
- package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +11 -9
- package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +101 -14
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +278 -23
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +179 -23
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +28 -50
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +12 -5
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +1 -1
- package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
- package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +21 -55
- package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +17 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +1 -1
- package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +47 -8
- package/lib/oh-story/skills/story-long-scan/SKILL.md +41 -193
- package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
- package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
- package/lib/oh-story/skills/story-long-write/SKILL.md +32 -73
- package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +18 -201
- package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +6 -10
- package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
- package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
- package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +3 -2
- package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
- package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
- package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
- package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/project-files.md +10 -6
- package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
- package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +11 -9
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +33 -44
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +18 -51
- package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +53 -67
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -251
- package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +5 -3
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +18 -56
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +96 -16
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +101 -14
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
- package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +2 -1
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +250 -50
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +278 -23
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +179 -23
- package/lib/oh-story/skills/story-review/SKILL.md +19 -273
- package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-review/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
- package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-review/references/review-quality.md +2 -1
- package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
- package/lib/oh-story/skills/story-review/references/solo.md +52 -0
- package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +11 -9
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +278 -23
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +179 -23
- package/lib/oh-story/skills/story-setup/SKILL.md +69 -458
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +21 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
- 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/long-genre-catalog.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
- package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
- 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/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +18 -56
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +37 -110
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
- package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
- package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
- package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
- package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
- package/lib/oh-story/skills/story-short-analyze/references/{material-decomposition.md → stage4-6-reversal-summary.md} +303 -374
- package/lib/oh-story/skills/story-short-scan/SKILL.md +30 -64
- package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
- package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
- package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
- package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
- package/lib/oh-story/skills/story-short-write/SKILL.md +23 -34
- package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
- package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +40 -118
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -49
- package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
- package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +19 -12
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +22 -32
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +84 -17
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +3 -3
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
- package/lib/types/client/video-studio.d.ts.map +1 -1
- package/lib/types/native-hooks.d.ts +2 -2
- package/lib/types/native-hooks.d.ts.map +1 -1
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/types/video-project.d.ts.map +1 -1
- package/lib/types/workspace-route.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +60 -1
- package/lib/video-recap/README.en.md +348 -137
- package/lib/video-recap/README.md +340 -136
- package/lib/video-recap/manifest.json +406 -251
- package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
- package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
- package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
- package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
- package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
- package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
- package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
- package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
- package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
- package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
- package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
- package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
- package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
- package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
- package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
- package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
- package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
- package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
- package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
- package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
- package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
- package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
- package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
- package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
- package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
- package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
- package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
- package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
- package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
- package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
- package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
- package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
- package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
- package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
- package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
- package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
- package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
- package/lib/video-recap/skills/video-script/SKILL.md +16 -13
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
- package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
- package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
- package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
- package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
- package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
- package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
- package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
- package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
- package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
- package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
- package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
- package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
- package/lib/video-recap/skills/video-understanding/scripts/{agent_brief.py → briefing/builder.py} +38 -35
- package/lib/video-recap/skills/{video-script/scripts/brief_context.py → video-understanding/scripts/briefing/context.py} +4 -35
- package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
- package/lib/video-recap/skills/video-understanding/scripts/{brief_timeline.py → briefing/timeline.py} +5 -6
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
- package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
- package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
- package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
- package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
- package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
- package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
- package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
- package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
- package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
- package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
- package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
- package/package.json +41 -41
- package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -538
- package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -603
- package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
- package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
- package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
- package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +0 -399
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +0 -327
- package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +0 -348
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
- /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
- /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
- /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
|
@@ -52,13 +52,7 @@ Stage 4 另用 `render_relation_chart.py` 从 `角色/角色关系.md` 生成人
|
|
|
52
52
|
|
|
53
53
|
脚本只按 LF 计算物理行号,支持楔子、序章、第0章、任意正文起始章、番外、后记、多卷和中文大数。CSV 保存内部连续号、来源章号、卷、标题、行界、字符数、`chapter_sha256`、全源 hash 和解析器版本。
|
|
54
54
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
1. **按旧章号继续(推荐)**:`build_chapter_index.py ... --fold-prologue`,开头的楔子/序章/引子/前言/第0章并进第一个正式章节,编号回到旧版口径,旧成果原样复用;输出里的 `folded_into_first_chapter` 列出被并入的章节标签(如「楔子」「第0章」)。楔子内容不会单独拆,要在报告「还不确定的地方」说明。
|
|
58
|
-
2. **楔子单独成章**:把除 `原文/` 外所有按旧章号写的产物——`章节/`、`剧情/`、`角色/`、`设定/`、`人物关系图/`、`快速预览.md`、`概要.md`、`拆文报告.md`、`文风.md`、`_analysis_cache/批次-*.md` 和 `_progress.md`——挪进 `_analysis_cache/legacy/旧章号/`(挪走,不删除),再从 Stage 0 按新章号重拆。旧库只拆到黄金三章时代价最小。
|
|
59
|
-
3. **换一个新目录整本重拆**。
|
|
60
|
-
|
|
61
|
-
`chapter_index.csv` 已按错误口径建好时,先删掉它(纯机械章节表,可随时重建),再按选择重建;`--rebuild` 只沿用已有索引的口径,不能用来改口径。
|
|
55
|
+
同源索引直接复用且不重写。原文变化、重建后章号对不上或旧成果章号对不上时,按 [index-rebuild.md](index-rebuild.md) 处理。
|
|
62
56
|
|
|
63
57
|
## 3. 生成只读计划
|
|
64
58
|
|
|
@@ -77,25 +71,28 @@ Stage 4 另用 `render_relation_chart.py` 从 `角色/角色关系.md` 生成人
|
|
|
77
71
|
|
|
78
72
|
逐批派发时加 `--next 1` 只取下一批,确认进度用 `--next 0` 只看 `remaining_batches` 与压缩成区间的 `summary_gaps`;全量计划每批约五百字符,整本书反复全量输出会白占主会话上下文。不带 `--next` 时输出全部批次。
|
|
79
73
|
|
|
80
|
-
|
|
74
|
+
作者只要拆某一段时加 `--chapters 起-止`(可与 `--next` 同用):只规划这段里的批次,`remaining_batches` 只数这段,`summary_gaps` 仍是全书。这段拆完即停,不标 `stage2`;按 author-facing「全部拆完」只汇报这一段,再问作者是否接着拆其余章节。
|
|
75
|
+
|
|
76
|
+
计划只存在内存和标准输出,`state_written` 必须为 `false`。每块最多 3 章、25,000 字符,同一章不能出现在两个原文块;计划原文读取数为 0 时不得派发原文任务;批次 ID 直接使用章节范围。`RAW` 只覆盖缺失章和缓存失效批次,`REUSE` 只读取计划列出的旧成果。黄金三章深拆属于已有语义成果,可以生成缺失摘要,无需再次读取前三章原文。
|
|
81
77
|
|
|
82
78
|
## 4. 执行与提交一个批次
|
|
83
79
|
|
|
84
|
-
`chapter-extractor`
|
|
80
|
+
`chapter-extractor` 只处理计划中一个批次。**主会话不中转内容**:原文和批次结果都不经过主会话上下文。派发时照抄计划里这一批的字段,路径前加 `{拆文目录}/`,不另选、不推算:
|
|
85
81
|
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
82
|
+
- `batch_id`、`input_kind`;
|
|
83
|
+
- `source_files`(原文块是逐章 `source_locator`,子代理自己按行号读原文)、`chapter_chars`(每章字数)和 `min_plot_points`(每章情节点下限,按字数算好);
|
|
84
|
+
- `input_file`:输出文件 `_analysis_cache/输入-{批次ID}.md`(不写系统 `/tmp`:Windows 没有,多本书同批号会互相覆盖);
|
|
85
|
+
- `handoff_cache`:交接缓存,计划算好的「本批起章之前最近的已提交批次」,为空就不给;子代理只读其中 `### 跨批状态`。
|
|
89
86
|
|
|
90
|
-
子代理把完整输出写进输出文件,只回一行 `BATCH_WRITTEN` 回执。主会话**不 Read
|
|
87
|
+
子代理把完整输出写进输出文件,只回一行 `BATCH_WRITTEN` 回执。主会话**不 Read 这份输入文件**,直接提交;提交被拒时重新派发同一批:上面的字段原样再给一遍(子代理补内容要按 `source_locator` 回看原文、按 `min_plot_points` 补情节点),再附错误码,让它用 Edit 只改出错处后再提交(结构整体错乱才整份重写)。提交成功后删掉这份输入。不论哪种派发方式,`commit` 都由主会话逐个执行,不并发跑。
|
|
91
88
|
|
|
92
|
-
|
|
89
|
+
**派发方式**:默认第 2 档有限并行,不请作者在三档里选。作者问起能不能更快或更稳、或明确要求时,才按 author-facing「作者问起怎么拆」用白话解释并切换。三档都用计划给的 `handoff_cache`,它随提交进度自动落到对应的批次上。
|
|
93
90
|
|
|
94
|
-
1.
|
|
95
|
-
2. **有限并行**:每轮同时派 3
|
|
96
|
-
3. **不限批次顺序**:不等前批,同时在跑的子代理最多 12 个(宿主或账号上限更低时以环境为准);在跑的少于上限一半时,补派到上限。补派用 `plan --next {在跑数+补派数}
|
|
91
|
+
1. **串行**:上一批提交成功再派下一批,交接缓存就是紧邻的前一批。优点:剧情点、未决悬念和已确认别名逐批完整接续,Stage 3 合并最省事。缺点:最慢,墙钟时间随批数线性增长。
|
|
92
|
+
2. **有限并行**:每轮同时派 3 批,同轮的交接缓存都是本轮开始前最近一个已提交批次;整轮提交完再派下一轮。优点:约快两到三倍,接续最多滞后一轮。缺点:同轮批次互相看不到对方新建的剧情点与别名,边界处可能重复建 ID,靠 Stage 3 跨块合并收拢。
|
|
93
|
+
3. **不限批次顺序**:不等前批,同时在跑的子代理最多 12 个(宿主或账号上限更低时以环境为准);在跑的少于上限一半时,补派到上限。补派用 `plan --next {在跑数+补派数}`,跳过已在跑的批次号(计划只认已提交)。遇到限流、超时或子代理报错,把上限减半后再补派。优点:最快。缺点:接续最弱,剧情点与别名最依赖 Stage 3 跨块合并和 Stage 4 归并;并发越高,被限流、整批重跑的风险越大。
|
|
97
94
|
|
|
98
|
-
|
|
95
|
+
作者没提、要求一次拆完 / 全量拆、多本书一起拆,或由 story-import 自动续跑时,都按第 2 档;第 1、3 档只在作者明确选择时使用。多本书同拆时按书轮流派,第 3 档的总并发也不超过同一上限。第 1、2 档用 `plan --next 1` / `--next 3` 取批。子代理不可用时主会话自己写批次:先读 [stage2-extraction.md](stage2-extraction.md),提取规则与包裹标记照其中「批次提交格式」:
|
|
99
96
|
|
|
100
97
|
```text
|
|
101
98
|
"{PYTHON}" "{story-long-analyze skill 根}/scripts/manage_analysis_run.py" commit \
|
|
@@ -111,10 +108,10 @@ Stage 4 另用 `render_relation_chart.py` 从 `角色/角色关系.md` 生成人
|
|
|
111
108
|
|
|
112
109
|
提交顺序固定:
|
|
113
110
|
|
|
114
|
-
1.
|
|
111
|
+
1. 在写文件前校验整批范围、标记、所有紧凑字段和情节点(原文块每章不少于 `min_plot_points`、最多 30,否则整批拒收;编号连续、每点带主题标签与基调行);
|
|
115
112
|
2. 对 `RAW` 再算当前范围 hash,与计划值不一致就拒绝;
|
|
116
113
|
3. 原子写入含完整模型输出和最终结束标记的批次缓存;
|
|
117
|
-
4. 只创建缺失的 `章节/第N章_摘要.md`,任何已有摘要都保留,并在结果的 `kept_existing_summary_chapters`
|
|
114
|
+
4. 只创建缺失的 `章节/第N章_摘要.md`,任何已有摘要都保留,并在结果的 `kept_existing_summary_chapters` 里列出;摘要投影把每个情节点的主题、基调和类型映射到固定枚举(主题/基调映射不上写“其他”),保留“关键事件”“情节点”“涉及”“基调”等旧消费者字段;
|
|
118
115
|
5. 最后更新 `_progress.md` 受管批次表为 `completed`;有阶段记录时按 Stage 3–6 状态重写受管区的 `最终状态`(旧项目改写原有行,不写第二行)。
|
|
119
116
|
|
|
120
117
|
每条成功行记录章节范围、输入类型、原文范围 hash、状态和缓存路径。受管区外的 BOM、换行、作者备注及既有 `schema_version` 必须逐字节保留。
|
|
@@ -146,43 +143,12 @@ Stage 4 另用 `render_relation_chart.py` 从 `角色/角色关系.md` 生成人
|
|
|
146
143
|
|
|
147
144
|
恢复只从完整、范围 hash 有效的缓存补缺失摘要并更新状态;不覆盖用户修改过的文件。缓存缺结束标记或范围 hash 失效时报告错误并重跑相应批次。
|
|
148
145
|
|
|
149
|
-
## 7.
|
|
150
|
-
|
|
151
|
-
Stage 1 黄金三章与快速预览落盘后标 `stage1`;计划不再有批次时标 `stage2`。Stage 3–6 各运行一次。文件成功原子落盘后再标记:
|
|
152
|
-
|
|
153
|
-
```text
|
|
154
|
-
"{PYTHON}" "{story-long-analyze skill 根}/scripts/manage_analysis_run.py" mark-stage \
|
|
155
|
-
--root "{拆文目录}" --stage stage3 --output "剧情/节奏.md"
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
**Stage 3–5 的读法**:不整份 Read 批次缓存(每批约七成是和逐章摘要重复的章节块),改用只读的 `digest` 按需取料,输出是 Markdown:
|
|
146
|
+
## 7. 阶段标记与后续时刻
|
|
159
147
|
|
|
160
|
-
|
|
161
|
-
"{PYTHON}" "{story-long-analyze skill 根}/scripts/manage_analysis_run.py" digest --root "{拆文目录}" --part observations [--chapters 1-60]
|
|
162
|
-
"{PYTHON}" "{story-long-analyze skill 根}/scripts/manage_analysis_run.py" digest --root "{拆文目录}" --part chapters --chapters 1-60 --fields 三维节奏,涉及,状态变化 --points brief
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
- `observations`:按章序汇总已提交批次的跨章观察(剧情点、关键事件与披露候选、关系变化、三维峰谷、跨批状态),是 Stage 3–4 的主语料;
|
|
166
|
-
- `chapters`:从逐章摘要抽字段(概要、关键事件、因果、局面结果、涉及、信息变化、状态变化、三维节奏、章尾钩子、证据),`--points brief` 给每点「标题|类型|基调」,`full` 另带白描;
|
|
167
|
-
- 全书放不进一次上下文时按 `--chapters` 分窗口取,窗口间只带剧情状态与证据引用;只有关键证据冲突才定点 Read 单章摘要。
|
|
168
|
-
|
|
169
|
-
阶段完成只看约定产物存在且进度行完成;没有依赖 hash 或 Stage receipt。`mark-stage` 会按阶段检查:Stage 1 的黄金三章与快速预览、Stage 2 的全部摘要、Stage 3 的情绪模块与节奏、Stage 4 的角色与设定、Stage 5 的报告、Stage 6 的文风。Stage 6 的单独重建见 [style-profile-generator.md](style-profile-generator.md),允许按索引定点读取 4–6 段原文,不重扫全书,也不触发其他阶段。
|
|
170
|
-
|
|
171
|
-
生成新的 `拆文报告.md` 前先执行:
|
|
148
|
+
Stage 1 黄金三章与快速预览落盘后标 `stage1`;计划不再有批次、全部摘要落盘后标 `stage2`:
|
|
172
149
|
|
|
173
150
|
```text
|
|
174
|
-
"{PYTHON}" "{story-long-analyze skill 根}/scripts/manage_analysis_run.py" mark-stage --root "{拆文目录}" --stage
|
|
151
|
+
"{PYTHON}" "{story-long-analyze skill 根}/scripts/manage_analysis_run.py" mark-stage --root "{拆文目录}" --stage stage2
|
|
175
152
|
```
|
|
176
153
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
## 8. 最终检查
|
|
180
|
-
|
|
181
|
-
检查全部通过后,按 [author-facing.md](author-facing.md)「全部拆完」给作者汇报;下面这些检查结果不写进汇报。
|
|
182
|
-
|
|
183
|
-
- 再运行检查器和计划器;完整项目应 `direct_use`,继续意图应无待处理批次;
|
|
184
|
-
- 对比受保护路径 hash:旧 `章节/`、`剧情/`、`角色/`、`设定/`、`文风.md`、`拆文报告.md` 不得被增强或恢复流程改写;
|
|
185
|
-
- 允许变化的旧项目文件只有 `_progress.md` 受管状态区和 `_analysis_cache/` 新证据;
|
|
186
|
-
- 检查旧 `schema_version` 原值;
|
|
187
|
-
- 检查新投影的情节点序列、主题、基调、类型和“涉及”字段能被导入与写作流程读取;
|
|
188
|
-
- 报告未执行的真实模型或跨平台检查,不得用静态 fixture 冒充。
|
|
154
|
+
Stage 3–5 的取料(`digest`)与标记见 [synthesis-inputs.md](synthesis-inputs.md),Stage 6 见 [style-profile-generator.md](style-profile-generator.md),全部拆完后的收尾检查见 [final-checks.md](final-checks.md)。
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
# Stage 0–1:概要初稿与黄金三章
|
|
2
|
+
|
|
3
|
+
开头时刻(Phase 1 到 Stage 1 停下来问)读本文件。作者读到的 `快速预览.md` 与停下来问的话术见 [author-facing.md](author-facing.md)。
|
|
4
|
+
|
|
5
|
+
## Stage 0 概要(thin first-pass)
|
|
6
|
+
|
|
7
|
+
> **范围说明**:Stage 0 只能基于章节标题 + 卷段结构 + 抽样开头/结尾产出 thin first-pass(~200 字)。**禁止**在此阶段写出 500-1000 字 plot-aware 概要——读取范围不足以支撑那个密度。完整版在 Stage 5 落盘覆盖(见 [stage5-report.md](stage5-report.md)「完整概要」)。
|
|
8
|
+
|
|
9
|
+
输出 `概要.md`:总字数{X}万 | 总章数{N} | 题材{类型}
|
|
10
|
+
|
|
11
|
+
| 卷/段 | 章节范围 | 章数 | 预估字数 |
|
|
12
|
+
|-------|----------|------|----------|
|
|
13
|
+
| {卷名} | 第1-X章 | {N} | {W}万 |
|
|
14
|
+
|
|
15
|
+
首版概要(~200字,thin first-pass):{从章节标题 + 第1章+末章抽样归纳出的核心驱动 + 主角名 + 大致设定,不要硬凑剧情转折}
|
|
16
|
+
章节索引:| 章节 | 标题 | 字数 |
|
|
17
|
+
|
|
18
|
+
> Stage 5 完成后会就地覆盖此文件的「首版概要」段为「全书概要(500-1000字 plot-aware)」。章节索引和卷段表保留不变。
|
|
19
|
+
|
|
20
|
+
## Stage 1 黄金三章
|
|
21
|
+
|
|
22
|
+
黄金三章拆为三个单章文件,每章一个:`章节/第1章_深度拆解.md`、`章节/第2章_深度拆解.md`、`章节/第3章_深度拆解.md`。每个文件按以下模板输出。
|
|
23
|
+
|
|
24
|
+
字数约{X}字 | 核心事件:{一句话}
|
|
25
|
+
|
|
26
|
+
**开篇钩子**(第1章看前500字):类型{悬念/冲突/反差/信息差/代入感} | 手法{描述} | 效果{强/中/弱}—{原因}
|
|
27
|
+
|
|
28
|
+
**人物出场**:{列表} | 主角塑造{直接描写/对话/行为/他人评价} | 第一印象{描述}
|
|
29
|
+
|
|
30
|
+
**世界观铺设**:透露{信息} | 隐藏{信息} | 方式{对话/旁白/事件}
|
|
31
|
+
|
|
32
|
+
**结构拆解**:| 段落范围 | 功能{铺垫/冲突/爽点/收尾} | 字数 |
|
|
33
|
+
|
|
34
|
+
**爽点分析**:类型{装逼打脸/逆袭反转/获得机缘/信息差碾压/情感满足} | 铺垫{X}字 / 释放{Y}字 / 铺放比{Z:1} | 情绪曲线
|
|
35
|
+
|
|
36
|
+
**反应层拆解**(如有):
|
|
37
|
+
|
|
38
|
+
| 层级 | 角色 | 反应 | 篇幅 |
|
|
39
|
+
|------|------|------|------|
|
|
40
|
+
| 质疑/轻视 | | | |
|
|
41
|
+
| 震惊/打脸 | | | |
|
|
42
|
+
| 强者重评 | | | |
|
|
43
|
+
| 扩散传播 | | | |
|
|
44
|
+
|
|
45
|
+
反应篇幅比{N:1} — 低于1.5 = 爽感不足
|
|
46
|
+
|
|
47
|
+
**释放后追证**(如有):爽点释放后反派真实态度?{行为+原文引用}
|
|
48
|
+
|
|
49
|
+
**冲突升级**(如有):{行为} | 升级层级{口头→经济→暴力} | 对角色画像影响
|
|
50
|
+
|
|
51
|
+
**背景信息揭示**(如有):揭示{什么} | 叙事功能{推翻预设/重新解读/铺垫新线/认知偏差} | 对主线影响
|
|
52
|
+
|
|
53
|
+
**章尾钩子**:类型{悬念/反转/新信息/新角色} | 内容{描述} | 期待度{强/中/弱}
|
|
54
|
+
|
|
55
|
+
**可借鉴要素**:{可复用技巧}
|
|
56
|
+
|
|
57
|
+
> 第二、三章额外关注:信息密度 / 冲突升级(vs上章) / 节奏变化 / 爽点间隔字数。
|
|
58
|
+
> 反派若为非人形(灵气复苏/末世/国运等抽象对抗型),在「爽点分析」处改用抽象对抗型路由:核心对抗面{描述} | 紧迫感来源{描述} | 升级机制{描述} | 叙事替代{用什么替代传统打脸}。
|
|
59
|
+
|
|
60
|
+
同一次黄金三章阅读优先另写 `_style-sample.txt`,减少 Stage 6 的定点取样;旧项目没有该缓存时,Stage 6 仍可按索引选择 4–6 章并只读取对应行段:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
<!-- STYLE_SAMPLE:v1 -->
|
|
64
|
+
## 片段 A
|
|
65
|
+
source_locator: 原文/原文.txt:L{起始行}-L{结束行}
|
|
66
|
+
基调: {紧张/压抑/轻松/温馨/热血}
|
|
67
|
+
示范点: {句长节奏/标点/对话潜台词/动作与反应等}
|
|
68
|
+
{300—500字连续原句}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
共选4—6段,允许同章多段,但范围不得重叠;只保留用于表达分析的最小样本,不建立第二套剧情事实。
|
|
72
|
+
|
|
73
|
+
## 快速预览报告
|
|
74
|
+
|
|
75
|
+
Stage 1 停靠点交付物 `拆文库/{书名}/快速预览.md`,模板见 [author-facing.md](author-facing.md)「快速预览.md」。字段只取 Stage 0/1 已产出数据(概要.md + 黄金三章深度拆解),不引入需 Stage 2-6 才能算出的内容;「基本信息」「黄金三章评分」两节与终态 `拆文报告.md` 同名同结构。终态生成后不删除 `快速预览.md`。
|
|
76
|
+
|
|
77
|
+
## 通用速查
|
|
78
|
+
|
|
79
|
+
### 爽点类型
|
|
80
|
+
|
|
81
|
+
| 类型 | 定义 | 例子 |
|
|
82
|
+
|------|------|------|
|
|
83
|
+
| 装逼打脸 | 实力碾压被轻视的人 | 「你也配?」 |
|
|
84
|
+
| 逆袭反转 | 绝境翻盘 | 废材觉醒 |
|
|
85
|
+
| 获得机缘 | 得到别人没有的 | 捡到神器 |
|
|
86
|
+
| 信息差碾压 | 读者和主角知道别人不知道的 | 重生先知优势 |
|
|
87
|
+
| 情感满足 | 人物关系发展 | 告白/团聚/认可 |
|
|
88
|
+
| 扮猪吃虎 | 隐藏实力突然展露 | 弱者实则是强者 |
|
|
89
|
+
|
|
90
|
+
### 钩子类型
|
|
91
|
+
|
|
92
|
+
| 类型 | 定义 | 示例 |
|
|
93
|
+
|------|------|------|
|
|
94
|
+
| 悬念钩 | 未解之谜 | 「剑为什么认他为主?」 |
|
|
95
|
+
| 冲突钩 | 直接对抗 | 开篇追杀 |
|
|
96
|
+
| 反差钩 | 违反常识 | 「穿越第一天就破产」 |
|
|
97
|
+
| 代入钩 | 读者共鸣 | 相似困境 |
|
|
98
|
+
| 信息差钩 | 读者知道角色不知道的 | 「他还不知道面前是……」 |
|
|
99
|
+
|
|
100
|
+
### 爽点循环结构
|
|
101
|
+
|
|
102
|
+
三层微观循环:
|
|
103
|
+
- **铺垫层(蓄势)**:压抑/困境/信息差制造情绪缺口
|
|
104
|
+
- **释放层(爽感)**:展露实力/打脸/碾压,强度由反应层数和篇幅决定
|
|
105
|
+
- **衔接层(承转)**:旧循环结束埋新钩子
|
|
106
|
+
|
|
107
|
+
反应层递进:质疑/轻视 → 震惊/打脸 → 强者重新评价 → 扩散效应
|
|
108
|
+
反应篇幅比 = 反应总字数 / 装逼字数。低于1.5 = 爽感没接住。
|
|
109
|
+
|
|
110
|
+
### 衔接过渡模式
|
|
111
|
+
|
|
112
|
+
| 模式 | 机制 | 示例 |
|
|
113
|
+
|------|------|------|
|
|
114
|
+
| 打完小的来大的 | 释放层对手引出更强对手 | 打败弟子→师父找上门 |
|
|
115
|
+
| 胜利发现隐患 | 释放成功暴露新问题 | 赢了比赛→发现中毒 |
|
|
116
|
+
| 身份暴露/反转 | 释放中身份被识破 | 打脸后被认出真实身份 |
|
|
117
|
+
| 利益升级 | 成果指向更大目标 | 线索→更深层宝藏 |
|
|
118
|
+
| 关系突变 | 释放改变关系格局 | 救的人变仇家后代 |
|
|
119
|
+
|
|
120
|
+
### 题材爽点形态
|
|
121
|
+
|
|
122
|
+
| 题材 | 释放层形态 | 反应层来源 | 铺垫层缺口 |
|
|
123
|
+
|------|-----------|-----------|-----------|
|
|
124
|
+
| 玄幻/修仙 | 实力碾压/境界突破 | 同门/对手/长老震惊 | 功法残缺/资源匮乏/血脉压制 |
|
|
125
|
+
| 都市 | 预测准确/身份揭露 | 商业对手/前女友/权贵 | 破产/被辞/被退婚 |
|
|
126
|
+
| 系统文 | 解锁稀有技能/任务奖励 | 系统稀有度标注 | 任务失败惩罚/技能冷却 |
|
|
127
|
+
| 历史 | 以弱胜强/先知优势 | 谋士/帝王/敌将震惊 | 信息不对称/身份低微 |
|
|
128
|
+
| 悬疑 | 真相揭露/反杀 | 被揭穿者崩溃/读者恍然 | 线索误导/嫌疑人洗白 |
|
|
@@ -0,0 +1,229 @@
|
|
|
1
|
+
# Stage 2:批次提取规则与模板
|
|
2
|
+
|
|
3
|
+
子代理可用时由 `chapter-extractor` 按自己的定义提取,主会话只按 [pipeline-ops.md](pipeline-ops.md) 派发与提交,不读本文件。子代理不可用、主会话自己写批次时读本文件。
|
|
4
|
+
|
|
5
|
+
## 提取方法
|
|
6
|
+
|
|
7
|
+
先运行 `manage_analysis_run.py plan`,只执行标准输出中的内存计划。Stage 2 不再存在逐章独立调用,也不落盘计划文件。
|
|
8
|
+
|
|
9
|
+
### A. 已有成果批次
|
|
10
|
+
|
|
11
|
+
对 `existing-results` 批次只读取计划列出的旧拆文文件:
|
|
12
|
+
|
|
13
|
+
1. 上游 `章节/第N章_摘要.md` 优先;
|
|
14
|
+
2. 没有摘要时复用黄金三章;
|
|
15
|
+
3. 同一章只选择一个优先来源。
|
|
16
|
+
|
|
17
|
+
从旧成果二次提取剧情点、关键事件与披露候选、关系和三维节奏。不得打开原文,不得为了统一格式重写旧逐章文件。旧资料没有的信息留空或写“旧资料未提供”。
|
|
18
|
+
|
|
19
|
+
### B. 未拆原文章节块
|
|
20
|
+
|
|
21
|
+
对 `raw-original` 批次一次读取一个不重叠的连续块:
|
|
22
|
+
|
|
23
|
+
- 普通短章通常 3 章;
|
|
24
|
+
- 长章或信息密集时 1-2 章;
|
|
25
|
+
- 每块最多 3 章,默认同时受 25,000 字符上限约束;
|
|
26
|
+
- 遇到卷界、来源缺口或空章必须断开;
|
|
27
|
+
- 每章在全书运行计划中只属于一个原文块。
|
|
28
|
+
|
|
29
|
+
同一次理解产生两层结果:
|
|
30
|
+
|
|
31
|
+
1. 每章紧凑事实:概要、因果、信息变化、状态变化、三维分数、钩子、证据和情节点(一般 10–20 个、最多 30,短章按字数降下限);
|
|
32
|
+
2. 批次观察:剧情点、关键事件与披露候选、关系、三维异常点和跨批状态。
|
|
33
|
+
|
|
34
|
+
逐章兼容文件由脚本从紧凑事实机械生成;批次缓存保留全部逐章紧凑事实和跨章观察,作为恢复证据。全局聚合用 `digest` 取跨章观察与所需逐章字段,不整份读缓存,也不逐个打开章节文件。不得第二次读取该块来生成逐章文件,也不得把 50-60 章交给一个 agent 后让它自行拆成多个“批次”。
|
|
35
|
+
|
|
36
|
+
### C. 剧情点是主要分析单位
|
|
37
|
+
|
|
38
|
+
每个剧情点记录:
|
|
39
|
+
|
|
40
|
+
| 字段 | 说明 |
|
|
41
|
+
|---|---|
|
|
42
|
+
| 章节范围 | 当前可确认的起止章;允许跨批延续 |
|
|
43
|
+
| 起始目标 | 谁想做什么 |
|
|
44
|
+
| 阻碍 | 人物、规则、资源、信息或环境阻碍 |
|
|
45
|
+
| 变化来源 | 改变局面的选择、行动或外部事件 |
|
|
46
|
+
| 局面变化 | 目标、风险、资源、关系、知识或行动方向的前后差异 |
|
|
47
|
+
| 得失 | 收益归谁、代价由谁承担 |
|
|
48
|
+
| 后续影响 | 结果怎样促成或限制后续行动 |
|
|
49
|
+
| 状态 | `open` / `closed` |
|
|
50
|
+
| 证据 | 原文模式用 source locator;已有成果模式用资料路径 |
|
|
51
|
+
|
|
52
|
+
读取批次不等于剧情点。一个批次可以出现多个剧情点,一个剧情点也可以跨批次。跨批延续时继承剧情点 ID 和当前状态;Stage 3 再统一合并、拆分和校验边界。
|
|
53
|
+
|
|
54
|
+
### D. 兼容逐章资料
|
|
55
|
+
|
|
56
|
+
逐章投影只保留现有导入、写作与查询实际使用的内容:概要、关键事件、因果、局面结果、涉及、信息变化、状态变化、三维节奏、章尾钩子、证据和情节点序列(逐点带基调)。取消逐章重复的长篇写法公式、角色复述和扩写技法长表。写法机制、信息差、关系与节奏集中在剧情点及 Stage 3 权威产物中。
|
|
57
|
+
|
|
58
|
+
### E. 跨章观察
|
|
59
|
+
|
|
60
|
+
批次缓存固定包含:
|
|
61
|
+
|
|
62
|
+
1. 剧情点;
|
|
63
|
+
2. 仅限主线/关键转折的事件与披露候选;
|
|
64
|
+
3. 有向关系变化;
|
|
65
|
+
4. 事件、情绪、篇幅三维节奏的峰谷与分离点;
|
|
66
|
+
5. 未闭合剧情点、悬念、关系状态和待核事项。
|
|
67
|
+
|
|
68
|
+
角色实体只记录新别名和状态变化,不在每章重复生成人物小传。
|
|
69
|
+
|
|
70
|
+
### 原子提取六大铁律
|
|
71
|
+
|
|
72
|
+
1. **双序分离**:逐章事实按文本披露顺序排列;客观事件另标故事内发生顺序,不能把倒叙或回忆挪成当前事件
|
|
73
|
+
2. **客观白描**:记录"发生了什么"和结果,原文明说的起因照写,不推测未写出的动机,不用叙事框架词
|
|
74
|
+
3. **信息保真**:不遗漏改变语境的关键细节
|
|
75
|
+
4. **高度浓缩**:一个情节点一句话概括
|
|
76
|
+
5. **复合合并**:为同一戏剧目的服务的连续微动作合并为一个情节点
|
|
77
|
+
6. **客观事实**:提取客观事实,不做叙事分析
|
|
78
|
+
|
|
79
|
+
**客观白描 vs 叙事框架词**:
|
|
80
|
+
- 禁止:「通过对话,郑松得知张子豪在韩国训练」
|
|
81
|
+
- 正确:「吴志斌告诉郑松,张子豪在韩国训练」
|
|
82
|
+
- 禁止:「林风展现了自己的实力」
|
|
83
|
+
- 正确:「林风三招击败对手,围观者倒吸一口凉气」
|
|
84
|
+
- 禁止:「邵阳感到心碎和愤怒」
|
|
85
|
+
- 正确:「邵阳目睹宋丽与人拥抱,表情由刺痛转为冷漠」
|
|
86
|
+
|
|
87
|
+
## 分块与主会话串行
|
|
88
|
+
|
|
89
|
+
Stage 2 按运行计划分别建立旧成果批次和缺章原文块,每批调用一次 chapter-extractor;原文块同次返回逐章事实和跨章观察,旧成果批次只返回跨章观察。其他阶段只消费这些结果和可复用旧资料。
|
|
90
|
+
|
|
91
|
+
> **先分清两个互不相干的轴**(混在一个「块」字里会让 >500 章出现差 30-100 倍的两套规格):
|
|
92
|
+
> - **语义分块**=*在哪里切*。按叙事弧切,产出「块元数据」用于组织分析结果,块可以很大(一个 914 章的书通常 5-10 个弧)。它不决定一次读多少。
|
|
93
|
+
> - **处理批次**=*一次读多少*。受上下文容量约束,原文块按索引字数切分,旧成果批次按资料体积切分。下表指的是**处理批次**。
|
|
94
|
+
|
|
95
|
+
| 单章与上下文情况 | 读取批次策略 | 常见章数 |
|
|
96
|
+
|------|------|--------|
|
|
97
|
+
| 普通章节、上下文充足 | 连续读取并保留跨章状态 | 3 章/批 |
|
|
98
|
+
| 长章、信息密集或上下文较小 | 缩小批次,不截断明显短因果链 | 1-2 章/批 |
|
|
99
|
+
| 超长书 | 批次数量增加;语义弧仍独立于读取批次 | 仍按上述字数与上下文判断 |
|
|
100
|
+
|
|
101
|
+
> 批次数由原文长度和上下文决定,不设“超过 500 章就固定 10-20 章/批”的第二套规则。
|
|
102
|
+
|
|
103
|
+
**主会话串行模式(agent 不可用时的降级)**
|
|
104
|
+
|
|
105
|
+
无法 spawn 子代理时由主会话按同一连续批次契约顺序处理。批次可因主会话上下文更小而缩短,但仍须同次产生逐章事实和跨章观察,不能退回每章一次调用。
|
|
106
|
+
|
|
107
|
+
**不要做的事**
|
|
108
|
+
|
|
109
|
+
- 不要把大语义弧整块塞进一次上下文。
|
|
110
|
+
- 不要固定章数而忽略原文字数、上下文容量和章界。
|
|
111
|
+
- 不要在 Stage 3、4、5 各自重新读取同一批原文。
|
|
112
|
+
- 不要用跳读锚点冒充完整语义覆盖。
|
|
113
|
+
|
|
114
|
+
## 输出模板
|
|
115
|
+
|
|
116
|
+
Stage 2 有两种互斥输入。`raw-original` 只处理运行计划列出的未拆章节块;`existing-results` 只读取旧成果做二次提取。两种结果都形成批次剧情点,只有 `raw-original` 生成新的逐章兼容投影。
|
|
117
|
+
|
|
118
|
+
### 未拆章节的紧凑语义结果
|
|
119
|
+
|
|
120
|
+
`chapter-extractor` 在一次章节块阅读中按章输出以下紧凑字段。它是模型输出,不直接充当旧接口文件:
|
|
121
|
+
|
|
122
|
+
```markdown
|
|
123
|
+
## 第{N}章 {标题}
|
|
124
|
+
|
|
125
|
+
**概要**:{60-160字,按文本披露顺序说明主要行动、原文给出的原因和结果}
|
|
126
|
+
|
|
127
|
+
**因果**:目标:{谁想做什么}|阻碍:{具体阻碍}|行动:{改变局面的选择/行动/外部事件}|结果:{局面变化}|得失:{承担者及得失}
|
|
128
|
+
|
|
129
|
+
**关键行动**:{真正改变局面的一个选择、行动或外部事件}
|
|
130
|
+
|
|
131
|
+
**局面结果**:{行动后的目标、风险、资源或关系净变化}
|
|
132
|
+
|
|
133
|
+
**涉及人物**:{关键人物,顿号分隔;没有写无}
|
|
134
|
+
|
|
135
|
+
**信息变化**:{新披露内容|读者所知|关键角色所知或未知}
|
|
136
|
+
|
|
137
|
+
**状态变化**:{角色/关系/资源/风险的净变化}
|
|
138
|
+
|
|
139
|
+
**三维节奏**:事件{1-5}/5|情绪{类型+1-5}/5|篇幅{1-3}/3|{三轴差异的一句话原因}
|
|
140
|
+
|
|
141
|
+
**章尾钩子**:{类型与具体等待;没有写无}
|
|
142
|
+
|
|
143
|
+
**证据**:{source_locator+5-15字定位词}
|
|
144
|
+
|
|
145
|
+
**情节点**:
|
|
146
|
+
|
|
147
|
+
P{序号} **{标题}**:类型{转折点/信息揭示/冲突/解决/铺垫/行动/对话/状态变化} | {白描一句话:谁做了什么、结果如何;原文给出的起因一并写进来,不推测动机;埋伏笔的写出伏笔线索} | 涉及{全名,逗号分隔;无人物写无} | 地点{如明确,否则无} | 物品{如涉及,否则无} | 时间{如明确,否则无}
|
|
148
|
+
{可选引用行:≤400字原文连续切片,或 `原文定位:{可 grep 的原句片段}`}
|
|
149
|
+
|
|
150
|
+
主题标签{爱情/亲情/友情/权力/金钱/成长/复仇/悬念/搞笑/热血/日常/其他} | 基调:{紧张/轻松/悲伤/热血/爽/甜/温馨/恐怖/压抑/其他}
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
P{序号+1} ……
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**情节点**是逐章事件序列,下游对标挑章、结构关键点定位和导入反推情绪弧线都按它读:
|
|
158
|
+
|
|
159
|
+
- 原文块每章一般 10–20 个,按字数调节,最多 30;下限是计划给的 `min_plot_points`(字数÷200 四舍五入,至少 1、至多 10);旧成果补摘要下限 1 个,按旧资料写到的事件拆,不凑数;编号从 P1 连续。太粗(整段打架)丢细节,太细(举起右手)碎片化,恰当粒度是一个完整戏剧事件。
|
|
160
|
+
- 严格按原文事件时间顺序,不重排、不归纳。标题 ≤15 字,不与白描同句。
|
|
161
|
+
- 白描只写可见事实:不替角色补原文没写的情感、意图,不写“精彩”“气氛紧张”这类评价,不用“通过对话得知”这类叙事框架词;原文明说的起因和内心活动照写。
|
|
162
|
+
- 字段名后不加冒号;`主题标签` 只填一个值;每个情节点紧跟自己的 `主题标签X | 基调:Y` 行,`基调:` 用全角冒号。
|
|
163
|
+
- 引用只给关键转折、关键台词、写法样本,每章至多 8 条,其余情节点不写引用行。
|
|
164
|
+
|
|
165
|
+
### 批次提交格式
|
|
166
|
+
|
|
167
|
+
提交给 `manage_analysis_run.py commit` 的文件按下列标记包裹,子代理与主会话自己写批次都一样;标记缺失或顺序不对整批拒收:
|
|
168
|
+
|
|
169
|
+
```markdown
|
|
170
|
+
<!-- CHAPTER_START:{N} -->
|
|
171
|
+
## 第{N}章 {标题}
|
|
172
|
+
{上面的紧凑字段与情节点}
|
|
173
|
+
<!-- CHAPTER_END:{N} -->
|
|
174
|
+
(本批每章一块,章号连续、各恰好一次)
|
|
175
|
+
|
|
176
|
+
<!-- BATCH_OBSERVATIONS_START -->
|
|
177
|
+
## 跨章观察
|
|
178
|
+
{下方「批次剧情点」的五个小节}
|
|
179
|
+
<!-- BATCH_OBSERVATIONS_END -->
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
- 旧成果批次(`REUSE-*`):计划列出的摘要缺口落在本批时,为本批每章都写章节块(情节点至少 1 个);没有缺口时不写章节块,改在开头写一行 `<!-- REUSED_CHAPTERS:{起章}-{止章} -->`。
|
|
183
|
+
- 跨章观察块恰好一个,放在所有章节块之后。不要输出 `MODEL_OUTPUT_START/END` 或 `story-long-analyze:cache` 标记(脚本自己加)。
|
|
184
|
+
|
|
185
|
+
`manage_analysis_run.py commit` 校验这些字段后,机械生成缺失的 `章节/第{N}章_摘要.md`:情节点逐条投影并把类型、主题、基调映射到枚举,章级字段保留“概要、关键事件、涉及、章尾钩子、证据”标签。原文块每章情节点少于该章 `min_plot_points` 或多于 30 时整批拒收。同一批完整模型结果和跨章观察写进 `_analysis_cache/批次-{范围ID}.md`,作为恢复证据;全局合并用 `manage_analysis_run.py digest` 取其跨章观察,不整批读取。模型不输出章节卡表,也不为兼容文件再次读取原文。
|
|
186
|
+
|
|
187
|
+
### 批次剧情点
|
|
188
|
+
|
|
189
|
+
`raw-original` 与 `existing-results` 都按范围 ID 写完整批次缓存,内容共用下列结构:
|
|
190
|
+
|
|
191
|
+
```markdown
|
|
192
|
+
## 跨章观察
|
|
193
|
+
|
|
194
|
+
### 剧情点
|
|
195
|
+
|
|
196
|
+
| 剧情点ID | 章节范围 | 起始目标 | 阻碍 | 关键选择/行动/外部事件 | 局面变化 | 得失与承担者 | 后续影响 | 状态 | 证据 |
|
|
197
|
+
|---|---|---|---|---|---|---|---|---|---|
|
|
198
|
+
|
|
199
|
+
### 关键事件与披露候选
|
|
200
|
+
|
|
201
|
+
只列可能进入主线或关键转折表的候选:候选ID|章节|客观事件及大致发生顺序|异常→线索→解释→确认的披露路径|读者所知|关键角色所知|判断变化|叙事作用|证据。过渡动作不建条目。
|
|
202
|
+
|
|
203
|
+
### 关系变化
|
|
204
|
+
|
|
205
|
+
| 关系ID | 主体 → 客体 | 关系动作 | 表面/真实状态 | 触发 | 双方得失 | 变化后状态 | 证据强度 | 证据 |
|
|
206
|
+
|---|---|---|---|---|---|---|---|---|
|
|
207
|
+
|
|
208
|
+
### 三维节奏
|
|
209
|
+
|
|
210
|
+
只列峰值、谷值与三轴明显分离处:章节/剧情点|事件推进及理由|情绪类型/强度及触发|篇幅展开度|展开/压缩/省略/反复的作用|证据。普通章的紧凑分数不在这里重复。
|
|
211
|
+
|
|
212
|
+
### 跨批状态
|
|
213
|
+
|
|
214
|
+
- 已确认别名:{别名→本名,含交接批传下来的}
|
|
215
|
+
- 未闭合剧情点:{ID、主体、目标、阻碍、最后证据}
|
|
216
|
+
- 未决悬念:{读者已知和等待确认的内容}
|
|
217
|
+
- 关系状态:{下一批需继承的有向状态}
|
|
218
|
+
- 待核事项:{冲突、C暂定或缺失}
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
剧情点回答“目标 → 阻碍 → 改变局面的行动或外部事件 → 得失 → 后续影响”。它可以跨章和跨读取批次,不能把每个处理批次直接当成剧情点。跨批未闭合时沿用剧情点 ID;Stage 3 再做合并、拆分和边界复核。
|
|
222
|
+
|
|
223
|
+
### 已有成果二次提取
|
|
224
|
+
|
|
225
|
+
`existing-results` 的证据只指向只读计划列出的旧成果文件。完整旧项目增强时用 `<!-- REUSED_CHAPTERS:{起章}-{止章} -->` 声明覆盖,只写批次剧情点及关联观察。计划列出的摘要缺口落在本批时,必须为本批每章从黄金三章生成同一紧凑章块(情节点至少 1 个),否则摘要永远补不上;提交脚本只补缺失文件。旧资料没有的字段写“旧资料未提供”。
|
|
226
|
+
|
|
227
|
+
每个成功批次由 `manage_analysis_run.py commit` 先写完整缓存、再补缺失摘要、最后写 `_progress.md` 状态行。没有逐文件收据、checkpoint 账本或 Stage receipt。
|
|
228
|
+
|
|
229
|
+
**Stage 2 输出自检**:输入模式与 `manage_analysis_run.py plan` 的内存计划一致|原文章节块连续、不重叠且不超过3章/25,000字符|已有成果模式没有读取原文|每章紧凑字段完整|情节点不少于 `min_plot_points`、最多 30、按时序、白描客观|剧情点包含因果与得失|只保留关键事件/披露候选|三维节奏分别解释|跨批状态可继续。
|