@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@oh-story/dsh",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"description": "A DSH plugin for fiction, short-drama, interactive-game, and video-recap production",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek-harness",
|
|
@@ -70,26 +70,26 @@
|
|
|
70
70
|
"license": "MIT",
|
|
71
71
|
"peerDependencies": {
|
|
72
72
|
"@deepseek-ai/cordis": "^4.0.4",
|
|
73
|
-
"@deepseek-ai/dsh-agent": ">=0.
|
|
74
|
-
"@deepseek-ai/dsh-api-session-controller": ">=0.
|
|
75
|
-
"@deepseek-ai/dsh-client-store": ">=0.
|
|
76
|
-
"@deepseek-ai/dsh-client-ui-chat": ">=0.
|
|
77
|
-
"@deepseek-ai/dsh-client-ui-conversation": ">=0.
|
|
78
|
-
"@deepseek-ai/dsh-client-ui-layout": ">=0.
|
|
79
|
-
"@deepseek-ai/dsh-client-ui-renderer": ">=0.
|
|
80
|
-
"@deepseek-ai/dsh-client-ui-session": ">=0.
|
|
81
|
-
"@deepseek-ai/dsh-client-ui-slots": ">=0.
|
|
82
|
-
"@deepseek-ai/dsh-client-ui-tool": ">=0.
|
|
83
|
-
"@deepseek-ai/dsh-fs": ">=0.
|
|
84
|
-
"@deepseek-ai/dsh-host-webserver": ">=0.
|
|
85
|
-
"@deepseek-ai/dsh-llm": ">=0.
|
|
86
|
-
"@deepseek-ai/dsh-session": ">=0.
|
|
87
|
-
"@deepseek-ai/dsh-sandbox-policy": ">=0.
|
|
88
|
-
"@deepseek-ai/dsh-skill": ">=0.
|
|
89
|
-
"@deepseek-ai/dsh-subagent": ">=0.
|
|
90
|
-
"@deepseek-ai/dsh-tools": ">=0.
|
|
91
|
-
"@deepseek-ai/dsh-typert-registry": ">=0.
|
|
92
|
-
"@deepseek-ai/dsh-util-values": ">=0.
|
|
73
|
+
"@deepseek-ai/dsh-agent": ">=0.2.0-rc.1 <0.2.1-0",
|
|
74
|
+
"@deepseek-ai/dsh-api-session-controller": ">=0.2.0-rc.1 <0.2.1-0",
|
|
75
|
+
"@deepseek-ai/dsh-client-store": ">=0.2.0-rc.1 <0.2.1-0",
|
|
76
|
+
"@deepseek-ai/dsh-client-ui-chat": ">=0.2.0-rc.1 <0.2.1-0",
|
|
77
|
+
"@deepseek-ai/dsh-client-ui-conversation": ">=0.2.0-rc.1 <0.2.1-0",
|
|
78
|
+
"@deepseek-ai/dsh-client-ui-layout": ">=0.2.0-rc.1 <0.2.1-0",
|
|
79
|
+
"@deepseek-ai/dsh-client-ui-renderer": ">=0.2.0-rc.1 <0.2.1-0",
|
|
80
|
+
"@deepseek-ai/dsh-client-ui-session": ">=0.2.0-rc.1 <0.2.1-0",
|
|
81
|
+
"@deepseek-ai/dsh-client-ui-slots": ">=0.2.0-rc.1 <0.2.1-0",
|
|
82
|
+
"@deepseek-ai/dsh-client-ui-tool": ">=0.2.0-rc.1 <0.2.1-0",
|
|
83
|
+
"@deepseek-ai/dsh-fs": ">=0.2.0-rc.1 <0.2.1-0",
|
|
84
|
+
"@deepseek-ai/dsh-host-webserver": ">=0.2.0-rc.1 <0.2.1-0",
|
|
85
|
+
"@deepseek-ai/dsh-llm": ">=0.2.0-rc.1 <0.2.1-0",
|
|
86
|
+
"@deepseek-ai/dsh-session": ">=0.2.0-rc.1 <0.2.1-0",
|
|
87
|
+
"@deepseek-ai/dsh-sandbox-policy": ">=0.2.0-rc.1 <0.2.1-0",
|
|
88
|
+
"@deepseek-ai/dsh-skill": ">=0.2.0-rc.1 <0.2.1-0",
|
|
89
|
+
"@deepseek-ai/dsh-subagent": ">=0.2.0-rc.1 <0.2.1-0",
|
|
90
|
+
"@deepseek-ai/dsh-tools": ">=0.2.0-rc.1 <0.2.1-0",
|
|
91
|
+
"@deepseek-ai/dsh-typert-registry": ">=0.2.0-rc.1 <0.2.1-0",
|
|
92
|
+
"@deepseek-ai/dsh-util-values": ">=0.2.0-rc.1 <0.2.1-0",
|
|
93
93
|
"@deepseek-ai/schemastery": "^3.18.4",
|
|
94
94
|
"react": "^18.3.1",
|
|
95
95
|
"react-dom": "^18.3.1",
|
|
@@ -97,26 +97,26 @@
|
|
|
97
97
|
},
|
|
98
98
|
"devDependencies": {
|
|
99
99
|
"@deepseek-ai/cordis": "4.0.4",
|
|
100
|
-
"@deepseek-ai/dsh-agent": "0.
|
|
101
|
-
"@deepseek-ai/dsh-api-session-controller": "0.
|
|
102
|
-
"@deepseek-ai/dsh-client-store": "0.
|
|
103
|
-
"@deepseek-ai/dsh-client-ui-chat": "0.
|
|
104
|
-
"@deepseek-ai/dsh-client-ui-conversation": "0.
|
|
105
|
-
"@deepseek-ai/dsh-client-ui-layout": "0.
|
|
106
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.
|
|
107
|
-
"@deepseek-ai/dsh-client-ui-session": "0.
|
|
108
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.
|
|
109
|
-
"@deepseek-ai/dsh-client-ui-tool": "0.
|
|
110
|
-
"@deepseek-ai/dsh-fs": "0.
|
|
111
|
-
"@deepseek-ai/dsh-host-webserver": "0.
|
|
112
|
-
"@deepseek-ai/dsh-llm": "0.
|
|
113
|
-
"@deepseek-ai/dsh-session": "0.
|
|
114
|
-
"@deepseek-ai/dsh-sandbox-policy": "0.
|
|
115
|
-
"@deepseek-ai/dsh-skill": "0.
|
|
116
|
-
"@deepseek-ai/dsh-subagent": "0.
|
|
117
|
-
"@deepseek-ai/dsh-tools": "0.
|
|
118
|
-
"@deepseek-ai/dsh-typert-registry": "0.
|
|
119
|
-
"@deepseek-ai/dsh-util-values": "0.
|
|
100
|
+
"@deepseek-ai/dsh-agent": "0.2.0-rc.1",
|
|
101
|
+
"@deepseek-ai/dsh-api-session-controller": "0.2.0-rc.1",
|
|
102
|
+
"@deepseek-ai/dsh-client-store": "0.2.0-rc.1",
|
|
103
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.2.0-rc.1",
|
|
104
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.2.0-rc.1",
|
|
105
|
+
"@deepseek-ai/dsh-client-ui-layout": "0.2.0-rc.1",
|
|
106
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.2.0-rc.1",
|
|
107
|
+
"@deepseek-ai/dsh-client-ui-session": "0.2.0-rc.1",
|
|
108
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.2.0-rc.1",
|
|
109
|
+
"@deepseek-ai/dsh-client-ui-tool": "0.2.0-rc.1",
|
|
110
|
+
"@deepseek-ai/dsh-fs": "0.2.0-rc.1",
|
|
111
|
+
"@deepseek-ai/dsh-host-webserver": "0.2.0-rc.1",
|
|
112
|
+
"@deepseek-ai/dsh-llm": "0.2.0-rc.1",
|
|
113
|
+
"@deepseek-ai/dsh-session": "0.2.0-rc.1",
|
|
114
|
+
"@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.1",
|
|
115
|
+
"@deepseek-ai/dsh-skill": "0.2.0-rc.1",
|
|
116
|
+
"@deepseek-ai/dsh-subagent": "0.2.0-rc.1",
|
|
117
|
+
"@deepseek-ai/dsh-tools": "0.2.0-rc.1",
|
|
118
|
+
"@deepseek-ai/dsh-typert-registry": "0.2.0-rc.1",
|
|
119
|
+
"@deepseek-ai/dsh-util-values": "0.2.0-rc.1",
|
|
120
120
|
"@deepseek-ai/schemastery": "3.18.4",
|
|
121
121
|
"@types/react": "18.3.28",
|
|
122
122
|
"@types/react-dom": "18.3.7",
|
|
@@ -1,538 +0,0 @@
|
|
|
1
|
-
# 小说素材拆解方法论
|
|
2
|
-
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
## 拆解流程 5 阶段
|
|
6
|
-
|
|
7
|
-
### 阶段 1:章节解析与机械索引
|
|
8
|
-
|
|
9
|
-
- 使用 `"{PYTHON}" "{story-long-analyze skill 根}/scripts/build_chapter_index.py"` 识别章界、标题、卷、本地章号、物理行号和正文字符数
|
|
10
|
-
- 在 `chapter_index.csv` 记录逐章 hash、全源 hash 与解析器版本;相同来源复用,不重复解析
|
|
11
|
-
- 机械索引不包含剧情、人物、情绪、钩子或模型推断
|
|
12
|
-
|
|
13
|
-
### 阶段 2:连续章节块与已有成果二次提取
|
|
14
|
-
|
|
15
|
-
先运行 `manage_analysis_run.py plan`,只执行标准输出中的内存计划。Stage 2 不再存在逐章独立调用,也不落盘计划文件。
|
|
16
|
-
|
|
17
|
-
#### A. 已有成果批次
|
|
18
|
-
|
|
19
|
-
对 `existing-results` 批次只读取计划列出的旧拆文文件:
|
|
20
|
-
|
|
21
|
-
1. 上游 `章节/第N章_摘要.md` 优先;
|
|
22
|
-
2. 没有摘要时复用黄金三章;
|
|
23
|
-
3. 同一章只选择一个优先来源。
|
|
24
|
-
|
|
25
|
-
从旧成果二次提取剧情点、关键事件与披露候选、关系和三维节奏。不得打开原文,不得为了统一格式重写旧逐章文件。旧资料没有的信息留空或写“旧资料未提供”。
|
|
26
|
-
|
|
27
|
-
#### B. 未拆原文章节块
|
|
28
|
-
|
|
29
|
-
对 `raw-original` 批次一次读取一个不重叠的连续块:
|
|
30
|
-
|
|
31
|
-
- 普通短章通常 3 章;
|
|
32
|
-
- 长章或信息密集时 1-2 章;
|
|
33
|
-
- 每块最多 3 章,默认同时受 25,000 字符上限约束;
|
|
34
|
-
- 遇到卷界、来源缺口或空章必须断开;
|
|
35
|
-
- 每章在全书运行计划中只属于一个原文块。
|
|
36
|
-
|
|
37
|
-
同一次理解产生两层结果:
|
|
38
|
-
|
|
39
|
-
1. 每章紧凑事实:概要、因果、信息变化、状态变化、三维分数、钩子、证据和 10–20 个情节点(长章最多 30);
|
|
40
|
-
2. 批次观察:剧情点、关键事件与披露候选、关系、三维异常点和跨批状态。
|
|
41
|
-
|
|
42
|
-
逐章兼容文件由脚本从紧凑事实机械生成;批次缓存保留全部逐章紧凑事实和跨章观察,作为恢复证据。全局聚合用 `digest` 取跨章观察与所需逐章字段,不整份读缓存,也不逐个打开章节文件。不得第二次读取该块来生成逐章文件,也不得把 50-60 章交给一个 agent 后让它自行拆成多个“批次”。
|
|
43
|
-
|
|
44
|
-
#### C. 剧情点是主要分析单位
|
|
45
|
-
|
|
46
|
-
每个剧情点记录:
|
|
47
|
-
|
|
48
|
-
| 字段 | 说明 |
|
|
49
|
-
|---|---|
|
|
50
|
-
| 章节范围 | 当前可确认的起止章;允许跨批延续 |
|
|
51
|
-
| 起始目标 | 谁想做什么 |
|
|
52
|
-
| 阻碍 | 人物、规则、资源、信息或环境阻碍 |
|
|
53
|
-
| 变化来源 | 改变局面的选择、行动或外部事件 |
|
|
54
|
-
| 局面变化 | 目标、风险、资源、关系、知识或行动方向的前后差异 |
|
|
55
|
-
| 得失 | 收益归谁、代价由谁承担 |
|
|
56
|
-
| 后续影响 | 结果怎样促成或限制后续行动 |
|
|
57
|
-
| 状态 | `open` / `closed` |
|
|
58
|
-
| 证据 | 原文模式用 source locator;已有成果模式用资料路径 |
|
|
59
|
-
|
|
60
|
-
读取批次不等于剧情点。一个批次可以出现多个剧情点,一个剧情点也可以跨批次。跨批延续时继承剧情点 ID 和当前状态;Stage 3 再统一合并、拆分和校验边界。
|
|
61
|
-
|
|
62
|
-
#### D. 兼容逐章资料
|
|
63
|
-
|
|
64
|
-
逐章投影只保留现有导入、写作与查询实际使用的内容:概要、关键事件、因果、局面结果、涉及、信息变化、状态变化、三维节奏、章尾钩子、证据和情节点序列(逐点带基调)。取消逐章重复的长篇写法公式、角色复述和扩写技法长表。写法机制、信息差、关系与节奏集中在剧情点及 Stage 3 权威产物中。
|
|
65
|
-
|
|
66
|
-
#### E. 跨章观察
|
|
67
|
-
|
|
68
|
-
批次缓存固定包含:
|
|
69
|
-
|
|
70
|
-
1. 剧情点;
|
|
71
|
-
2. 仅限主线/关键转折的事件与披露候选;
|
|
72
|
-
3. 有向关系变化;
|
|
73
|
-
4. 事件、情绪、篇幅三维节奏的峰谷与分离点;
|
|
74
|
-
5. 未闭合剧情点、悬念、关系状态和待核事项。
|
|
75
|
-
|
|
76
|
-
角色实体只记录新别名和状态变化,不在每章重复生成人物小传。
|
|
77
|
-
### 阶段 3:聚合分析(跨章节)
|
|
78
|
-
|
|
79
|
-
> **语料读取**:用 `manage_analysis_run.py digest --part observations` 读取全部批次已经降维的跨章观察;需要逐章字段(三维节奏、涉及、状态变化等)或情节点简表时用 `--part chapters` 按章节窗口取。只在关键证据冲突时定点读取对应逐章兼容文件,最多增加一次定点核验,不重新扫描原文。旧项目没有批次缓存时,直接复用现有剧情、节奏、情绪、关系和逐章资料;证据不足或冲突时标未知或待核。Stage 3–5 不回读原文;Stage 6 可以按索引定点读取 4–6 段文风锚点,但不得重新扫描整本原文。
|
|
80
|
-
|
|
81
|
-
#### 0. 故事框架识别(聚合前置)
|
|
82
|
-
|
|
83
|
-
在剧情聚合之前,先识别全书的故事框架。框架决定聚合策略:
|
|
84
|
-
|
|
85
|
-
| 框架类型 | 特征 | 聚合策略 |
|
|
86
|
-
|----------|------|----------|
|
|
87
|
-
| 升级流 | 等级体系清晰,按境界分段 | 按等级阶段划分剧情单元 |
|
|
88
|
-
| 复仇线 | 核心矛盾明确,目标驱动 | 按复仇对象/阶段划分 |
|
|
89
|
-
| 日常/单元 | 每卷独立故事,弱连续性 | 按卷/单元划分 |
|
|
90
|
-
| 多线交织 | 多视角/多时间线 | 按线索划分,交叉点单独标记 |
|
|
91
|
-
| 蜕变成长 | 主角内在变化为主线 | 按成长阶段划分 |
|
|
92
|
-
|
|
93
|
-
识别方法:扫描概要.md(Stage 0 thin first-pass 足够,无需等 Stage 5 全书概要)+ 前3章摘要 + 后3章摘要,判断核心驱动模式。
|
|
94
|
-
输出写入 `剧情/故事线.md` 的框架识别部分。
|
|
95
|
-
|
|
96
|
-
**预期剧情数量引导**(仅用于发现明显粒度异常,不作为凑数目标):
|
|
97
|
-
|
|
98
|
-
| 总章数 | 预期独立剧情数 | 依据 |
|
|
99
|
-
|--------|--------------|------|
|
|
100
|
-
| <30 章 | 3-6 个 | 短篇结构紧凑 |
|
|
101
|
-
| 30-100 章 | 5-15 个 | 每条剧情 5-20 章 |
|
|
102
|
-
| 100-300 章 | 10-25 个 | 含主线+支线+补充 |
|
|
103
|
-
| >300 章 | 15-40 个 | 多卷多线结构 |
|
|
104
|
-
|
|
105
|
-
偏差超过 ±30% 需重新检查粒度。首要原则:保证核心戏剧目标叙事弧的完整性。
|
|
106
|
-
|
|
107
|
-
**粒度层级混乱检测**(框架识别后自检):
|
|
108
|
-
|
|
109
|
-
| 混乱模式 | 检测方法 | 修正方式 |
|
|
110
|
-
|---------|---------|---------|
|
|
111
|
-
| 包含关系 | 剧情A 章节范围完全包含剧情B | 保留粒度适中的B,拆分过粗的A |
|
|
112
|
-
| 重叠率 >50% | 两剧情共享章节超过一半 | 检查是否混淆「剧情」和「剧情阶段」 |
|
|
113
|
-
| 剧情仅为另一剧情的开端/结尾 | 剧情A 只占剧情B 的首/尾几章 | 合并为同一剧情,B 的阶段 |
|
|
114
|
-
| 剧情无独立目标 | 目标描述是另一剧情的子目标 | 降级为该剧情的阶段 |
|
|
115
|
-
|
|
116
|
-
**框架识别后自检**(聚合前必须通过):
|
|
117
|
-
1. 覆盖率检查:所有剧情覆盖的章节数(去重)是否达到 85% 以上
|
|
118
|
-
2. 粒度检查:是否存在过细(单一事件)或过粗(宏观主题)的剧情,执行粒度层级混乱检测
|
|
119
|
-
3. 独立性检查:每条剧情是否满足 4 项独立性标准
|
|
120
|
-
4. 数量检查:剧情总数是否在预期范围内
|
|
121
|
-
|
|
122
|
-
#### A. 剧情聚合(两步法)
|
|
123
|
-
|
|
124
|
-
将剧情聚合拆为两步:先从摘要识别剧情大纲,再按大纲分配情节点。
|
|
125
|
-
|
|
126
|
-
**第一步:剧情大纲识别(从章节摘要)**
|
|
127
|
-
|
|
128
|
-
基于批次候选单元合并独立剧情,边界或证据不清时再读取相关章节摘要。每条大纲包含:
|
|
129
|
-
|
|
130
|
-
| 字段 | 说明 |
|
|
131
|
-
|------|------|
|
|
132
|
-
| 标题 | 简洁有力,15字以内 |
|
|
133
|
-
| 概要 | 150-300字,按时序连贯叙述因果,不靠同一连接词反复串联;含核心角色、关键地点、事件发展 |
|
|
134
|
-
| 起始目标 | 谁在本单元开始时想做什么;目标早已建立时引用来源 |
|
|
135
|
-
| 主要阻碍 | 人物、规则、资源、信息或环境造成的阻碍 |
|
|
136
|
-
| 关键变化来源 | 谁的选择/行动或什么外部事件改变局面 |
|
|
137
|
-
| 局面变化 | 目标、风险、关系、资源、知识或行动方向的前后差异 |
|
|
138
|
-
| 得失与后续 | 收益归谁、代价由谁承担,怎样限制或促成后续行动 |
|
|
139
|
-
| 类型 | 主线/爱情/成长/复仇/寻宝/悬疑/战斗/权谋/修炼/危机/谜团/日常/其他 |
|
|
140
|
-
| 主题 | 不超过3个 |
|
|
141
|
-
| 章节范围 | 起止章节号 |
|
|
142
|
-
|
|
143
|
-
识别完成后执行框架识别自检(4项检查)。
|
|
144
|
-
|
|
145
|
-
**第二步:情节点分配(按剧情大纲)**
|
|
146
|
-
|
|
147
|
-
对每条剧情大纲,扫描全部情节点,将直接服务该目标的节点分配进来。
|
|
148
|
-
|
|
149
|
-
**分配执行逻辑**(4 步):
|
|
150
|
-
1. **主题溯源与节点收集**:针对每条剧情大纲的核心目标,扫描全部情节点,将直接服务、推动或阻碍该目标的事件节点挑出
|
|
151
|
-
2. **边界识别**:识别剧情的起点(触发事件/前置条件)和终点(完成/失败标志),以及连接两者的关键过渡节点
|
|
152
|
-
3. **索引构建与验证**:将筛选出的情节点按时间顺序排列,验证覆盖完整性
|
|
153
|
-
4. **画像数据补充**:基于最终节点集合,补充完善概要、结构分布等字段
|
|
154
|
-
|
|
155
|
-
**情节点筛选标准**(判定归属时使用):
|
|
156
|
-
- **主题相关**:情节点内容与剧情概要、主题一致
|
|
157
|
-
- **角色匹配**:情节点涉及的角色与剧情核心角色相关
|
|
158
|
-
- **因果关系**:情节点与剧情发展有因果或逻辑延续
|
|
159
|
-
- **目标导向**:情节点推动或阻碍剧情目标实现
|
|
160
|
-
- **章节范围**:优先选择剧情章节范围内的情节点
|
|
161
|
-
|
|
162
|
-
**剧情粒度标准(核心要求)**:
|
|
163
|
-
|
|
164
|
-
| 粒度 | 示例 | 问题 |
|
|
165
|
-
|------|------|------|
|
|
166
|
-
| 过细(单一事件) | "获得神器"(1-2章)、"首次修炼"(第3章) | 这些是事件,不是独立剧情 |
|
|
167
|
-
| 过粗(宏观主题) | "主角的成长之路"(1-100章) | 这是主题,不是具体剧情 |
|
|
168
|
-
| **合适** | "家族觉醒与传承认知"(1-6章)、"神器获得与导师相遇"(7-13章) | 有独立目标、冲突、角色群和完整叙事弧 |
|
|
169
|
-
|
|
170
|
-
**剧情独立性判断标准**(必须同时满足):
|
|
171
|
-
1. **独立的核心目标**:有明确的、可衡量的戏剧目标(不是宏观主题或抽象概念)
|
|
172
|
-
2. **独立的主要冲突**:有具体的对抗力量和冲突事件(不是某个大冲突的子阶段)
|
|
173
|
-
3. **相对独立的角色群**:有该剧情特有的核心角色(可以与其他剧情共享部分角色)
|
|
174
|
-
4. **独立的叙事节奏**:有自己的紧张-缓和节奏
|
|
175
|
-
|
|
176
|
-
**三层覆盖策略**:
|
|
177
|
-
1. **主线剧情**(优先级最高):推动整体故事发展,通常占 60-70% 章节
|
|
178
|
-
2. **支线剧情**:感情线、成长线、战斗线等,通常占 20-30% 章节
|
|
179
|
-
3. **补充剧情**:过渡剧情、日常剧情,确保覆盖率 ≥85%
|
|
180
|
-
|
|
181
|
-
**剧情类型**:
|
|
182
|
-
- 主线(推动整体故事发展的核心剧情)
|
|
183
|
-
- 爱情(感情关系发展)
|
|
184
|
-
- 成长(角色能力/心智/地位提升)
|
|
185
|
-
- 复仇(复仇相关)
|
|
186
|
-
- 寻宝(争夺物品或目标)
|
|
187
|
-
- 悬疑(推理、真相揭露)
|
|
188
|
-
- 战斗(战争、比武、对决)
|
|
189
|
-
- 权谋(政治斗争、权力争夺)
|
|
190
|
-
- 修炼(修炼、突破、传承)
|
|
191
|
-
- 危机(危机应对、解救、逃脱)
|
|
192
|
-
- 谜团(世界观未解之谜、身世秘密、隐藏真相)
|
|
193
|
-
- 日常(日常生活、过渡性内容)
|
|
194
|
-
- 其他(无法归入以上类型)
|
|
195
|
-
|
|
196
|
-
每条剧情提取:标题、概要(150-300字,按时序连贯叙述因果)、核心目标、核心冲突、类型、章节范围。
|
|
197
|
-
标记结构分布:铺垫期/发展期/高潮期/收尾期 各包含哪些章节。
|
|
198
|
-
|
|
199
|
-
**核心目标类型参考**:
|
|
200
|
-
- 获得型:"赢得大比冠军""获得关键道具/传承""攻占要塞"
|
|
201
|
-
- 解决型:"解除家族危机""偿还巨额债务""摆脱追杀"
|
|
202
|
-
- 创造型:"创立新宗门""研发新招式""开创一个流派"
|
|
203
|
-
- 探索型:"调查父母失踪真相""探索上古遗迹""揭露阴谋"
|
|
204
|
-
|
|
205
|
-
#### B. 故事线提取
|
|
206
|
-
|
|
207
|
-
将多条剧情聚合为「故事线」:标题、描述(300-600字发展阶段划分)、主要人物、主题关键词、包含的剧情列表(至少1个剧情)。
|
|
208
|
-
|
|
209
|
-
**故事线类型**:主线/感情线/成长线/复仇线/夺宝线/冲突线/谜团线/其他
|
|
210
|
-
|
|
211
|
-
**故事线描述要求**:
|
|
212
|
-
- 划分 3-8 个发展阶段(periodization),寻找关键转折点或里程碑事件作为阶段边界
|
|
213
|
-
- 每个阶段含:核心冲突、关键角色及作用、能力/资源/地位演进、主题母题
|
|
214
|
-
- 独立追踪伏笔与回收关系链(前后呼应的伏笔-回收对)
|
|
215
|
-
- 标注与其他故事线的交织关系(并行/交织/依赖)
|
|
216
|
-
- 包含剧情按时序排列,每条故事线至少包含1个剧情
|
|
217
|
-
|
|
218
|
-
#### C. 节奏索引与情绪模块生成
|
|
219
|
-
|
|
220
|
-
Stage 3 聚合后必须生成两个权威产物,供 Stage 5 报告摘要和 `story-long-write` 直接读取:
|
|
221
|
-
|
|
222
|
-
1. **`剧情/节奏.md`(节奏权威)**
|
|
223
|
-
- 输入:批次关键事件与披露候选、三维节奏异常点、逐章紧凑事实、剧情单元和故事线。
|
|
224
|
-
- 输出:全书约 8–15 个节点的关键双时间线表、三维节奏表、关键信息推进、爽点循环、情绪触动点和爆发节奏。
|
|
225
|
-
- 生成法:只选择改变主线、关系、核心风险或读者判断的事件;客观事件只登记一次,异常、线索、解释和确认写进同一事件的披露路径。对关键区间分别判断事件状态变化、读者情绪触发和篇幅展开/压缩/省略。
|
|
226
|
-
- 校验:每条 `EV/RV/AX/RH/TR` 都能回指章节、情节点或定位;过程没有展示时写“文本未展示”,不推断作者有意省略。
|
|
227
|
-
|
|
228
|
-
2. **`剧情/情绪模块.md`(模块权威)**
|
|
229
|
-
- 输入:故事框架识别、剧情单元、`剧情/节奏.md`、读者需求判断、桥段标签。
|
|
230
|
-
- 输出:读者需求 / 情绪引擎、故事框架与套路运行图、完整模块卡(至少覆盖前三强,不设数量上限)、其他机制索引、重组与复现指南。
|
|
231
|
-
- 生成法:先抽象“读者为什么期待兑现”,再把具体剧情抽成情绪链和功能位;完整模块卡必须五个门禁字段齐全(读者想看什么、情绪链、戏剧单元、可替换项、不可照搬),必要铺垫、成立条件、失效情形、反例等按需增列,其他机制只留用途、范围和证据引用。
|
|
232
|
-
- 校验:best-effort 为模块标注来源(关联 `剧情/节奏.md` 的 RH/TR 条目或章节情节点),无把握时留空、不硬凑、不删模块;禁止把原文专名、独特事件顺序、标志性台词写成可复用模板。
|
|
233
|
-
|
|
234
|
-
**权威关系**:`剧情/节奏.md` 管节奏/触动点,`剧情/情绪模块.md` 管读者需求/模块复现。`拆文报告.md` 与 `剧情/故事线.md` 只能摘要或引用这两个文件,不能成为并列权威。
|
|
235
|
-
|
|
236
|
-
#### D. 小说概要生成(在 Stage 5 落盘,覆盖 Stage 0 thin first-pass)
|
|
237
|
-
|
|
238
|
-
整体故事框架识别 + 500-1000字高密度全书概要(涵盖主要剧情线阶段性发展、核心人物作用、关键转折点、因果关系)。
|
|
239
|
-
|
|
240
|
-
> **落盘时机**:聚合阶段(Material 阶段 3 ≈ pipeline Stage 3)产出概要文本,但**写入 `概要.md` 的动作放在 pipeline Stage 5 汇总报告**——届时 Stage 3 / 4 全部完成、信息最完整。Stage 5 覆盖 Stage 0 的 thin first-pass 段,章节索引和卷段表保留。
|
|
241
|
-
|
|
242
|
-
### 阶段 4:世界观与设定提取
|
|
243
|
-
|
|
244
|
-
Stage 2 紧凑事实中的 `涉及人物`、`状态变化` 与批次 `关系变化` 在此阶段归一为完整档案。
|
|
245
|
-
|
|
246
|
-
#### 角色两阶段模型
|
|
247
|
-
|
|
248
|
-
**阶段 A:轻量提及(Stage 2 输出)**
|
|
249
|
-
- 每章 `涉及人物` 记录关键人物,`状态变化` 记录本章可见净变化;
|
|
250
|
-
- 批次 `关系变化` 补充有方向的动作、触发与得失;
|
|
251
|
-
- 不另建出场人物表,不在单章内完成跨章人物定型。
|
|
252
|
-
|
|
253
|
-
**阶段 B:完整档案(Stage 4 构建)**
|
|
254
|
-
- 合并逐章 `涉及人物`、`状态变化` 和批次关系观察
|
|
255
|
-
- 跨章节别名解析(批次 `跨批状态` 的「已确认别名」是现成线索)
|
|
256
|
-
- 群体称呼、无名路人和泛称(亲属、社交、身份、年龄外貌类称呼,如大哥、掌柜、老师、小伙子)不建档,除非原文固定用它指代某一个人
|
|
257
|
-
- 构建完整角色档案
|
|
258
|
-
|
|
259
|
-
#### 一人一实体原则
|
|
260
|
-
|
|
261
|
-
- **绝对禁止**将不同人物的信息合并到同一个实体中
|
|
262
|
-
- 每个角色实体必须对应唯一的一个人物
|
|
263
|
-
- 如果无法确定两个称呼是否指向同一人物,必须分开创建实体
|
|
264
|
-
|
|
265
|
-
#### 别名解析规则
|
|
266
|
-
|
|
267
|
-
**别名类型**:
|
|
268
|
-
|
|
269
|
-
| 类型 | 定义 | 可合并 | 示例 |
|
|
270
|
-
|------|------|--------|------|
|
|
271
|
-
| proper_name | 专名/全名/常用名 | 是 | "希尔曼""林雷·巴鲁克" |
|
|
272
|
-
| nickname | 绰号/外号,须有同指证据 | 是(置信度≥0.85) | "龙血战士林雷" |
|
|
273
|
-
| descriptor | 描述性称谓 | 否 | "红发壮汉""随从""队长" |
|
|
274
|
-
| title | 头衔/职务 | 否 | "护卫队长""家主""族长" |
|
|
275
|
-
|
|
276
|
-
**合并约束**:
|
|
277
|
-
- 仅 proper_name 和 nickname(置信度 ≥0.85)可用于合并
|
|
278
|
-
- descriptor 和 title **永不**触发实体合并
|
|
279
|
-
- nickname 须提供同指证据:同位说明、括号别名、上下文指代、明确改名
|
|
280
|
-
|
|
281
|
-
**Archetype 量化判断**:
|
|
282
|
-
|
|
283
|
-
| 类型 | 标准 |
|
|
284
|
-
|------|------|
|
|
285
|
-
| **主角** | 出现章节 ≥50% 总章节 + 推动主线 + 有完整成长轨迹 |
|
|
286
|
-
| **反派** | 与主角对立 + 推动核心冲突 + 有明确动机 |
|
|
287
|
-
| **核心配角** | 出现章节 ≥20% OR 推动重要支线 OR 有独立人格和成长 |
|
|
288
|
-
| **功能角色** | 出现章节 <20% + 作用有限(提供信息/道具/一次性互动) |
|
|
289
|
-
|
|
290
|
-
**特殊**:前期 minor 后期 supporting → 判为 supporting。重要导师/伙伴即使出现少也可判为 supporting。
|
|
291
|
-
|
|
292
|
-
**角色档案结构**(200-500字):
|
|
293
|
-
1. 身份背景(1-2句)
|
|
294
|
-
2. 核心经历(3-5句,按时序)
|
|
295
|
-
3. 性格特质(1-2句,从行为归纳)
|
|
296
|
-
4. 能力特长(1-2句)
|
|
297
|
-
5. 人际关系(1-2句)
|
|
298
|
-
6. 成长轨迹(如有,1句)
|
|
299
|
-
|
|
300
|
-
#### 金手指合并规则
|
|
301
|
-
|
|
302
|
-
- 相互关联、共同作用的元素**合并为一个**(如"戒指+导师灵魂"是一个整体)
|
|
303
|
-
- 同一事物的不同描述角度**不拆分**
|
|
304
|
-
- 只有完全独立、互不依赖的能力来源才拆分为多个
|
|
305
|
-
- 长篇特点:金手指可能复杂多样,需详尽描述演化过程和多重能力
|
|
306
|
-
- 无金手指时注明
|
|
307
|
-
|
|
308
|
-
**金手指类型**:system(系统)/ space(空间)/ rebirth(重生)/ transmigration(穿越)/ special_physique(特殊体质)/ artifact(神器)/ bloodline(血脉)/ other(其他)
|
|
309
|
-
|
|
310
|
-
#### 世界观(按主题拆分到多个文件)
|
|
311
|
-
|
|
312
|
-
字段与落盘位置:
|
|
313
|
-
|
|
314
|
-
| 字段 | 说明 | 落盘文件 |
|
|
315
|
-
|------|------|----------|
|
|
316
|
-
| 类型 | 奇幻/现实/平行世界 | 各文件 frontmatter 或开头注明 |
|
|
317
|
-
| 力量体系 | 名称、等级、晋升方式(文本描述) | `设定/世界观/力量体系.md`(>=200字独立,否则并入 背景设定) |
|
|
318
|
-
| 地理 | 分布、主要区域、关键地点(文本描述) | `设定/世界观/地理.md`(同上,>=200字独立) |
|
|
319
|
-
| 势力 | 门派/组织/家族/国家 | **每个势力一个文件** `设定/势力/{势力名}.md`(>=200字独立;不足合并到 `设定/世界观/背景设定.md`) |
|
|
320
|
-
| 核心规则 | 世界运转的基本规则 | `设定/世界观/背景设定.md` |
|
|
321
|
-
| 特殊设定 | 区别于现实的独特设定 | `设定/世界观/背景设定.md`(与核心规则同文件) |
|
|
322
|
-
| 金手指 | 见上方「金手指合并规则」 | `设定/世界观/金手指.md`(统一在 `设定/世界观/` 子目录下,不放扁平 `设定/金手指.md`) |
|
|
323
|
-
|
|
324
|
-
> 模板与示例见 [output-templates.md](output-templates.md) 「Stage 4 设定+关系」节。下游导入只原样同步当前主题文件,不再现场拆分扁平文件。
|
|
325
|
-
|
|
326
|
-
### 阶段 5:人物关系提取
|
|
327
|
-
|
|
328
|
-
每对关系:
|
|
329
|
-
|
|
330
|
-
| 字段 | 说明 |
|
|
331
|
-
|------|------|
|
|
332
|
-
| 主体 → 客体 | 有向关系;反向动作存在时另记一条 |
|
|
333
|
-
| 关系动作/类型 | 保护、依赖、控制、服从、欺骗、竞争等动作及家人/师徒/朋友/敌人/恋人/同事/上下级/商业/其他类型 |
|
|
334
|
-
| 表面/真实状态 | 文本允许区分时分别记录;未证实的真实状态标推断等级 |
|
|
335
|
-
| 触发事件 | 导致关系建立或变化的具体行动/事件 |
|
|
336
|
-
| 双方得失 | 信任、资源、地位、行动空间、风险、债务、暴露或失控 |
|
|
337
|
-
| 变化后状态 | 本阶段结束时的状态及后续约束 |
|
|
338
|
-
| 证据 | A/B/C 强度、章节、情节点或 source locator |
|
|
339
|
-
|
|
340
|
-
#### 关系提取策略
|
|
341
|
-
|
|
342
|
-
**数据源**:从已提取的情节点描述中提取关系(不从原文提取),更高效、更聚焦。
|
|
343
|
-
|
|
344
|
-
**批量提取**:复用 Stage 2 每个连续章节批次的关系观察,只记录新关系或关系变化;不为了固定章数单独重读原文。
|
|
345
|
-
|
|
346
|
-
**关系演变追踪**:当同一对角色关系发生变化时,记录演变轨迹:
|
|
347
|
-
```
|
|
348
|
-
第{N}章:{关系状态A} → 第{M}章:{关系状态B}
|
|
349
|
-
触发事件:{具体事件}
|
|
350
|
-
情感转变:{正面→负面/负面→正面/中立→复杂 等}
|
|
351
|
-
```
|
|
352
|
-
|
|
353
|
-
**最终状态合并**:同一有向关系的多阶段状态保留最新状态作为主记录,历史变化写入演变轨迹。反向关系动作不能因角色对相同而被去重。
|
|
354
|
-
|
|
355
|
-
**隐含关系推断**:当角色间没有直接互动但有间接证据时:
|
|
356
|
-
- 通过第三方的评价/描述推断(置信度标 0.7)
|
|
357
|
-
- 通过共同出现的频率和场合推断(置信度标 0.6)
|
|
358
|
-
- 推断关系标记 `[推断]`,与直接证据关系区分
|
|
359
|
-
|
|
360
|
-
**关系网络密度**:
|
|
361
|
-
- 统计主要角色(主角+核心配角)的关系数量
|
|
362
|
-
- 关系数 < 3 → 关系网偏薄,检查是否有遗漏
|
|
363
|
-
- 关系数 > 10 → 关系网过密,检查是否有误合并
|
|
364
|
-
|
|
365
|
-
---
|
|
366
|
-
|
|
367
|
-
## 原子提取六大铁律
|
|
368
|
-
|
|
369
|
-
1. **双序分离**:逐章事实按文本披露顺序排列;客观事件另标故事内发生顺序,不能把倒叙或回忆挪成当前事件
|
|
370
|
-
2. **客观白描**:记录"发生了什么"和结果,原文明说的起因照写,不推测未写出的动机,不用叙事框架词
|
|
371
|
-
3. **信息保真**:不遗漏改变语境的关键细节
|
|
372
|
-
4. **高度浓缩**:一个情节点一句话概括
|
|
373
|
-
5. **复合合并**:为同一戏剧目的服务的连续微动作合并为一个情节点
|
|
374
|
-
6. **客观事实**:提取客观事实,不做叙事分析
|
|
375
|
-
|
|
376
|
-
**客观白描 vs 叙事框架词**:
|
|
377
|
-
- 禁止:「通过对话,郑松得知张子豪在韩国训练」
|
|
378
|
-
- 正确:「吴志斌告诉郑松,张子豪在韩国训练」
|
|
379
|
-
- 禁止:「林风展现了自己的实力」
|
|
380
|
-
- 正确:「林风三招击败对手,围观者倒吸一口凉气」
|
|
381
|
-
- 禁止:「邵阳感到心碎和愤怒」
|
|
382
|
-
- 正确:「邵阳目睹宋丽与人拥抱,表情由刺痛转为冷漠」
|
|
383
|
-
|
|
384
|
-
---
|
|
385
|
-
|
|
386
|
-
## 合成阶段事实保真(阶段 3-5:剧情/设定/角色/报告)
|
|
387
|
-
|
|
388
|
-
阶段 3-5 从章节摘要二次合成,离原文已两跳,最易把「摘要没说的」用合理推断补成「看似坐实的事实」——这是拆文事实错误的最大来源(典型:给「双系魔法师」凭空补第二系、把坐骑等级安到骑手头上、给原文没给的字段编一个数值、把出场区间填成连续跨度含没出场的章)。强模型也照样漂移,因为越远离原文,模型越靠世界知识与"合理性"填空。三条硬约束:
|
|
389
|
-
|
|
390
|
-
1. **硬事实必须可溯源**:力量等级、数值、距离、属性、势力数量、谁对谁说了什么、角色出场章节——先检查批次证据或已有事实的章节和定位;命中不到就改写为“资料未明确”或删除,不为聚合二次读取原文。
|
|
391
|
-
2. **缺失写「原文未明确」,禁编造填空**:原文没给的字段,写「原文未明确/节选未涉及」,绝不用近义项、别处的范例或惯例补一个看似合理的值。
|
|
392
|
-
3. **跨指代不串**:相邻实体的属性不互相挪用——坐骑等级≠骑手等级、A 的台词≠B 的台词、本章统计数字≠相邻章数字。
|
|
393
|
-
|
|
394
|
-
落盘后做一次**事实可溯源自检**:抽查设定、角色和报告里的硬事实,逐条核对到本次允许使用的证据源。`raw-original` 可按 `source_locator` 机械定位原文,`existing-results` 只能核对计划列出的旧成果文件;旧成果没有的细节改写为「旧资料未提供」或删除,不借核证之名回读已覆盖章节原文。此自检独立于下方三个比率——比率查归类质量,它查事实真伪。
|
|
395
|
-
|
|
396
|
-
---
|
|
397
|
-
|
|
398
|
-
目录结构见 SKILL.md「输出目录结构」。
|
|
399
|
-
|
|
400
|
-
---
|
|
401
|
-
|
|
402
|
-
## 质量阈值体系
|
|
403
|
-
|
|
404
|
-
阶段 3 和阶段 4 完成后自检:
|
|
405
|
-
|
|
406
|
-
| 指标 | 阈值 | 计算 | 不达标处理 |
|
|
407
|
-
|------|------|------|------------|
|
|
408
|
-
| 置信度 | >= 0.85 | 有明确归属的情节点 / 剧情单元内情节点总数 | 低于 0.85 标记「待复核」 |
|
|
409
|
-
| 覆盖率 | 85%-95% | 已归类情节点 / 总情节点数 | <85% 触发孤立情节二次分类;>95% 复核边界 |
|
|
410
|
-
| 关键信息覆盖 | 每章有结论 | 含有效信息行或明确“无独立信息变化”的章节数 / 摘要章节数 | 按原输入类型回到 Stage 2 补提取;旧成果章仍不得回读原文 |
|
|
411
|
-
| 模块来源标注 | best-effort | 情绪模块卡尽量标注 RH/TR 或章节情节点来源 | 无把握的来源留空,不硬凑、不删模块(同桥段标签的 best-effort 处理)|
|
|
412
|
-
| 披露引用完整 | 100% | 关键双时间线中每个 `RV-*` 都属于同一行的 `EV-*` 披露路径,同一客观事件不因多次披露重复建档 | 缺引用或重复事件时回到批次观察合并 |
|
|
413
|
-
| 三维解释完整 | 100% | `AX-*` 的事件、情绪、篇幅三轴都有理由与证据 | 缺轴时补“无明显变化/文本未展示”及依据,不用分数占位 |
|
|
414
|
-
| 重叠率 | <= 35% | 跨剧情单元共享情节点 / 总情节点数 | >35% 提示边界模糊,建议合并 |
|
|
415
|
-
|
|
416
|
-
> **小体量节选(< 30 章、单主线连续叙事)的特例**:此类素材按时序连续切分时,覆盖率天然接近 100%、散落情节接近 0,这是线性结构的正常结果,不算过度归并。此时复核重点是「有无把不同剧情强行并进同一条」,而非覆盖率数值本身——不必为压到 95% 以下而人为拆分。
|
|
417
|
-
|
|
418
|
-
---
|
|
419
|
-
|
|
420
|
-
## 散落情节兜底
|
|
421
|
-
|
|
422
|
-
阶段 3 聚合完成后执行(6 步,含覆盖率验证):
|
|
423
|
-
|
|
424
|
-
1. **计算孤立比例**:孤立情节点数 / 总情节点数。若比例 < 5%,跳过后续步骤,直接标记为「少量散落,无需处理」
|
|
425
|
-
2. **筛选未分配情节点**:用 `digest --part chapters --points brief` 按章节窗口列出情节点简表,收集未归类到任何剧情单元的情节点
|
|
426
|
-
3. **三层置信度归入**:按角色重叠、地点重叠、因果关系三条线索计算相关性
|
|
427
|
-
- **强相关**(0.8-1.0):角色匹配 + 主题相关 → 归入现有剧情单元,标记 `[孤立情节归入]`
|
|
428
|
-
- **中等相关**(0.5-0.8):角色匹配 或 主题相关 → 归入并标记 `[低置信归入]`,待复核
|
|
429
|
-
- **弱相关**(<0.5):不建议强行归入,宁可放入未分配
|
|
430
|
-
4. **主题聚类**:弱相关的情节点按主题关键词聚类
|
|
431
|
-
- 聚类结果 >= 5 个情节点 → 形成候选剧情单元,标记 `[聚类生成]`
|
|
432
|
-
- 聚类结果 < 5 个 → 不单独建条
|
|
433
|
-
5. **散落情节归档**:仍无法归类的写入 `散落情节.md`,按章节排列,标注原因
|
|
434
|
-
- 不丢弃任何情节点,不要强行分配到不相关的剧情
|
|
435
|
-
- 在拆文报告中统计散落情节点数量和占比
|
|
436
|
-
6. **覆盖率验证**:
|
|
437
|
-
- 覆盖率 = (总数 - 散落数) / 总数 × 100%
|
|
438
|
-
- 目标:85%-95%
|
|
439
|
-
- < 85% → 回到步骤 3,降低置信度阈值重试
|
|
440
|
-
- > 95% → 检查是否有过度归并,复核边界剧情单元
|
|
441
|
-
|
|
442
|
-
---
|
|
443
|
-
|
|
444
|
-
## 执行指引
|
|
445
|
-
|
|
446
|
-
### 分块策略
|
|
447
|
-
|
|
448
|
-
Stage 2 按运行计划分别建立旧成果批次和缺章原文块,每批调用一次 chapter-extractor;原文块同次返回逐章事实和跨章观察,旧成果批次只返回跨章观察。其他阶段只消费这些结果和可复用旧资料。
|
|
449
|
-
|
|
450
|
-
> **先分清两个互不相干的轴**,本节此前把它们混在一个「块」字里,导致 >500 章出现「50-200 章/块」与「6-8K token/块」两套差 30-100 倍的规格:
|
|
451
|
-
> - **语义分块**=*在哪里切*。按叙事弧切,产出「块元数据」用于组织分析结果,块可以很大(一个 914 章的书通常 5-10 个弧)。它不决定一次读多少。
|
|
452
|
-
> - **处理批次**=*一次读多少*。受上下文容量约束,原文块按索引字数切分,旧成果批次按资料体积切分。下面表格的「块大小」列指的是**处理批次**。
|
|
453
|
-
|
|
454
|
-
| 单章与上下文情况 | 读取批次策略 | 常见章数 |
|
|
455
|
-
|------|------|--------|
|
|
456
|
-
| 普通章节、上下文充足 | 连续读取并保留跨章状态 | 3 章/批 |
|
|
457
|
-
| 长章、信息密集或上下文较小 | 缩小批次,不截断明显短因果链 | 1-2 章/批 |
|
|
458
|
-
| 超长书 | 批次数量增加;语义弧仍独立于读取批次 | 仍按上述字数与上下文判断 |
|
|
459
|
-
|
|
460
|
-
### 语义弧识别
|
|
461
|
-
|
|
462
|
-
基于批次观察和章节摘要识别自然分界。读取批次只是上下文单位,不能直接当成剧情单元:
|
|
463
|
-
|
|
464
|
-
**分块原则(四大铁律)**:
|
|
465
|
-
1. **语义连贯**:每块是一个相对独立的内容单元(大故事阶段或主要事件线)
|
|
466
|
-
2. **自然分界**:在内容转折点、场景切换、时间跨越处切分,不在紧密剧情中间切
|
|
467
|
-
3. **大小适中**:语义完整性优先于大小均匀;不设固定章数,也不要求一个语义弧一次读进上下文
|
|
468
|
-
4. **避免割裂**:不在紧密剧情中间切分
|
|
469
|
-
|
|
470
|
-
**题材特化分块参考**:
|
|
471
|
-
|
|
472
|
-
| 题材 | 分块依据 | 示例 |
|
|
473
|
-
|------|---------|------|
|
|
474
|
-
| 修仙/升级 | 境界突破、地图切换 | 炼气期→筑基期→金丹期 |
|
|
475
|
-
| 都市 | 事件线、身份转变 | 学生→创业→商业帝国 |
|
|
476
|
-
| 历史 | 历史阶段、战役 | 起兵→统一北方→南征 |
|
|
477
|
-
| 玄幻 | 世界地图、势力变化 | 东域→中州→上界 |
|
|
478
|
-
| 有卷/部/篇 | 优先按原结构 | 按作者划分的卷/部 |
|
|
479
|
-
|
|
480
|
-
**无明显结构**时保留连续批次边界,并把无法确认的语义归属标为待聚合。**硬约束**:所有确实需要读原文的章节都被唯一读取批次覆盖,已有成果章进入旧资料批次;两者互斥且各自不重叠。剧情单元可以跨批次,也可以在一个批次中出现多个。
|
|
481
|
-
|
|
482
|
-
每块输出元数据:`块标题 | 起止章节 | 核心主题(2-5个) | 关键事件(2-5个) | 主角阶段`。
|
|
483
|
-
|
|
484
|
-
每章只保存一组紧凑事实。每批先保存完整缓存,再补缺失摘要,最后只更新 `_progress.md` 受管状态;不生成收据或独立批次账本。
|
|
485
|
-
|
|
486
|
-
### 处理批次(一次读多少)
|
|
487
|
-
|
|
488
|
-
Stage 3-5 的语料是 `digest` 输出:全书跨章观察,加按窗口抽取的逐章字段与情节点简表;不整份读批次缓存(其中约七成是与逐章摘要重复的章节块)。只有关键冲突才定点读取对应 `章节/*_摘要.md`。旧项目没有缓存时直接读取已有剧情、节奏、情绪、关系资料;不要为了统一格式先把所有旧摘要重新压缩一遍。
|
|
489
|
-
|
|
490
|
-
**A. 连续批次模式**
|
|
491
|
-
|
|
492
|
-
1. **切批**:按 `chapter_index.csv` 连续取 1-3 章,根据原文字数和上下文缩放;完整任务不跳章。
|
|
493
|
-
2. **分派**:每批一个 chapter-extractor,只给该批 `source_locator`、边界、输出文件路径和交接缓存路径;子代理自己读原文与交接批的跨批状态。串行、有限并行或不限顺序由作者在 Stage 1 后选定(见 pipeline-ops「执行与提交一个批次」),并行时边界处的剧情点接续交给下方跨块合并。每个原文范围只有一个 owner。
|
|
494
|
-
3. **双层落盘**:同次产出逐章紧凑事实与批次观察,由子代理直接写进批次输入文件、只回回执;主会话不转贴原文、不读输入文件,直接提交。禁止另起一次模型调用重复分析同一批原文;兼容文件由提交脚本机械生成。
|
|
495
|
-
4. **主线程合并**:主线程用 `digest` 消费全书跨章观察和按窗口抽取的逐章字段做全局合成。全书仍超上下文时按章节窗口分组合并,中间层只保留剧情状态、关键候选和证据引用,不扩写内容。
|
|
496
|
-
5. **进度**:计划阶段只读;完整缓存、所需摘要和输入范围 hash 全部核对后,最后在 `_progress.md` 登记 `completed`。失败不提前写完成,必要时把父块标 `superseded` 并持久化相邻子块;中断从完整缓存恢复。
|
|
497
|
-
|
|
498
|
-
> 批次数由原文长度和上下文决定,不设“超过 500 章就固定 10-20 章/批”的第二套规则。
|
|
499
|
-
|
|
500
|
-
**B. 主线程串行模式(agent 不可用时的降级)**
|
|
501
|
-
|
|
502
|
-
无法 spawn 子代理时由主线程按同一连续批次契约顺序处理。批次可因主线程上下文更小而缩短,但仍须同次产生逐章事实和跨章观察,不能退回每章一次调用。
|
|
503
|
-
|
|
504
|
-
**C. 不要做的事**
|
|
505
|
-
|
|
506
|
-
- 不要把大语义弧整块塞进一次上下文。
|
|
507
|
-
- 不要固定章数而忽略原文字数、上下文容量和章界。
|
|
508
|
-
- 不要在 Stage 3、4、5 各自重新读取同一批原文。
|
|
509
|
-
- 不要用跳读锚点冒充完整语义覆盖。
|
|
510
|
-
|
|
511
|
-
### 跨块合并(大型小说 >500 章)
|
|
512
|
-
|
|
513
|
-
分块处理后,相邻块的边界剧情可能被机械切分割裂。Stage 3 聚合时执行跨块合并检查:
|
|
514
|
-
|
|
515
|
-
**合并判断标准**(必须同时满足):
|
|
516
|
-
1. ✓ 同一核心事件/目标:讲述的是同一个核心事件(不是两个独立事件)
|
|
517
|
-
2. ✓ 主要人物相同:涉及的主要人物相同
|
|
518
|
-
3. ✓ 剧情发展连续:剧情 B 是剧情 A 的自然延续
|
|
519
|
-
4. ✓ 非因果独立事件:不是因果关系的两个独立事件
|
|
520
|
-
|
|
521
|
-
**应该合并**:
|
|
522
|
-
- "竞选县长秘书(准备阶段)" + "竞选县长秘书(投票阶段)" → 同一事件被分块割裂
|
|
523
|
-
- "修炼突破(前期)" + "修炼突破(后期)" → 同一突破过程
|
|
524
|
-
|
|
525
|
-
**不应合并**:
|
|
526
|
-
- "在办公室立足" + "竞选县长秘书" → 两个独立目标
|
|
527
|
-
- "炼气期修炼" + "筑基期修炼" → 不同阶段的独立剧情
|
|
528
|
-
- "东域修炼" + "中州历练" → 不同地图的独立剧情
|
|
529
|
-
|
|
530
|
-
**保守原则**:当不确定时,倾向于不合并(保持独立)。
|
|
531
|
-
|
|
532
|
-
**边界检测原则**:只检查相邻块中接近块边界的剧情对,远离边界的剧情不参与跨块合并。
|
|
533
|
-
|
|
534
|
-
### 跨会话恢复
|
|
535
|
-
|
|
536
|
-
- 进度通过 _progress.md 追踪
|
|
537
|
-
- 新会话读 _progress.md 定位断点
|
|
538
|
-
- 先校验断点批次已有文件;完整且与来源一致则补记进度,缺失或损坏才从该批次起章重做
|