@oh-story/dsh 0.1.14 → 0.1.16
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 +12 -10
- package/lib/drama/manifest.json +284 -364
- package/lib/drama/skills/short-drama/SKILL.md +13 -14
- package/lib/drama/skills/short-drama/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama/references/audience-reveal.md +4 -4
- package/lib/drama/skills/short-drama/references/contract-and-ownership.md +2 -2
- package/lib/drama/skills/short-drama/references/creator-documents.md +12 -10
- package/lib/drama/skills/short-drama/references/creator-workflow.md +6 -5
- package/lib/drama/skills/short-drama/references/form-cards/Q/347/211/210/350/241/250/350/276/276.md +8 -8
- package/lib/drama/skills/short-drama/references/form-cards//344/272/214/347/273/264/345/212/250/346/200/201/346/274/253.md +5 -5
- package/lib/drama/skills/short-drama/references/form-cards//345/233/275/346/274/253/344/272/214/346/254/241/345/205/203.md +5 -6
- package/lib/drama/skills/short-drama/references/form-cards//345/256/236/346/213/215.md +6 -7
- package/lib/drama/skills/short-drama/references/form-cards//346/260/264/345/242/250/347/254/224/350/247/246.md +2 -3
- package/lib/drama/skills/short-drama/references/form-cards//351/243/216/346/240/274/345/214/226/344/270/211/347/273/264.md +6 -7
- package/lib/drama/skills/short-drama/references/knowhow-index.md +6 -7
- package/lib/drama/skills/short-drama/references/look-development.md +5 -7
- package/lib/drama/skills/short-drama/references/pickup-and-alternate.md +6 -3
- package/lib/drama/skills/short-drama/references/production-form-profiles.md +14 -16
- package/lib/drama/skills/short-drama/references/reference-roles.md +5 -3
- package/lib/drama/skills/short-drama/references/runtime-preflight.md +2 -1
- package/lib/drama/skills/short-drama-assets/SKILL.md +8 -8
- package/lib/drama/skills/short-drama-assets/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +26 -27
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +22 -22
- package/lib/drama/skills/short-drama-assets/references/continuity-delta.md +4 -4
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +4 -4
- package/lib/drama/skills/short-drama-assets/references/era-anchors.md +3 -3
- package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +5 -5
- package/lib/drama/skills/short-drama-assets/references/location-and-view.md +6 -7
- package/lib/drama/skills/short-drama-assets/references/occurrence-extraction.md +8 -9
- package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +8 -11
- package/lib/drama/skills/short-drama-assets/references/voice-direction.md +22 -22
- package/lib/drama/skills/short-drama-develop/SKILL.md +6 -6
- package/lib/drama/skills/short-drama-develop/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +2 -2
- package/lib/drama/skills/short-drama-develop/assets/story-engine.md +2 -2
- package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +13 -12
- package/lib/drama/skills/short-drama-develop/references/creative-reference-intake.md +7 -7
- package/lib/drama/skills/short-drama-develop/references/director-brief-craft.md +7 -8
- package/lib/drama/skills/short-drama-develop/references/episode-design.md +20 -24
- package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +7 -7
- package/lib/drama/skills/short-drama-develop/references/genre-cards//344/272/262/345/255/220/351/232/220/347/247/230.md +4 -5
- package/lib/drama/skills/short-drama-develop/references/genre-cards//344/273/231/344/276/240/344/277/256/347/234/237.md +2 -2
- package/lib/drama/skills/short-drama-develop/references/genre-cards//345/212/250/344/275/234/344/273/273/345/212/241.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//345/217/244/350/243/205/346/235/203/350/260/213.md +2 -2
- 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//345/256/266/345/272/255/345/205/263/347/263/273.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//346/202/254/347/226/221/350/247/204/345/210/231.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//347/224/237/346/264/273/346/265/201.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//347/240/264/351/225/234/351/207/215/345/234/206.md +4 -5
- package/lib/drama/skills/short-drama-develop/references/genre-cards//350/261/252/351/227/250/345/251/232/346/201/213.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//350/272/253/344/273/275/351/224/231/344/275/215.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +2 -2
- package/lib/drama/skills/short-drama-develop/references/genre-cards.md +4 -4
- package/lib/drama/skills/short-drama-develop/references/mechanism-loop.md +6 -7
- package/lib/drama/skills/short-drama-develop/references/multi-episode-intake.md +19 -17
- package/lib/drama/skills/short-drama-develop/references/premise-devices.md +5 -5
- package/lib/drama/skills/short-drama-develop/references/reveal-reversal-payoff.md +6 -5
- package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -4
- package/lib/drama/skills/short-drama-develop/references/stage-contract.md +7 -9
- package/lib/drama/skills/short-drama-develop/references/story-craft.md +8 -10
- package/lib/drama/skills/short-drama-edit/SKILL.md +11 -14
- package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +12 -19
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +2 -2
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +5 -4
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +1 -1
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +6 -4
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +5 -5
- package/lib/drama/skills/short-drama-edit/references/still-cuts.md +1 -1
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +7 -2
- package/lib/drama/skills/short-drama-image-prompts/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-image-prompts/references/character-and-look.md +4 -5
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +17 -17
- package/lib/drama/skills/short-drama-image-prompts/references/edit-and-revision.md +10 -9
- package/lib/drama/skills/short-drama-image-prompts/references/location-plate.md +11 -12
- package/lib/drama/skills/short-drama-image-prompts/references/look-and-state-variant.md +6 -5
- package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +2 -2
- package/lib/drama/skills/short-drama-image-prompts/references/production-sheet-recipes.md +6 -6
- package/lib/drama/skills/short-drama-image-prompts/references/prop-plate.md +8 -8
- package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +5 -4
- package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +17 -24
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +3 -4
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +5 -10
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +4 -6
- package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +9 -13
- package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +3 -7
- package/lib/drama/skills/short-drama-produce/SKILL.md +43 -42
- package/lib/drama/skills/short-drama-produce/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +31 -18
- package/lib/drama/skills/short-drama-produce/references/providers/gpt-image-2.md +1 -1
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +11 -6
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-music.md +2 -2
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +7 -5
- package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +14 -8
- package/lib/drama/skills/short-drama-review/SKILL.md +9 -9
- package/lib/drama/skills/short-drama-review/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-review/references/anti-template-repair.md +10 -11
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +24 -23
- package/lib/drama/skills/short-drama-review/references/project-calibration.md +17 -16
- package/lib/drama/skills/short-drama-review/references/review-method.md +8 -6
- package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +7 -6
- package/lib/drama/skills/short-drama-review/references/rubric-source-analysis.md +17 -10
- package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +29 -25
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +11 -11
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -2
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +8 -10
- package/lib/drama/skills/short-drama-storyboard/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +8 -11
- package/lib/drama/skills/short-drama-storyboard/references/comic-keyframe-lexicon.md +11 -12
- package/lib/drama/skills/short-drama-storyboard/references/coverage-audition.md +4 -5
- package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +19 -24
- package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +26 -29
- package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +6 -5
- package/lib/drama/skills/short-drama-storyboard/references/scene-visual-plan.md +2 -2
- package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +4 -4
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +8 -8
- package/lib/drama/skills/short-drama-storyboard/references/shot-revision-identity.md +3 -3
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +10 -7
- package/lib/drama/skills/short-drama-video-prompts/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +63 -61
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +20 -18
- package/lib/drama/skills/short-drama-video-prompts/references/generability.md +12 -12
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +4 -3
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +38 -40
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +36 -36
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +17 -21
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +10 -11
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +2 -2
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +6 -12
- package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +2 -1
- package/lib/drama/skills/short-drama-write/SKILL.md +15 -15
- package/lib/drama/skills/short-drama-write/agents/openai.yaml +1 -1
- package/lib/drama/skills/short-drama-write/assets/screenplay.md +3 -4
- package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +20 -22
- package/lib/drama/skills/short-drama-write/references/production-format-dialect.md +20 -22
- package/lib/drama/skills/short-drama-write/references/scene-handoff-capsule.md +10 -10
- package/lib/drama/skills/short-drama-write/references/scene-sound-dramaturgy.md +11 -9
- package/lib/drama/skills/short-drama-write/references/screenplay-format.md +11 -10
- package/lib/drama/skills/short-drama-write/references/script-craft.md +41 -47
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +7 -5
- package/lib/drama/skills/short-drama-write/references/substitutable-realization.md +19 -25
- package/lib/index.js +80 -17
- package/lib/index.js.map +3 -3
- package/lib/novel-to-game/README.md +8 -9
- package/lib/novel-to-game/README_ZH.md +12 -13
- package/lib/novel-to-game/manifest.json +19 -19
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +2 -2
- package/lib/novel-to-game/skills/game-build/SKILL.md +2 -0
- package/lib/novel-to-game/skills/game-concept/SKILL.md +1 -1
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +1 -1
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +1 -1
- package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +1 -1
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +4 -4
- package/lib/oh-story/manifest.json +676 -676
- package/lib/oh-story/roles/chapter-extractor.md +10 -10
- package/lib/oh-story/roles/character-designer.md +8 -24
- package/lib/oh-story/roles/consistency-checker.md +3 -5
- package/lib/oh-story/roles/narrative-writer.md +16 -16
- package/lib/oh-story/roles/story-architect.md +8 -11
- package/lib/oh-story/roles/story-explorer.md +7 -9
- package/lib/oh-story/roles/story-researcher.md +8 -8
- package/lib/oh-story/skills/browser-cdp/SKILL.md +19 -18
- package/lib/oh-story/skills/story/SKILL.md +15 -20
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story-cover/SKILL.md +17 -26
- package/lib/oh-story/skills/story-cover/references/cover-styles.md +12 -10
- package/lib/oh-story/skills/story-deslop/SKILL.md +69 -211
- package/lib/oh-story/skills/story-deslop/references/agent-calls.md +17 -3
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +23 -160
- package/lib/oh-story/skills/story-deslop/references/expression.md +76 -0
- package/lib/oh-story/skills/story-deslop/references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-deslop/references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-deslop/references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-import/SKILL.md +8 -13
- package/lib/oh-story/skills/story-import/references/character-state-reverse.md +9 -8
- package/lib/oh-story/skills/story-import/references/deep-analysis.md +5 -5
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +11 -11
- package/lib/oh-story/skills/story-import/references/import-report.md +5 -5
- package/lib/oh-story/skills/story-import/references/import-special-cases.md +4 -4
- package/lib/oh-story/skills/story-import/references/import-tracking.md +5 -5
- package/lib/oh-story/skills/story-import/references/length-routing.md +12 -20
- package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +3 -3
- package/lib/oh-story/skills/story-import/references/outline-reverse.md +2 -2
- package/lib/oh-story/skills/story-import/references/state-tracking.md +5 -3
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +13 -13
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +10 -14
- package/lib/oh-story/skills/story-import/references/tracking-initialization.md +2 -2
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +2 -2
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +8 -8
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +9 -9
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +22 -22
- package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +5 -4
- package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +9 -3
- package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +7 -7
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +8 -9
- package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +2 -2
- package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +8 -8
- package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +9 -9
- package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +15 -15
- package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +17 -15
- package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +8 -6
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +19 -16
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +8 -8
- package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +6 -6
- package/lib/oh-story/skills/story-long-scan/SKILL.md +24 -34
- package/lib/oh-story/skills/story-long-scan/references/genre-trends.md +30 -44
- package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +6 -4
- package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +5 -5
- package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +7 -7
- package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +17 -7
- package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +16 -4
- package/lib/oh-story/skills/story-long-scan/references/publishing-guide.md +16 -29
- package/lib/oh-story/skills/story-long-scan/references/reader-profiling.md +26 -39
- package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +10 -11
- package/lib/oh-story/skills/story-long-write/SKILL.md +9 -10
- package/lib/oh-story/skills/story-long-write/references/agent-calls.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +11 -9
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +8 -8
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/character-basics.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/character-design-methods.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/character-relations.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/commercial-core-methods.md +7 -6
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +23 -160
- package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +19 -22
- package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +28 -27
- package/lib/oh-story/skills/story-long-write/references/expression.md +76 -0
- package/lib/oh-story/skills/story-long-write/references/female-audience-writing.md +3 -4
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/271/264/344/273/243.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//345/277/253/347/251/277.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +7 -7
- package/lib/oh-story/skills/story-long-write/references/genre-readers.md +32 -39
- package/lib/oh-story/skills/story-long-write/references/long-chapter-hooks.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/long-format.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +13 -13
- package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/long-reversal.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/long-suspense.md +3 -5
- package/lib/oh-story/skills/story-long-write/references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +4 -4
- 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 +4 -4
- package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +10 -11
- package/lib/oh-story/skills/story-long-write/references/plot-core-methods.md +5 -5
- package/lib/oh-story/skills/story-long-write/references/plot-emotion-system.md +8 -8
- package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +5 -6
- package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +7 -5
- package/lib/oh-story/skills/story-long-write/references/project-files.md +4 -4
- 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 +3 -5
- package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/style-craft.md +8 -29
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +5 -4
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +3 -2
- package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +25 -24
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +61 -58
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +87 -20
- package/lib/oh-story/skills/story-review/SKILL.md +16 -31
- package/lib/oh-story/skills/story-review/references/agent-prompts.md +10 -12
- package/lib/oh-story/skills/story-review/references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-review/references/batch-review.md +4 -4
- package/lib/oh-story/skills/story-review/references/character-relations.md +4 -4
- package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +19 -22
- package/lib/oh-story/skills/story-review/references/expression.md +76 -0
- package/lib/oh-story/skills/story-review/references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-review/references/plot-core-methods.md +5 -5
- package/lib/oh-story/skills/story-review/references/quality-rubric.md +5 -5
- package/lib/oh-story/skills/story-review/references/review-quality.md +16 -19
- package/lib/oh-story/skills/story-review/references/review-tracking.md +5 -5
- package/lib/oh-story/skills/story-review/references/rubrics/fanqie.md +6 -5
- package/lib/oh-story/skills/story-review/references/rubrics/qidian.md +6 -5
- package/lib/oh-story/skills/story-review/references/rubrics/zhihu.md +7 -8
- package/lib/oh-story/skills/story-review/references/solo.md +5 -5
- package/lib/oh-story/skills/story-review/references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-review/references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-review/references/tracking-initialization.md +2 -2
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +2 -2
- package/lib/oh-story/skills/story-setup/SKILL.md +18 -18
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +3 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +9 -9
- package/lib/oh-story/skills/story-setup/references/agent-references/character-basics.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/character-design-methods.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +23 -160
- package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +19 -22
- package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/expression.md +76 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +11 -11
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//344/270/234/346/226/271/344/273/231/344/276/240.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//344/274/240/347/273/237/347/216/204/345/271/273.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/345/217/244/344/273/243.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/216/206/345/217/262/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/214/347/224/267/344/270/273.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/350/250/200/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/217/244/351/243/216/344/270/226/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/346/202/254/347/226/221.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/245/263/351/242/221/347/247/215/347/224/260.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/256/253/346/226/227/345/256/205/346/226/227.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/271/264/344/273/243.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//345/277/253/347/251/277.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/347/201/265/345/274/202.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/202/254/347/226/221/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/210/230/347/245/236/350/265/230/345/251/277.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/212/227/346/210/230/350/260/215/346/210/230.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/230/237/345/205/211/347/222/200/347/222/250.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/260/221/345/233/275/350/250/200/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//346/270/270/346/210/217/344/275/223/350/202/262.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/204/221/346/264/236.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/204/345/271/273/350/250/200/346/203/205.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/216/260/350/250/200/350/204/221/346/264/236.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//347/247/221/345/271/273/346/234/253/344/270/226.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/201/214/345/234/272/345/251/232/346/201/213.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/245/277/346/226/271/345/245/207/345/271/273.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//350/261/252/351/227/250/346/200/273/350/243/201.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/344/277/256/347/234/237.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/346/227/245/345/270/270.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/347/247/215/347/224/260.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/350/204/221/346/264/236.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/203/275/345/270/202/351/253/230/346/255/246.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards//351/235/222/346/230/245/347/224/234/345/256/240.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +7 -7
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +33 -41
- package/lib/oh-story/skills/story-setup/references/agent-references/long-chapter-hooks.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +28 -27
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +13 -13
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/long-reversal.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/long-suspense.md +3 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +4 -4
- 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 +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/plot-core-methods.md +5 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/short-chapter-hooks.md +14 -34
- package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +7 -9
- package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +8 -10
- package/lib/oh-story/skills/story-setup/references/agent-references/short-paragraph-hooks.md +11 -12
- package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +6 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +11 -11
- package/lib/oh-story/skills/story-setup/references/agent-references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +25 -24
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +5 -15
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-basics.md +91 -111
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-design.md +85 -97
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +72 -83
- package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +7 -7
- package/lib/oh-story/skills/story-short-analyze/references/analysis-paragraph-hooks.md +28 -30
- package/lib/oh-story/skills/story-short-analyze/references/analysis-reader-profile.md +59 -66
- package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +1 -3
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +76 -89
- package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +5 -5
- package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +13 -24
- package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +3 -3
- package/lib/oh-story/skills/story-short-analyze/references/real-market-data.md +24 -25
- package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +44 -46
- package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +14 -12
- package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +17 -17
- package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +11 -11
- package/lib/oh-story/skills/story-short-scan/SKILL.md +22 -29
- package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +3 -3
- package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +2 -2
- package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +2 -2
- package/lib/oh-story/skills/story-short-scan/references/real-market-data.md +24 -25
- package/lib/oh-story/skills/story-short-scan/references/topic-match.md +3 -3
- package/lib/oh-story/skills/story-short-write/SKILL.md +20 -23
- package/lib/oh-story/skills/story-short-write/references/agent-calls.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +11 -9
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +8 -8
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +63 -151
- package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +8 -8
- package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +11 -11
- package/lib/oh-story/skills/story-short-write/references/deslop-gates.md +34 -0
- package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +19 -22
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +7 -9
- package/lib/oh-story/skills/story-short-write/references/expression.md +76 -0
- package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +9 -9
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +15 -15
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +9 -9
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +14 -14
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +11 -11
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +9 -9
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +14 -13
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +12 -12
- package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +8 -8
- package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +12 -12
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +8 -10
- package/lib/oh-story/skills/story-short-write/references/hooks-chapter.md +14 -34
- package/lib/oh-story/skills/story-short-write/references/hooks-paragraph.md +11 -12
- package/lib/oh-story/skills/story-short-write/references/narrative-focus.md +63 -0
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +13 -24
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +3 -4
- package/lib/oh-story/skills/story-short-write/references/scene-craft.md +8 -7
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +16 -18
- package/lib/oh-story/skills/story-short-write/references/short-deslop.md +12 -125
- package/lib/oh-story/skills/story-short-write/references/short-format.md +9 -13
- package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +18 -35
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +11 -11
- package/lib/oh-story/skills/story-short-write/references/story-logic.md +65 -0
- package/lib/oh-story/skills/story-short-write/references/style-resolution.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +8 -8
- package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +11 -13
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +11 -9
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +10 -10
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +10 -9
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +4 -4
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +61 -58
- package/lib/types/role-tool.d.ts +42 -2
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +8 -0
- package/lib/video-recap/README.en.md +8 -10
- package/lib/video-recap/README.md +8 -8
- package/lib/video-recap/manifest.json +48 -48
- package/lib/video-recap/skills/video-assemble/SKILL.md +5 -8
- package/lib/video-recap/skills/video-assemble/references/audio-modes.md +3 -3
- package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +1 -2
- package/lib/video-recap/skills/video-assemble/references/packaging.md +1 -2
- package/lib/video-recap/skills/video-assemble/references/source-score.md +5 -6
- package/lib/video-recap/skills/video-cut/SKILL.md +3 -7
- package/lib/video-recap/skills/video-cut/references/shot-review.md +1 -1
- package/lib/video-recap/skills/video-recap/SKILL.md +7 -11
- package/lib/video-recap/skills/video-recap/references/audio-routing.md +1 -2
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +5 -7
- package/lib/video-recap/skills/video-recap/references/data-schema.md +8 -8
- package/lib/video-recap/skills/video-recap/references/resource-library.md +2 -2
- package/lib/video-recap/skills/video-reference/SKILL.md +4 -8
- package/lib/video-recap/skills/video-reference/references/reference-schema.md +1 -1
- package/lib/video-recap/skills/video-script/SKILL.md +4 -13
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +2 -2
- package/lib/video-recap/skills/video-understanding/SKILL.md +10 -6
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +2 -2
- package/lib/video-recap/skills/video-voiceover/SKILL.md +3 -11
- package/lib/video-recap/skills/video-voiceover/references/index-tts.md +1 -2
- package/package.json +25 -24
- package/lib/drama/skills/short-drama-image-prompts/assets/image-prompt-spec.jsonl.md +0 -187
- package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +0 -42
- package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-frame-spec.jsonl.md +0 -128
- package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +0 -34
- package/lib/drama/skills/short-drama-storyboard/assets/coverage-template.json +0 -49
- package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +0 -36
- package/lib/drama/skills/short-drama-storyboard/assets/keyframe-template.jsonl +0 -2
- package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +0 -2
- package/lib/drama/skills/short-drama-video-prompts/assets/delivery-container.jsonl.md +0 -101
- package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +0 -217
- package/lib/drama/skills/short-drama-video-prompts/assets/music-spec.jsonl.md +0 -31
- package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +0 -67
- package/lib/drama/skills/short-drama-write/assets/beats.jsonl +0 -2
- package/lib/drama/skills/short-drama-write/assets/episode-card-standalone.json +0 -120
- package/lib/drama/skills/short-drama-write/assets/episode-card.json +0 -55
- package/lib/drama/skills/short-drama-write/assets/voice-record-sheet.jsonl.md +0 -89
- package/lib/oh-story/skills/story/references/author-memory-maintenance.md +0 -75
- package/lib/oh-story/skills/story/references/author-memory.md +0 -117
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +0 -1635
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +0 -556
- package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +0 -75
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +0 -117
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +0 -1635
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +0 -556
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +0 -556
- package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +0 -75
- package/lib/oh-story/skills/story-review/references/author-memory.md +0 -117
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +0 -1635
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +0 -556
- package/lib/oh-story/skills/story-setup/references/agent-references/short-suspense.md +0 -352
- package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +0 -490
- package/lib/oh-story/skills/story-short-write/references/short-suspense.md +0 -352
|
@@ -34,21 +34,22 @@ PENDING_MAX_BYTES = 12288
|
|
|
34
34
|
JOURNAL_MAX_BYTES = 24576
|
|
35
35
|
QUERY_MAX_BYTES = 2048
|
|
36
36
|
ASSERTION_MAX_BYTES = 120 # 新建条目的断言限一句话;解释进 reason(不进 query 载荷)。
|
|
37
|
-
OMITTED_IDS_MAX = 20 # omitted_ids 封顶,omitted 保留真实总数——漏项列表不许把载荷本身挤炸。
|
|
38
37
|
LEGACY_ASSERTION_MAX_BYTES = 768 # 存量条目的读取上限;强化老条目不受新上限约束。
|
|
39
38
|
|
|
40
|
-
# query
|
|
41
|
-
# 是它在 prompt
|
|
42
|
-
#
|
|
43
|
-
#
|
|
44
|
-
#
|
|
45
|
-
#
|
|
46
|
-
#
|
|
47
|
-
#
|
|
48
|
-
#
|
|
49
|
-
#
|
|
50
|
-
#
|
|
51
|
-
#
|
|
39
|
+
# query 输出里的 lines(每条一行「- 断言(编号)」)是交给执行 agent 的注入
|
|
40
|
+
# 载荷,QUERY_MAX_BYTES 是它在 prompt 里的注意力预算,不该放大;量的是执行者
|
|
41
|
+
# 真正读到的这几行,不是 JSON 外壳(编号、kind、scope 只给主会话和脚本看)。
|
|
42
|
+
# 防「作者以为载入了、实际被静默挤掉」靠三层:①新建条目的断言限
|
|
43
|
+
# ASSERTION_MAX_BYTES,从源头短(强化已有条目不受限,否则存量长断言再也无法
|
|
44
|
+
# 被确认,只会派生重复条目);②写入端按下列任务组合(与
|
|
45
|
+
# references/author-memory-maintenance.md 的映射表同包跟版)估算最坏查询情形——
|
|
46
|
+
# 全局条目+各 scope 维度上最重的单一切片(一次查询只带一个 book/genre/workflow,
|
|
47
|
+
# 不同书的条目不会同现;切片按 casefold 归并,与 same_scope_value 同一口径,
|
|
48
|
+
# 轻重按渲染后的行字节算,与真实载荷同一把尺),装不下时在返回的 warnings 里
|
|
49
|
+
# 点名将被略过的条目、指向「整理作者记忆」,写入本身永不因注入预算失败;
|
|
50
|
+
# ③查询按 重要度→本书例外→最近更新 排序装填,被略过的恒是重要度较低的条目,
|
|
51
|
+
# 漏下的 ID 按同一优先级全数报进 omitted_ids,首句报进 omitted_summaries,
|
|
52
|
+
# 供主会话用原话告诉作者哪几条没带上。
|
|
52
53
|
QUERY_COMBOS: dict[str, tuple[str, ...]] = {
|
|
53
54
|
"正文初稿/续写": ("prose_style", "story_design"),
|
|
54
55
|
"去AI味/改写": ("prose_style",),
|
|
@@ -1086,12 +1087,19 @@ def summarize_assertion(assertion: str, *, limit: int = 14) -> str:
|
|
|
1086
1087
|
|
|
1087
1088
|
|
|
1088
1089
|
def compact_item(item: dict[str, Any]) -> dict[str, Any]:
|
|
1089
|
-
"""query
|
|
1090
|
+
"""query 的 items 只带这四个字段,给主会话和脚本按 kind/scope 判断用;
|
|
1091
|
+
reason、evidence 等一律不出 store。"""
|
|
1090
1092
|
return {"id": item["id"], "kind": item["kind"], "scope": item["scope"], "assertion": item["assertion"]}
|
|
1091
1093
|
|
|
1092
1094
|
|
|
1093
|
-
def
|
|
1094
|
-
|
|
1095
|
+
def render_line(item: dict[str, Any]) -> str:
|
|
1096
|
+
"""执行者读到的一行:断言原文+编号。注入预算量的就是这几行。"""
|
|
1097
|
+
return f"- {item['assertion']}({item['id']})"
|
|
1098
|
+
|
|
1099
|
+
|
|
1100
|
+
def line_bytes(item: dict[str, Any]) -> int:
|
|
1101
|
+
"""一行在注入载荷里的占位,含行尾换行——估算与真实装填只用这一把尺。"""
|
|
1102
|
+
return len((render_line(item) + "\n").encode("utf-8"))
|
|
1095
1103
|
|
|
1096
1104
|
|
|
1097
1105
|
SCOPE_RANK = {"book": 0, "genre": 1, "workflow": 2, "global": 3}
|
|
@@ -1121,48 +1129,38 @@ def fit_items(
|
|
|
1121
1129
|
*,
|
|
1122
1130
|
extra: dict[str, Any] | None = None,
|
|
1123
1131
|
) -> tuple[dict[str, Any], list[str]]:
|
|
1124
|
-
"""
|
|
1125
|
-
|
|
1126
|
-
OMITTED_IDS_MAX 条,omitted 保留真实总数)。返回 (结果文档, 全部漏下 ID)。
|
|
1132
|
+
"""按渲染后的行把条目装进 QUERY_MAX_BYTES:装不下的跳过而不中断(一条长的
|
|
1133
|
+
不挡后面的短条)。返回 (结果文档, 全部漏下 ID)。
|
|
1127
1134
|
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1135
|
+
只有 lines 计入预算;items、漏项清单和 `extra`(book_revision 等)是给主会话
|
|
1136
|
+
和脚本看的,不进执行者 prompt,所以漏项全数列出、不封顶,并按候选优先级
|
|
1137
|
+
排序——排在前面的就是作者最该知道没带上的那几条。
|
|
1131
1138
|
"""
|
|
1139
|
+
kept: list[dict[str, Any]] = []
|
|
1140
|
+
dropped: list[dict[str, Any]] = []
|
|
1141
|
+
used = 0
|
|
1142
|
+
for item in sorted_items:
|
|
1143
|
+
size = line_bytes(item)
|
|
1144
|
+
if used + size > QUERY_MAX_BYTES:
|
|
1145
|
+
dropped.append(item)
|
|
1146
|
+
continue
|
|
1147
|
+
kept.append(item)
|
|
1148
|
+
used += size
|
|
1132
1149
|
result: dict[str, Any] = {
|
|
1133
1150
|
"ok": True,
|
|
1134
1151
|
"command": "query",
|
|
1135
1152
|
"initialized": True,
|
|
1136
1153
|
"revision": revision,
|
|
1137
|
-
"items": [],
|
|
1138
|
-
"
|
|
1139
|
-
"
|
|
1154
|
+
"items": [compact_item(item) for item in kept],
|
|
1155
|
+
"lines": [render_line(item) for item in kept],
|
|
1156
|
+
"omitted": len(dropped),
|
|
1157
|
+
"omitted_ids": [item["id"] for item in dropped],
|
|
1158
|
+
"omitted_summaries": {item["id"]: summarize_assertion(item["assertion"]) for item in dropped},
|
|
1159
|
+
# 组装脚本按题材×流程查好几次再合并,合并后只能按重要度重排漏项,所以把它带出来。
|
|
1160
|
+
"omitted_importance": {item["id"]: item["importance"] for item in dropped},
|
|
1140
1161
|
}
|
|
1141
1162
|
result.update(extra or {})
|
|
1142
|
-
|
|
1143
|
-
kept: list[dict[str, Any]] = []
|
|
1144
|
-
dropped: set[str] = set()
|
|
1145
|
-
|
|
1146
|
-
def ordered_omitted() -> list[str]:
|
|
1147
|
-
return sorted(dropped, key=order.__getitem__)
|
|
1148
|
-
|
|
1149
|
-
def envelope_bytes() -> int:
|
|
1150
|
-
omitted = ordered_omitted()
|
|
1151
|
-
result["items"] = [compact_item(item) for item in kept]
|
|
1152
|
-
result["omitted"] = len(omitted)
|
|
1153
|
-
result["omitted_ids"] = omitted[:OMITTED_IDS_MAX]
|
|
1154
|
-
return len((json.dumps(result, ensure_ascii=False, sort_keys=True) + "\n").encode("utf-8"))
|
|
1155
|
-
|
|
1156
|
-
for item in sorted_items:
|
|
1157
|
-
kept.append(item)
|
|
1158
|
-
if envelope_bytes() > QUERY_MAX_BYTES:
|
|
1159
|
-
kept.pop()
|
|
1160
|
-
dropped.add(item["id"])
|
|
1161
|
-
# omitted 计数落定后包可能恰好贴边超出一两个字节,回吐条目直到装下。
|
|
1162
|
-
while kept and envelope_bytes() > QUERY_MAX_BYTES:
|
|
1163
|
-
dropped.add(kept.pop()["id"])
|
|
1164
|
-
envelope_bytes()
|
|
1165
|
-
return result, ordered_omitted()
|
|
1163
|
+
return result, result["omitted_ids"]
|
|
1166
1164
|
|
|
1167
1165
|
|
|
1168
1166
|
def build_query_result(
|
|
@@ -1170,8 +1168,8 @@ def build_query_result(
|
|
|
1170
1168
|
project_state: dict[str, Any] | None,
|
|
1171
1169
|
book_state: dict[str, Any] | None,
|
|
1172
1170
|
) -> tuple[dict[str, Any], list[str]]:
|
|
1173
|
-
"""
|
|
1174
|
-
book_revision
|
|
1171
|
+
"""真实查询与写入端估算共用的唯一装填入口:候选已按优先级排好,这里补上
|
|
1172
|
+
book_revision 等附加字段再装填。两处装填口径一旦分叉就是假阴性——回执
|
|
1175
1173
|
说没事、query 照样丢条。"""
|
|
1176
1174
|
extra: dict[str, Any] = {}
|
|
1177
1175
|
if book_state is not None:
|
|
@@ -1208,12 +1206,13 @@ def merged_query(
|
|
|
1208
1206
|
|
|
1209
1207
|
|
|
1210
1208
|
def slice_weight(items: list[dict[str, Any]]) -> int:
|
|
1211
|
-
"""
|
|
1209
|
+
"""切片在真实载荷里的占位:按渲染后的行(含换行)计。
|
|
1212
1210
|
|
|
1213
|
-
|
|
1214
|
-
|
|
1211
|
+
必须与 fit_items 同一把尺。按 JSON 字节挑会挑错切片——scope 取值长、断言
|
|
1212
|
+
短的切片 JSON 更重,渲染出的行却更轻,于是估算判「装得下」而真实查询溢出
|
|
1213
|
+
(warnings 假阴性)。
|
|
1215
1214
|
"""
|
|
1216
|
-
return sum(
|
|
1215
|
+
return sum(line_bytes(item) for item in items)
|
|
1217
1216
|
|
|
1218
1217
|
|
|
1219
1218
|
def active_of_kinds(state: dict[str, Any] | None, kinds: tuple[str, ...]) -> list[dict[str, Any]]:
|
|
@@ -1419,16 +1418,20 @@ def command_query(
|
|
|
1419
1418
|
project_state = load_state(project_store(workspace))
|
|
1420
1419
|
book_state = load_state(book_store(workspace, book_root, book)) if book_root is not None else None
|
|
1421
1420
|
if project_state is None and book_state is None:
|
|
1422
|
-
return {"ok": True, "command": "query", "initialized": False, "revision": 0, "items": [], "
|
|
1421
|
+
return {"ok": True, "command": "query", "initialized": False, "revision": 0, "items": [], "lines": [],
|
|
1422
|
+
"omitted": 0, "omitted_ids": [], "omitted_summaries": {}, "omitted_importance": {}}
|
|
1423
1423
|
requested_scopes = {
|
|
1424
1424
|
"genre": optional_text(genre, "query.genre", max_bytes=180),
|
|
1425
1425
|
"workflow": optional_text(workflow, "query.workflow", max_bytes=180),
|
|
1426
1426
|
}
|
|
1427
1427
|
# 装不下的**跳过而不中断**(一条长的不挡后面的短条),漏下的 ID 报进
|
|
1428
1428
|
# omitted_ids:非空=记忆超编该整理了,不是「没有更多了」。写入端的
|
|
1429
|
-
# warnings 与这里共用 build_query_result
|
|
1429
|
+
# warnings 与这里共用 build_query_result 同一把尺,估算即实况。
|
|
1430
1430
|
result, _ = merged_query(project_state, book_state, set(kinds), requested_scopes)
|
|
1431
|
-
require(
|
|
1431
|
+
require(
|
|
1432
|
+
sum(len((line + "\n").encode("utf-8")) for line in result["lines"]) <= QUERY_MAX_BYTES,
|
|
1433
|
+
"query lines exceed their fixed byte budget",
|
|
1434
|
+
)
|
|
1432
1435
|
return result
|
|
1433
1436
|
|
|
1434
1437
|
|
|
@@ -15,7 +15,8 @@
|
|
|
15
15
|
职责边界:
|
|
16
16
|
- 脚本做确定性部分:固定首行、定位、标题行字面量、细纲指针、文风全文路径与裁决、
|
|
17
17
|
上一章结尾、降档判定与情绪/节奏槽、固定块指针。
|
|
18
|
-
- 脚本代查作者记忆(prose_style + story_design)并填好 author_preferences
|
|
18
|
+
- 脚本代查作者记忆(prose_style + story_design)并填好 author_preferences;装不下的条目在核对报告里
|
|
19
|
+
点名,并拼好章末对作者说的那句原话。
|
|
19
20
|
- 脚本注入 `设定/题材定位.md`「作者已定」(本书的偏好、红线与否掉的方案),超过 AUTHOR_DECIDED_CHARS
|
|
20
21
|
可见字截断并注明去原文看;它是书级设定,优先于作者记忆。
|
|
21
22
|
- 主会话填九个固定槽:执行安排 / 本章意图 / 作者本轮要求 / 本章技法 / 本节速记 / 涉及角色 /
|
|
@@ -147,6 +148,8 @@ def previous_chapter_tail(project: Path, chapter: int):
|
|
|
147
148
|
|
|
148
149
|
|
|
149
150
|
MEMORY_KINDS = ("prose_style", "story_design")
|
|
151
|
+
IMPORTANCE_RANK = {"low": 1, "medium": 2, "high": 3}
|
|
152
|
+
MISSED_SHOWN = 8 # 给作者的那句话最多点名几条,其余用「等」带过;完整清单走「整理作者记忆」
|
|
150
153
|
# 限定「流程」的作者记忆里,这些取值指的就是长篇写正文。
|
|
151
154
|
LONG_WRITE_WORKFLOWS = {"长篇", "长篇写作", "写长篇", "长篇连载", "长篇网文", "长篇正文", "story-long-write"}
|
|
152
155
|
|
|
@@ -170,6 +173,51 @@ def scoped_memory_values(workspace: Path):
|
|
|
170
173
|
return values
|
|
171
174
|
|
|
172
175
|
|
|
176
|
+
WORKSPACE_MARKERS = (".active-book", "长篇", "短篇", "拆文库")
|
|
177
|
+
|
|
178
|
+
|
|
179
|
+
def memory_state_kind(directory: Path):
|
|
180
|
+
"""目录下 `.story/作者记忆/` 那份 state 是哪一级:不带 book 字段为 "project",带书名为 "book",
|
|
181
|
+
没有或读不出为 None(与 author_memory_commit.py 的 peek_book_name 同一判据)。"""
|
|
182
|
+
text = read_text(directory / ".story" / "作者记忆" / "_author-memory-state.json")
|
|
183
|
+
try:
|
|
184
|
+
document = json.loads(text) if text else None
|
|
185
|
+
except ValueError:
|
|
186
|
+
return None
|
|
187
|
+
if not isinstance(document, dict):
|
|
188
|
+
return None
|
|
189
|
+
book = document.get("book")
|
|
190
|
+
return "book" if isinstance(book, str) and book.strip() else "project"
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def find_workspace(project: Path):
|
|
194
|
+
"""写章代查作者记忆用的创作工作区,按 author-memory.md「存放与路由」认,返回 (目录, 是否认出)。
|
|
195
|
+
|
|
196
|
+
依次认:书目录或祖先里的 `.story-deployed`(已部署的宿主);书目录上一层叫 长篇/短篇 时取再上一层;
|
|
197
|
+
书目录自己就有项目级作者记忆或 `书级/`(单书布局);最近一个带 `.active-book`、`长篇/`、`短篇/`、`拆文库/`
|
|
198
|
+
或项目级作者记忆的祖先(到用户主目录为止,主目录本身不算)。都没有时把书目录当工作区,但这是猜的:
|
|
199
|
+
DSH 等宿主不写 `.story-deployed`,多书工作区里的书若被当成工作区,查询会报错或把书级记忆挪位。
|
|
200
|
+
"""
|
|
201
|
+
project = project.resolve()
|
|
202
|
+
deployed = next((d for d in (project, *project.parents) if (d / ".story-deployed").is_file()), None)
|
|
203
|
+
if deployed is not None:
|
|
204
|
+
return deployed, True
|
|
205
|
+
if project.parent.name in {"长篇", "短篇"}:
|
|
206
|
+
return project.parent.parent, True
|
|
207
|
+
if memory_state_kind(project) == "project" or (project / ".story" / "作者记忆" / "书级").is_dir():
|
|
208
|
+
return project, True
|
|
209
|
+
try:
|
|
210
|
+
home = Path.home().resolve()
|
|
211
|
+
except (RuntimeError, KeyError): # 拿不到主目录时一路找到根
|
|
212
|
+
home = None
|
|
213
|
+
for ancestor in project.parents:
|
|
214
|
+
if ancestor == home:
|
|
215
|
+
break
|
|
216
|
+
if any((ancestor / marker).exists() for marker in WORKSPACE_MARKERS) or memory_state_kind(ancestor) == "project":
|
|
217
|
+
return ancestor, True
|
|
218
|
+
return project, False
|
|
219
|
+
|
|
220
|
+
|
|
173
221
|
def genre_line(project: Path):
|
|
174
222
|
"""「题材类型」行的原文;未填的模板占位({…})当没有。"""
|
|
175
223
|
text = read_text(project / "设定" / "题材定位.md") or ""
|
|
@@ -232,24 +280,30 @@ def author_decided(project: Path):
|
|
|
232
280
|
|
|
233
281
|
|
|
234
282
|
def query_author_memory(project: Path):
|
|
235
|
-
"""代主会话做写正文那一次作者记忆查询(prose_style + story_design
|
|
283
|
+
"""代主会话做写正文那一次作者记忆查询(prose_style + story_design)。
|
|
236
284
|
|
|
237
|
-
|
|
285
|
+
注入块原样用 query 给的 lines 拼——每次查询的 lines ≤2KB,预算量的就是写手读到的这几行,
|
|
286
|
+
这里不另行排版。工作区按 find_workspace 认;认不出、而书目录里又是一份带书名的记忆时不代查——
|
|
287
|
+
那既可能是单书布局的旧版记忆,也可能是没有任何迹象的多书工作区里的一本书,拿书目录当工作区去查,
|
|
288
|
+
后一种会被当成前一种「归位」,此后正确的查询全部报错。
|
|
238
289
|
限定题材的条目只在取值出现在本书「题材类型」里时代查,限定流程的只认长篇写作的取值;
|
|
239
290
|
其余限定条目不猜,报给主会话自己判断。
|
|
240
|
-
返回 (
|
|
291
|
+
返回 (注入行, 没带上的 [(ID, 断言首句)], 未代查的限定取值, 错误);错误时由主会话按 author-memory.md 手动查询。
|
|
241
292
|
"""
|
|
242
|
-
workspace
|
|
293
|
+
workspace, recognised = find_workspace(project)
|
|
243
294
|
script = Path(__file__).with_name("author_memory_commit.py")
|
|
244
295
|
if not script.is_file():
|
|
245
296
|
return None, [], {}, "author_memory_commit.py 缺失"
|
|
297
|
+
if not recognised and memory_state_kind(project) == "book":
|
|
298
|
+
return None, [], {}, ("认不出创作工作区(书目录及祖先都没有 .active-book、长篇/、短篇/、拆文库/ 或项目级作者记忆),"
|
|
299
|
+
"书目录里却是本书的记忆;先按 author-memory.md「存放与路由」定好 --workspace")
|
|
246
300
|
scoped = scoped_memory_values(workspace)
|
|
247
301
|
book = book_genres(project)
|
|
248
302
|
genres = sorted(v for v in scoped["genre"] if v.casefold() in book) or [None]
|
|
249
303
|
workflows = sorted(v for v in scoped["workflow"] if v.casefold() in {w.casefold() for w in LONG_WRITE_WORKFLOWS})
|
|
250
304
|
skipped = {"genre": sorted(v for v in scoped["genre"] if v not in genres),
|
|
251
305
|
"workflow": sorted(v for v in scoped["workflow"] if v not in workflows)}
|
|
252
|
-
|
|
306
|
+
lines, omitted, summaries, importance, seen = [], [], {}, {}, set()
|
|
253
307
|
for genre in genres:
|
|
254
308
|
for workflow in workflows or [None]:
|
|
255
309
|
command = [sys.executable, str(script), "query", "--workspace", str(workspace), "--book-root", str(project)]
|
|
@@ -266,13 +320,22 @@ def query_author_memory(project: Path):
|
|
|
266
320
|
result = {}
|
|
267
321
|
if not result.get("ok"):
|
|
268
322
|
return None, [], {}, result.get("error") or completed.stderr.strip() or "query 失败"
|
|
269
|
-
|
|
323
|
+
items, rendered = result.get("items") or [], result.get("lines") or []
|
|
324
|
+
if len(items) != len(rendered):
|
|
325
|
+
return None, [], {}, "query 输出缺 lines(作者记忆脚本与组装脚本版本不一致)"
|
|
326
|
+
for item, line in zip(items, rendered):
|
|
270
327
|
if item.get("id") not in seen:
|
|
271
328
|
seen.add(item.get("id"))
|
|
272
|
-
|
|
273
|
-
omitted += [i for i in result.get("omitted_ids") or [] if i not in omitted
|
|
274
|
-
|
|
275
|
-
|
|
329
|
+
lines.append(line)
|
|
330
|
+
omitted += [i for i in result.get("omitted_ids") or [] if i not in omitted]
|
|
331
|
+
summaries.update(result.get("omitted_summaries") or {})
|
|
332
|
+
importance.update(result.get("omitted_importance") or {})
|
|
333
|
+
# 每次查询的漏项各自按优先级排好,合并后按重要度重排(同重要度保持先后),
|
|
334
|
+
# 给作者点名的前几条才是最该知道的;某次漏、另一次带上了的不算没带上。
|
|
335
|
+
ranked = sorted((i for i in omitted if i not in seen),
|
|
336
|
+
key=lambda i: (-IMPORTANCE_RANK.get(importance.get(i), 0), omitted.index(i)))
|
|
337
|
+
missed = [(i, summaries.get(i, "")) for i in ranked]
|
|
338
|
+
return lines, missed, {k: v for k, v in skipped.items() if v}, None
|
|
276
339
|
|
|
277
340
|
|
|
278
341
|
def learn_heading_form(project: Path, chapter: int, title: str):
|
|
@@ -503,23 +566,27 @@ def build(project: Path, chapter: int, report: list):
|
|
|
503
566
|
report.append("作者已定:已注入" + ("(超长截断,写手需回原文读完)" if cut else ""))
|
|
504
567
|
else:
|
|
505
568
|
report.append("作者已定:题材定位里没有或为空,未注入")
|
|
506
|
-
|
|
569
|
+
lines, missed, skipped, memory_error = query_author_memory(project)
|
|
507
570
|
if memory_error:
|
|
508
571
|
memory_block = (f"{SLOT_MARK} 组装脚本查询作者记忆失败({memory_error}),"
|
|
509
572
|
"按 author-memory.md 手动 query prose_style + story_design 后填入;无则写「无」")
|
|
510
|
-
report.append(f"作者记忆:脚本查询失败——{memory_error}
|
|
511
|
-
elif items:
|
|
512
|
-
memory_block = "\n".join(f"- {item.get('assertion', '').strip()}({item.get('id', '')})" for item in items)
|
|
513
|
-
report.append(f"作者记忆:已注入 {len(items)} 条" + (
|
|
514
|
-
f";超编未装下 {len(omitted)} 条({'、'.join(omitted)}),转告作者建议「整理作者记忆」" if omitted else ""))
|
|
573
|
+
report.append(f"作者记忆:脚本查询失败——{memory_error},归主会话手动查询;手查有没带上的(任一次查询带上了的不算),章末照模板那一行用原话说")
|
|
515
574
|
else:
|
|
516
|
-
memory_block = "无"
|
|
517
|
-
report.append("作者记忆:无相关 active 条目")
|
|
575
|
+
memory_block = "\n".join(lines) if lines else "无"
|
|
576
|
+
report.append(f"作者记忆:已注入 {len(lines)} 条" if lines or missed else "作者记忆:无相关 active 条目")
|
|
577
|
+
if missed:
|
|
578
|
+
# 装不下的不能悄悄略过:拼好给作者的原话,章末汇报照模板那一行原样说。
|
|
579
|
+
shown = "".join(f"「{summary or item_id}」" for item_id, summary in missed[:MISSED_SHOWN])
|
|
580
|
+
more = "等" if len(missed) > MISSED_SHOWN else ""
|
|
581
|
+
report.append(
|
|
582
|
+
f"作者记忆:装不下、这章没带上 {len(missed)} 条({'、'.join(i for i, _ in missed)}),章末汇报原样说这句——"
|
|
583
|
+
f"你记下的写作习惯这章有 {len(missed)} 条没带上:{shown}{more};"
|
|
584
|
+
"说「整理作者记忆」可以合并相近的、调低不常用的。")
|
|
518
585
|
if skipped and not memory_error:
|
|
519
586
|
named = ";".join(f"{'题材' if k == 'genre' else '流程'}:{'、'.join(v)}" for k, v in skipped.items())
|
|
520
587
|
memory_block += (f"\n{SLOT_MARK} 另有限定范围的作者记忆未代查({named}):本书适用的,"
|
|
521
588
|
"带 --genre/--workflow 跑 SKILL.md「核心方法」的 query 命令(--kind prose_style --kind story_design)后补进本块")
|
|
522
|
-
report.append(f"作者记忆:限定范围未代查({named}
|
|
589
|
+
report.append(f"作者记忆:限定范围未代查({named}),归主会话判断是否适用;补查有没带上的(已在本块里的不算),章末照模板那一行用原话说")
|
|
523
590
|
parts.append("——— author_preferences(作者记忆,低优先级倾向,不逐条追求命中)———\n" + memory_block)
|
|
524
591
|
parts.append("——— style_resolution ———\n"
|
|
525
592
|
f"{SLOT_MARK} 本轮请求里作者对表达的明确要求及其覆盖的默认条款(没有写「无」);"
|
|
@@ -6,19 +6,17 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
6
6
|
---
|
|
7
7
|
# story-review:多视角对抗式审查
|
|
8
8
|
|
|
9
|
-
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version:
|
|
9
|
+
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 35` 不一致时(标记缺失、字段缺失/非整数、小于或大于 35)**照常按文件存在性检查并 spawn**,但只检查当前运行时的 canonical 目录;同时在「这次怎么审的」里用一句白话提示作者「审稿助手是旧版,运行 /story-setup 后新开会话」,`Notice: agents bundle 版本不匹配(项目 {N},本版 35)` 原文写进技术备注行;大于 35 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。版本提示本身不触发降级;文件缺失或异常、工具不可用、递归限制或调用失败按 Phase 0 处理,技术备注写 `Fallback: ... -> solo`。
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
你负责协调审查,找出小说的结构、角色、文字与设定问题,给出有原文依据的修改建议。
|
|
12
12
|
|
|
13
13
|
**执行铁律:审查是找问题,不是验证正确性。**
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
**文风裁决**:先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风,复用调用方的 `style_resolution` 与作者偏好;单独调用时按当前请求与本书文风裁决。同一裁决交给后续执行者。
|
|
16
16
|
|
|
17
|
-
##
|
|
17
|
+
## 作者偏好边界
|
|
18
18
|
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
用户对报告格式或协作方式作出稳定声明时,在本轮审查完成后用 `record` 记录,并按 author-memory.md「回执怎么告诉作者」转告;只记作者明确说的,一次性要求不记录,不从反复修改推断。审查发现、工具告警和助手建议本身绝不自动学习。
|
|
19
|
+
只接收调用方已有的作者偏好,不查询或记录作者记忆;独立调用时不加载记忆文件。偏好只能帮助解释意图和组织报告,不能降低 rubric 严重度、把事实冲突判为无问题或跳过平台门禁;当前请求仍优先。
|
|
22
20
|
|
|
23
21
|
---
|
|
24
22
|
|
|
@@ -27,7 +25,6 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
27
25
|
- `/story-review` 或 `/story-review full` → 优先 spawn 全部 4 个 Agent;如果当前已经在子代理内,核心 Agent 未部署/异常,或 spawn 失败,自动降级为 solo。
|
|
28
26
|
- `/story-review lean` → 优先 spawn `story-architect` + `consistency-checker`;如果当前已经在子代理内,任一所需 Agent 未部署/异常,或 spawn 失败,自动降级为 solo。
|
|
29
27
|
- `/story-review solo` → 不 spawn Agent,由当前会话执行基础审查。
|
|
30
|
-
- 未指定 → 默认 full,并在报告开头用一句话说明这次实际是怎么审的。
|
|
31
28
|
|
|
32
29
|
---
|
|
33
30
|
|
|
@@ -54,7 +51,7 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
54
51
|
|
|
55
52
|
## 审查基准与参考资料规则(必须遵守)
|
|
56
53
|
|
|
57
|
-
|
|
54
|
+
参考文件补充审查标准;不可读时使用下方内置基准包。
|
|
58
55
|
|
|
59
56
|
### 报告面向作者(必须遵守)
|
|
60
57
|
|
|
@@ -83,7 +80,7 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
83
80
|
|---|---|
|
|
84
81
|
| 通用质量清单 | `story-review/references/review-quality.md` |
|
|
85
82
|
| 通用内容评分 rubric | `story-review/references/quality-rubric.md` |
|
|
86
|
-
| 去 AI 味方法 | `story-review/references/
|
|
83
|
+
| 去 AI 味方法 | `story-review/references/expression.md` · `story-review/references/narrative-focus.md` · `story-review/references/story-logic.md` |
|
|
87
84
|
| 剧情循环/高潮公式 | `story-review/references/plot-core-methods.md` |
|
|
88
85
|
| 角色关系/好感度 | `story-review/references/character-relations.md` |
|
|
89
86
|
| 对话质量 | `story-review/references/dialogue-mastery.md` |
|
|
@@ -91,9 +88,6 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
91
88
|
| 平台 rubric | `story-review/references/rubrics/{fanqie,qidian,zhihu}.md` |
|
|
92
89
|
| 标点预检脚本 | `story-review/scripts/normalize-punctuation.js` |
|
|
93
90
|
| AI句式预检脚本 | `story-review/scripts/check-ai-patterns.js` |
|
|
94
|
-
| 作者习惯协议 | `story-review/references/author-memory.md` |
|
|
95
|
-
| 作者习惯整理、超编与迁移 | `story-review/references/author-memory-maintenance.md` |
|
|
96
|
-
| 作者习惯事务脚本 | `story-review/scripts/author_memory_commit.py` |
|
|
97
91
|
|
|
98
92
|
### 内置审查基准包(路径不可读时必用)
|
|
99
93
|
|
|
@@ -110,21 +104,20 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
110
104
|
- 对话质量:是否有潜台词、信息控制、角色差异;说明书式对话至少 S2。
|
|
111
105
|
- 设定一致性:不违背已写规则、时间线、角色属性;明确事实冲突通常 S1。
|
|
112
106
|
- 文字自然度:具体、可感、动作承载信息;AI 腔、陈词滥调、总结体按影响定 S2/S3。
|
|
113
|
-
-
|
|
107
|
+
- 句长节奏:按本书文风、语义承接与场景功能判断;机械碎句、动作清单或臃肿长句按影响定 S3/S2,不按统一字数或句长模板验收。
|
|
114
108
|
- 标点节奏:标点是否服务语气/人物声线;通篇句号化、随机堆砌问号/感叹号,或残留 `……`/`——` 硬造停顿,按影响定 S3/S2。
|
|
115
109
|
- 具体字数表达校验:正文用“这五个字 / 短短四字 / 三个字一落 / 八个字砸下去”等具体字数表达评价台词、题字、信件、念头或弹幕时,必须能确认统计口径、机器核对结果和叙事必要;不能确保字数计算正确时,按文字自然度问题处理,建议改成“这句话一落”“那几个字”“话音落下”等非具体数字表达。
|
|
116
110
|
- 格式可读性:段落短、对话独立、无多余空行;格式阻碍阅读按 S3,严重混乱按 S2。
|
|
117
111
|
- 剧情循环:目标 → 阻碍 → 行动 → 代价/反馈 → 新期待;缺少目标/阻碍/反馈通常至少 S2。
|
|
118
|
-
-
|
|
112
|
+
- 高潮构建:检查蓄能、情绪落差与兑现;强反转可用蓄能 → 假胜 → 崩解 → 反转/兑现,缺铺垫或兑现通常 S2/S3。
|
|
119
113
|
- 关系进展:互动尺度必须匹配当前关系阶段;越界亲密、突然信任、突然敌对都需要铺垫,否则按影响定 S1/S2。
|
|
120
114
|
- 伏笔状态:伏笔状态需可追踪;伏笔密度只作为结构风险提示,除非直接造成理解混乱,否则不升级到 S2+。
|
|
121
115
|
|
|
122
|
-
|
|
123
|
-
-
|
|
124
|
-
-
|
|
125
|
-
-
|
|
126
|
-
-
|
|
127
|
-
- 处理原则:有原文证据才输出 finding;给出可执行替换方向,不只评价“AI 味重”。修法方向不默认「拆短 / 删虚词 / 剥标点」:把正常的逗号长句拆成碎句,与 AI 腔同样是问题。
|
|
116
|
+
三层去味 fallback 速查:
|
|
117
|
+
- 表达:套词、总结句、工整句式是否机械复现或重复意思?词语本身只是线索,直写情绪、纠错对比与文风允许的叙述可保留。
|
|
118
|
+
- 用笔:关键交锋或决定是否被概括,次要流程是否过详?压缩、展开均应保住人物体验和必要承接。
|
|
119
|
+
- 故事:行动有什么来由、解决依据从何而来、前后改变了什么?安静场景可承载关系与认知变化,不强求冲突。
|
|
120
|
+
- 处理原则:有原文证据才输出 finding,指出阅读损失、最小建议与资料限制;只报告,不落改,不默认拆短、加动作或新增剧情。
|
|
128
121
|
|
|
129
122
|
平台 fallback 摘要:
|
|
130
123
|
- 番茄:强开局、强冲突、高频爽点/情绪反馈、低理解门槛。
|
|
@@ -159,8 +152,7 @@ AI 味 / 禁用词 fallback 速查:
|
|
|
159
152
|
node scripts/check-degeneration.js --check <正文文件...>
|
|
160
153
|
```
|
|
161
154
|
- 将 `ellipsis`、`double-hyphen`、`markdown-divider` 结果作为 `format` findings 合并进报告。`em-dash` 破折号只采用 `check-ai-patterns.js` 的语义改写建议(见下条);`normalize-punctuation.js` 报的同一位置 `em-dash` 在合并时去重丢弃,避免同处出现「机械替换」与「按功能改写」两条相互冲突的 finding。另外人工检查标点节奏是否通篇句号化或随机堆砌,脚本不替代语气判断。
|
|
162
|
-
- `check-ai-patterns.js` 的
|
|
163
|
-
- 其余 prose findings(advisory)统一按 S3:只指出读感风险,不替代人工判断;功能性写法标 `[需复核]` 并保留。完整类别和修法见 `anti-ai-writing.md`。
|
|
155
|
+
- `check-ai-patterns.js` 的 blocking / advisory 都先作为 `prose` 候选,按 `style_resolution`、原文功能及三层方法逐条复核;确认造成具体阅读损失后,按下方严重度定义定级。功能性纠错、叙述与停顿保留,不把脚本级别直接换成必须修改的 finding。检测器改法仅作参考,不覆盖文风与事实边界。完整语义复核见 `expression.md`、`narrative-focus.md`、`story-logic.md`,只报告问题与建议,不落改。
|
|
164
156
|
- `check-degeneration.js` 报告模型退化(逐字复读/截断/占位符/工程词泄漏),每条带 `severity: blocking|advisory`:blocking(复读/截断/tier1 工程词)作为 S1/S2 `prose` findings,修复建议是「重新生成该段,不是改写」;advisory(tier2 章节/歧义词)作为 S3。
|
|
165
157
|
- 这三个预检脚本只读;`story-review` **不修改正文、设定或大纲文件**,需要自动修复正文时建议转 `/story-deslop`。full / lean 模式只有下方「追踪文件维护」允许修改 `追踪/`;分批审查的所有模式都可按 batch-review.md 写 **.story-review/state.md**,solo 除该状态外不写项目内容。
|
|
166
158
|
- 默认 `--quote-mode keep`,不把知乎盐言短篇的 `「」` 当作问题;只有项目明确指定引号风格时才检查对应转换建议。
|
|
@@ -169,7 +161,7 @@ AI 味 / 禁用词 fallback 速查:
|
|
|
169
161
|
|
|
170
162
|
## 统一 Findings Schema(所有模式必须使用)
|
|
171
163
|
|
|
172
|
-
所有 reviewer(包括 solo
|
|
164
|
+
所有 reviewer(包括 solo)先按统一结构整理问题,再按 Phase 4 或 solo 模板转写给作者;内部字段用于合并、排序,不原样贴进作者报告。`location` 必须使用工具读取结果显示的原始文件行号;不要删除空行后重新编号。
|
|
173
165
|
|
|
174
166
|
对 `consistency` / `factual` / `causal` / `rule_boundary` 类 finding,`fix` 字段只写事实统一方向(例如“统一为左臂旧伤,并同步正文/设定中冲突处”或“需在 A/B 时间线中裁定一个来源”),不要写文学创作建议。
|
|
175
167
|
|
|
@@ -222,10 +214,3 @@ AI 味 / 禁用词 fallback 速查:
|
|
|
222
214
|
| 要修改查出的问题 | story-long-write / story-short-write | 返回对应写作 skill 修改 |
|
|
223
215
|
| 发现 AI 味需清理 | story-deslop | `/story-deslop` |
|
|
224
216
|
| 需要重新拆解对标书 | story-long-analyze / story-short-analyze | `/story-long-analyze` 或 `/story-short-analyze` |
|
|
225
|
-
|
|
226
|
-
---
|
|
227
|
-
|
|
228
|
-
## 语言
|
|
229
|
-
|
|
230
|
-
- 跟随用户的语言回复,用户用什么语言就用什么语言回复。
|
|
231
|
-
- 中文回复遵循《中文文案排版指北》。
|
|
@@ -2,9 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
只有实际模式仍是 full/lean 时才读本文件。
|
|
4
4
|
|
|
5
|
-
使用当前运行时的 Agent 工具并行调用(Codex 原生子代理使用 `agent_type`,Claude Code 使用 `subagent_type`,OpenCode 使用 `subagent` 工具的 `agent` 参数,Antigravity 使用 `invoke_subagent` + 同名 `TypeName`;实际字段以当前 CLI 暴露的工具为准)。每个 Agent 不继承父对话上下文,prompt 必须自包含项目路径、审查范围、文件路径、必要摘录和统一 Findings Schema
|
|
6
|
-
|
|
7
|
-
**调用规则**:执行 Phase 0 后,只有实际模式仍是 full/lean 时才 spawn。不要 spawn 缺失 Agent。
|
|
5
|
+
使用当前运行时的 Agent 工具并行调用(Codex 原生子代理使用 `agent_type`,Claude Code 使用 `subagent_type`,OpenCode 使用 `subagent` 工具的 `agent` 参数,Antigravity 使用 `invoke_subagent` + 同名 `TypeName`;实际字段以当前 CLI 暴露的工具为准)。每个 Agent 不继承父对话上下文,prompt 必须自包含项目路径、审查范围、文件路径、必要摘录和统一 Findings Schema。结构、角色、文字三个视角的 prompt 还要内联审查基准包摘要与 Rubric Source,使子 Agent 能直接开审;补充资料只读本 Skill 的 references。consistency-checker 按自己的检查项核对事实,不带内容评分基准包。所有 reviewer 只读:不改任何文件,只输出结果。
|
|
8
6
|
|
|
9
7
|
**story-explorer 预查询(可选)**。仅当 `Effective Mode` 仍为 `full`/`lean`、当前允许 spawn 且当前运行时的 Agent 工具可用时,才可在对应 canonical agent 目录下确认 `story-explorer` 已部署并 spawn;Antigravity 检查 `.agents/agents/story-explorer/agent.md`,用 `invoke_subagent` + `TypeName: "story-explorer"`。`solo` 或子代理递归保护场景下不得 spawn,只能直接读取/检索。Prompt 示例:
|
|
10
8
|
|
|
@@ -41,7 +39,7 @@
|
|
|
41
39
|
9. 按平台 rubric 或通用内容 rubric 逐项对照,标记 PASS/FAIL。
|
|
42
40
|
10. 继承的开放项里,本批本该兑现的钩子/伏笔是否落空?
|
|
43
41
|
11. 开头同质化(仅当本章是全书开篇/前 3 章):开局切口是不是同题材的默认套路(穿越即退婚、系统绑定、末世第一天、开场即打脸等),能不能原样换到任意同类书?"有钩子/非天气开场"不等于不同质。对照 `story-review/references/plot-core-methods.md`「噱头分类与开篇流程」判断——能整体换到同类书=同质化(撞题材模板至少 S2;套路化但有具体人物/处境微差 S3)。
|
|
44
|
-
12.
|
|
42
|
+
12. 结尾总结:章尾的总结、升华或复述是否重复已有信息、削弱收束?先按本书叙述方式和原文功能复核,检测器命中也不自动判错;确认问题后按实际影响定级,与其他 reviewer 同处 findings 去重。
|
|
45
43
|
|
|
46
44
|
输出格式:
|
|
47
45
|
VERDICT: APPROVE / CONCERNS / REJECT
|
|
@@ -82,7 +80,7 @@
|
|
|
82
80
|
|
|
83
81
|
**Agent 3: narrative-writer**(subagent_type: narrative-writer)
|
|
84
82
|
- full 模式调用。
|
|
85
|
-
-
|
|
83
|
+
- 审查视角:三层去味诊断(表达、用笔、故事因果与变化)、情绪烈度(够不够爽/会不会太保守)、格式合规、节奏均匀度、文字自然度。
|
|
86
84
|
- 提示指令:
|
|
87
85
|
```
|
|
88
86
|
你是 narrative-writer,从文字质量层面审查以下内容。
|
|
@@ -94,22 +92,22 @@
|
|
|
94
92
|
style_resolution:{本次生效要求及来源、被覆盖的默认条款、事实边界;文字风格判断共用}
|
|
95
93
|
审查基准包摘要:{Phase 1 形成的 rubric / fallback 摘要,必须内联}
|
|
96
94
|
Rubric Source: file | embedded fallback
|
|
97
|
-
|
|
95
|
+
去味判据:按读取表完整读 expression、narrative-focus、story-logic 及 banned-words、deslop-gates,三层都审;方法里的改写动作仅用作建议,不落改
|
|
98
96
|
检查项:
|
|
99
97
|
1. 是否存在禁用词/套话/陈词滥调,或“像/好像/仿佛/如同”式比喻成片堆叠?
|
|
100
|
-
2.
|
|
98
|
+
2. 表达是否机械、视角是否越过本书信息边界,章末是否只剩重复总结?
|
|
101
99
|
3. 格式是否合规(按戏剧单元/镜头自然断段、无机械字数切分、无空行、对话独立成行、主语节奏自然)?
|
|
102
100
|
4. 标点节奏是否匹配语气/人物声线:是否通篇句号化、随机堆砌问号/感叹号,或残留 `……`/`——` 硬造停顿?本书已明确授权且有功能的停顿不因符号本身判错。
|
|
103
101
|
5. 是否出现“这五个字 / 短短四字 / 三个字一落 / 八个字砸下去”等正文内具体字数表达?若统计口径不明、未见机器核对结果或无叙事必要,标为问题并建议改成非具体数字表达。
|
|
104
102
|
6. 节奏是否均匀(有无连续多节无情绪变化)?
|
|
105
103
|
7. 是否存在删掉无损的任务卡点或流程细节?若只是水/局部节奏问题标 S3;明显拖垮主线推进标 S2。
|
|
106
104
|
8. 身体细节是否重复、无功能?按本书文风和叙事作用判断,不设单词次数硬线。
|
|
107
|
-
9.
|
|
108
|
-
10.
|
|
105
|
+
9. 分别报告表达、用笔、故事层的问题与证据,不用表层轻重决定是否查后两层。
|
|
106
|
+
10. 关键决定或交锋是否被概括、次要流程是否占满篇幅?人物为何这样行动、解决为何成立、经过之后改变了什么?安静场景按自身功能判断,不能为去味强加冲突。
|
|
109
107
|
|
|
110
108
|
输出格式:
|
|
111
109
|
VERDICT: APPROVE / CONCERNS / REJECT
|
|
112
|
-
FINDINGS:
|
|
110
|
+
FINDINGS: 使用统一 Findings Schema,severity 为 S1/S2/S3/S4;具体层次与问题写入 issue,category 使用 prose。
|
|
113
111
|
RECOMMENDATIONS: [修改建议]
|
|
114
112
|
```
|
|
115
113
|
|
|
@@ -135,7 +133,7 @@
|
|
|
135
133
|
输出格式:
|
|
136
134
|
VERDICT: APPROVE / CONCERNS / REJECT
|
|
137
135
|
FINDINGS: 必须使用统一 Findings Schema,severity 必须是 S1/S2/S3/S4;category 只能使用 consistency / factual / format / causal / rule_boundary。
|
|
138
|
-
INHERITED_ITEMS: 逐条列继承的开放项 + 已检查 / 未能检查;本批新发现、不在 伏笔.md
|
|
136
|
+
INHERITED_ITEMS: 逐条列继承的开放项 + 已检查 / 未能检查;本批新发现、不在 伏笔.md 的开放钩子单列,供主会话按追踪修订事务处理。
|
|
139
137
|
FACTUAL_RECONCILIATION: [仅列需统一的事实来源或需人工裁决项,不写文学创作建议]
|
|
140
138
|
REASONING_CHAINS: [仅列推理型 finding 的前提/规则 -> 触发事件 -> 矛盾点 -> 需裁决问题]
|
|
141
139
|
```
|
|
@@ -144,7 +142,7 @@
|
|
|
144
142
|
|
|
145
143
|
1. 收集实际执行的 reviewer VERDICT 和 FINDINGS。
|
|
146
144
|
2. 合并去重:按 `severity` 排序(S1 > S2 > S3 > S4),同级内按影响范围排序。
|
|
147
|
-
3. **可选事实核查**:如果审查内容涉及需要验证的外部事实(历史年代、地理方位、职业细节等),只有在 `Effective Mode` 仍为 `full`/`lean`、当前不是子 Agent、当前运行时的 Agent 工具可用且对应 canonical agent 目录下的 `story-researcher` 已部署时,才可额外 spawn;Antigravity 检查 `.agents/agents/story-researcher/agent.md`,用 `invoke_subagent` + `TypeName: "story-researcher"`。`solo`、missing/malformed/
|
|
145
|
+
3. **可选事实核查**:如果审查内容涉及需要验证的外部事实(历史年代、地理方位、职业细节等),只有在 `Effective Mode` 仍为 `full`/`lean`、当前不是子 Agent、当前运行时的 Agent 工具可用且对应 canonical agent 目录下的 `story-researcher` 已部署时,才可额外 spawn;Antigravity 检查 `.agents/agents/story-researcher/agent.md`,用 `invoke_subagent` + `TypeName: "story-researcher"`。`solo`、missing/malformed/spawn failed 降级或子代理递归保护场景下不得 spawn,只能在报告中标记“需人工事实核查”。
|
|
148
146
|
4. **分歧呈现**:如果 reviewer 间有冲突意见,明确呈现分歧让用户裁决;不要自动妥协。
|
|
149
147
|
5. 按 SKILL.md「报告面向作者」输出综合审查报告:开头说明审查方式与范围,证据不足项写成作者能补的材料,执行路径只进技术备注行。
|
|
150
148
|
|