@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
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# 深度分析时刻:导入场景怎么驱动拆解管道
|
|
2
|
+
|
|
3
|
+
Phase 2 只读本文件,再按篇幅进入对应 analyze skill;拆书的方法、产物结构、分批、恢复与质量检查全部由 analyze skill 自己的流程负责,本文件只写导入场景的取值。篇幅、原文位置、题材和写作环境都读导入记录(`{书目录}/.story/work/导入记录.md`),不回翻对话、不重新问作者。
|
|
4
|
+
|
|
5
|
+
| 篇幅 | 进入 | 产物目录 |
|
|
6
|
+
|------|------|---------|
|
|
7
|
+
| 长篇 | `/story-long-analyze` 的统一管道(旧成果直用 / 按需增强 / 全新或部分续跑) | `拆文库/{导入书名}/` |
|
|
8
|
+
| 短篇 | `/story-short-analyze` 的拆解管道(Stage 2-6) | `拆文库/{导入书名}/` |
|
|
9
|
+
|
|
10
|
+
## 长篇:先兼容识别,再决定是否续跑
|
|
11
|
+
|
|
12
|
+
先运行 story-long-analyze Phase 1 的只读检查器(`inspect_existing_assets.py`),登记实际文件和覆盖范围;检查建议不能覆盖下列语义规则:
|
|
13
|
+
|
|
14
|
+
新生成或按当前契约续跑的长篇进度保持 `schema_version: 2`;旧成果直接使用不以缺少该字段为失败。
|
|
15
|
+
|
|
16
|
+
- **旧成果已完成且足以重建写作工程**:直接进入 Phase 3。旧 `_progress.md` 版本、缺少 `chapter_index.csv`,或缺少本次新增字段,都不能单独成为重拆理由。
|
|
17
|
+
- **旧成果可以导入,但缺少当前写作/对标功能需要的 `剧情/节奏.md`、`剧情/情绪模块.md` 等资料**:先用现有逐章、剧情、关系、报告和文风做 Stage 3+ 按需增强,不回读原文。不得重跑已完成章节,也不得用空壳文件让门禁通过。
|
|
18
|
+
- **只完成一部分或新旧产物混存**:验证并保留已完成部分,从首个缺失的连续章节块续跑,最后统一聚合。进度记录与实际文件冲突时,以可验证文件为准并记录冲突。
|
|
19
|
+
- **全新导入**:运行 Stage 0-6 完整管道。
|
|
20
|
+
|
|
21
|
+
导入需要自动完成本次判定出的必需范围,不把 Stage 1 停靠询问甩给作者。全新导入命中「完整拆解、一次跑完」路径;旧成果增强或部分续跑只执行缺失 Stage/章节块。原有用途当前不消费新增分析时,缺少新增字段只记录能力限制,不阻断导入。
|
|
22
|
+
|
|
23
|
+
- 措辞示例(全新):启动深度分析时声明「以『完整拆解、一次跑完、不要停下询问』模式拆解本书,确保 Stage 2-6 全部产出」。
|
|
24
|
+
- 措辞示例(旧成果):声明「先复用并校验现有成果,只补当前导入缺失的章节或分析,不覆盖用户原成果」。
|
|
25
|
+
- **兜底**:若全新导入实际仍停在 Stage 1,自动选择继续;若旧成果任务停靠,则按已登记的缺失范围继续,不能扩大成全书重跑。
|
|
26
|
+
- 派发:导入记录写着分析助手可用时,属自动续跑,按 story-long-analyze 的「有限并行」档派 `chapter-extractor`(每轮 3 批),每个连续章节批次只调用一次,同次生成逐章事实与跨章观察;作者明确要求时改用串行或不限批次顺序。作者选了直接导入(或 ZCode)时,Stage 2 由主会话按相同连续章节块契约串行处理,不能退回每章一次独立调用;产物仍完整,仅速度变慢。
|
|
27
|
+
- 超过 200 章的作品按 [import-special-cases.md](import-special-cases.md)「超过 200 章的作品」分批拆解。
|
|
28
|
+
|
|
29
|
+
## 短篇:单一全量管道
|
|
30
|
+
|
|
31
|
+
story-short-analyze 的拆解管道(Stage 2-6)本身**无 Stage 1 停靠点**,一次跑完即可。它的 Phase 1 四个 Step 都要跑,按下表的导入场景取值执行,不整段跳过:
|
|
32
|
+
|
|
33
|
+
| Phase 1 步骤 | 导入场景下的处理 |
|
|
34
|
+
|-------------|----------------|
|
|
35
|
+
| Step 1:拿到原文 | 用导入记录里的源文件,不重新问 |
|
|
36
|
+
| Step 2:字数检查(长短篇路由) | 篇幅已在导入 Phase 1 判定并经作者确认,直接答「按短篇继续」,不重新路由 |
|
|
37
|
+
| Step 3:题材识别 | **照常跑**,题材标尺必须加载;导入记录里已确认的题材类型直接代入,不重复提问 |
|
|
38
|
+
| Step 4:续跑检查(`拆文库/{导入书名}/_meta.json` 已存在时三选一) | 先看旧产出是否可直接复用:`stages_completed` 已含 6 且 `拆文报告.md` / `情节节点.md` / `写作手法.md` / `原文/` 均非空、来源与本次导入源一致 → 直接进 Phase 3,不重跑也不归档。否则本轮首次进入 Phase 2 → 按 (a) 覆盖:先把旧产出归档到 `拆文库/{导入书名}/_archive_{时间戳}/`,再从 Stage 2 重跑;同一轮导入内重试同一本书 → 按 (b) 续跑。不把三选一甩给作者,也不跳过归档 |
|
|
39
|
+
|
|
40
|
+
`_meta.json` 的 `genre_detected` 由 Step 3 产出,是拆文契约的阻断级必填字段,下游 story-short-write 靠它选题材标尺——**不要跳过 Step 3 直接从原文备份起跑**。
|
|
41
|
+
|
|
42
|
+
- 措辞示例:启动深度分析时声明「《{导入书名}》篇幅已确认为短篇(题材 {题材类型},全文约 {N} 字),Step 2 直接按短篇继续,Step 4 按覆盖并归档处理,题材识别照跑,确保 Stage 2-6 全部产出」。
|
|
43
|
+
- **兜底**:若运行环境仍抛出「此文字数 {N} 偏长,建议改用 `/story-long-analyze`」或灰区提问「介于短/长之间,按短篇还是长篇拆?」,一律按导入记录里锁定的判定逐字回「按短篇继续」,**绝不把路由询问甩给作者**。
|
|
44
|
+
|
|
45
|
+
## 交付
|
|
46
|
+
|
|
47
|
+
拆解管道自带的质量检查通过、产物落在 `拆文库/{导入书名}/` 后,在导入记录勾「深度分析」。拆书流程自带的完工汇报(长篇「全部拆完」、短篇「可以运行 /story-short-write 写下一篇」)在导入里不用,由这里交代:向作者用一两句故事话说拆到了什么(几章、主要人物、主线一句),末尾按 [SKILL.md 的换上下文规则](../SKILL.md#时刻表与交接) 建议新开对话。拆书中断时不在这里另做恢复:重新进入同一拆解管道,由它按自己的进度文件续跑。
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# 汇报与激活时刻
|
|
2
|
+
|
|
3
|
+
Phase 5 只读本文件和导入记录(`{书目录}/.story/work/导入记录.md`)。前面每个时刻已按自己的清单验收后才勾进度,这里不重读迁移规则。
|
|
4
|
+
|
|
5
|
+
## Step 1:收尾自检
|
|
6
|
+
|
|
7
|
+
这是你自己的自检,不念给作者:全部通过就不提;没通过先回到对应时刻修,修不了才用故事话告诉作者影响和办法。
|
|
8
|
+
|
|
9
|
+
- 导入记录的进度全部勾上(短篇没有细纲与追踪两项)。
|
|
10
|
+
- **长篇**:`正文/` 章节文件数等于导入范围章数;每章都有 `大纲/细纲_第XXX章.md`,且对全部细纲再跑一次 `node {story-import skill 根}/scripts/check-outline-contract.js --json {书目录}/大纲/细纲_第*.md` 通过;再跑一次 `{PYTHON} {story-import skill 根}/scripts/tracking_commit.py check --project {书目录}`(按 `python3` → `python` → `py -3` 探测)通过;原文没分卷时卷划分已经作者确认;`拆文库/{导入书名}/` 未被复制到 `对标/`。
|
|
11
|
+
- **短篇**:`正文.md`、`设定.md`、`小节大纲.md` 都在,未误建 `追踪/`、`大纲/`、`正文/`。
|
|
12
|
+
|
|
13
|
+
## Step 2:导入完成报告
|
|
14
|
+
|
|
15
|
+
报告写给作者:导进来了什么、哪几处请他核对、要他拍板的事、下一步怎么说。字段名、脚本名、校验结果、字数口径、伏笔/事件编号不进报告;编号只能跟着故事描述出现(如「玉佩的来历(F003)」)。核对项要落到具体人和事,一次最多 5 条。
|
|
16
|
+
|
|
17
|
+
**长篇**:
|
|
18
|
+
|
|
19
|
+
<!-- author-report -->
|
|
20
|
+
```md
|
|
21
|
+
=== 《{导入书名}》导入完成 ===
|
|
22
|
+
导进来了:第 1–{N} 章,约 {Y} 万字{;第 {N+1} 章只写了一半,按你的决定{接着残章写 | 先补完}}。项目在 `{项目目录}`。
|
|
23
|
+
|
|
24
|
+
我整理出了:
|
|
25
|
+
- 人物:{M} 个角色档案,主要人物写到第 {N} 章时的处境已记下(如「{角色}:{一句话现状}」)
|
|
26
|
+
- 大纲:全书大纲、{V} 卷卷纲、每章细纲
|
|
27
|
+
- 还没收的线:{K} 条(如「{伏笔的故事描述}」)
|
|
28
|
+
- 时间线:真相和读者目前知道的分开记,续写时不会提前泄底
|
|
29
|
+
- 设定:{设定文件数} 份世界观资料
|
|
30
|
+
- 对标书:{没有绑定 | 已接入《{对标书名}》 | 没接上:原因和补救}
|
|
31
|
+
|
|
32
|
+
请你核对:
|
|
33
|
+
1. {最拿不准的一处,写成具体问题,如「第 5 章的黑衣人和第 2 章的车夫是同一人吗?」}
|
|
34
|
+
2. {如「还没收的线里有没有漏的?我列的是:……」}
|
|
35
|
+
|
|
36
|
+
需要你决定:{仅在有待定事项时写,如「原文没分卷,我按剧情分成 3 卷(1–40 / 41–95 / 96–{N} 章),这样分可以吗?」}
|
|
37
|
+
|
|
38
|
+
下一步:说「日更」就从第 {N+1} 章接着写;想先检查导入质量,说「审一下」。
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**短篇**:
|
|
42
|
+
|
|
43
|
+
<!-- author-report -->
|
|
44
|
+
```md
|
|
45
|
+
=== 《{短篇标题}》导入完成 ===
|
|
46
|
+
导进来了:全文约 {Y} 字,分成 {N} 个小节。项目在 `{项目目录}`。
|
|
47
|
+
|
|
48
|
+
我整理出了:
|
|
49
|
+
- 设定:核心框架和续写要守住的人物、情绪基调
|
|
50
|
+
- 小节大纲:{N} 节,每节讲了什么
|
|
51
|
+
- 对标书:{没有绑定 | 已接入《{对标书名}》 | 没接上:原因和补救}
|
|
52
|
+
|
|
53
|
+
请你核对:
|
|
54
|
+
1. {标了 [待补充] 的地方,写成问题,如「女主最后原谅他了吗?原文没写明」}
|
|
55
|
+
2. {核心反转前埋的线索我找到的是:……,有没有漏的?}
|
|
56
|
+
|
|
57
|
+
下一步:{没写完:运行 `/story-short-write` 说「接着写」,从第 {N+1} 节往下写 | 已完本:想改稿说「审一下」}。
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Step 3:项目激活
|
|
61
|
+
|
|
62
|
+
- 设置 `.active-book` 指向导入的书名/标题目录,在导入记录勾「汇报与激活」。
|
|
63
|
+
- 确认项目可以被对应写作 skill 识别(长篇 → story-long-write,短篇 → story-short-write)。
|
|
64
|
+
- 可选验证:如果当前运行时的 canonical 目录已部署 story-explorer agent,可 spawn 交叉验证迁移数据完整性;Antigravity 检查 `.agents/agents/story-explorer/agent.md` 并用 `invoke_subagent` + `TypeName: "story-explorer"`。Prompt:`项目目录:{dir}\n查询类型:progress\n查询参数:导入验证`
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# 导入的特殊情况
|
|
2
|
+
|
|
3
|
+
只在下面几种情况读;普通导入不读。
|
|
4
|
+
|
|
5
|
+
## 流程答疑
|
|
6
|
+
|
|
7
|
+
用户问「导入续写先装环境还是先导入」「已有小说怎么续写」「导入流程」这类问题时,先直接给结论,再继续收集原文——避免用户只想确认流程却被直接要求贴原文:
|
|
8
|
+
|
|
9
|
+
1. **推荐顺序**:先 `/story-setup` 装好写作环境,新开或刷新会话后运行 `/story-import`,最后用 `/story-long-write 日更` 或 `写第N章` 续写。
|
|
10
|
+
2. **也可以直接 `/story-import`**:导入会在深度分析前检查写作环境;没装时给「先去装」或「直接导入,慢一点」两种选择。
|
|
11
|
+
3. **已导入过的当前协议项目**(书名目录下有 `追踪/_tracking-state.json`):不要重复跑完整导入;直接进入书名目录,确认 `.active-book` 指向正确书目,再用 `/story-long-write 日更` 或 `/story-long-write 写第N章`。书目录下有 `{书目录}/.story/work/导入记录.md` 且进度没勾完时,是上次导入做到一半:从第一个未完成的进度接着做。
|
|
12
|
+
4. **v0.7.2 及更早的旧追踪项目**(有 `追踪/` 和正文,但没有 `追踪/_tracking-state.json`):日更会停下要求重新导入,但**不需要重跑全书拆解**,只重建追踪,见下一节。
|
|
13
|
+
|
|
14
|
+
## 旧追踪项目迁移
|
|
15
|
+
|
|
16
|
+
书名目录下有 `追踪/` 与正文、但没有 `追踪/_tracking-state.json` 时,项目停在 v0.7.2 及更早的追踪结构上。正文和 `设定/`、`大纲/`、`拆文库/` 都不受影响,**只需重建 `追踪/`**,不重跑深度分析、不碰正文:
|
|
17
|
+
|
|
18
|
+
1. 数清最后一个完整章号 `N`(`正文/第NNN章_*.md` 的最大值)。
|
|
19
|
+
2. 从旧 `追踪/` 现有文件(角色状态、伏笔、时间线等,文件名按项目实际情况)和最近 3-5 章正文,重建当前状态:核心角色快照、未回收伏笔、已揭示时间线事件、长期约束、下一章承诺。角色快照的反推方法见 [character-state-reverse.md](character-state-reverse.md)。
|
|
20
|
+
3. 按 [import-tracking.md](import-tracking.md) 构造初始化事务(其中点名的 tracking-initialization.md 完整读取),`last_chapter` 写 `N`(第 1..N 章不伪造逐章记录),执行 `tracking_commit.py init`。
|
|
21
|
+
4. `init` 会把旧追踪结构按原样整体移入 `追踪/_旧追踪存档/` 再建当前协议——旧内容不删除、不参与解析,留给作者查阅。
|
|
22
|
+
5. 跑 `tracking_commit.py check` 确认通过,再回 `/story-long-write 日更` 续写。
|
|
23
|
+
|
|
24
|
+
重建结果以第 2 步的证据为准;拿不准的字段留空或写进 `continuity_risks`,不杜撰。用户明确要求重拆全书时才走完整导入。
|
|
25
|
+
|
|
26
|
+
## 超过 200 章的作品
|
|
27
|
+
|
|
28
|
+
仅长篇。短篇为单文件全量迁移,无增量导入需求。拆解可以分批,追踪初始化必须一次覆盖全部已写章节:
|
|
29
|
+
|
|
30
|
+
1. **拆解分批**:首期只深拆前 50 章 + 全书概要,后续按需补拆更多章节到 `拆文库/`。
|
|
31
|
+
2. **追踪一次到位**:初始化事务的 `last_chapter` 写**最后一个已写完的章号 N**,不是首期拆解的 50。`imported_through_chapter` 由 `init` 一次写定、之后不再推进,逐章事务只接受 N+1 起的章号;第 1..N 章不伪造逐章记录,续写从 N+1 开始。若 init 时误写成 50,第 51..N 章仍可逐章 `append` 补上(一章一份事务,章号必须连续),只是要为已写好的旧章逐章构造事务;不要删 `追踪/` 重来——`_旧追踪存档/` 也在里面。
|
|
32
|
+
3. **简化摘要**:未深拆的章节每章写一份约 200 字的简化摘要(谁做了什么、局面怎么变、章尾留下什么等待),固定落在 `{书目录}/.story/work/简化摘要/第NNN章.md`(三位补零)。细纲任务包在拆文库没有该章摘要时自动取这里;追踪初始化反推当前状态也从这里取证。
|
|
33
|
+
|
|
34
|
+
首期深拆范围写进导入记录「范围」一行,细纲与追踪时刻据此取证据。
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
# 追踪初始化时刻(仅长篇)
|
|
2
|
+
|
|
3
|
+
Phase 4 只读本文件、[tracking-initialization.md](tracking-initialization.md)(初始化事务的原始 JSON 与导入边界,完整读取)和 [character-state-reverse.md](character-state-reverse.md)(核心角色快照反推)。导入截止章、残稿决定、卷划分读导入记录(`{书目录}/.story/work/导入记录.md`);证据只取已落盘的 `拆文库/{导入书名}/` 与项目 `大纲/`,不重读原文。续写时的逐章事务与导入无关,不读。
|
|
4
|
+
|
|
5
|
+
导入项目必须通过本 skill 自带的 `scripts/tracking_commit.py init` 一次性生成追踪状态,禁止模型分别写最终文件。
|
|
6
|
+
|
|
7
|
+
## 语义准备顺序
|
|
8
|
+
|
|
9
|
+
1. **导入截止章**:把最后完整章 N 写入初始化事务的 `last_chapter`。工具在 meta 记录 `imported_through_chapter=N`;导入旧章没有日更事务,不得为第 1..N 章伪造逐章增量,也不额外生成一份重复当前状态的叙事基线。
|
|
10
|
+
2. **核心角色当前快照**:从拆书产物反推主角、反派、核心配角的截至 N 章状态,按角色写入 `character_snapshots`,工具生成 `追踪/角色状态/{角色名}.md`;算法见 character-state-reverse.md。
|
|
11
|
+
3. **伏笔当前行**:从有正文证据的铺垫/回收事件生成 `foreshadow`(识别方法见下)。每个 ID 只保留当前状态一行;尚未实际埋设的未来设计留在大纲,不写 `伏笔.md`。
|
|
12
|
+
4. **事实与读者认知**:把关键事件生成到 `timeline_events`(提取方法见下)。同一事件同时写客观事实、读者截至 N 章已知内容和实际揭示状态;未来计划揭示章不得伪装成已发生事实。
|
|
13
|
+
5. **续写状态卡输入**:准备当前位置、长期约束、活跃核心角色、近三章速记、下一章承诺和连贯性风险。`上下文.md` 由工具生成固定 7 栏,不把文风、文件索引、普通待办或质检计数塞进续写状态卡。
|
|
14
|
+
6. **执行初始化**:事务写到 `{书目录}/.story/work/init.json`(成功前保留,不写系统 `/tmp`、书根、`大纲/` 或 `正文/`)。按当前平台探测 Python 3(`python3` → `python` → `py -3`),执行:
|
|
15
|
+
|
|
16
|
+
> 项目 `追踪/` 里已有不属于当前协议的早期文件时不必手工清理:`init` 会先把它们按原样整体移入 `追踪/_旧追踪存档/`,再在原地建当前协议。旧内容保留供作者查阅,不参与解析,当前状态完全由本次导入输入决定;校验失败的 `init` 不移动任何文件。`init` 只在 `_tracking-state.json` 不存在时执行,绝不覆盖已初始化项目。
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
{PYTHON} {story-import skill 根}/scripts/tracking_commit.py init --project {书目录} --input {书目录}/.story/work/init.json
|
|
20
|
+
{PYTHON} {story-import skill 根}/scripts/tracking_commit.py check --project {书目录}
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
半成品最后一章为残稿时,`last_chapter`、角色快照和其他当前语义检查点一律截至最后完整章;残稿处理策略(导入记录里作者的决定)写入 `continuity_risks`,不把未完成动作登记成既成事实。
|
|
24
|
+
|
|
25
|
+
以 demo《让你管账号,你高燃混剪炸全网》导入至第 10 章为例:续写状态卡要写清江晨的手机原版《诸君,且听龙吟》被专业团队高清重拍,但高层看片后认为新版“缺了灵魂”,最终继续采用原版;江晨快照应体现其军宣创作价值已获周薄森、张耀祖确认;读者时间线只写读者已经看到的看片会结论,钟嘉嘉“只猜对了一半”背后的培养安排若尚未揭示,只能出现在作者真相,不能泄露到读者视图。
|
|
26
|
+
|
|
27
|
+
## 条目形状与容量
|
|
28
|
+
|
|
29
|
+
在 tracking-initialization.md 的骨架上填条目(导入时 `last_chapter` 写 N):
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"foreshadow": [
|
|
34
|
+
{"id": "F027", "summary": "专业团队仍拍不出江晨原版的灵魂", "planted_chapter": 10,
|
|
35
|
+
"planned_resolution_chapter": null, "status": "已埋", "importance": "中"}
|
|
36
|
+
],
|
|
37
|
+
"timeline_events": [
|
|
38
|
+
{"id": "E010", "story_time": "实弹训练两天后",
|
|
39
|
+
"objective_fact": "文工团高层否决专业重拍版,决定沿用江晨手机拍摄的原版视频",
|
|
40
|
+
"reader_knowledge": "读者已看到周薄森指出专业版缺了灵魂,张耀祖当场拍板用回原版",
|
|
41
|
+
"reveal_status": "已揭示", "reveal_chapter": 10, "characters": ["江晨", "周薄森", "张耀祖"]}
|
|
42
|
+
],
|
|
43
|
+
"context": {
|
|
44
|
+
"recent_chapters": [{"chapter": 10, "summary": "专业重拍版被判缺了灵魂,高层拍板用回手机原版"}]
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
- 伏笔 `id` 形如 `F001`,`status` 取 已埋/已回收/已过期/放弃,`importance` 取 高/中/低;`planted_chapter` 不晚于 N。事件 `id` 形如 `E001`,`reveal_status` 取 未揭示/部分揭示/已揭示:`未揭示` 的 `reveal_chapter` 必须为 `null`,部分/完全揭示只能填已经发生的实际章节。
|
|
50
|
+
- `context` 在 init 时收六项:`position`、`long_term_constraints`、`active_character_names`、`continuity_risks`、`recent_chapters`(最多 3 章,按章号升序)、`next_chapter_commitments`。
|
|
51
|
+
- `character_snapshots` 里的角色就是核心角色;四个列表不限条数,单角色文件目标 ≤4096 字节,硬上限 8192 字节,超过在任何写入前拒绝。`active_character_names` 最多 6 人且必须已有快照;`long_term_constraints` 最多 6 条。
|
|
52
|
+
- `上下文.md` ≤12288 字节,只含 7 个顶层区块:当前位置、长期约束、核心角色状态、活跃伏笔(最多 8 条)、近三章速记、下一章承诺、连贯性风险。
|
|
53
|
+
- 报错按提示改事务本身再跑;排查字段全集时才查 [tracking-transaction.md](tracking-transaction.md)。导入后续写时角色状态怎么更新见 [state-tracking.md](state-tracking.md),本时刻不读。
|
|
54
|
+
|
|
55
|
+
## 伏笔提取
|
|
56
|
+
|
|
57
|
+
| 情节点类型 | 伏笔可能性 | 提取方式 |
|
|
58
|
+
|-----------|-----------|---------|
|
|
59
|
+
| 铺垫 | 高 | 直接提取为伏笔 |
|
|
60
|
+
| 信息揭示(部分) | 中 | 检查后续是否有呼应 |
|
|
61
|
+
| 物品首次出现 | 中 | 检查后续是否有使用 |
|
|
62
|
+
| 角色秘密 | 高 | 标记为角色伏笔 |
|
|
63
|
+
| 未解决的悬念 | 高 | 从章尾标记提取 |
|
|
64
|
+
|
|
65
|
+
状态推断:铺垫点在后续章节有「揭示」或「解决」类情节点 → 已回收;无后续呼应 → 已埋;半成品最后几章的铺垫 → 已埋,摘要里注明「接近断点」。
|
|
66
|
+
|
|
67
|
+
## 时间线提取
|
|
68
|
+
|
|
69
|
+
从情节点和时间标记中提取:明确日期(“天元三年春”)直接记录;相对时间(“三日后”)推算;事件间隔(“翌日”)连续标记;季节标记(“入冬”)推断季节。按章节顺序排列,同一章内按情节点序号排列;时间标记缺失时标注 `[推断]`。
|
|
70
|
+
|
|
71
|
+
## 验收
|
|
72
|
+
|
|
73
|
+
初始化成功后应得到:
|
|
74
|
+
|
|
75
|
+
```text
|
|
76
|
+
追踪/
|
|
77
|
+
├── _tracking-state.json
|
|
78
|
+
├── 上下文.md
|
|
79
|
+
├── 逐章记录/ # 导入旧章不补造文件,续写从第 N+1 章开始
|
|
80
|
+
├── 角色状态/{角色名}.md
|
|
81
|
+
├── 伏笔.md
|
|
82
|
+
├── 时间线/
|
|
83
|
+
│ ├── 作者真相.md
|
|
84
|
+
│ └── 读者已知.md
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
- [ ] `tracking_commit.py check` 通过,`_tracking-state.json` 与全部派生视图一致
|
|
88
|
+
- [ ] `_tracking-state.json.imported_through_chapter` 等于最后完整导入章
|
|
89
|
+
- [ ] `追踪/伏笔.md` 每个 ID 至多一行,未来尚未埋设的设计没有混入
|
|
90
|
+
- [ ] `_tracking-state.json.timeline` 已登记关键事实与读者认知,`读者已知.md` 无真相泄露
|
|
91
|
+
- [ ] `追踪/角色状态/{角色名}.md` 已覆盖全部核心角色并对齐 character-state-reverse.md
|
|
92
|
+
- [ ] `追踪/逐章记录/` 空目录已创建,且没有为导入章伪造日更记录
|
|
93
|
+
- [ ] `追踪/上下文.md` 顶层恰好固定 7 栏且 ≤12288 字节
|
|
94
|
+
|
|
95
|
+
通过后在导入记录勾「追踪初始化」,`init.json` 可删除;汇报末尾按 [SKILL.md 的换上下文规则](../SKILL.md#时刻表与交接) 建议新开对话。
|
|
@@ -85,7 +85,7 @@ Phase 1 信息确认时向用户提问:**「这是长篇还是短篇?」**
|
|
|
85
85
|
| 用户未声明、全文无章节分隔、单文件单篇,但字数 ≥ 30000 | 复述:「全文无章节分隔,但总字数约 {X} 字,已超过短篇常见上界。按长篇导入建工程,还是仍按短篇处理?」由用户拍板 |
|
|
86
86
|
| 结构信号与字数信号方向相反 | 展示两项信号,请用户决定 |
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
用户拍板的结果写进导入记录(`{书目录}/.story/work/导入记录.md` 的「篇幅」),后续时刻以此为准,不再重新判定。
|
|
89
89
|
|
|
90
90
|
---
|
|
91
91
|
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# 细纲反推规则与模板(长篇导入)
|
|
2
|
+
|
|
3
|
+
本文件是逐批反推细纲任务包的正文,由 `build_outline_brief.py` 整份放进任务包,不单独加载。
|
|
4
|
+
|
|
5
|
+
## 反推原则
|
|
6
|
+
|
|
7
|
+
- 对本批每一章,从任务包里该章的摘要要点反推 `大纲/细纲_第XXX章.md`;要点写「摘要未写」又必须写实际内容时,回看该章正文相关段落补证据,不改正文。
|
|
8
|
+
- 字数目标写任务包里测好的历史长度(`visible_chars_v1` 下的实际长度),不是重新决定创作目标,不自己估算。
|
|
9
|
+
- 单元ID 取任务包附的卷纲「剧情单元(反推)」行里包含本章的单元;单元内第几拍判断不出写 `[待补充]`。
|
|
10
|
+
- 钩子、人物关系变化、辅线/感情线、行动成本/收益归属等无法由原文摘要稳定判断的字段统一标 `[待补充]`;只反推有证据的蓝图,不为补齐字段编造关系或副线。已写成的历史章「本章禁止提前释放」写「无」;目标情绪与主角目标/关键选择不接受 `[待补充]`。
|
|
11
|
+
|
|
12
|
+
## 字段映射
|
|
13
|
+
|
|
14
|
+
| 摘要字段 | 细纲字段 | 转换方式 |
|
|
15
|
+
|---------|---------|---------|
|
|
16
|
+
| 关键事件 + 局面结果 | 核心事件 | 合并为“谁采取什么行动 → 局面如何变化”;旧摘要没有 `局面结果` 时只用 `关键事件` |
|
|
17
|
+
| 章节字数 | 字数目标 + 字数口径 | 写任务包里测好的 `actual` 与 `visible_chars_v1` |
|
|
18
|
+
| `基调:` + 状态变化 | 目标情绪 | 写成「前状态→后状态」:用基调枚举(紧张/轻松/悲伤/热血/爽/甜/温馨/恐怖/压抑/其他)加本章状态变化归纳,不只写一个情绪词;必须写实际内容 |
|
|
19
|
+
| 关键事件 + 主角行动 | 主角目标/关键选择 | 原文里主角本章要什么、做了什么判断或选择;必须写实际内容 |
|
|
20
|
+
| 所属剧情单元 | 单元ID/位置 | 取反推卷纲「剧情单元」表里包含本章的单元ID;单元内第几拍判断不出写 `[待补充]` |
|
|
21
|
+
| (历史章) | 本章禁止提前释放 | 已写成的章节写「无」 |
|
|
22
|
+
| 章尾钩子 | 章首承接证据 | 作为下一章开篇需要承接的等待;新的章首钩子设计目标仍标 `[待补充]` |
|
|
23
|
+
| 爽点类情节点 | 爽点 | 从情节点类型推断;没有则写“无显性爽点 / [待补充]” |
|
|
24
|
+
| 情节点起承转合 + 因果 | 内容概括(起因/发展/转折/高潮/结尾) | 按情节点顺序归纳,用因果链校正起因与转折;证据不足写 `[待补充]` |
|
|
25
|
+
| 主线/支线/任务线索 | 情节安排(主线/辅线/事件线/感情线/逻辑线) | 从剧情单元索引与摘要反推;无证据的辅线/感情线写“无”或 `[待补充]`,不得杜撰 |
|
|
26
|
+
| 涉及 + 状态变化 | 人物关系和出场顺序 | `涉及` 给出候选人物,`状态变化` 只写有证据的“前 → 后”;关键物件从证据或旧情节点补充,缺失写 `[待补充]` |
|
|
27
|
+
| 全部情节点 | 情节细化 / 情节点序列 | 按表格逐行写(# / 情节点 / 功能标签 / 执行边界);保持原顺序,功能或边界不明写 `[待补充]`,不反推逐点字数配额 |
|
|
28
|
+
| 胜负/反转/收益损失 | 行动成本(可无)/收益归属 | 有明确证据才填写;行动成本可无、不硬造;否则 `[待补充]` |
|
|
29
|
+
| 章尾钩子 + 局面结果 | 结尾设定和钩子 | 结尾设定写原文落到最后的具体动作或画面,章尾钩子写已存在的等待;未来设计仍标 `[待补充]` |
|
|
30
|
+
|
|
31
|
+
## 细纲模板
|
|
32
|
+
|
|
33
|
+
```markdown
|
|
34
|
+
## 细纲(第 N 章)
|
|
35
|
+
|
|
36
|
+
### 第 N 章:{章名}
|
|
37
|
+
- 核心事件:{从摘要中提取}
|
|
38
|
+
- 字数目标:{任务包里的 actual} 字
|
|
39
|
+
- 字数口径:visible_chars_v1
|
|
40
|
+
- 单元ID/位置:{反推卷纲里本章所属剧情单元ID;单元内第几拍,判断不出写 [待补充]}
|
|
41
|
+
- 目标情绪:{前状态→后状态,从基调与状态变化归纳,不只写一个情绪词;必须写实际内容}
|
|
42
|
+
- 主角目标/关键选择:{原文里主角本章要什么、做了什么判断或选择;必须写实际内容}
|
|
43
|
+
- 章首钩子:[待补充]
|
|
44
|
+
- 爽点:{从情节点推断;无明确证据写 [待补充]}
|
|
45
|
+
- 本章禁止提前释放:无
|
|
46
|
+
|
|
47
|
+
#### 内容概括(五段式)
|
|
48
|
+
- 起因:{从情节点归纳;未知写 [待补充]}
|
|
49
|
+
- 发展:{从情节点归纳;未知写 [待补充]}
|
|
50
|
+
- 转折:{从情节点归纳;未知写 [待补充]}
|
|
51
|
+
- 高潮:{从情节点归纳;未知写 [待补充]}
|
|
52
|
+
- 结尾:{原文最后落在什么动作/画面/台词上;未知写 [待补充]}
|
|
53
|
+
|
|
54
|
+
#### 情节安排(多线)
|
|
55
|
+
- 主线推进:{从剧情单元索引/摘要反推}
|
|
56
|
+
- 辅线推进:{无证据写“无”或 [待补充]}
|
|
57
|
+
- 事件线 / 任务线:{外部事件链}
|
|
58
|
+
- 感情线 / 关系线:{有证据才写;否则“无显性”或 [待补充]}
|
|
59
|
+
- 逻辑线:原因 → 行动 → 结果 → 后果/新问题
|
|
60
|
+
|
|
61
|
+
#### 人物关系和出场顺序
|
|
62
|
+
- 出场顺序:{摘要中角色/势力/关键物件出现顺序}
|
|
63
|
+
- 人物关系变化:{本章前 → 本章后;未知写 [待补充]}
|
|
64
|
+
- 视角/信息差:{谁知道什么;读者知道什么;主角误判什么;未知写 [待补充]}
|
|
65
|
+
|
|
66
|
+
#### 情节细化
|
|
67
|
+
- 情节点序列(逐行填下表;从摘要情节点反推):
|
|
68
|
+
|
|
69
|
+
| # | 情节点(谁做了什么) | 功能标签 | 执行边界 |
|
|
70
|
+
|---|---|---|---|
|
|
71
|
+
| 1 | {} | {功能不明写 [待补充]} | {从原文确认本点没有释放什么;未知写 [待补充]} |
|
|
72
|
+
- 行动成本(可无)/收益归属:{有证据才写;行动成本可无、不硬造;未知写 [待补充]}
|
|
73
|
+
|
|
74
|
+
#### 结尾设定和钩子
|
|
75
|
+
- 结尾设定:{原文落到最后的具体动作或画面;未解决问题;下一章推动力;未知写 [待补充]}
|
|
76
|
+
- 章尾钩子:[待补充]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
每章一个文件,文件名 `大纲/细纲_第XXX章.md`(三位补零,与 `正文/第XXX章_*.md` 同号)。
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# 逐批反推细纲(长篇导入)
|
|
2
|
+
|
|
3
|
+
卷纲写定后,从章节摘要反推每章细纲,一批一个任务包。进度记在导入记录(`{书目录}/.story/work/导入记录.md`)的「细纲:已验收到第 B 章」;续跑从第 B+1 章起整批重做,这一批里已经存在但没验收的细纲文件按新任务包重写覆盖。
|
|
4
|
+
|
|
5
|
+
## Step 1:生成本批任务包
|
|
6
|
+
|
|
7
|
+
按当前平台探测 Python 3(`python3` → `python` → `py -3`),请求第 B+1 章起的 20 章(剩下不足 20 章就到最后一章):
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
{PYTHON} {story-import skill 根}/scripts/build_outline_brief.py --project {书目录} --chapters {A-B}
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
脚本把反推规则与模板([outline-reverse-rules.md](outline-reverse-rules.md) 全文)、每章按 `visible_chars_v1` 测好的历史长度与摘要要点、卷纲里覆盖本批的剧情单元行,拼成 `{书目录}/.story/work/排纲/导入细纲_第AAA-BBB章.md`。执行者要读的总量超过约 25K 字时脚本自动少排几章(可少于 10 章),以 stdout JSON 的 `chapters` 为本批实际范围、`next` 为下一批起点。缺摘要的章改用简化摘要或正文,已算进总量。
|
|
14
|
+
|
|
15
|
+
长度必须由脚本测,不得用模型估算或静默跳过。找不到 Python 3 或脚本报错时停下,用一句话告诉作者卡在哪(如「第 12 章正文读不到,先把正文迁完」),原文报错放技术备注;卷纲缺失时先回结构迁移补卷纲。
|
|
16
|
+
|
|
17
|
+
## Step 2:写本批细纲
|
|
18
|
+
|
|
19
|
+
- **有 story-architect**(导入记录写着可用,按 SKILL.md 顶部的 Agent 兼容性检查 canonical 目录):主会话只取任务包路径,不读包的内容。Prompt:`项目目录:{dir}\n任务包:{任务包路径}\n先完整读取任务包,按包里的规则与模板完成;作者已定的事在 .story/work/导入记录.md,对话内容不会传给你\n交付后只回任务包开头要求的几项`。Antigravity 用 `invoke_subagent` + `TypeName: "story-architect"`。
|
|
20
|
+
- **没有**:主会话完整读取任务包,自己按包写本批;不另读本文件以外的规则,也不整读拆文库摘要。
|
|
21
|
+
|
|
22
|
+
## Step 3:验收与交接
|
|
23
|
+
|
|
24
|
+
每批写完由主会话运行 `node {story-import skill 根}/scripts/check-outline-contract.js --json <本批细纲路径...>`:exit 1 时只按报告补缺的字段或小节(有 story-architect 时把报错原样交回同一 agent 修一次)。通过后把导入记录的细纲进度改成「已验收到第 B 章」。还有下一批时,向作者一句话说到第几章了,末尾按 [SKILL.md 的换上下文规则](../SKILL.md#时刻表与交接) 建议新开对话说「继续导入」;没有子代理时每批都这样建议。全部章节细纲写完再进 Phase 4。
|
|
@@ -1,10 +1,74 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 结构迁移(长篇)
|
|
2
2
|
|
|
3
|
-
Phase 3-L
|
|
3
|
+
Phase 3-L 结构迁移只读本文件:按下方迁移步骤把 `拆文库/{导入书名}/` 分析结果转换为 `{导入书名}/` 长篇项目结构。篇幅、外部对标、目标平台、作者交代读导入记录(`{书目录}/.story/work/导入记录.md`),不回翻对话。追踪(`追踪/`)不在本时刻生成,逐章细纲在最后一步按批另起。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 迁移步骤
|
|
8
|
+
|
|
9
|
+
### Step 1:创建项目骨架
|
|
10
|
+
|
|
11
|
+
```
|
|
12
|
+
{导入书名}/
|
|
13
|
+
├── 设定/
|
|
14
|
+
│ ├── 世界观/
|
|
15
|
+
│ ├── 角色/
|
|
16
|
+
│ └── 势力/
|
|
17
|
+
├── 大纲/
|
|
18
|
+
├── 正文/
|
|
19
|
+
├── 追踪/
|
|
20
|
+
│ └── 逐章记录/
|
|
21
|
+
├── 对标/ # 可选;仅在显式绑定外部对标时创建子目录
|
|
22
|
+
└── 参考资料/
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Step 2:正文标准化
|
|
26
|
+
|
|
27
|
+
将原文迁移到 `正文/`,统一命名 `第XXX章_章名.md`:识别章节分隔符、提取章节标题、补零对齐编号(第1章 → 第001章)、保留原文内容不变,规则见下方「正文标准化规则」。
|
|
28
|
+
|
|
29
|
+
### Step 3:角色文件迁移
|
|
30
|
+
|
|
31
|
+
将 `拆文库/{导入书名}/角色/{角色名}.md` 迁移到 `设定/角色/{角色名}.md`,按下方「角色文件迁移模板」补齐 story-long-write 角色模板字段。角色分级(沿用 story-long-analyze 标准):
|
|
32
|
+
|
|
33
|
+
| 等级 | 标准 | 迁移策略 |
|
|
34
|
+
|------|------|---------|
|
|
35
|
+
| 主角 | 出现章节 ≥50% + 推动主线 + 完整成长轨迹 | 完整迁移 |
|
|
36
|
+
| 反派 | 与主角对立 + 推动核心冲突 + 明确动机 | 完整迁移 |
|
|
37
|
+
| 核心配角 | 出现章节 ≥20% 或推动重要支线 | 完整迁移 |
|
|
38
|
+
| 功能角色 | 出现章节 <20% + 作用有限 | 简化迁移 |
|
|
39
|
+
|
|
40
|
+
### Step 4:关系文件迁移
|
|
41
|
+
|
|
42
|
+
将 `拆文库/{导入书名}/角色/角色关系.md` 转换为 `设定/关系.md`,按下方「关系文件转换规则」的目标格式模板输出。
|
|
43
|
+
|
|
44
|
+
### Step 5:同步世界观设定
|
|
45
|
+
|
|
46
|
+
当前拆文契约按主题输出 `拆文库/{导入书名}/设定/世界观/*.md` 与 `设定/势力/*.md`,导入时原样同步;`世界观/` 必须有 `背景设定.md`,短小力量体系可并入。当前产物缺失时停止并提示修复 Stage 4;检查器确认的旧成果则从已有扁平设定转换到当前项目路径,标注来源,不回写或覆盖拆文库。规则见下方「世界观同步规则」。
|
|
6
47
|
|
|
7
|
-
|
|
48
|
+
### Step 6:题材定位生成
|
|
49
|
+
|
|
50
|
+
从拆文报告中提取核心发现,生成 `设定/题材定位.md`(下方「题材定位生成」模板)。本书题材、核心梗、情绪与节奏摘要来自 `拆文库/{导入书名}/`,但这些字段不是对标登记。只有导入记录已明确绑定外部对标时,才追加「对标书清单 + 主对标书」段;主对标书最多 1 本,副对标 / 参考对标不限制数量。未绑定时省略整个对标登记段,不得用 `{导入书名}` 补位。导入记录里「作者交代」的偏好与红线同步写进模板的「作者已定」小节,续写时才看得到。
|
|
51
|
+
|
|
52
|
+
后续如需快速概览,可另写「对标分析(派生概要)」表;该表不是权威 registry,不得替代 `主对标书` 与完整 `对标书列表`。所有登记项必须能回溯到对应 `拆文库/{对标书名}/`,不得引用本书根 `设定/`。
|
|
53
|
+
|
|
54
|
+
### Step 7:对标结构化资产同步
|
|
55
|
+
|
|
56
|
+
只处理导入记录里显式绑定的外部参考作品:把 `拆文库/{对标书名}/` 的结构化分析资产同步到项目引用视图 `{项目}/对标/{对标书名}/`,供 story-long-write 优先读取;映射见下方「对标引用视图同步规则」。没有绑定外部对标时跳过本步,不创建空目录;严禁使用 `拆文库/{导入书名}/` 或项目 `设定/` 作为复制源。
|
|
57
|
+
|
|
58
|
+
- 已选外部对标缺 `剧情/节奏.md` 或 `剧情/情绪模块.md` → 导入报告里告诉作者「《{对标书名}》的拆文缺节奏和情绪资料,这本对标暂时用不上;重新拆一次(`/story-long-analyze`)补齐后再接入」,并停止该对标召回;不得用摘要或报告生成空壳。本书核心工程迁移不回滚。两份老权威产物都存在时正常同步,缺少本次新增内嵌字段不阻断。
|
|
59
|
+
- 其它结构化子目录缺失 → 在导入完成报告里用白话提示,不阻塞项目创建。
|
|
60
|
+
|
|
61
|
+
### Step 8:文风同步
|
|
62
|
+
|
|
63
|
+
外部对标已通过 Step 7 校验时,把 `拆文库/{对标书名}/文风.md` 复制到 `{项目}/对标/{对标书名}/文风.md`。纯复制,不重新生成;未绑定外部对标时跳过。拆文库没有文风文件(analyze 未跑 Stage 6)→ 导入报告提示作者重跑 `/story-long-analyze` 后再同步,日更前文风缺失会被 fail-fast 拦截;项目对标已有旧文风文件 → 覆盖(最新拆文产物优先),在导入报告告知。
|
|
64
|
+
|
|
65
|
+
### Step 9:大纲与卷纲(作者确认点)
|
|
66
|
+
|
|
67
|
+
按下方「大纲反推规则」反推 `大纲/大纲.md`:原文有明确卷界直接按卷界分;没有时向作者展示候选卷划分,**等作者确认后**才写定卷级结构和 `大纲/卷纲_第X卷.md`,确认结果(或「按原文卷界」)写进导入记录的「卷划分」。`剧情/散落情节.md` 合并到相关卷纲或大纲附录。
|
|
68
|
+
|
|
69
|
+
### Step 10:逐批反推细纲
|
|
70
|
+
|
|
71
|
+
卷纲写定、本文件末尾的质量清单通过后,在导入记录勾「结构迁移」,再按 [outline-reverse.md](outline-reverse.md) 分批反推细纲。细纲时刻只读任务包,不再读本文件;建议作者新开对话说「继续导入」再开始第一批。
|
|
8
72
|
|
|
9
73
|
---
|
|
10
74
|
|
|
@@ -22,16 +86,9 @@ Phase 3-L 长篇结构迁移的详细映射规则和模板。将 `拆文库/{导
|
|
|
22
86
|
| `剧情/{标题}.md` | `大纲/卷纲_第X卷.md` | 聚合为卷纲 |
|
|
23
87
|
| `剧情/节奏.md` | `设定/题材定位.md`(节奏摘要) | 提炼已写部分的既有节奏,保留为本书导入基线;不复制到 `对标/` |
|
|
24
88
|
| `剧情/情绪模块.md` | `设定/题材定位.md`(情绪摘要) | 提炼已写部分的读者需求与情绪引擎;不复制到 `对标/` |
|
|
25
|
-
| `章节/第N章_摘要.md` | `大纲/细纲_第
|
|
89
|
+
| `章节/第N章_摘要.md` | `大纲/细纲_第XXX章.md` | 逐批反推([outline-reverse.md](outline-reverse.md)) |
|
|
26
90
|
| — | `设定/题材定位.md` | 从拆文报告生成 |
|
|
27
|
-
| — | `追踪/_tracking-state.json.imported_through_chapter` | 记录导入截止章 N;第 1..N 章不伪造日更记录 |
|
|
28
|
-
| — | `追踪/伏笔.md` | 每个已实际埋设/回收的伏笔 ID 只保留一行当前状态 |
|
|
29
|
-
| — | `追踪/_tracking-state.json.timeline` | 同一事件登记客观事实、读者认知与实际揭示状态;Markdown 时间线只做派生阅读视图 |
|
|
30
|
-
| — | `追踪/时间线/作者真相.md`、`读者已知.md` | 由 `_tracking-state.json.timeline` 派生;读者视图不得泄露作者秘密 |
|
|
31
|
-
| — | `追踪/角色状态/{角色名}.md` | 由 `character-state-reverse.md` 反推核心角色当前快照 |
|
|
32
|
-
| — | `追踪/逐章记录/` | 创建空目录;导入章不伪造日更记录,续写从 N+1 章生成 |
|
|
33
91
|
| `剧情/散落情节.md` | `大纲/大纲.md` 附录或对应卷纲 | 合并到相关卷的大纲 |
|
|
34
|
-
| — | `追踪/上下文.md` | 由初始化事务生成续写状态卡(固定 7 栏),≤12288 字节 |
|
|
35
92
|
|
|
36
93
|
旧拆文的目录或字段名与上表不同时,先建立一次“旧路径 → 当前目标”的来源映射,再按实际可读内容转换;不要为了改名复制出第二套拆文真源。`剧情/节奏.md`、`剧情/情绪模块.md` 或主题化设定缺失时,旧内容能支持的导入步骤照常执行,对应摘要写「未知/待增强」;只有用户要启用依赖这些资料的新对标召回时,才回到 story-long-analyze 做按需增强。
|
|
37
94
|
|
|
@@ -186,6 +243,25 @@ A<->B:关系类型 | 情感 | 描述(50-200字)| 演变轨迹
|
|
|
186
243
|
|
|
187
244
|
> **不允许**用「每卷默认 20-40 章」机械切分原文无卷界的书。候选仅作参考,最终由用户拍板。
|
|
188
245
|
|
|
246
|
+
#### 目标格式模板(大纲/大纲.md)
|
|
247
|
+
|
|
248
|
+
与长篇写作的全书大纲同形,续写时直接接着用;导入只填有证据的项,其余写 `[待补充]`:
|
|
249
|
+
|
|
250
|
+
```markdown
|
|
251
|
+
# 大纲
|
|
252
|
+
|
|
253
|
+
## 全书体量与阶段总览
|
|
254
|
+
- 已写:第 1–{N} 章,约 {Y} 万字;{完本 | 连载中}
|
|
255
|
+
- 阶段划分 / 全书情绪曲线 / 关键节点与钩子链:{从故事线分段反推;证据不足写 [待补充]}
|
|
256
|
+
|
|
257
|
+
## 卷级大纲
|
|
258
|
+
### 第一卷:{卷名}(约 {X} 万字,{Y} 章)
|
|
259
|
+
- 功能:{从剧情分析推断}
|
|
260
|
+
- 核心事件:{一句话}
|
|
261
|
+
- 起始状态 → 结束状态:{从角色弧线推断}
|
|
262
|
+
- 卷契约 / 终局储备 / 阶段边界:{有证据才写,否则 [待补充]}
|
|
263
|
+
```
|
|
264
|
+
|
|
189
265
|
### 候选边界检测参考
|
|
190
266
|
|
|
191
267
|
| 信号类型 | 示例 | 卷边界可能性 |
|
|
@@ -230,7 +306,7 @@ A<->B:关系类型 | 情感 | 描述(50-200字)| 演变轨迹
|
|
|
230
306
|
- 契约风险:{契约安全 / 需补强 / 契约破坏;无法判断写 `[待补充]`}
|
|
231
307
|
|
|
232
308
|
## 剧情单元(反推)
|
|
233
|
-
| 单元ID | 章节范围 |
|
|
309
|
+
| 单元ID | 章节范围 | 单元节拍(建立期待→尝试→加压/转向→决定性行动→兑现→余波) | 主推线/战果 | 下一单元因果钩子 |
|
|
234
310
|
|------|---------|---------|-------|---------|
|
|
235
311
|
| L{卷}-1 | {章X-Y} | {从爽点/情节点分布归纳} | {线} | {方式} |
|
|
236
312
|
|
|
@@ -258,72 +334,6 @@ A<->B:关系类型 | 情感 | 描述(50-200字)| 演变轨迹
|
|
|
258
334
|
- 情节点分布 → 情绪弧线 + 剧情单元(反推)
|
|
259
335
|
- 角色出场 → 人物弧线
|
|
260
336
|
- 铺垫类情节点 → 伏笔
|
|
261
|
-
|
|
262
|
-
### 细纲反推
|
|
263
|
-
|
|
264
|
-
从每章摘要(`章节/第N章_摘要.md`)提取:
|
|
265
|
-
|
|
266
|
-
| 摘要字段 | 细纲字段 | 转换方式 |
|
|
267
|
-
|---------|---------|---------|
|
|
268
|
-
| 关键事件 + 局面结果 | 核心事件 | 合并为“谁采取什么行动 → 局面如何变化”;旧摘要没有 `局面结果` 时只用 `关键事件` |
|
|
269
|
-
| 章节字数 | 字数目标 + 字数口径 | 对原文章节运行 `storyctl.py wordcount measure`,写入 `actual` 与 `visible_chars_v1` |
|
|
270
|
-
| `基调:` | 目标情绪 | 读取紧张/轻松/悲伤/热血/爽/甜/温馨/恐怖/压抑/其他枚举;缺失写 `[待补充]` |
|
|
271
|
-
| 章尾钩子 | 章首承接证据 | 作为下一章开篇需要承接的等待;新的章首钩子设计目标仍标 `[待补充]` |
|
|
272
|
-
| 爽点类情节点 | 爽点 | 从情节点类型推断;没有则写“无显性爽点 / [待补充]” |
|
|
273
|
-
| 情节点起承转合 + 因果 | 内容概括(起因/发展/转折/高潮/结尾) | 按情节点顺序归纳,用因果链校正起因与转折;证据不足写 `[待补充]` |
|
|
274
|
-
| 主线/支线/任务线索 | 情节安排(主线/辅线/事件线/感情线/逻辑线) | 从剧情单元索引与摘要反推;无证据的辅线/感情线写“无”或 `[待补充]`,不得杜撰 |
|
|
275
|
-
| 涉及 + 状态变化 | 人物关系和出场顺序 | `涉及` 给出候选人物,`状态变化` 只写有证据的“前 → 后”;关键物件从证据或旧情节点补充,缺失写 `[待补充]` |
|
|
276
|
-
| 全部情节点 | 情节细化 / 情节点序列 | 按表格逐行写(# / 情节点 / 功能标签 / 执行边界);保持原顺序,功能或边界不明写 `[待补充]`,不反推逐点字数配额 |
|
|
277
|
-
| 胜负/反转/收益损失 | 行动成本(可无)/收益归属 | 有明确证据才填写;行动成本可无、不硬造;否则 `[待补充]` |
|
|
278
|
-
| 章尾钩子 + 局面结果 | 结尾设定和钩子 | 局面结果写收束状态,章尾钩子写已存在的等待;未来设计仍标 `[待补充]` |
|
|
279
|
-
|
|
280
|
-
---
|
|
281
|
-
|
|
282
|
-
## 角色状态反推
|
|
283
|
-
|
|
284
|
-
由 character-state-reverse.md 反推,详见该文件。
|
|
285
|
-
|
|
286
|
-
---
|
|
287
|
-
|
|
288
|
-
## 伏笔提取规则
|
|
289
|
-
|
|
290
|
-
从情节点中识别潜在伏笔:
|
|
291
|
-
|
|
292
|
-
### 识别模式
|
|
293
|
-
|
|
294
|
-
| 情节点类型 | 伏笔可能性 | 提取方式 |
|
|
295
|
-
|-----------|-----------|---------|
|
|
296
|
-
| 铺垫 | 高 | 直接提取为伏笔 |
|
|
297
|
-
| 信息揭示(部分) | 中 | 检查后续是否有呼应 |
|
|
298
|
-
| 物品首次出现 | 中 | 检查后续是否有使用 |
|
|
299
|
-
| 角色秘密 | 高 | 标记为角色伏笔 |
|
|
300
|
-
| 未解决的悬念 | 高 | 从章尾标记提取 |
|
|
301
|
-
|
|
302
|
-
### 状态推断
|
|
303
|
-
|
|
304
|
-
- 铺垫点在后续章节有「揭示」或「解决」类情节点 → 标记「已回收」
|
|
305
|
-
- 铺垫点无后续呼应 → 标记「已埋」
|
|
306
|
-
- 半成品小说的最后几章铺垫 → 标记「已埋」,备注「接近断点」
|
|
307
|
-
|
|
308
|
-
---
|
|
309
|
-
|
|
310
|
-
## 时间线提取规则
|
|
311
|
-
|
|
312
|
-
### 时间标记识别
|
|
313
|
-
|
|
314
|
-
从情节点和时间标记中提取:
|
|
315
|
-
|
|
316
|
-
| 标记模式 | 示例 | 提取方式 |
|
|
317
|
-
|---------|------|---------|
|
|
318
|
-
| 明确日期 | "天元三年春" | 直接记录 |
|
|
319
|
-
| 相对时间 | "三日后"、"半月后" | 推算绝对时间 |
|
|
320
|
-
| 事件间隔 | "翌日"、"次日" | 连续标记 |
|
|
321
|
-
| 季节标记 | "入冬"、"春暖花开" | 季节推断 |
|
|
322
|
-
|
|
323
|
-
### 排序规则
|
|
324
|
-
|
|
325
|
-
按章节顺序排列,同一章内按情节点序号排列。时间标记缺失时标注 `[推断]`。
|
|
326
|
-
|
|
327
337
|
---
|
|
328
338
|
|
|
329
339
|
## 题材定位生成
|
|
@@ -341,6 +351,9 @@ A<->B:关系类型 | 情感 | 描述(50-200字)| 演变轨迹
|
|
|
341
351
|
- 核心梗:{一句话卖点}
|
|
342
352
|
- 微创新点:{与同类题材的差异}
|
|
343
353
|
|
|
354
|
+
## 作者已定
|
|
355
|
+
- {导入记录「作者交代」里的偏好与红线、残稿决定,一条一行;没有写「无」}
|
|
356
|
+
|
|
344
357
|
## 核心梗三分法
|
|
345
358
|
- 表层卖点:{读者一眼看到的吸引力}
|
|
346
359
|
- 深层爽点:{持续追读的情绪驱动力}
|
|
@@ -420,25 +433,16 @@ A<->B:关系类型 | 情感 | 描述(50-200字)| 演变轨迹
|
|
|
420
433
|
|
|
421
434
|
冲突规则:已登记外部对标的 `对标/{对标书名}/剧情/情绪模块.md` 和 `对标/{对标书名}/剧情/节奏.md` 是对标召回权威;`拆文报告.md`、`剧情/故事线.md` 只作为摘要投影。若摘要冲突,保留冲突说明并以权威文件为准;缺少任一权威文件时不生成半套对标视图,先修复该外部作品的拆文产物。
|
|
422
435
|
|
|
423
|
-
---
|
|
424
436
|
|
|
425
437
|
## 质量检查清单
|
|
426
438
|
|
|
427
|
-
|
|
439
|
+
迁移完成、进入逐批细纲前执行(不念给作者,没通过先修):
|
|
428
440
|
|
|
429
441
|
- [ ] 正文文件数 = 源文件章节数
|
|
430
442
|
- [ ] 主要角色(主角 + 核心配角)文件已创建
|
|
431
443
|
- [ ] 关系.md 非空
|
|
432
|
-
- [ ] 大纲.md
|
|
433
|
-
- [ ] 每章细纲已生成
|
|
434
|
-
- [ ] `_tracking-state.json.imported_through_chapter` 等于最后完整导入章
|
|
435
|
-
- [ ] `追踪/伏笔.md` 每个 ID 至多一行,未来尚未埋设的设计没有混入
|
|
436
|
-
- [ ] `_tracking-state.json.timeline` 已登记关键事实与读者认知,`读者已知.md` 无真相泄露
|
|
437
|
-
- [ ] `追踪/角色状态/{角色名}.md` 已覆盖全部核心角色并对齐 `character-state-reverse.md`
|
|
438
|
-
- [ ] 追踪/逐章记录/ 空目录已创建,且没有为导入章伪造日更记录
|
|
439
|
-
- [ ] `追踪/上下文.md` 顶层恰好 固定 7 栏且 ≤12288 字节
|
|
440
|
-
- [ ] `tracking_commit.py check` 通过,`_tracking-state.json` 与全部派生视图一致
|
|
444
|
+
- [ ] 大纲.md 有卷级结构,每卷有卷纲且「剧情单元(反推)」表写了章节范围
|
|
441
445
|
- [ ] 散落情节已合并到相关卷纲或大纲附录
|
|
442
|
-
- [ ]
|
|
446
|
+
- [ ] 卷划分已经用户确认(原文无明确卷界时必检),确认结果已写进导入记录
|
|
443
447
|
- [ ] `拆文库/{导入书名}/` 未被复制到 `对标/`,本书未登记为自身对标
|
|
444
448
|
- [ ] 若绑定外部对标,`拆文库/{对标书名}/` 与 `对标/{对标书名}/` 名称和来源一致,两个主产物均已同步;否则报告修复动作但不回滚本书工程
|