@oh-story/dsh 0.1.8 → 0.1.9
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 +35 -14
- package/lib/client.js.map +2 -2
- package/lib/drama/manifest.json +165 -69
- package/lib/drama/skills/short-drama/SKILL.md +5 -1
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +126 -9
- package/lib/drama/skills/short-drama/scripts/project_tool.py +11 -0
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +18 -0
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +10 -1
- package/lib/drama/skills/short-drama-edit/SKILL.md +148 -0
- package/lib/drama/skills/short-drama-edit/agents/openai.yaml +4 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +60 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +15 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/remotion.config.ts +6 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +26 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +88 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +46 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/index.ts +4 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +32 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +13 -0
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +43 -0
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +81 -0
- package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +58 -0
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +96 -0
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +113 -0
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +55 -0
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1041 -0
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +456 -0
- package/lib/drama/skills/short-drama-image-prompts/assets/image-prompts.md +5 -0
- package/lib/drama/skills/short-drama-image-prompts/assets/lookdev-prompts.md +3 -0
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +2 -2
- package/lib/drama/skills/short-drama-novel-analyze/references/chapter-extraction.md +4 -1
- package/lib/drama/skills/short-drama-produce/SKILL.md +24 -3
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +28 -0
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +24 -5
- package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +7 -0
- package/lib/drama/skills/short-drama-produce/scripts/fixture_adapter.py +18 -1
- package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +181 -2
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +57 -2
- package/lib/drama/skills/short-drama-review/SKILL.md +3 -0
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +20 -0
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +36 -0
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +7 -0
- package/lib/drama/skills/short-drama-storyboard/assets/keyframe-prompts.md +4 -0
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +39 -0
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +7 -1
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +101 -6
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +7 -1
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +35 -0
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +3 -1
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +13 -3
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +35 -4
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +1 -1
- package/lib/drama/skills/short-drama-write/SKILL.md +13 -2
- package/lib/drama/skills/short-drama-write/references/screenplay-format.md +6 -0
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +1 -0
- package/lib/index.js +4 -2
- package/lib/index.js.map +2 -2
- package/lib/novel-to-game/VERSION +1 -1
- package/lib/novel-to-game/manifest.json +28 -28
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +6 -27
- package/lib/novel-to-game/skills/game-build/SKILL.md +12 -29
- package/lib/novel-to-game/skills/game-concept/SKILL.md +10 -26
- package/lib/novel-to-game/skills/game-qa/SKILL.md +5 -15
- 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 +19 -28
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +1 -2
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +6 -9
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +6 -11
- package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -4
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +1 -3
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +3 -5
- package/lib/oh-story/manifest.json +292 -172
- package/lib/oh-story/roles/character-designer.md +1 -1
- package/lib/oh-story/roles/narrative-writer.md +56 -242
- package/lib/oh-story/roles/story-architect.md +1 -1
- package/lib/oh-story/skills/story/SKILL.md +1 -1
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory.md +10 -8
- package/lib/oh-story/skills/story-deslop/SKILL.md +20 -182
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +19 -47
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +10 -8
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +154 -0
- package/lib/oh-story/skills/story-deslop/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-deslop/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-deslop/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-deslop/scripts/style-whitelist.js +39 -0
- package/lib/oh-story/skills/story-import/SKILL.md +2 -2
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +2 -2
- package/lib/oh-story/skills/story-import/references/tracking-initialization.md +31 -0
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +2 -29
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +176 -12
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +1 -1
- package/lib/oh-story/skills/story-long-write/SKILL.md +20 -193
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +19 -47
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +62 -7
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +10 -8
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +20 -0
- package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +6 -4
- 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 -0
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +2 -0
- package/lib/oh-story/skills/story-long-write/references/project-files.md +108 -0
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +87 -0
- package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-craft.md +9 -29
- 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 +27 -0
- package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +31 -0
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +2 -29
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +51 -52
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +8 -7
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +36 -15
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +22 -0
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +69 -2
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +410 -0
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-long-write/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +176 -12
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +90 -23
- package/lib/oh-story/skills/story-long-write/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +283 -0
- package/lib/oh-story/skills/story-long-write/scripts/style-whitelist.js +39 -0
- package/lib/oh-story/skills/story-review/SKILL.md +13 -3
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +19 -47
- package/lib/oh-story/skills/story-review/references/author-memory.md +10 -8
- package/lib/oh-story/skills/story-review/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +6 -4
- package/lib/oh-story/skills/story-review/references/review-quality.md +2 -2
- package/lib/oh-story/skills/story-review/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-review/references/tracking-initialization.md +31 -0
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +2 -29
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-review/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-review/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-review/scripts/style-whitelist.js +39 -0
- package/lib/oh-story/skills/story-setup/SKILL.md +17 -10
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +19 -47
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +154 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +6 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -1
- 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 +27 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +69 -2
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +38 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-writing-techniques.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +2 -2
- package/lib/oh-story/skills/story-short-write/SKILL.md +18 -186
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +10 -8
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +3 -1
- package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +60 -0
- package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +6 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//344/270/226/346/203/205/346/211/223/350/204/270.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/244/215/344/273/207/346/211/223/350/204/270.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/256/205/346/226/227/345/256/253/346/226/227.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/200/273/350/243/201/350/261/252/351/227/250.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//350/277/275/345/246/273/347/201/253/350/221/254/345/234/272.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +53 -0
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +12 -14
- package/lib/oh-story/skills/story-short-write/references/short-deslop.md +10 -10
- package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -1
- package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/style-resolution.md +27 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +77 -0
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +5 -5
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +6 -1
- package/lib/oh-story/skills/story-short-write/scripts/check-degeneration.js +39 -20
- package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +34 -5
- package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +90 -23
- package/lib/oh-story/skills/story-short-write/scripts/normalize-punctuation.js +10 -5
- package/lib/oh-story/skills/story-short-write/scripts/style-whitelist.js +39 -0
- package/lib/types/client/drama-production-view.d.ts.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/production-prompts.d.ts.map +1 -1
- package/lib/types/client/production-runtime.d.ts +17 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +31 -1
- package/lib/video-recap/manifest.json +162 -162
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +4 -9
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +47 -60
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +77 -115
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +41 -40
- package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +22 -32
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +102 -192
- package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +14 -35
- package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +14 -12
- package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +8 -9
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +3 -14
- package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +23 -12
- package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +1 -4
- package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +24 -25
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +31 -85
- package/lib/video-recap/skills/video-assemble/scripts/media.py +100 -144
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +101 -195
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +10 -21
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +90 -169
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +69 -122
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +10 -17
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +33 -48
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +14 -20
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +135 -213
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +49 -57
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +38 -74
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +46 -95
- package/lib/video-recap/skills/video-cut/scripts/lib.py +23 -25
- package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +70 -173
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +28 -53
- package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +162 -322
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +6 -7
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +104 -124
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +255 -412
- package/lib/video-recap/skills/video-recap/scripts/lib.py +30 -52
- package/lib/video-recap/skills/video-recap/scripts/materials.py +97 -120
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +7 -12
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +46 -97
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +18 -36
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +29 -47
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +43 -76
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +2 -1
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +2 -1
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +2 -2
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +129 -145
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +27 -20
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +20 -31
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +31 -106
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +43 -113
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +196 -377
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +1 -1
- package/lib/video-recap/skills/video-script/scripts/agent_text.py +63 -172
- package/lib/video-recap/skills/video-script/scripts/brief_context.py +80 -135
- package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +125 -167
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +93 -208
- package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +20 -46
- package/lib/video-recap/skills/video-script/scripts/lib.py +30 -26
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +145 -140
- package/lib/video-recap/skills/video-script/scripts/review_response.py +12 -42
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +0 -6
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +39 -100
- package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +33 -124
- package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +1 -1
- package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +63 -172
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +1 -2
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +80 -135
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +125 -167
- package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +93 -208
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +1 -1
- package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +20 -46
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +31 -26
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +145 -140
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +39 -100
- package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +33 -124
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +1 -4
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +7 -13
- package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +12 -30
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +98 -131
- package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +17 -28
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +151 -240
- package/package.json +41 -41
|
@@ -16,7 +16,7 @@ metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudec
|
|
|
16
16
|
|
|
17
17
|
Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完整读取(分块直到 EOF;`rg` 检索或局部摘读不算读完):
|
|
18
18
|
|
|
19
|
-
1. `references/writing-workflow.md`、`references/submission-craft.md`、`references/short-craft.md`、`references/short-reversal.md`
|
|
19
|
+
1. `references/workflow-design.md` + `references/writing-workflow.md`、`references/submission-craft.md`、`references/short-craft.md`、`references/short-reversal.md`
|
|
20
20
|
2. 核心 10 题材再读取一个精确的 `references/genre-styles/{题材}.md`;冷门题材改读 `references/genre-writing-formulas.md`
|
|
21
21
|
3. 有反派或真相揭露设计时再读 `references/villain-and-reveal.md`;不适用时在设计校验区写明原因
|
|
22
22
|
|
|
@@ -26,7 +26,9 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
26
26
|
|
|
27
27
|
> Agent 只查当前端 canonical 目录(Claude `.claude/agents`、OpenCode `.opencode/agents`、Codex `.codex/agents` TOML、Antigravity `.agents/agents`),不借其他端文件误判。Claude/OpenCode 用 `subagent_type`,Codex 用 `agent_type`,Antigravity 用 `invoke_subagent` + `TypeName`;能力/文件缺失、unknown agent 或 ZCode 3.3.4 时报告 `Fallback: project custom agents unavailable -> solo` 并 solo/direct。
|
|
28
28
|
>
|
|
29
|
-
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version:
|
|
29
|
+
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 30` 不一致时(标记缺失、字段缺失/非整数、小于或大于 30)**照常按文件存在性检查并 spawn**,同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 30)` 并提示重新运行 `/story-setup` 后新开会话;大于 30 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 `Fallback: ... -> solo`。
|
|
30
|
+
|
|
31
|
+
**文风裁决**:正文写作、改写或审稿前先读 [references/style-resolution.md](references/style-resolution.md),加载本书文风并形成 `style_resolution`;无作者记忆也执行。当前请求、本书文风和 active 偏好按维度覆盖通用 references;同一裁决交给后续执行者。
|
|
30
32
|
|
|
31
33
|
## 执行规则
|
|
32
34
|
|
|
@@ -34,7 +36,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
34
36
|
2. **一个核心支点撑一篇**。反转型围绕一次主揭示蓄力;无反转型围绕报应兑现或甜度递进积累期待。不多线、不铺世界观。
|
|
35
37
|
3. **每句话必须有用**。不推动剧情、不铺垫反转、不推高情绪的句子 → 删。
|
|
36
38
|
4. **开头 3 句定生死,结尾定传播**。开头必须包含钩子,结尾必须有余韵。
|
|
37
|
-
5.
|
|
39
|
+
5. **默认第一人称**。短篇网文(盐言/七猫短篇等)绝大多数用第一人称,代入感最强。当前请求、本篇文风或题材需要第三人称时按其执行,不因默认值改回「我」。
|
|
38
40
|
|
|
39
41
|
---
|
|
40
42
|
|
|
@@ -82,138 +84,11 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
82
84
|
|
|
83
85
|
#### 对标上下文加载
|
|
84
86
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
推荐目录结构:
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
项目根/
|
|
91
|
-
├── 拆文库/
|
|
92
|
-
│ └── {书名}/
|
|
93
|
-
│ ├── 拆文报告.md
|
|
94
|
-
│ ├── 情节节点.md
|
|
95
|
-
│ └── 写作手法.md
|
|
96
|
-
└── {短篇标题}/
|
|
97
|
-
├── 设定.md
|
|
98
|
-
├── 小节大纲.md
|
|
99
|
-
├── 正文.md
|
|
100
|
-
└── 对标/
|
|
101
|
-
└── {书名}/
|
|
102
|
-
├── 拆文报告.md
|
|
103
|
-
├── 情节节点.md
|
|
104
|
-
└── 写作手法.md
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
**对标发现(先于下方反应式加载)**:项目根 `拆文库/` 有拆过的短篇时,先按题材主动推荐一本对标,不要被动等用户开口。
|
|
108
|
-
|
|
109
|
-
1. `ls 拆文库/` 列书目;先从当前项目目录名和 `设定.md`「基本信息」识别本篇标题,排除同名或来源指向当前 `正文.md` 的 `拆文库/{当前书}/`。story-import 生成的本书拆文分析属于续写基线,不是对标候选。排除后为空 → 跳过(无对标按题材包写,见 Phase 1 情绪→题材包表)。
|
|
110
|
-
2. 逐本读 `拆文库/{书}/_meta.json` 的 `genre_detected`,与本篇题材比对,标 同题材 / 弱相关。
|
|
111
|
-
3. 有候选 → 用 AskUserQuestion 推荐(列候选书 +「不用,按题材包写」)。选定后记入本篇 `设定.md`「对标摘要」区作主对标,并按上方「拆文库/对标关系」规则把 `拆文库/{书}/` 同步到 `{短篇标题}/对标/{书}/`。
|
|
112
|
-
|
|
113
|
-
如果工作目录下存在 `对标/` 或项目根存在 `拆文库/`,或用户提到参考小说:
|
|
114
|
-
|
|
115
|
-
1. 先按上方「对标发现」第 1 条的同一口径识别本篇,另排除历史误建的 `对标/{当前书}/`;排除后没有外部对标时按题材包写,不进入下面几步。
|
|
116
|
-
2. 按上述顺序查找 `拆文报告.md`、`情节节点.md`、`写作手法.md`、`_meta.json`
|
|
117
|
-
3. **读 `_meta.json.genre_detected`,按下表加载对应题材风格包**(analyze 识别的题材 → write 的 genre-styles 包),正文腔调/招式随之切换:
|
|
118
|
-
|
|
119
|
-
| analyze 的 `genre_detected` | 加载 `genre-styles/` 包 |
|
|
120
|
-
|---|---|
|
|
121
|
-
| 追妻(现代 / 古代 / 民国) | `追妻火葬场.md`(按「时代变体」节切换身份词与招式) |
|
|
122
|
-
| 小三 / 死人文学 | `追妻火葬场.md`(「流派分支」节) |
|
|
123
|
-
| 世情 / 打脸爽文 / 家庭伦理 | `世情打脸.md` |
|
|
124
|
-
| 重生复仇 | `复仇打脸.md` |
|
|
125
|
-
| 豪门 / 总裁(豪门联姻虐恋) | `总裁豪门.md` |
|
|
126
|
-
| 宫斗宅斗 / 宫斗 / 宅斗 / 古言重生 | `宅斗宫斗.md` |
|
|
127
|
-
| 民俗 / 怪谈 / 灵异 | `民俗怪谈.md` |
|
|
128
|
-
| 悬疑 / 推理 / 惊悚 | `悬疑.md` |
|
|
129
|
-
| 甜宠 / 先虐后甜 / 先婚后爱 | `甜宠.md` |
|
|
130
|
-
| 双男主 | `双男主.md` |
|
|
131
|
-
| 沙雕 / 脑洞 / 弹幕 / 系统 | `沙雕脑洞.md` |
|
|
132
|
-
| 仙侠 / 通用 | 无专属包 → `short-craft.md` 底座 + `genre-writing-formulas.md` 兜底 |
|
|
133
|
-
|
|
134
|
-
4. 读取核心发现:结构段落、情绪曲线、反转位置、铺垫方式、句式节奏、可借鉴技法。**把拆文报告里的具体招式对到题材包招式库**:拆文给「这一篇怎么做的」,题材包给「这一类通用怎么做」,两者合用——拆文是当前对标书的实证,题材包是该题材的通法
|
|
135
|
-
5. 写入本篇 `设定.md` 的“对标摘要”区,写作时每个场景从中召回 1-2 个相关技法
|
|
136
|
-
6. 如只找到原文、未找到拆文报告,提示用户先运行 `/story-short-analyze`;如用户要求继续,也可只按原文做弱参考
|
|
137
|
-
|
|
138
|
-
> **拆文产出格式**:analyze 落盘的完整文件树、`_meta.json` schema、Stage→文件映射,以及「story-short-write 怎么读这些产出」的下游消费规范,见 [references/output-contract.md](references/output-contract.md)。
|
|
139
|
-
|
|
140
|
-
> **多对标书时**:参 `references/cross-book-recall.md`,副对标 anchor 入「对标摘要」区
|
|
141
|
-
|
|
142
|
-
#### Agent 调用:story-architect
|
|
143
|
-
|
|
144
|
-
构思阶段,如果项目已部署 story-architect agent(查找顺序见顶部),可 spawn `Agent(subagent_type: "story-architect", prompt: "项目目录:{dir}\n任务类型:短篇构思\n查询参数:{情绪目标+题材方向}")` 辅助框架设计。如 agent 不可用,由主线程直接执行。
|
|
145
|
-
|
|
146
|
-
帮用户确定短篇的核心框架:
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
## 短篇核心框架
|
|
150
|
-
|
|
151
|
-
### 基本信息
|
|
152
|
-
- 标题(暂定):{}
|
|
153
|
-
- 目标字数:{} 字(短篇通常 8000-20000 字)
|
|
154
|
-
- 目标平台:{知乎盐选 / 小程序 / 番茄短篇}(三选一)
|
|
155
|
-
- 情绪目标:{读者读完的感受}
|
|
156
|
-
|
|
157
|
-
### 一句话梗概
|
|
158
|
-
{主角 + 困境 + 反转 + 情绪落点}
|
|
159
|
-
|
|
160
|
-
### 核心支点
|
|
161
|
-
- 类型:{身份/视角/动机/时间线/信息/认知反转,或无反转}
|
|
162
|
-
- 核心兑现:{一句话描述主揭示;无反转时写报应或关系兑现}
|
|
163
|
-
- 铺垫/期待:{关键铺垫点;无反转时写读者等待兑现的因果或关系节拍}
|
|
164
|
-
|
|
165
|
-
### 情绪设计
|
|
166
|
-
- 开头情绪:{}(强度 {1-10})
|
|
167
|
-
- 中段情绪:{}(强度 {1-10})
|
|
168
|
-
- 反转情绪:{}(强度 {1-10},峰值维持 ≥2 节)
|
|
169
|
-
- 结尾情绪:{}(强度 {1-10})
|
|
170
|
-
- 反转高潮不要骤降:反转前 1 节开始升温,反转节达到峰值,反转后 1 节维持峰值不骤降
|
|
87
|
+
存在本篇 `对标/`、项目根 `拆文库/` 或用户提供参考小说时,先完整读取 [references/benchmark-recall.md](references/benchmark-recall.md),执行对标发现、排除本书续写基线、题材匹配与召回。无外部对标时仍按原题材包执行。
|
|
171
88
|
|
|
172
|
-
|
|
173
|
-
- 主角:{一句话人设}
|
|
174
|
-
- 关键角色:{一句话人设}
|
|
175
|
-
- 关系:{他们之间的关系}
|
|
176
|
-
```
|
|
89
|
+
#### 构思、设计与验收
|
|
177
90
|
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
#### 设计任务(框架确定后执行)
|
|
181
|
-
|
|
182
|
-
详细步骤和模板见 `references/writing-workflow.md`。构思时从目标情绪反推剧情,不是从灵感正向构建。按顺序完成:
|
|
183
|
-
|
|
184
|
-
1. 定平台基调 + 加载题材风格包 → 先读 `references/submission-craft.md` 定投稿平台(知乎/小程序/番茄),正文视角、矛盾烈度、章末落点随之切换;再读 `references/genre-styles/{题材}.md`(核心 10 题材)+ 通用底座 `references/short-craft.md`,从招式库选 2-3 个核心招式(如追妻的白月光触发链 / 信物翻转 / 火葬场预告),写入 设定.md「题材招式」区,全程照此招式与腔调写
|
|
185
|
-
2. 设计反派(如有)→ 加载 `villain-and-reveal.md`
|
|
186
|
-
3. 确定揭露方式 → 同上
|
|
187
|
-
4. 编写 小节大纲.md(格式见 writing-workflow.md):短篇只做轻量蓝图,每节包含结构段/五段功能、人物/关系或其他状态变化、因果/逻辑链、结尾承接/钩子,不套长篇完整章节蓝图。**标出付费点卡在哪一节末**(见 `submission-craft.md`「付费点」:用未完成动作、身份/证据变化或两难选择形成真实断点);用反推法先想透付费点那一节,再倒排前后。每节可选一个任务卡点,但必须服务情绪升级、证据推进、关系撕裂、反转铺垫或反击动作;没有就不强补
|
|
188
|
-
5. 反转信息差验证(公式见 writing-workflow.md)
|
|
189
|
-
6. 伏笔回查清单(标准见 writing-workflow.md)
|
|
190
|
-
|
|
191
|
-
`设定.md` 必须包含以下机器可验收字段(内容本身也是后续写作依据,不是读文件回执):
|
|
192
|
-
|
|
193
|
-
```markdown
|
|
194
|
-
## Phase 2 设计校验
|
|
195
|
-
- 题材参考:`references/genre-styles/{题材}.md`(冷门题材写 `references/genre-writing-formulas.md`)
|
|
196
|
-
- 核心招式:{招式一};{招式二}[;{招式三}]
|
|
197
|
-
- 反派设计:不适用({原因})
|
|
198
|
-
- 反转类型:{身份/视角/动机/时间线/信息/认知/无反转}
|
|
199
|
-
- 反转位置:第 {X} 节 ÷ 共 {Y} 节 = {Z}%
|
|
200
|
-
- 付费点:第 {N} 节末
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
有反派时用 `villain-and-reveal.md` 的身份、动机、作恶方式、致命弱点、报应五字段替换“不适用”。`short-reversal.md` 判断确属无反转题材时,写 `反转类型:无反转` 和 `反转位置:不适用({报应兑现/甜度递进等原因})`,不要硬编节号。`小节大纲.md` 必须使用 `writing-workflow.md` 规定的固定 12 列 Markdown 表格,并在对应节末明确标出“付费点”。
|
|
204
|
-
|
|
205
|
-
#### Phase 2 完成门禁
|
|
206
|
-
|
|
207
|
-
两份文件生成后、向用户声明构思完成或进入 Phase 3 前,运行 `node scripts/check-phase2-contract.js --json {短篇目录}`:
|
|
208
|
-
|
|
209
|
-
- exit 0:Phase 2 机械契约通过,才可进入下一阶段;这不替代故事质量判断
|
|
210
|
-
- exit 1:只把 `repair_scope` 中的检查 ID、证据、期望、reference 路径和修复范围交给本轮 writer;只改失败字段,再运行同一命令
|
|
211
|
-
- 最多做 2 轮定向 repair;仍失败则停止并报告剩余检查 ID,不得声称 Phase 2 已完成
|
|
212
|
-
- exit 2、脚本缺失或不可执行:报告 verifier 不可用,不得用泛化“自检”替代后继续
|
|
213
|
-
|
|
214
|
-
#### Agent 调用:character-designer
|
|
215
|
-
|
|
216
|
-
设计任务完成后,如果项目已部署 character-designer agent(查找顺序见顶部),可 spawn `Agent(subagent_type: "character-designer", prompt: "项目目录:{dir}\n任务类型:角色设定\n查询参数:{人设速写+关系}")` 辅助角色设定和语言风格档案。如 agent 不可用,由主线程直接执行。
|
|
91
|
+
完整步骤见 [references/workflow-design.md](references/workflow-design.md)。按首屏 Reference Gate 读完后执行;两份设计文件通过其中的 Phase 2 完成门禁,才可进入 Phase 3。
|
|
217
92
|
|
|
218
93
|
---
|
|
219
94
|
|
|
@@ -227,8 +102,10 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
227
102
|
|
|
228
103
|
**交付参数先锁定**:用户明确的字数范围优先,逐字取其最小值/最大值与节数;只给单一目标时用目标的 95%-105%;都未给时用 8000-20000 字和大纲节数。后文的默认字数不得覆盖用户范围。
|
|
229
104
|
|
|
105
|
+
**写前参数验收**:给 Phase 4 的交付命令加 `--check-contract` 先运行。参数通过不算交付;冲突时停在写前,报告字数范围与节数,请用户选择调整项,不代改用户约束。
|
|
106
|
+
|
|
230
107
|
**写前准备**(每个场景写前执行 2 步,是核心方法的落地:确认情绪目标 → 召回技法模块):
|
|
231
|
-
- **步骤 1:记忆+召回**:① 本场景目标情绪词?② 借鉴哪个参考文件的哪个技法?③ 具体用在哪个段落?答不出 → 先回读参考再动笔。如有 `对标/` 或 `拆文库/`
|
|
108
|
+
- **步骤 1:记忆+召回**:① 本场景目标情绪词?② 借鉴哪个参考文件的哪个技法?③ 具体用在哪个段落?答不出 → 先回读参考再动笔。如有 `对标/` 或 `拆文库/` 结构化产出,按 [references/benchmark-recall.md](references/benchmark-recall.md) 的对标上下文加载规则检索与当前场景最相关的结构/情绪/反转/写作手法模块作为参考,并写入“拆文召回摘要”
|
|
232
109
|
- **多对标书时**:参 `references/cross-book-recall.md`,副对标/参考对标按阶段预算进入"副对标召回摘要";正文只传摘要,不传副书文风或原文
|
|
233
110
|
- **步骤 2:指令确认**:用一句话概括本场景写作意图(情绪+技法+适配段落),并确认本场景是否有任务卡点、它卡出哪种情绪变化或新证据;没有就不强补。确认后开始写作
|
|
234
111
|
|
|
@@ -240,7 +117,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
240
117
|
- 主语节奏:段首或主语重置时可点名;同一动作链内优先代词/省略;关键转折再点名。
|
|
241
118
|
- 标点跟语气走:质问用问号,爆发处少量感叹;犹豫、未尽、打断用动作停顿、短句或换行处理,正文不使用 `……` / `——` / `—` / `--`。
|
|
242
119
|
- 短篇默认第一人称在场:受虐段可直白宣泄,反击段可冷静审判;只删中立无情绪的作者讲解,不删带主角偏色的审判/预告。
|
|
243
|
-
-
|
|
120
|
+
- 情绪可以直写,按 `references/short-craft.md` 第 2 节检查上下文支撑,不逐句补动作或物件。
|
|
244
121
|
- 任务卡点也可以承接情绪,但必须直接加重羞辱、误会、背叛、证据、反击或心死节点;删掉后情绪/证据/关系无损就压缩。
|
|
245
122
|
- 情绪宁烈不温,冲突前置、爽点具体、台词带刺;心死/余韵等以克制为爽感的桥段按题材包收敛。
|
|
246
123
|
|
|
@@ -251,7 +128,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
251
128
|
- 每批写完后更新“已写小节摘要”(3-5 条:已揭示信息、情绪位置、未回收伏笔、下一批衔接句)。
|
|
252
129
|
- 下一批先读该摘要和 `正文.md` 尾部 300-500 字再续写。
|
|
253
130
|
- 只有用户明确要求子代理、主会话上下文不足,或需要隔离试写时,才检查 narrative-writer agent(查找顺序见顶部)。
|
|
254
|
-
- 如可用,spawn `Agent(subagent_type: "narrative-writer", prompt: ...)
|
|
131
|
+
- 如可用,spawn `Agent(subagent_type: "narrative-writer", prompt: ...)`,只传项目目录、输出文件、情绪目标、题材风格包、小节大纲、角色、主/副对标召回摘要、本书文风全文路径与 style_resolution、作者偏好 query 中的文风/故事设计项、格式硬约束和写作硬约束,并传入检查分工:本批只做内容覆盖与格式自检,完整语义去味由 Phase 4 负责,最终文件扫描由主会话负责。
|
|
255
132
|
- 不把本 skill 整段规则塞进 prompt;细节以已加载的 `short-format.md`、题材包和 `short-craft.md` 为准。
|
|
256
133
|
- 无论谁写,写入 `正文.md` 前都按同一格式规范重排,保证主会话与子代理输出一致。
|
|
257
134
|
|
|
@@ -351,7 +228,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
351
228
|
- [ ] 总字数进入锁定的用户范围;未指定时进入 8000-20000 默认范围
|
|
352
229
|
- [ ] 每节完成其批准情节点或状态变化;没有为拉齐长度补冲突、对话、回忆或旁人反应
|
|
353
230
|
- [ ] 节数 = 小节大纲规划节数(不得合并/省略)
|
|
354
|
-
- [ ]
|
|
231
|
+
- [ ] 身体细节按叙事功能判断,不设次数上限;不对“手、眼、心”等单字计数改稿
|
|
355
232
|
- [ ] 「像/好像/仿佛/如同」不成片堆叠;超过 10 处需逐处复核功能,不机械全删
|
|
356
233
|
- [ ] `node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md` 无 blocking 命中;其余提示先通读,确属问题再改
|
|
357
234
|
- [ ] `node scripts/check-degeneration.js --check 正文.md` 无 blocking 退化命中(复读/截断/工程词泄漏)
|
|
@@ -362,6 +239,8 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
362
239
|
|
|
363
240
|
### Phase 4:精修打磨
|
|
364
241
|
|
|
242
|
+
Phase 3 写手负责内容覆盖与格式自检,不提前执行完整语义去味;该分工须随写作 prompt 传入。Phase 4 的 Gate 检查由一个执行者完成(下方 narrative-writer 或主会话),保留原检查清单、所选 Gate 与内部三遍法;一致性检查职责不变。最终扫描及 delivery 验收由主会话对最终落盘文件执行,修改后只复核改动和重跑受影响检查,不另开整轮去味。
|
|
243
|
+
|
|
365
244
|
加载 `references/writing-workflow.md` 中的精修清单完成检查。
|
|
366
245
|
重点:开头钩子、情绪曲线、反转铺垫、每句话价值、格式规范、AI 腔。文件模式依次运行 `node scripts/check-ai-patterns.js --check --fail-on=blocking 正文.md`、`node scripts/check-outline-copy.js --outline 小节大纲.md 正文.md`、`node scripts/normalize-punctuation.js 正文.md`、`node scripts/check-degeneration.js --check 正文.md`。blocking 或确属细纲照搬先改正文再复扫;其他提示仅作读感复核,功能性写法可保留。
|
|
367
246
|
|
|
@@ -370,7 +249,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
370
249
|
#### Agent 调用:narrative-writer(去AI味)+ consistency-checker
|
|
371
250
|
|
|
372
251
|
精修阶段,如果项目已部署对应 agent,可 spawn:
|
|
373
|
-
- `Agent(subagent_type: "narrative-writer", prompt: "项目目录:{dir}\n任务描述:去AI味+格式检查\n检查范围:{正文文件}\n作者偏好:{query 命中的 prose_style/story_design 项}\n删除优先:每条 AI 味项先判能否删除——删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色(删除受比例上限与字数下限约束,跌破下限改降AI重写)\n必须检查:先否定再肯定的翻转句式,发现后直接改成后项或动作细节;检查像/好像/仿佛/如同等比喻是否成片堆叠,确属堆叠时只留最有功能的少数比喻,其余回到具体画面;检查是否连续使用头皮发紧/眼皮一跳/心口一沉/胃里翻涌等精致戏剧反应,能写普通动作/普通感觉就写普通动作/普通感觉;已有手机/聊天记录/公告/账单/病历/证据截图等信息,保留为角色看到或处理的场内载体,不改成叙述者解释;任务卡点只在角色本来有要办的事且能加重情绪/证据/关系/反转时使用,不为自然感补流程")` — 执行去AI味(7 Gate)和格式合规检查
|
|
252
|
+
- `Agent(subagent_type: "narrative-writer", prompt: "项目目录:{dir}\n任务描述:去AI味+格式检查\n检查分工:你负责本次语义去味及原定自检;最终文件扫描由主会话执行,不在子代理内重复\n检查范围:{正文文件}\nstyle_resolution:{与写作一致的本次文风裁决,含全文路径}\n作者偏好:{query 命中的 prose_style/story_design 项}\n删除优先:每条 AI 味项先判能否删除——删后不丢伏笔/钩子/角色/情节/必要信息的直接删,会丢才润色(删除受比例上限与字数下限约束,跌破下限改降AI重写)\n必须检查:先否定再肯定的翻转句式,发现后直接改成后项或动作细节;检查像/好像/仿佛/如同等比喻是否成片堆叠,确属堆叠时只留最有功能的少数比喻,其余回到具体画面;检查是否连续使用头皮发紧/眼皮一跳/心口一沉/胃里翻涌等精致戏剧反应,能写普通动作/普通感觉就写普通动作/普通感觉;已有手机/聊天记录/公告/账单/病历/证据截图等信息,保留为角色看到或处理的场内载体,不改成叙述者解释;任务卡点只在角色本来有要办的事且能加重情绪/证据/关系/反转时使用,不为自然感补流程")` — 执行去AI味(7 Gate)和格式合规检查
|
|
374
253
|
- `Agent(subagent_type: "consistency-checker", prompt: "项目目录:{dir}\n检查范围:{正文文件}\n检查类型:事实冲突+伏笔断线+角色属性不一致")` — 执行一致性检查
|
|
375
254
|
|
|
376
255
|
如 agent 不可用,由主线程直接执行。
|
|
@@ -401,54 +280,7 @@ Phase 2 必须在第一次写入 `设定.md` / `小节大纲.md` 前按顺序完
|
|
|
401
280
|
|
|
402
281
|
## 参考资料
|
|
403
282
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
| 文件 | 何时加载 |
|
|
407
|
-
|------|----------|
|
|
408
|
-
| [references/short-format.md](references/short-format.md) | 写作前必读(短篇正文格式,两平台模板) |
|
|
409
|
-
| [references/submission-craft.md](references/submission-craft.md) | 投稿前必读(平台基调 知乎/小程序/番茄 · 导语门面 · 付费点断点) |
|
|
410
|
-
| [references/short-craft.md](references/short-craft.md) | 写作全程参考(短篇通用底座:情绪直接写+后接具体反应、在场叙述、超短章节制) |
|
|
411
|
-
| [references/genre-styles/](references/genre-styles/) | **定方向后必读**:按题材加载对应风格包(追妻火葬场 / 世情打脸 / 复仇打脸 / 总裁豪门 / 宅斗宫斗 / 民俗怪谈 / 悬疑 / 甜宠 / 双男主 / 沙雕脑洞),正文风格随之切换 |
|
|
412
|
-
| [references/short-deslop.md](references/short-deslop.md) | 去AI味时必读(短篇专属,只杀真·AI腔,不杀情绪烈度) |
|
|
413
|
-
| [references/writing-workflow.md](references/writing-workflow.md) | Phase 2 设计任务 + Phase 4 精修 |
|
|
414
|
-
| [references/genre-writing-formulas.md](references/genre-writing-formulas.md) | 冷门题材结构骨架补充(核心 10 题材直接用 genre-styles/) |
|
|
415
|
-
| [references/genre-writing-techniques.md](references/genre-writing-techniques.md) | 跨题材通用技法(震惊场景/三翻四震/感情线四阶段/喜剧flag) |
|
|
416
|
-
| [references/emotional-methods.md](references/emotional-methods.md) | 设计情感时 |
|
|
417
|
-
| [references/hooks-chapter.md](references/hooks-chapter.md) | 章节钩子设计 |
|
|
418
|
-
| [references/short-suspense.md](references/short-suspense.md) | 短篇悬念设计 |
|
|
419
|
-
| [references/hooks-paragraph.md](references/hooks-paragraph.md) | 段落钩子技巧 |
|
|
420
|
-
| [references/villain-and-reveal.md](references/villain-and-reveal.md) | Phase 2 设计反派时 |
|
|
421
|
-
| [references/short-reversal.md](references/short-reversal.md) | 设计短篇反转时 |
|
|
422
|
-
| [references/short-prose-quality.md](references/short-prose-quality.md) | 精修检查时 |
|
|
423
|
-
| [references/banned-words.md](references/banned-words.md) | 禁用词表 |
|
|
424
|
-
| [scripts/normalize-punctuation.js](scripts/normalize-punctuation.js) | Phase 4 文件模式确定性标点收尾 |
|
|
425
|
-
| [scripts/check-ai-patterns.js](scripts/check-ai-patterns.js) | Phase 3 完成门槛与 Phase 4 复扫;报告高危 AI 句式、破折号、碎句号、长段落、微动作复读、套式反应细节、抽象总结、套词/比喻密度、解释链、系统公告腔、提纲感短段、低连接密度 |
|
|
426
|
-
| [scripts/check-degeneration.js](scripts/check-degeneration.js) | Phase 3 完成门槛与 Phase 4 复扫;报告模型退化(复读/截断/工程词泄漏),blocking 需重新生成 |
|
|
427
|
-
| [scripts/check-phase2-contract.js](scripts/check-phase2-contract.js) | Phase 2 产物确定性验收;返回具名失败与最小 repair_scope |
|
|
428
|
-
| [scripts/check-delivery-contract.js](scripts/check-delivery-contract.js) | 最终交付确定性验收;按用户参数检查非空白字符、节数与小节格式 |
|
|
429
|
-
| [references/dialogue-mastery.md](references/dialogue-mastery.md) | 写对话时 |
|
|
430
|
-
| [references/output-contract.md](references/output-contract.md) | Phase 2 对标上下文加载时(理解 analyze 产出格式与消费规范) |
|
|
431
|
-
|
|
432
|
-
### 按主题快速定位(横切主题)
|
|
433
|
-
|
|
434
|
-
有些主题散在多个文件里。下表给每个主题一个**权威文件**(先读它,通常够用),配套文件只在需要那个角度时再加载。括号是该文件里对应的小节。
|
|
435
|
-
|
|
436
|
-
| 主题 | 权威文件(先读) | 配套文件(按角度补充) |
|
|
437
|
-
|------|-----------------|----------------------|
|
|
438
|
-
| 情绪外化(怎么写情绪) | **`references/short-craft.md` 第2节**(情绪直接写+后接具体反应、三段对照、改写四步——替代旧机械替换表) | 各 `genre-styles/` 包的「情绪烈度与模式」 |
|
|
439
|
-
| 情绪设计(情感结构) | **`references/emotional-methods.md`**(情感三板斧 + 拉扯节奏 + 失败模式) | `references/genre-writing-techniques.md`(情绪操控核心法则 / 情绪三层次) |
|
|
440
|
-
| 反转 | **`references/short-reversal.md`**(反转类型 / 铺垫 / 揭示位置 / 有效性自检) | `references/villain-and-reveal.md`(真相揭露机制 / 反转有效性自检) |
|
|
441
|
-
| 反派揭露 | **`references/villain-and-reveal.md`**(反派模板 / 揭露机制 / 报应设计) | `references/short-reversal.md` |
|
|
442
|
-
| 人物 | **各 `genre-styles/{题材}.md` 的「对话风格」「招式库」**(受害者-复仇者主角声线、白月光软刀、施害者道德绑架人设,corpus-grounded) | `references/villain-and-reveal.md`(反派/揭露)· `references/genre-writing-techniques.md`(三层标签反差 / 人设从缺点开始)· `references/dialogue-mastery.md`(声线差异) |
|
|
443
|
-
| 钩子 | **`references/hooks-chapter.md`**(章节/开篇钩子类型) | `references/hooks-paragraph.md`(段落钩子)· `references/short-suspense.md`(悬念设计) |
|
|
444
|
-
| 女频写作 | **对应 `genre-styles/{题材}.md`**(追妻火葬场 / 总裁豪门 / 宅斗宫斗 / 甜宠 / 世情打脸的题材声线、虐爽比例、招式) | `references/genre-writing-techniques.md`(女频读者心理与写作技法 / 感情线四阶段推进法)· `references/emotional-methods.md`(情绪拉扯) |
|
|
445
|
-
| 题材风格 | **`references/genre-styles/{题材}.md`**(核心 10 题材的腔调/开篇/钩子/情绪烈度/招式/收尾,corpus-grounded) | `references/genre-writing-formulas.md`(冷门题材结构骨架)· `references/genre-writing-techniques.md`(核心梗 / 卖点 / 通用技法) |
|
|
446
|
-
| 开头 | **各 `genre-styles/{题材}.md` 的「开篇范式」**(关系锚 + 全弧剧透导语 + 火葬场预告,真实开篇范例)+ `short-craft.md` 第12节(开头事件密度) | `references/hooks-chapter.md`(开篇钩子类型)· `references/hooks-paragraph.md`(段钩密度) |
|
|
447
|
-
| 格式与节奏 | **`references/short-format.md`**(短篇正文格式,两平台模板) | `references/short-craft.md`(情绪直接写+后接具体反应/三维度揉进/疏密)· `references/writing-workflow.md`(设计/精修工作流) |
|
|
448
|
-
| 对话 | **`references/dialogue-mastery.md`**(对话技法主文件:差异化/潜台词/对话节奏) | `references/short-craft.md`(三类台词与对话权力博弈)· 各 `genre-styles/` 包的真实金句库 |
|
|
449
|
-
| 去AI味 | **`references/short-deslop.md`**(短篇专属:只杀真·AI腔,不杀情绪烈度/审判句/火葬场预告) | `references/banned-words.md`(禁用词扫描)· `scripts/check-ai-patterns.js`(AI句式复扫)· `references/short-prose-quality.md`(成稿检查) |
|
|
450
|
-
|
|
451
|
-
---
|
|
283
|
+
阶段必读项按首屏 Reference Gate 执行;其他资料按 [参考索引](references/reference-index.md) 的加载条件选用。
|
|
452
284
|
|
|
453
285
|
## 语言
|
|
454
286
|
|
|
@@ -6,13 +6,15 @@
|
|
|
6
6
|
|
|
7
7
|
加载优先级从高到低:
|
|
8
8
|
|
|
9
|
-
1.
|
|
9
|
+
1. 安全、用户授权范围、明确的平台交付要求、字数与文件协议;句长、视角、修辞和标点偏好不属于不可覆盖的硬门禁;
|
|
10
10
|
2. 用户在当前请求中的明确要求;
|
|
11
11
|
3. 当前书的 `设定/文风.md`、题材定位、细纲和其他项目设定;
|
|
12
12
|
4. 作者记忆中的本书偏好;
|
|
13
13
|
5. 作者记忆中的题材、流程和全局偏好;
|
|
14
14
|
6. 对标素材、通用方法和默认值。
|
|
15
15
|
|
|
16
|
+
按表达维度取最窄适用要求:低优先级只补缺项,不与高优先级要求并列执行。通用 references 自称“必须/禁用”不改变此顺序;审稿不因作者有意采用的表达本身扣分,真实可读性与因果问题仍照常评价。
|
|
17
|
+
|
|
16
18
|
作者记忆不能把本书事实写进 `.story/作者记忆/`,不能覆盖当前请求,不能降低审稿 rubric,也不能让去 AI 味改动剧情意图。小说事实继续由各书的 `追踪/` 和 `设定/` 管理。
|
|
17
19
|
|
|
18
20
|
## 文件与所有权
|
|
@@ -27,7 +29,7 @@
|
|
|
27
29
|
└── 变更记录.md # 最近 100 次、最新在前的事务记录
|
|
28
30
|
```
|
|
29
31
|
|
|
30
|
-
三个 Markdown 文件都从 state 确定性生成,禁止手改;完整历史保留在 state,变更记录只展示最近 100 次。`作者画像.md` 是人类管理视图,普通写作 agent 不整份注入,而是调用 `query`
|
|
32
|
+
三个 Markdown 文件都从 state 确定性生成,禁止手改;完整历史保留在 state,变更记录只展示最近 100 次。`作者画像.md` 是人类管理视图,普通写作 agent 不整份注入,而是调用 `query` 取得本次相关的紧凑上下文。`query` 要显式传 `--book`、已知的 `--genre` / `--workflow`;只传 kind 不会返回本书或题材项。作者记忆不存在时,普通写作、审稿和去味任务直接继续,不自动初始化空目录;首次 `record` 会随事务创建。
|
|
31
33
|
|
|
32
34
|
工作区必须显式传给脚本。优先使用已经包含 `.story/作者记忆/` 的最近祖先;首次初始化时使用承载多本书、`.active-book`、`长篇/`、`短篇/` 或 `拆文库/` 的创作工作区根。不要把用户主目录当默认工作区。
|
|
33
35
|
|
|
@@ -79,7 +81,7 @@
|
|
|
79
81
|
|
|
80
82
|
- 同一类型、范围、归纳文本再次出现时,脚本强化原条目,累加证据和确认次数,不重复建条目。
|
|
81
83
|
- 新偏好与 active 条目矛盾时,先以 `conflict` 记候选,并在 `conflicts_with` 列出冲突 ID;当前任务仍按本轮明确要求执行。
|
|
82
|
-
-
|
|
84
|
+
- 同一范围的规则改版用 `replace`,启用新条目并将旧条目标成 `superseded`。本书例外用 `remember` 新建 book 条目,保留 global 习惯;只有作者明确撤销或改变旧规则范围时才跨范围替换。
|
|
83
85
|
- pending 可以用 `decide=activate|reject`;冲突候选不能绕过旧规则直接 activate。
|
|
84
86
|
- 作者说“忘掉 / 这不再是我的习惯”时用 `forget`,保留历史证据但不再加载。
|
|
85
87
|
- active 条目的语义不可原地偷改;语义变化必须 replace,历史才可审计。
|
|
@@ -139,17 +141,17 @@
|
|
|
139
141
|
```json
|
|
140
142
|
{
|
|
141
143
|
"action": "replace",
|
|
142
|
-
"old_ids": ["AP001"
|
|
144
|
+
"old_ids": ["AP001"],
|
|
143
145
|
"preference": {
|
|
144
146
|
"kind": "prose_style",
|
|
145
|
-
"scope": {"level": "
|
|
146
|
-
"assertion": "
|
|
147
|
-
"quote": "
|
|
147
|
+
"scope": {"level": "global", "value": null},
|
|
148
|
+
"assertion": "以后对话允许更长的试探,但避免解释设定",
|
|
149
|
+
"quote": "把以前对话都要短的习惯替换掉:以后可以让对话慢一点,多试探,但还是别拿台词讲设定。",
|
|
148
150
|
"source_ref": "conversation:2026-08-25",
|
|
149
151
|
"source": "explicit_user",
|
|
150
152
|
"confidence": "high",
|
|
151
153
|
"importance": "high",
|
|
152
|
-
"reason": "
|
|
154
|
+
"reason": "作者明确替换原有全局规则,不是新增本书例外"
|
|
153
155
|
}
|
|
154
156
|
}
|
|
155
157
|
```
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
# 短篇对标发现与召回
|
|
2
|
+
|
|
3
|
+
#### 对标上下文加载
|
|
4
|
+
|
|
5
|
+
> **拆文库/对标关系**:`拆文库/` = analyze skill 的原始产出(数据源),位于项目根目录。`对标/` = 当前短篇的引用视图,位于 `{短篇标题}/对标/`。短篇写作优先读取 `{短篇标题}/对标/{书名}/`,不存在则读取项目根 `拆文库/{书名}/`。
|
|
6
|
+
|
|
7
|
+
推荐目录结构:
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
项目根/
|
|
11
|
+
├── 拆文库/
|
|
12
|
+
│ └── {书名}/
|
|
13
|
+
│ ├── 拆文报告.md
|
|
14
|
+
│ ├── 情节节点.md
|
|
15
|
+
│ └── 写作手法.md
|
|
16
|
+
└── {短篇标题}/
|
|
17
|
+
├── 设定.md
|
|
18
|
+
├── 小节大纲.md
|
|
19
|
+
├── 正文.md
|
|
20
|
+
└── 对标/
|
|
21
|
+
└── {书名}/
|
|
22
|
+
├── 拆文报告.md
|
|
23
|
+
├── 情节节点.md
|
|
24
|
+
└── 写作手法.md
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**对标发现(先于下方反应式加载)**:项目根 `拆文库/` 有拆过的短篇时,先按题材主动推荐一本对标,不要被动等用户开口。
|
|
28
|
+
|
|
29
|
+
1. `ls 拆文库/` 列书目;先从当前项目目录名和 `设定.md`「基本信息」识别本篇标题,排除同名或来源指向当前 `正文.md` 的 `拆文库/{当前书}/`。story-import 生成的本书拆文分析属于续写基线,不是对标候选。排除后为空 → 跳过(无对标按题材包写,见 Phase 1 情绪→题材包表)。
|
|
30
|
+
2. 逐本读 `拆文库/{书}/_meta.json` 的 `genre_detected`,与本篇题材比对,标 同题材 / 弱相关。
|
|
31
|
+
3. 有候选 → 用 AskUserQuestion 推荐(列候选书 +「不用,按题材包写」)。选定后记入本篇 `设定.md`「对标摘要」区作主对标,并按上方「拆文库/对标关系」规则把 `拆文库/{书}/` 同步到 `{短篇标题}/对标/{书}/`。
|
|
32
|
+
|
|
33
|
+
如果工作目录下存在 `对标/` 或项目根存在 `拆文库/`,或用户提到参考小说:
|
|
34
|
+
|
|
35
|
+
1. 先按上方「对标发现」第 1 条的同一口径识别本篇,另排除历史误建的 `对标/{当前书}/`;排除后没有外部对标时按题材包写,不进入下面几步。
|
|
36
|
+
2. 按上述顺序查找 `拆文报告.md`、`情节节点.md`、`写作手法.md`、`_meta.json`
|
|
37
|
+
3. **读 `_meta.json.genre_detected`,按下表加载对应题材风格包**(analyze 识别的题材 → write 的 genre-styles 包),正文腔调/招式随之切换:
|
|
38
|
+
|
|
39
|
+
| analyze 的 `genre_detected` | 加载 `genre-styles/` 包 |
|
|
40
|
+
|---|---|
|
|
41
|
+
| 追妻(现代 / 古代 / 民国) | `追妻火葬场.md`(按「时代变体」节切换身份词与招式) |
|
|
42
|
+
| 小三 / 死人文学 | `追妻火葬场.md`(「流派分支」节) |
|
|
43
|
+
| 世情 / 打脸爽文 / 家庭伦理 | `世情打脸.md` |
|
|
44
|
+
| 重生复仇 | `复仇打脸.md` |
|
|
45
|
+
| 豪门 / 总裁(豪门联姻虐恋) | `总裁豪门.md` |
|
|
46
|
+
| 宫斗宅斗 / 宫斗 / 宅斗 / 古言重生 | `宅斗宫斗.md` |
|
|
47
|
+
| 民俗 / 怪谈 / 灵异 | `民俗怪谈.md` |
|
|
48
|
+
| 悬疑 / 推理 / 惊悚 | `悬疑.md` |
|
|
49
|
+
| 甜宠 / 先虐后甜 / 先婚后爱 | `甜宠.md` |
|
|
50
|
+
| 双男主 | `双男主.md` |
|
|
51
|
+
| 沙雕 / 脑洞 / 弹幕 / 系统 | `沙雕脑洞.md` |
|
|
52
|
+
| 仙侠 / 通用 | 无专属包 → `short-craft.md` 底座 + `genre-writing-formulas.md` 兜底 |
|
|
53
|
+
|
|
54
|
+
4. 读取核心发现:结构段落、情绪曲线、反转位置、铺垫方式、句式节奏、可借鉴技法。**把拆文报告里的具体招式对到题材包招式库**:拆文给「这一篇怎么做的」,题材包给「这一类通用怎么做」,两者合用——拆文是当前对标书的实证,题材包是该题材的通法
|
|
55
|
+
5. 写入本篇 `设定.md` 的“对标摘要”区,写作时每个场景从中召回 1-2 个相关技法
|
|
56
|
+
6. 如只找到原文、未找到拆文报告,提示用户先运行 `/story-short-analyze`;如用户要求继续,也可只按原文做弱参考
|
|
57
|
+
|
|
58
|
+
> **拆文产出格式**:analyze 落盘的完整文件树、`_meta.json` schema、Stage→文件映射,以及「story-short-write 怎么读这些产出」的下游消费规范,见 [references/output-contract.md](output-contract.md)。
|
|
59
|
+
|
|
60
|
+
> **多对标书时**:参 `references/cross-book-recall.md`,副对标 anchor 入「对标摘要」区
|
|
@@ -133,13 +133,15 @@
|
|
|
133
133
|
|
|
134
134
|
角色情绪是连续的、循序渐进的。从生气到高兴:生气 → 不那么生气 → 不生气 → 高兴,每次转变需对应事件触发。不能跳步。
|
|
135
135
|
|
|
136
|
-
###
|
|
136
|
+
### 情绪与行动的因果检查
|
|
137
137
|
|
|
138
138
|
1. 遇到事件(失衡状态)
|
|
139
|
-
2.
|
|
140
|
-
3.
|
|
139
|
+
2. 情绪反应(可以直写,也可以体现在语言、选择或有功能的动作中)
|
|
140
|
+
3. 内心思考(只写影响理解的判断;鲁莽可以直接体现在行动里)
|
|
141
141
|
4. 采取行动(基于前三步结果回应)
|
|
142
142
|
|
|
143
|
+
用于检查转变是否成立,不要求逐步写满;上下文已清楚的反应或思考无需补写。
|
|
144
|
+
|
|
143
145
|
### 对话不平淡三思路
|
|
144
146
|
|
|
145
147
|
- 对话本身带来/强化某个核心驱动力(期待、爽感、悬念)
|
|
@@ -154,7 +156,7 @@
|
|
|
154
156
|
- 大量信息通过对话展示会显得啰嗦,部分信息转化为情节、心理描写、旁白、环境、动作
|
|
155
157
|
- 用角色的语气和立场包裹信息,不是机械陈述设定
|
|
156
158
|
- 设定用到哪个稍微带出来就行,不需完完全全讲明白前因后果
|
|
157
|
-
- **角色不当"科普嘴"**:设定/原理/前因后果不能靠任何角色(尤其信息型/AI 配角)整段讲解——Gate G
|
|
159
|
+
- **角色不当"科普嘴"**:设定/原理/前因后果不能靠任何角色(尤其信息型/AI 配角)整段讲解——Gate G 同样适用于角色台词。按角色当下的目的和对话阻力取舍信息,用到哪带哪点,不固定拼接身体反应。
|
|
158
160
|
|
|
159
161
|
### 信息拉扯示例(以"主角新书起飞了"为例)
|
|
160
162
|
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
- 心寒时刻用「轻」写:疼是小的、钝的,杀伤力在于看清。《苹果皮断心亦死》苹果砸在胳膊上,不怎么疼,就是有点蒙。我看着那脏兮兮的苹果,又看看自己还在渗血的手指,忽然就觉得没什么意思。
|
|
54
54
|
- 荒唐感代替嚎啕:被气笑、想笑、觉得陌生。《儿子为博流量》我看着眼前这个儿子,忽然觉得陌生。
|
|
55
55
|
- 身份句定格:一句话给自己在这个家的位置盖章,独立成段。《苹果皮断心亦死》原来当姐姐是我的原罪。/《苹果皮断心亦死》你们爱的不是我,是哪个随叫随到的血包和不用密码的银行卡。
|
|
56
|
-
-
|
|
56
|
+
- 直给情绪词仍可用(心彻底凉透、心沉到谷底),但频率低于追妻;需要展开时偏向冷静盘算,不逐句配反应。
|
|
57
57
|
- 憋屈的物理感:《妻子极端节俭》我端着手里仅剩的半碗水,怔愣在原地。
|
|
58
58
|
|
|
59
59
|
---
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
- **「听说体」报应清单收尾**:保留,是本题材标配的因果闭环,不是烂尾。
|
|
146
146
|
- **主角冷幽默自嘲**(「我差点气笑了」「真是屈才了」):保留,是心寒的本题材表达式。
|
|
147
147
|
|
|
148
|
-
仍要避免的真·AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 /
|
|
148
|
+
仍要避免的真·AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 / 由此可见)、空泛无落点的情绪总结句(一丝悲伤涌上心头)。另外两条本题材易犯:恶人恶得没有生活逻辑(上来就喊打喊杀,没有糖衣);清算靠主角开骂而不是靠证据和规则落地。
|
|
149
149
|
|
|
150
150
|
> 标点:本题材范例为示意保留了原貌(含个别 `……`);落到正文按 `short-craft.md` 第 8 节执行,不出 `……` / `——`,停顿、哽咽、被打断一律用短句 / 句号 / 动作 beat / 换行实现。
|
|
151
151
|
|
|
@@ -142,7 +142,7 @@
|
|
|
142
142
|
- **卑微 / 偏执 / 追悔的滚烫台词**:舔狗、病娇、火葬场的告白,保留,别当「用力过猛」删。
|
|
143
143
|
- **契约 / 宿命的前瞻剧透**:有意识地向前吊「三年后 / 后来他后悔了 / 未来他会毁掉我」,保留。
|
|
144
144
|
|
|
145
|
-
仍要避免的真 AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 /
|
|
145
|
+
仍要避免的真 AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 / 由此可见)、空泛无落点的情绪总结句(一丝悲伤涌上心头)。语料里也偶有「映入眼帘」这类混入,别照抄。
|
|
146
146
|
|
|
147
147
|
> 标点:本题材范例为示意保留了原貌;落到正文按 `short-craft.md` 第 8 节执行(不出 `……` / `——`,停顿用短句 / 动作 / 换行)。
|
|
148
148
|
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
|
|
48
48
|
比追妻更生猛:作践有物理极刑档(碾压手 / 人彘 / 人体盛 / 判死刑),所以宣泄要够痛,反杀要够冷。**两段声线,靠亮底牌 / 重生那一拍翻转。**
|
|
49
49
|
|
|
50
|
-
-
|
|
50
|
+
- 受作践段可以直接写浓烈情绪:心沉到谷底、万念俱灰;让羞辱与处境支撑,不固定叠身体反应。
|
|
51
51
|
- 心死转冷的快意预告:把读者按在「我知道你不知道」的信息差上吊着。
|
|
52
52
|
- 极刑反衬:写极痛时用一句冷到反常的句子收(「幸好我已经死了,感受不到痛了」),痛感与冷意对撞。
|
|
53
53
|
|
|
@@ -144,13 +144,13 @@
|
|
|
144
144
|
这些在别的语境是 AI 味,在本题材是卖点,**别误删**:
|
|
145
145
|
|
|
146
146
|
- **快意剧透 / 亮底牌前瞻预告**(「过了今天,你们就再也笑不出来了」「我真的很期待他们脸上的表情」):保留,这是本题材的爽感引擎,只删「泄了悬念又不吊读」的随手上帝腔。
|
|
147
|
-
-
|
|
147
|
+
- **直写情绪成语**(心沉到谷底 / 万念俱灰):有上下文支撑就保留,不强配体感、动作或物件,也不替换成纯动作。
|
|
148
148
|
- **次数 / 金额 / 年限的逐项枚举**(第七次、第三十七次、第九十九次下降):保留,这是递进式累积爽点,不是凑字排比。
|
|
149
149
|
- **弹幕 / 外部审判声**(穿书 / 系统篇):保留,是该题材的外部爽感声轨,不是赘语。
|
|
150
150
|
- **极刑 / 社死场面的直写**(碾压、断肢、人体盛):服务情绪烈度,不做文学化淡化;这是该题材读者的核心期待。**注意:写极端虐心招式仅为剧情张力,不细化任何可被照做的伤害手法步骤。**
|
|
151
151
|
- **当众审判金句 / 自食恶果章尾**:保留;只删空洞哲理升华。
|
|
152
152
|
|
|
153
|
-
仍要避免的真·AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 /
|
|
153
|
+
仍要避免的真·AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 / 由此可见)、空泛无落点的情绪总结句(一丝悲伤涌上心头)。
|
|
154
154
|
|
|
155
155
|
> 标点:本题材范例为示意保留了原貌(含个别 `……` / `...`);落到正文按 `short-craft.md` 第 8 节执行,不出 `……` / `——`,停顿、哽咽、未尽、被打断一律用短句 / 句号 / 逗号 / 动作 beat / 换行实现。本包不教用 `……`。
|
|
156
156
|
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
爽虐双轨:撞破前直白宣泄 + 撞破后冷静审判(钝刀转冷刀)。纯虐重生支线(手刃薄情郎 / 死遁)可到 9。
|
|
50
50
|
|
|
51
51
|
- 直接命名情绪并加重:心如死灰、心如刀割、伤心欲绝、泪如雨下、心沉到谷底——通篇高频直给。
|
|
52
|
-
-
|
|
52
|
+
- 情绪可以直写;需要展开时用礼制、关系、选择或物件的变化承载,不逐句补动作。
|
|
53
53
|
- 心死后转冷反衬:审判时无波澜,连最毒的话都激不起情绪。
|
|
54
54
|
|
|
55
55
|
真实范例:
|
|
@@ -148,13 +148,13 @@
|
|
|
148
148
|
这些在别的语境是 AI 味,在本题材是卖点,**别误删**:
|
|
149
149
|
|
|
150
150
|
- **文白夹杂措辞**(嫁与 / 六载 / 明媒正娶 / 割袍断义 / 各自珍重 / 不循尊卑 / 以儆效尤):古言宫斗的招牌声线,保留。别因为「像文言」就改白话,也别因为「像翻译腔」就删;年代线对应保留年代口语(家属房 / 的确良 / 万元户)。
|
|
151
|
-
- **直写情绪成语**(心如死灰 / 心如刀割 /
|
|
151
|
+
- **直写情绪成语**(心如死灰 / 心如刀割 / 泪如雨下):有上下文支撑就保留,不强配动作或物件,也不替换成纯动作。
|
|
152
152
|
- **时间锚定 + 全弧剧透导语 / 火葬场前瞻预告**:保留这类有意识的向前剧透;只删「泄了悬念又不吊读」的随手上帝腔。
|
|
153
153
|
- **信物撕毁的物理动作 + 主观定性**(亲手绣的,也该亲手了结):保留,撕毁 + 心理落点是本题材的爽点本体。
|
|
154
154
|
- **审判金句 / 心死式章尾**:保留;只删空洞哲理升华。
|
|
155
155
|
- **沙雕脑洞子型的轻喜剧 / 网络化俏皮腔**:仅在该子型内放宽,可用反差 / 吐槽腔;主流宫斗 / 重生线仍走朴素中文,不掺现代网络梗。
|
|
156
156
|
|
|
157
|
-
仍要避免的真·AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 /
|
|
157
|
+
仍要避免的真·AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 / 由此可见)、空泛无落点的情绪总结句(一丝悲伤涌上心头)。文白夹杂不等于堆砌生僻文言,仍以朴素为底。
|
|
158
158
|
|
|
159
159
|
> 标点:本题材范例为示意保留了原貌(含 `……` / `......`);落到正文按 `short-craft.md` 第 8 节执行(不出 `……` / `——`,停顿用短句 / 动作 / 换行)。本包不教用 `……`。
|
|
160
160
|
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
|
|
54
54
|
本题材心死开关有明确两段,烈度全程不降,只换形态。
|
|
55
55
|
|
|
56
|
-
- **前段(发疯 /
|
|
56
|
+
- **前段(发疯 / 宣泄)**:直白命名情绪并加重,眼泪不争气、心如死灰;可以当众开撕、网上对线、砸东西。反应按人物与场景选择,不固定叠加身体细节。
|
|
57
57
|
- **后段(冷处理 / 审判)**:撞破真相后切冷,不闹、应一声好、看戏。情绪不消,转成「冷烈」——反讽、吐槽、记账。心死后转冷反衬最杀:「这些话已经激不起我任何波澜」。
|
|
58
58
|
- 外挂带来的清醒,让后段冷得有理有据,不显突兀。
|
|
59
59
|
|
|
@@ -161,11 +161,11 @@
|
|
|
161
161
|
- **物证侦探式内心推理段**:放大照片、查品牌有没有赠送活动这类「自证不是多想」的独白,是慢推引擎,别当啰嗦删;删了刀就钝了。
|
|
162
162
|
- **弹幕 / 系统 / 心声吐槽**:网感、口语、可以贱(「长嘴不如不长」「六个核弹」),别雅化、别统一成书面语。
|
|
163
163
|
- **普信渣男的车轱辘话与重复**(「我只爱你,宁宁是爱我我不娶她」反复说):是刻意的,体现 PUA 钝刀和主角的无力感,别当重复冗余砍。
|
|
164
|
-
- **直写情绪成语**(心如死灰 /
|
|
164
|
+
- **直写情绪成语**(心如死灰 / 浑身冰冷):有上下文支撑就保留,不强配动作或物件,也不替换成纯动作。
|
|
165
165
|
- **火葬场前瞻预告 / 结果倒序简介**:保留这类有意识的向前剧透;只删「泄了悬念又不吊读」的随手上帝腔。
|
|
166
166
|
- **审判金句 / 心死式章尾**:保留;只删空洞哲理升华。
|
|
167
167
|
|
|
168
|
-
仍要避免的真·AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 /
|
|
168
|
+
仍要避免的真·AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 / 由此可见)、空泛无落点的情绪总结句(一丝悲伤涌上心头)。
|
|
169
169
|
|
|
170
170
|
> 标点:本题材范例为示意保留了原貌(含 `……`);落到正文按 `short-craft.md` 第 8 节执行(不出 `……` / `——`,停顿、未尽、被打断一律用短句 / 句号 / 逗号 / 动作 beat / 换行实现)。本包不教用 `……`。
|
|
171
171
|
|
package/lib/oh-story/skills/story-short-write/references/genre-styles//346/202/254/347/226/221.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
## 叙述腔调
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
第一人称**冷静报告体**为主:叙述者用记流水账的平静口吻,陈述极不正常的事(分尸、循环、亲人被抹除),恐怖靠「语气与内容的反差」压出来;异常暴露时可短暂写恐惧,随即回到判断与应对,不强配体感。与追妻 / 复仇的宣泄腔相反:全程克制,不哭诉、不控诉、不连环反问。
|
|
11
11
|
|
|
12
12
|
- 《杀夫那夜,多了一具尸体》我熟练地取出厨房里的整套刀具,小心翼翼地开始了分尸工作。
|
|
13
13
|
- 《怪物的守则》保险起见,就当这一切都是真的好了,我必须认真地对待!
|
|
@@ -50,10 +50,10 @@
|
|
|
50
50
|
|
|
51
51
|
## 情绪烈度与模式(烈度 6)
|
|
52
52
|
|
|
53
|
-
|
|
53
|
+
恐惧短促直写,情绪成语全篇最多一两处;主角越冷静越可怕。爆发只给一瞬,马上压回冷静分析。
|
|
54
54
|
|
|
55
|
-
-
|
|
56
|
-
-
|
|
55
|
+
- 恐惧多为一句直写(我不敢动 / 我怕了);体感(头皮发麻 / 汗毛竖立 / 浑身血液冻住)全篇两三处,短促一拍,独立成段。
|
|
56
|
+
- 恐惧与理智交替:一拍之后立刻回到「我必须弄清楚」的分析态。
|
|
57
57
|
- 崩溃全篇只许一次,放在「全世界都否定我」的至暗点;哭完必须捡起一条新线索。
|
|
58
58
|
|
|
59
59
|
真实范例:
|
|
@@ -147,7 +147,7 @@
|
|
|
147
147
|
|
|
148
148
|
反向要求(与追妻等情感题材相反):
|
|
149
149
|
|
|
150
|
-
-
|
|
150
|
+
- 情绪成语(心如死灰 / 泪如雨下)本题材用得少,但不是禁用词。
|
|
151
151
|
- 成段宣泄独白和连环反问压到最低,用理智分析型独白替代。
|
|
152
152
|
|
|
153
153
|
仍要避免的真·AI 味:映入眼帘、心中暗道、沉声道、嘴角微扬、目光如炬、论文体连词(不难看出 / 由此可见)。
|