@oh-story/dsh 0.1.4 → 0.1.6
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 +56 -12
- package/lib/client.js +2707 -268
- package/lib/client.js.map +4 -4
- package/lib/drama/manifest.json +136 -101
- package/lib/drama/skills/short-drama/SKILL.md +61 -1
- package/lib/drama/skills/short-drama/references/contract-and-ownership.md +7 -4
- package/lib/drama/skills/short-drama/references/creator-documents.md +133 -8
- package/lib/drama/skills/short-drama/references/creator-workflow.md +38 -2
- package/lib/drama/skills/short-drama/references/knowhow-index.md +3 -0
- package/lib/drama/skills/short-drama/references/reference-roles.md +10 -7
- package/lib/drama/skills/short-drama/references/runtime-preflight.md +3 -0
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +1002 -0
- package/lib/drama/skills/short-drama/scripts/project_tool.py +485 -5
- package/lib/drama/skills/short-drama-assets/SKILL.md +13 -3
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +116 -0
- package/lib/drama/skills/short-drama-assets/references/identity-vs-variant.md +2 -1
- package/lib/drama/skills/short-drama-assets/references/prop-and-state.md +19 -0
- package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-assets/scripts/asset_check.py +1 -1
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +6 -2
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +4 -3
- package/lib/drama/skills/short-drama-image-prompts/references/lookdev-frame.md +1 -1
- package/lib/drama/skills/short-drama-image-prompts/references/review-and-fixtures.md +1 -1
- package/lib/drama/skills/short-drama-image-prompts/references/stage-contract.md +3 -1
- package/lib/drama/skills/short-drama-image-prompts/scripts/image_prompt_check.py +8 -8
- package/lib/drama/skills/short-drama-image-prompts/scripts/selftest.py +4 -2
- package/lib/drama/skills/short-drama-produce/SKILL.md +46 -10
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +65 -8
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +85 -0
- package/lib/drama/skills/short-drama-produce/references/providers/seedance.md +27 -10
- package/lib/drama/skills/short-drama-produce/scripts/production_tool.py +362 -3
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +627 -40
- package/lib/drama/skills/short-drama-produce/scripts/selftest.py +5 -4
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +12 -0
- package/lib/drama/skills/short-drama-review/scripts/review_check.py +1 -1
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +76 -7
- package/lib/drama/skills/short-drama-storyboard/assets/shot-template.jsonl +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/keyframe-craft.md +6 -2
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +19 -4
- package/lib/drama/skills/short-drama-storyboard/references/review-and-fixtures.md +5 -2
- package/lib/drama/skills/short-drama-storyboard/references/screenplay-to-keyframe-example.md +16 -0
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +8 -3
- package/lib/drama/skills/short-drama-storyboard/scripts/storyboard_check.py +1 -1
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +81 -13
- package/lib/drama/skills/short-drama-video-prompts/assets/motion-spec.jsonl.md +6 -1
- package/lib/drama/skills/short-drama-video-prompts/assets/video-prompts.md +17 -1
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +21 -1
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +154 -0
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -6
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +11 -7
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +41 -0
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +66 -0
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +5 -2
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +115 -0
- package/lib/drama/skills/short-drama-video-prompts/scripts/container_check.py +1 -1
- package/lib/drama/skills/short-drama-video-prompts/scripts/music_spec_check.py +1 -1
- package/lib/drama/skills/short-drama-write/SKILL.md +3 -2
- package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +1 -1
- package/lib/drama/skills/short-drama-write/scripts/screenplay_index.py +2 -2
- package/lib/drama/skills/short-drama-write/scripts/voice_sheet_check.py +1 -1
- package/lib/index.js +865 -33
- package/lib/index.js.map +4 -4
- package/lib/novel-to-game/LICENSE +21 -0
- package/lib/novel-to-game/README.md +180 -0
- package/lib/novel-to-game/README_ZH.md +178 -0
- package/lib/novel-to-game/VERSION +1 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +217 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/.vercelignore +3 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +130 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/bg/compound_new_guofeng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/fate_coda.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/finale/yue.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_accord_five.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_afterglow_five.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/inner_court_alliance.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day10.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day15.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/public_day5.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/group/title_new_guofeng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/pan_xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/joint/yue_pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/meng/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/meng.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pan.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/pinger.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/xuee.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/milestone/yue.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pan/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/pinger/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/xuee/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/explicit.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/cg/yue/prelude.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/meng/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pan/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/pinger/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/xuee/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/heroine/yue/night.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/household/li_jiaoer.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/assets/scene/gate_collector.webp +0 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +1105 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +2539 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/index.html +18 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/assets.js +147 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/audio.js +332 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +7472 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +13077 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +3028 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +32 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +10 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/vercel.json +23 -0
- package/lib/novel-to-game/examples/jin-ping-mei/build/art/generated-art.json +161 -0
- package/lib/novel-to-game/examples/jin-ping-mei/example.json +12 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +31 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/playable-model.json +99 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +41 -0
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +129 -0
- package/lib/novel-to-game/manifest.json +508 -0
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +73 -0
- package/lib/novel-to-game/skills/game-art-direction/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +119 -0
- package/lib/novel-to-game/skills/game-build/SKILL.md +84 -0
- package/lib/novel-to-game/skills/game-build/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +109 -0
- package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +56 -0
- package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +81 -0
- package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +37 -0
- package/lib/novel-to-game/skills/game-concept/SKILL.md +72 -0
- package/lib/novel-to-game/skills/game-concept/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-concept/references/concept-method.md +94 -0
- package/lib/novel-to-game/skills/game-qa/SKILL.md +50 -0
- package/lib/novel-to-game/skills/game-qa/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-qa/references/qa-contract.md +66 -0
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +45 -0
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +63 -0
- package/lib/novel-to-game/skills/game-world-design/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +59 -0
- package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +53 -0
- package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +84 -0
- package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +56 -0
- package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +124 -0
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +77 -0
- package/lib/novel-to-game/skills/novel-game-analyze/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +65 -0
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +71 -0
- package/lib/novel-to-game/skills/novel-to-game/agents/openai.yaml +4 -0
- package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +42 -0
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +51 -0
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +65 -0
- package/lib/oh-story/manifest.json +415 -305
- package/lib/oh-story/roles/consistency-checker.md +1 -1
- package/lib/oh-story/roles/narrative-writer.md +32 -33
- package/lib/oh-story/roles/story-architect.md +16 -26
- package/lib/oh-story/skills/browser-cdp/SKILL.md +1 -1
- package/lib/oh-story/skills/story/SKILL.md +16 -9
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-cover/SKILL.md +1 -1
- package/lib/oh-story/skills/story-deslop/SKILL.md +10 -5
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-import/SKILL.md +19 -10
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +9 -10
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +2 -2
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +1 -1
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +251 -0
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +4 -4
- package/lib/oh-story/skills/story-long-scan/SKILL.md +1 -1
- package/lib/oh-story/skills/story-long-write/SKILL.md +35 -21
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +7 -3
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +6 -6
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/genre-readers.md +1 -1
- package/lib/oh-story/skills/{story-setup/references/agent-references/hooks-chapter.md → story-long-write/references/long-chapter-hooks.md} +5 -5
- package/lib/oh-story/skills/story-long-write/references/{quality-checklist.md → long-chapter-quality.md} +2 -1
- package/lib/oh-story/skills/story-long-write/references/long-format.md +42 -0
- package/lib/oh-story/skills/{story-setup/references/agent-references/genre-catalog.md → story-long-write/references/long-genre-catalog.md} +11 -97
- package/lib/oh-story/skills/{story-setup/references/agent-references/genre-core-mechanics.md → story-long-write/references/long-genre-mechanics.md} +1 -1
- package/lib/oh-story/skills/{story-short-write/references/reversal-toolkit.md → story-long-write/references/long-reversal.md} +18 -32
- package/lib/oh-story/skills/story-long-write/references/{hooks-suspense.md → long-suspense.md} +6 -6
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +32 -27
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +14 -14
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +54 -54
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +251 -0
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +303 -0
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-review/SKILL.md +26 -17
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-review/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-review/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-review/references/{quality-checklist.md → review-quality.md} +22 -21
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +14 -6
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +98 -9
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +246 -0
- package/lib/oh-story/skills/story-setup/SKILL.md +74 -33
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +72 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-reference-profiles.md +55 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +2 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +9 -10
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-readers.md +1 -1
- package/lib/oh-story/skills/{story-short-analyze/references/hooks-chapter.md → story-setup/references/agent-references/long-chapter-hooks.md} +5 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +209 -0
- package/lib/oh-story/skills/{story-long-write/references/genre-catalog.md → story-setup/references/agent-references/long-genre-catalog.md} +11 -97
- package/lib/oh-story/skills/{story-long-write/references/genre-core-mechanics.md → story-setup/references/agent-references/long-genre-mechanics.md} +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +40 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/{reversal-toolkit.md → long-reversal.md} +18 -32
- package/lib/oh-story/skills/{story-short-write/references/hooks-suspense.md → story-setup/references/agent-references/long-suspense.md} +6 -6
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/{emotional-methods.md → short-emotional-methods.md} +4 -4
- package/lib/oh-story/skills/{story-long-write/references/genre-writing-formulas.md → story-setup/references/agent-references/short-genre-formulas.md} +32 -44
- package/lib/oh-story/skills/story-setup/references/agent-references/short-quality.md +39 -0
- package/lib/oh-story/skills/{story-long-write/references/reversal-toolkit.md → story-setup/references/agent-references/short-reversal.md} +29 -23
- package/lib/oh-story/skills/story-setup/references/agent-references/{hooks-suspense.md → short-suspense.md} +31 -31
- 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/writing-craft.md +55 -55
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +28 -28
- package/lib/oh-story/skills/story-short-analyze/references/{character-basics.md → analysis-character-basics.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{character-design-methods.md → analysis-character-design.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{character-relations.md → analysis-character-relations.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{hooks-paragraph.md → analysis-paragraph-hooks.md} +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/{genre-readers.md → analysis-reader-profile.md} +2 -2
- package/lib/oh-story/skills/story-short-analyze/references/analysis-report-style.md +45 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-genres.md +65 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-hooks.md +77 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-mechanics.md +82 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-patterns.md +50 -0
- package/lib/oh-story/skills/story-short-analyze/references/analysis-short-suspense.md +98 -0
- package/lib/oh-story/skills/story-short-analyze/references/{genre-writing-techniques.md → analysis-writing-techniques.md} +21 -19
- package/lib/oh-story/skills/story-short-analyze/references/deconstruction-examples.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +21 -28
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +17 -17
- package/lib/oh-story/skills/story-short-analyze/references/{quality-checklist.md → source-story-quality.md} +28 -49
- package/lib/oh-story/skills/story-short-analyze/references/zhihu-style.md +2 -2
- package/lib/oh-story/skills/story-short-scan/SKILL.md +1 -1
- package/lib/oh-story/skills/story-short-write/SKILL.md +78 -55
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +163 -0
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +6 -4
- package/lib/oh-story/skills/story-short-write/references/cross-book-recall.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +4 -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 +3 -3
- package/lib/oh-story/skills/story-short-write/references/genre-styles//345/217/214/347/224/267/344/270/273.md +2 -2
- 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 +6 -6
- 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 +4 -4
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/260/221/344/277/227/346/200/252/350/260/210.md +7 -7
- package/lib/oh-story/skills/story-short-write/references/genre-styles//346/262/231/351/233/225/350/204/221/346/264/236.md +5 -5
- package/lib/oh-story/skills/story-short-write/references/genre-styles//347/224/234/345/256/240.md +4 -4
- 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 +32 -44
- package/lib/oh-story/skills/story-short-write/references/genre-writing-techniques.md +20 -18
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +18 -18
- package/lib/oh-story/skills/story-short-write/references/short-deslop.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/short-format.md +38 -8
- package/lib/oh-story/skills/story-short-write/references/{quality-checklist.md → short-prose-quality.md} +22 -21
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +355 -0
- package/lib/oh-story/skills/{story-short-analyze/references/hooks-suspense.md → story-short-write/references/short-suspense.md} +31 -31
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +31 -22
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +871 -0
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +64 -1
- package/lib/oh-story/skills/story-short-write/scripts/check-delivery-contract.js +212 -0
- package/lib/oh-story/skills/story-short-write/scripts/check-phase2-contract.js +363 -0
- package/lib/types/client/drama-production-view.d.ts +34 -0
- package/lib/types/client/drama-production-view.d.ts.map +1 -0
- package/lib/types/client/drama-production.d.ts +92 -0
- package/lib/types/client/drama-production.d.ts.map +1 -0
- package/lib/types/client/file-activity.d.ts +4 -2
- package/lib/types/client/file-activity.d.ts.map +1 -1
- package/lib/types/client/index.d.ts +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/production-intents.d.ts +9 -0
- package/lib/types/client/production-intents.d.ts.map +1 -0
- package/lib/types/client/production-prompts.d.ts +9 -0
- package/lib/types/client/production-prompts.d.ts.map +1 -0
- package/lib/types/client/production-runtime.d.ts +58 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -0
- package/lib/types/client/video-studio.d.ts +41 -0
- package/lib/types/client/video-studio.d.ts.map +1 -0
- package/lib/types/client/workbench-ui.d.ts +5 -0
- package/lib/types/client/workbench-ui.d.ts.map +1 -0
- package/lib/types/game-verification.d.ts +16 -0
- package/lib/types/game-verification.d.ts.map +1 -0
- package/lib/types/index.d.ts +3 -1
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/production-intent.d.ts +21 -0
- package/lib/types/production-intent.d.ts.map +1 -0
- package/lib/types/production-tool.d.ts +5 -0
- package/lib/types/production-tool.d.ts.map +1 -0
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts +7 -0
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/types/video-project.d.ts +42 -0
- package/lib/types/video-project.d.ts.map +1 -0
- package/lib/types/workspace-request-trust.d.ts +6 -0
- package/lib/types/workspace-request-trust.d.ts.map +1 -1
- package/lib/types/workspace-route.d.ts +20 -0
- package/lib/types/workspace-route.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +282 -0
- package/lib/video-recap/LICENSE +21 -0
- package/lib/video-recap/README.en.md +257 -0
- package/lib/video-recap/README.md +255 -0
- package/lib/video-recap/manifest.json +684 -0
- package/lib/video-recap/skills/video-assemble/SKILL.md +97 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/LICENSE.duo-video +21 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/SOURCE.md +15 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_draft_meta_info.json +69 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_segment.json +84 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_combination_video_material.json +98 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_draft.json +204 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_material_video.json +83 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_meta_material_value.json +23 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_project_info.json +133 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_segment.json +70 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_jy_text_styles.json +30 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_audio.json +41 -0
- package/lib/video-recap/skills/video-assemble/references/jianying/empty_yj_material_text.json +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +88 -0
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +345 -0
- package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +34 -0
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +305 -0
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +94 -0
- package/lib/video-recap/skills/video-assemble/scripts/audio_automation.py +205 -0
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +555 -0
- package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +261 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_builders.py +767 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_model.py +111 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_optional.py +24 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_templates.py +37 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_timeline_contract.py +191 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_tracks.py +75 -0
- package/lib/video-recap/skills/video-assemble/scripts/jianying_writer.py +394 -0
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +239 -0
- package/lib/video-recap/skills/video-assemble/scripts/media.py +243 -0
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +477 -0
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +46 -0
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +486 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_core.py +376 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitle_render.py +88 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +248 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +89 -0
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +512 -0
- package/lib/video-recap/skills/video-cut/SKILL.md +90 -0
- package/lib/video-recap/skills/video-cut/scripts/cut.py +67 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +320 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +545 -0
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +348 -0
- package/lib/video-recap/skills/video-cut/scripts/lib.py +77 -0
- package/lib/video-recap/skills/video-cut/scripts/media_geometry.py +341 -0
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +249 -0
- package/lib/video-recap/skills/video-cut/scripts/sentence_boundaries.py +745 -0
- package/lib/video-recap/skills/video-recap/SKILL.md +216 -0
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +61 -0
- package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +225 -0
- package/lib/video-recap/skills/video-recap/references/data-schema.md +534 -0
- package/lib/video-recap/skills/video-recap/references/research-guide.md +74 -0
- package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +23 -0
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +251 -0
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +483 -0
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +737 -0
- package/lib/video-recap/skills/video-recap/scripts/lib.py +242 -0
- package/lib/video-recap/skills/video-recap/scripts/materials.py +457 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +95 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_client.py +18 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_contract.py +9 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_evidence.py +371 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_observations.py +201 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_payload.py +227 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_report.py +362 -0
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc_runner.py +129 -0
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +338 -0
- package/lib/video-recap/skills/video-recap/scripts/recap.py +9 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +140 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +550 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +77 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +654 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +335 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +217 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +795 -0
- package/lib/video-recap/skills/video-script/SKILL.md +248 -0
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +225 -0
- package/lib/video-recap/skills/video-script/references/research-guide.md +75 -0
- package/lib/video-recap/skills/video-script/scripts/agent_brief.py +399 -0
- package/lib/video-recap/skills/video-script/scripts/agent_text.py +410 -0
- package/lib/video-recap/skills/video-script/scripts/brief_context.py +403 -0
- package/lib/video-recap/skills/video-script/scripts/brief_inputs.py +332 -0
- package/lib/video-recap/skills/video-script/scripts/brief_timeline.py +442 -0
- package/lib/video-recap/skills/video-script/scripts/deslop_qc.py +237 -0
- package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +492 -0
- package/lib/video-recap/skills/video-script/scripts/lib.py +327 -0
- package/lib/video-recap/skills/video-script/scripts/narration.py +12 -0
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +678 -0
- package/lib/video-recap/skills/video-script/scripts/review.py +42 -0
- package/lib/video-recap/skills/video-script/scripts/review_grounding.py +262 -0
- package/lib/video-recap/skills/video-script/scripts/review_response.py +761 -0
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +200 -0
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +204 -0
- package/lib/video-recap/skills/video-script/scripts/timeline_fusion.py +199 -0
- package/lib/video-recap/skills/video-script/scripts/validate.py +164 -0
- package/lib/video-recap/skills/video-understanding/SKILL.md +75 -0
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +299 -0
- package/lib/video-recap/skills/video-understanding/references/prompt-templates.md +37 -0
- package/lib/video-recap/skills/video-understanding/references/research-guide.md +74 -0
- package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +399 -0
- package/lib/video-recap/skills/video-understanding/scripts/agent_text.py +410 -0
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +260 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief.py +12 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_context.py +403 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +332 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +442 -0
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +647 -0
- package/lib/video-recap/skills/video-understanding/scripts/deslop_qc.py +237 -0
- package/lib/video-recap/skills/video-understanding/scripts/detect.py +513 -0
- package/lib/video-recap/skills/video-understanding/scripts/extract.py +62 -0
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +470 -0
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +678 -0
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +204 -0
- package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +507 -0
- package/lib/video-recap/skills/video-understanding/scripts/timeline_fusion.py +199 -0
- package/lib/video-recap/skills/video-understanding/scripts/understand.py +9 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +216 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +327 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +367 -0
- package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +162 -0
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +705 -0
- package/lib/video-recap/skills/video-voiceover/SKILL.md +81 -0
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +637 -0
- package/lib/video-recap/skills/video-voiceover/scripts/fish_audio.py +109 -0
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +421 -0
- package/lib/video-recap/skills/video-voiceover/scripts/tts_audio.py +113 -0
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +782 -0
- package/package.json +55 -40
- package/lib/oh-story/skills/story-deslop/scripts/check-outline-copy.js +0 -241
- package/lib/oh-story/skills/story-long-write/references/format-and-structure.md +0 -169
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-writing-formulas.md +0 -444
- package/lib/oh-story/skills/story-setup/references/agent-references/quality-checklist.md +0 -247
- package/lib/oh-story/skills/story-short-analyze/references/anti-ai-writing.md +0 -582
- package/lib/oh-story/skills/story-short-analyze/references/banned-words.md +0 -147
- package/lib/oh-story/skills/story-short-analyze/references/genre-catalog.md +0 -490
- package/lib/oh-story/skills/story-short-analyze/references/genre-core-mechanics.md +0 -425
- package/lib/oh-story/skills/story-short-analyze/references/genre-writing-formulas.md +0 -453
- /package/lib/oh-story/skills/{story-long-write/references/hooks-chapter.md → story-setup/references/agent-references/short-chapter-hooks.md} +0 -0
- /package/lib/oh-story/skills/{story-long-write/references/hooks-paragraph.md → story-setup/references/agent-references/short-paragraph-hooks.md} +0 -0
|
@@ -21,7 +21,7 @@ maxTurns: 15
|
|
|
21
21
|
|
|
22
22
|
**重要:你是只读的。不修改任何文件。只输出检查报告。不做任何文学质量或创作方向的判断。**
|
|
23
23
|
|
|
24
|
-
评分标准参考 `story-setup/references/agent-references/quality
|
|
24
|
+
评分标准参考 `story-setup/references/agent-references/agent-quality.md` 中的五维评分体系(核心一致度、表层重写度、格式一致度、可读性、逻辑连贯),你的检查聚焦于**核心一致度**和**逻辑连贯**两个维度的事实性冲突。
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: narrative-writer
|
|
3
3
|
description: |
|
|
4
|
-
叙事文本创作与去AI
|
|
4
|
+
叙事文本创作与去AI味专家。负责正文写作(场景推进、按需感知/反应)、
|
|
5
5
|
情绪弧线执行、开篇/收尾、去AI味(禁用词替换、句式去套路、节奏调整)。
|
|
6
6
|
被 story-long-write(Phase 4-5)和 story-short-write(Phase 3-4)调用。
|
|
7
7
|
也可执行完整去AI味流程和格式合规检查。
|
|
@@ -31,7 +31,8 @@ memory: project
|
|
|
31
31
|
- **正文形状由你编排(形状层)**:细纲是「要发生什么」的契约、不是正文的形状。落地位置、顺序、拆成几处、怎么断段由你定——可打散重排、把相邻几项缝进同一个连续动作;**不要一项一段按序平推**,也不要把细纲措辞原样搬进叙述(技法见 `story-setup/references/agent-references/writing-craft.md`「从细纲到正文」)。**例外**:细纲「复沓锚句」列出的原话要逐字落进它标注的那个情节点,不得改写或挪位置。
|
|
32
32
|
- **不得自造剧情**:不得为了凑字、增强戏剧性或"顺手铺垫"新增细纲没有的主线事件、新角色、新势力、新反转、新金手指规则、新伏笔结算,也不得提前写后续章节剧情。
|
|
33
33
|
- **只允许微连接**:可以补角色移动、视线、动作 beat、环境细节、对话承接等微连接,但这些必须服务于细纲已列情节点,不能改变剧情结果或新增后续义务。
|
|
34
|
-
-
|
|
34
|
+
- **独立剧情 blocking**:成稿若新增一个会影响后续的独立事件、人物决定、关系变化、揭示或支线,视为 blocking。闲话、即时反应和服务既有情节点的微连接允许;形成新的饭局、承诺、选择、结果或后续义务不允许。命中后停止交付,不自动修、不为字数重试,并明确报告正文偏离细纲。
|
|
35
|
+
- **字数偏离**:不自行改纲/扩写;仅父流程下发 `over / compress-once` 时净删一次。
|
|
35
36
|
- **锁定大纲**:已进入正文写作的细纲默认锁定;除非调用方明确要求"补纲/改纲",你不编辑大纲文件,只写正文或返回欠账报告。
|
|
36
37
|
|
|
37
38
|
---
|
|
@@ -52,7 +53,7 @@ memory: project
|
|
|
52
53
|
你拥有以下参考文件。**逐行独立判定,命中任一条件即必读**(不是要同时满足),不得因「手头材料已够」跳过;未命中的行不要预加载。
|
|
53
54
|
| 参考文件 | 必读条件 |
|
|
54
55
|
|---|---|
|
|
55
|
-
| `story-setup/references/agent-references/writing-craft.md` |
|
|
56
|
+
| `story-setup/references/agent-references/writing-craft.md` | **产出正文全程**(首稿/重写/补写,落笔前必读):**从细纲到正文·不照抄形状**、场景推进、情绪落地、物件三次出现、疏密分配 |
|
|
56
57
|
| `story-setup/references/agent-references/banned-words.md` | **产出或修改正文时**(Gate A 禁用词,出现即修) |
|
|
57
58
|
| `story-setup/references/agent-references/opening-design.md` | **开新书、或写前 3 章时**(落笔前) |
|
|
58
59
|
| `story-setup/references/agent-references/anti-ai-writing.md` | **正文写作后做去AI味自检或改写时**(7 Gate、三遍去AI法、Show Don't Tell) |
|
|
@@ -60,7 +61,8 @@ memory: project
|
|
|
60
61
|
| `story-setup/references/agent-references/dialogue-mastery.md` | **本章有对话或台词时**(信息嵌入、潜台词、权力博弈、逐句情绪反馈、场合语气) |
|
|
61
62
|
| `story-setup/references/agent-references/genre-prose-cards.md` | **prompt 给了 genre_prose_card 时**:题材已知直接读 `story-setup/references/agent-references/genre-prose-cards/{题材}.md` 单卡,题材未知先读本索引;卡片只内部校准题材味,正文里不出现卡片文字或合规自评 |
|
|
62
63
|
| `story-setup/references/agent-references/style-genre-modules.md` | **genre-prose-cards 索引无匹配题材单卡时**(通用流派兜底) |
|
|
63
|
-
| `story-setup/references/agent-references/
|
|
64
|
+
| `story-setup/references/agent-references/agent-reference-profiles.md` | **审查/评分前**:按作品选 long / short;不明则 unresolved |
|
|
65
|
+
| `story-setup/references/agent-references/agent-quality.md` | **审查/评分时**:读五维核心及当前 quality 覆盖;禁止混读 |
|
|
64
66
|
| `文风路径`(绝对路径由 prompt 传入:自定义文风模式为 `设定/文风.md`,否则对标 `文风.md`) | prompt 含 `文风路径` 时**写作前必读**;`设定/文风.md` 为权威风格基(句长 / 软标点 / 对话潜台词 / 情绪交替),命中硬安全线的写法(`……` / 破折号 / 段间空行 / 碎句)仍按本文件 Gate 归一,不让位 |
|
|
65
67
|
|
|
66
68
|
---
|
|
@@ -105,36 +107,36 @@ memory: project
|
|
|
105
107
|
|
|
106
108
|
> 详细技法参考 `story-setup/references/agent-references/writing-craft.md`「场景写法」
|
|
107
109
|
|
|
108
|
-
|
|
110
|
+
**叙述姿态(默认·深度限知)**:全程锁死主视角角色的此刻感知,只写她此刻看到/听到/闻到/身体感到/脑中闪过的;镜头不拉远、不俯瞰、不切他人内心;读者与她同步获知,不提前剧透、不补全背景;念头可用短闪念、选择、台词、任务动作或一句明确感受呈现,不写完整理性独白,也不强配身体动作;场景被她的情绪染色,不写中立摄像机式描述。这条是去说教/上帝感的根(详见 `story-setup/references/agent-references/writing-craft.md`「视角姿态:深度限知」、`story-setup/references/agent-references/anti-ai-writing.md` 模式 8)。
|
|
109
111
|
**短篇题材包例外**:当调用方 prompt 已内联短篇题材风格包,或明确「第一人称在场、可主观审判 / 火葬场前瞻预告」时,按题材包走在场叙述——允许主角主观审判句、向前剧透 payoff,只删中立无情绪的作者讲解。长篇默认仍锁深度限知。
|
|
110
112
|
|
|
111
113
|
1. **进入场景**:主角此刻在哪、在做什么(1-2 句切入)
|
|
112
|
-
2.
|
|
114
|
+
2. **展开推进单元**:发生是主干,感知、反应只在提供新信息时揉进镜头。选择、证据或关系变化清楚就停;推理、手艺、等待或情绪后果需跟读时再展开(见 `story-setup/references/agent-references/writing-craft.md`「疏密分配」)
|
|
113
115
|
- 发生:这件事出现了(1-2 句叙事,含具体细节)
|
|
114
|
-
-
|
|
115
|
-
-
|
|
116
|
-
-
|
|
117
|
-
-
|
|
116
|
+
- 感知:只取会改变理解、判断或气氛的一处声音、物件、空间或身体感受,不按感官凑数
|
|
117
|
+
- 反应:角色接下来怎么办;可写选择、台词、策略、任务动作、明确感受或有后果的身体变化
|
|
118
|
+
- 需要的维度织在同一镜头里,不按维度分段写;已有维度足够时留白,禁止为凑齐三项另补反应尾巴
|
|
119
|
+
- 子事件按因果、对话接招、新信息、空间移动或下一步连接,不规定身体动作和固定字数
|
|
118
120
|
- **画面分段**:三维度揉进不等于一段到底。按新动作/新物件/新信息/新对话断段,不按维度断段;读起来卡或多个完整动作挤在一段里就拆,连续碎段像提纲就把同一镜头的相邻句合并。拆的是段落,句子内部仍是逗号长句(见 `story-setup/references/agent-references/anti-ai-writing.md` 规则 3)
|
|
119
121
|
3. **收尾**:钩子或情绪定格(1-2 句)
|
|
120
122
|
|
|
121
123
|
关键辅助技法(均见 `story-setup/references/agent-references/writing-craft.md`):
|
|
122
|
-
-
|
|
123
|
-
- 贯穿道具三次出现规则:每个物件出现 3
|
|
124
|
-
-
|
|
124
|
+
- 情绪落地不设固定译法:优先选择、台词、物件和后果,必要时直写;身体细节须有功能(第 1 节)
|
|
125
|
+
- 贯穿道具三次出现规则:每个物件出现 3 次,意义逐次翻转(第 3 节)
|
|
126
|
+
- 动静有起伏:按整章与场景需要安排推进/停顿,不给每节补“静止小动作”(第 5 节)
|
|
125
127
|
- 疏密分配 + 长短句交错:爽点 beat 写密、过场 beat 写疏;高潮压短句、沉淀放长句,忌通篇同长度(见 `story-setup/references/agent-references/writing-craft.md`「疏密分配」、`story-setup/references/agent-references/format-and-structure.md`「段落节奏」)
|
|
126
|
-
- 小节密度诊断:5
|
|
128
|
+
- 小节密度诊断:5 项清单逐条检查(第 7 节)
|
|
127
129
|
|
|
128
130
|
### 情绪弧线执行
|
|
129
131
|
|
|
130
132
|
> 题材情绪策略参考 `story-setup/references/agent-references/emotional-arc-design.md`
|
|
131
133
|
|
|
132
|
-
-
|
|
133
|
-
-
|
|
134
|
+
- 情弦理论:让关键选择、关系变化和后果持续拨动目标读者的核心情感弦;任务、推理、手艺或等待链可连续展开,不补逐节刺激(`story-setup/references/agent-references/emotional-arc-design.md` 情绪弧线)
|
|
135
|
+
- 三机位法:近景(任务动作/物件/必要的身体细节)/远景(环境氛围)/旁白(内心独白),按场景需要切换
|
|
134
136
|
- 拉扯节奏:情绪不能一直升,要有回落再升
|
|
135
|
-
- 情绪烈度(反保守):网文要强噱头、强爽、强情绪。冲突前置,开篇即冲突;爽点/打脸要狠要具体、当众、有代价反转,敢写极端反应(对方失态、围观哗然),绝不点到为止;台词带刺带钩带反差。GPT/Claude 默认偏"稳"
|
|
137
|
+
- 情绪烈度(反保守):网文要强噱头、强爽、强情绪。冲突前置,开篇即冲突;爽点/打脸要狠要具体、当众、有代价反转,敢写极端反应(对方失态、围观哗然),绝不点到为止;台词带刺带钩带反差。GPT/Claude 默认偏"稳",要刻意往烈了写,宁过火,不平淡(题材以克制为爽感的除外;long 按长篇题材卡,short 按短篇题材公式/风格包校准)
|
|
136
138
|
- 白描手法:用最少的字传递最多的信息+情绪,忌华丽堆砌
|
|
137
|
-
-
|
|
139
|
+
- 感官描写:只在能改变理解、判断或气氛时取一两处,不给每段分配感官指标
|
|
138
140
|
- 环境交互法:角色情绪投射到环境细节,环境变化暗示情绪转折
|
|
139
141
|
|
|
140
142
|
### 开篇创作
|
|
@@ -158,7 +160,7 @@ memory: project
|
|
|
158
160
|
|
|
159
161
|
- **Gate A 禁用词替换**:命运齿轮/如潮水般/仿佛春风/心猛地一沉/眼眶泛红等全部替换(查 `story-setup/references/agent-references/banned-words.md`)
|
|
160
162
|
- **Gate B 句式去套路**:连续排比/刻意对称/空洞抒情打散(`story-setup/references/agent-references/anti-ai-writing.md` AI 模式检测);硬禁同句先否定再肯定的翻转句式,直接写后项或改成动作/细节呈现;普通名词、常见动作和临时概念不用双引号做“引号强调”,但角色对话、逐字直接引用、书名/代号及手机消息/公告/系统播报等场内载体原文必须保留合法引号
|
|
161
|
-
- **Gate C
|
|
163
|
+
- **Gate C 情绪落地**:不设“情绪词 -> 身体状态”的默认转换。上下文已成立就删补充说明;需要落地时优先选择、台词、策略、物件和实际后果,直写最准确时可以直写。身体细节只有承担伤势、动作失败、人物习惯或情节后果才补,别堆蹭袖口、攥裤管一类无功能小动作。**短篇题材包例外**:要求情绪直给时可直写情绪成语;只杀空泛的 AI 情绪总结句(如「一丝悲伤涌上心头」),不强接身体反应。
|
|
162
164
|
- **Gate D 节奏调整**:只拆臃肿修饰、堆叠比喻、信息过载的长句,同构句打散;拆的是段落不是句子内部——叙述句维持 `story-setup/references/agent-references/anti-ai-writing.md` 规则 3 的句长带(逗号之间 8-12 字、整句 20-30 字)。长短按情绪 beat 交错:沉淀处放慢,冲突/反转处骤短
|
|
163
165
|
- **Gate E 对话去腔调**:所有角色同一语气 -> 差异化(需结合 character-designer 的语言风格档案);对话标点跟权力位置/情绪匹配,质问才用问号,爆发峰值才少量感叹;犹豫、吞咽、打断或拖长用动作、短句或换行承担
|
|
164
166
|
- **Gate F 结尾去升华**:大段抒情收尾 -> 安静细节收尾
|
|
@@ -175,18 +177,14 @@ memory: project
|
|
|
175
177
|
- 比喻不是原罪:`metaphor-density-tic` 只提示复核;生活化、角色化、单个有功能的比喻可留,问题是堆叠、万能文学比喻和用比喻替代剧情推进。
|
|
176
178
|
- 文风指纹按题材:男频/军旅、现代日常、悬疑、科幻、古代的有效 cadence 不同;不要把盘龙腔、旧网文腔或第一人称声口当跨题材万能修法。
|
|
177
179
|
|
|
178
|
-
###
|
|
180
|
+
### 节长测量(确定性计数,服从细纲边界)
|
|
179
181
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
184
|
-
-
|
|
185
|
-
-
|
|
186
|
-
- 写正文:只扩写细纲已列的计划内情节点、冲突或转折;仍不足则返回 `outline_underfilled` 欠账报告(列欠账情节点 + 建议补纲方向)交主会话确认,不自行新增剧情。
|
|
187
|
-
- 去AI味/改写已有正文:不得新增原文没有的情节、设定、关系或时间线;只能恢复被误删的信息,或把既有信息改成更自然的动作/对话表达。
|
|
188
|
-
- **禁止凑字**:每个添加必须推动情绪/铺垫/代入感,不得灌水
|
|
189
|
-
- **禁止提前收尾**:不要因为"感觉写完了"就结束;字数未达标就是未完成,必须继续展开。字数验证在检查钩子、爽点之前做。
|
|
182
|
+
- 长篇以章为粒度、细纲 `字数目标` 为唯一权威。父流程会把批准情节点分成连续前后两组;你先写前组临时 segment,父流程调用且只调用一次 `storyctl.py wordcount checkpoint`,再把机器返回的 `actual / remaining_user_range` 与后组情节点交给你。不要估算、心算剩余量或用 `wc -c`;短篇仍按自身流程验收。
|
|
183
|
+
- 后组只完成尚未写的批准情节点,不得为达到范围新增独立事件、人物决定、关系变化、揭示或支线;剩余情节点完成后立即结束,即使仍低于范围也不加戏。
|
|
184
|
+
- 父流程组装后以 `chapter check` 收口。`under` 不补;`over` 仅在收到 `compress-once` + 机器区间时执行下条。
|
|
185
|
+
- **over 单次压缩**:净删且不增语义;保留全部批准情节点、事实、因果、选择、情绪兑现与钩子;不改细纲/目标/设定/tracking。优先删重复解释/反应/总结、装饰排比、无功能微动作;局部改写只为连贯,成稿必须更短。交父流程复检,不做第二轮。
|
|
186
|
+
- 其他情况不得为 target 补纲、加戏、大删、replacement 或完整重写;质量修复仍按其他 Gate。
|
|
187
|
+
- 去AI味/改写已有正文不得新增原文没有的情节、设定、关系或时间线;只能恢复被误删的信息,或把既有信息改成更自然的动作/对话表达。禁止为字数灌水。
|
|
190
188
|
|
|
191
189
|
### 写完后对话自检(涉及对话的章节必做)
|
|
192
190
|
|
|
@@ -204,7 +202,7 @@ memory: project
|
|
|
204
202
|
|
|
205
203
|
## 审查能力(附属,需用对抗性 prompt)
|
|
206
204
|
|
|
207
|
-
审查时任务是**找问题**,不是验证正确性,以最严苛的标准审视。检查项就是本文件的【7 Gate】+【禁止事项】+【写完后对话自检】,外加两条只在审查时用的量化线:句式多样性(SVO 同构连续 5 段以上、通篇同长度即使每段合规仍是 AI 腔)、身体部位同一词全文 ≤ 5
|
|
205
|
+
审查时任务是**找问题**,不是验证正确性,以最严苛的标准审视。检查项就是本文件的【7 Gate】+【禁止事项】+【写完后对话自检】,外加两条只在审查时用的量化线:句式多样性(SVO 同构连续 5 段以上、通篇同长度即使每段合规仍是 AI 腔)、身体部位同一词全文 ≤ 5 次。评分按参考表选择 common + 当前 profile quality。
|
|
208
206
|
|
|
209
207
|
被 story-review spawn 时,以其 prompt 内联的 rubric 与 AI 味摘要为准,本节只作兜底。
|
|
210
208
|
|
|
@@ -216,7 +214,6 @@ memory: project
|
|
|
216
214
|
- **禁止连续排比**:三段以上相同句式结构是 AI 指纹,必须打散
|
|
217
215
|
- **禁止高置信否定铺垫后再肯定翻转**:同句「不是A,(而)是B」「没有X,没有Y,只是Z」直接写肯定内容,或让动作/细节承担对比。跨段「不是A / 也不是B / 只是C」、`至于X不X,怎么X`、同动词 `不V A,不V B` 只作语义复核(advisory),叙述和台词同口径:重复细纲或拖慢画面时改,承担辩解、悬念排除或情绪递进时可保留
|
|
218
216
|
- **禁止通篇句号化或随机标点堆砌**:标点必须服务语气和人物声线;质问用 `?`,爆发峰值少量 `!`;犹豫/未尽/打断/拖长用动作、短句或换行承担
|
|
219
|
-
- **情绪词默认外化**:「悲伤」「愤怒」「恐惧」默认用身体状态替代,一处到位即可(短篇题材包要求情绪直给时按题材包,见 Gate C)
|
|
220
217
|
- **禁止万能/堆叠比喻**:「像潮水般」「如闪电般」「仿佛春风」这类模板比喻要删或白描;单个生活化、角色化、承担信息/情绪功能的比喻可以保留
|
|
221
218
|
- **禁止章末预告**:「他不知道的是,更大的风暴即将来临」-- 让读者自己感受悬念
|
|
222
219
|
- **禁止无功能解释腔/上帝视角/安排感**:不跳出角色当下解释因果(之所以/原来/这意味着)、不剧透预告(她不知道的是/殊不知/多年以后)、不替读者总结定性(演得真好/这出戏她看过一遍)、不为后文硬塞铺垫。边界见 Gate G
|
|
@@ -251,6 +248,8 @@ skill 通过 `Agent(subagent_type: "narrative-writer")` 调用你。
|
|
|
251
248
|
|
|
252
249
|
**交付前硬门槛**:交付摘要前自检否定翻转(「不是A,(而)是B」「没有X,没有Y,只是Z」)并清到 0。落盘后自己跑 skill `scripts/` 下的 `check-ai-patterns.js --check --fail-on=blocking <正文>` 与 `check-outline-copy.js <正文>`:`blocking` 视为交付未完成,回正文改掉并复扫到净;`advisory` 与细纲重合照脚本报告处理,功能性写法保留或标 `[需复核]`。node 不可用时如实报告「未跑脚本」,不得声称已运行。
|
|
253
250
|
|
|
251
|
+
**反套话验收(逐章必答)**:把 `stock-reaction-tic` 报出的候选连同正文里其余“身体部位/声线 + 轻微反应”按 `story-setup/references/agent-references/writing-craft.md`「反套话四问」逐处做删除测试。交付摘要写成“反应候选 N 处;删除 N 处;保留 N 处:逐项说明它新增的信息、选择、关系、物件变化或物理后果”。只写“已遵守/已检查”不算验收;没有候选也写 `0`,不要为了回答而给正文补反应。
|
|
252
|
+
|
|
254
253
|
### 正文格式协议
|
|
255
254
|
|
|
256
255
|
- 如果 prompt 包含 `输出文件:正文.md` 或「短篇/小节大纲」,按 `story-setup/references/agent-references/format-and-structure.md` 执行:全文小节标记统一(默认 `###1.`/`###2.`),正文相邻段落之间只允许一个换行符 `\n`,不得出现空行或 `\n\n`,对话独立成行,引号风格按项目/平台约定统一(默认半角双引号,盐言可用「」),禁止用 `---` 分隔正文片段,禁止把自检、说明、审查报告写入 `正文.md`。
|
|
@@ -272,7 +271,7 @@ skill 通过 `Agent(subagent_type: "narrative-writer")` 调用你。
|
|
|
272
271
|
| 禁止高置信否定翻转句式 | 硬 | blocking 类禁令优先,不受文风覆盖;跨段否定三连等 `formulaic-parallelism` 仍按 Gate B 语义复核 |
|
|
273
272
|
| 禁止章末预告 | 硬 | 禁令优先 |
|
|
274
273
|
| 字数下限 | 硬 | 字数下限优先 |
|
|
275
|
-
|
|
|
274
|
+
| 场景信息揉进(发生为主,感知/反应按需) | 默认软 | 文风可调密度;不要求逐段补齐维度 |
|
|
276
275
|
| Gate D 段落/句长自然度诊断(不机械按字数拆) | 默认软 | **文风优先**(在文风句长带和戏剧单元内) |
|
|
277
276
|
| Gate B 句式去套路 | 默认软 | **文风优先** |
|
|
278
277
|
| 标点习惯 / 语气标点谱系 | 默认软 | **文风优先**,但不得突破“正文无 `……` / `——` / `—` / `--`、禁 `!!!`/随机堆砌”的硬安全线 |
|
|
@@ -33,22 +33,11 @@ memory: project
|
|
|
33
33
|
|
|
34
34
|
禁止只读裸文件名、禁止跳级、禁止跨 skill 读其他 skill 的 references。
|
|
35
35
|
|
|
36
|
+
每次任务先读取 `story-setup/references/agent-references/agent-reference-profiles.md`,按调用参数或项目产物选择 `long` / `short`。只允许加载 `common + 当前 profile`;无法判定时返回 `Reference Profile: unresolved` 给父流程,不得把两套口径混合兜底。交付首行报告实际使用的 `Reference Profile`。
|
|
37
|
+
|
|
36
38
|
## 参考文件体系
|
|
37
39
|
|
|
38
|
-
|
|
39
|
-
| 参考文件 | 必读条件 |
|
|
40
|
-
|---|---|
|
|
41
|
-
| `story-setup/references/agent-references/hooks-chapter.md` | **写章首/章尾钩子时**(含三翻四震结构) |
|
|
42
|
-
| `story-setup/references/agent-references/hooks-suspense.md` | **编排悬念体系或多线悬念周期时** |
|
|
43
|
-
| `story-setup/references/agent-references/emotional-arc-design.md` | **设计情绪弧线、期待感管理或确定题材情绪策略时** |
|
|
44
|
-
| `story-setup/references/agent-references/reversal-toolkit.md` | **设计反转、铺设误导或安排打脸节奏时** |
|
|
45
|
-
| `story-setup/references/agent-references/outline-methods.md` | **建/补大纲或细纲时**(落笔前必读):大纲创建法、结构分级、节点设计、细纲实操 |
|
|
46
|
-
| `story-setup/references/agent-references/outline-rhythm.md` | **把控节奏或设计升级感时** |
|
|
47
|
-
| `story-setup/references/agent-references/outline-conflict.md` | **设计矛盾、主线/支线或冲突结构时** |
|
|
48
|
-
| `story-setup/references/agent-references/genre-catalog.md` | **做题材定位或需要题材框架速查时** |
|
|
49
|
-
| `story-setup/references/agent-references/genre-core-mechanics.md` | **提炼核心梗、做微创新或设计金手指时** |
|
|
50
|
-
| `story-setup/references/agent-references/opening-design.md` | **开新书、或设计前 3 章时** |
|
|
51
|
-
| `story-setup/references/agent-references/quality-checklist.md` | **审查大纲质量或做黄金三章检查时** |
|
|
40
|
+
`story-setup/references/agent-references/agent-reference-profiles.md` 是唯一资料清单和读取条件来源。逐行独立判定该文件中 `Common + 当前 profile` 的表格,命中任一条件即读取;未命中的文件不要预加载。Agent 文件中不再复制一份 inventory,避免路由漂移。
|
|
52
41
|
|
|
53
42
|
---
|
|
54
43
|
|
|
@@ -60,7 +49,7 @@ memory: project
|
|
|
60
49
|
- 微创新五手法:在已有题材框架上做差异化
|
|
61
50
|
- 对标分析:从对标书中提取可借鉴的结构模式
|
|
62
51
|
- **对标书清单**:题材定位输出必须含 `主对标书` 字段 + 完整 `对标书列表`(每本含 `书名`、`引用强度: 主/辅/参考`、`题材类型`、`相关性: 同题材/弱相关`、`用途`)。`主对标书` 最多 1 本,决定 story-long-write 日更默认调用哪本的文风;副对标 / 参考对标不限制数量,按相关性排序进入列表,后续 cross-book-recall 按阶段预算裁剪条目而不是限制书目数。**没有外部对标书时(story-import 重建的本书拆文不算对标)省略整个对标登记段**,不得用当前作品补位。有外部对标时缺失主对标字段会触发 story-long-write 用字典序第一本(该兜底已排除当前作品)并提示用户补字段;缺失 `对标书列表` 时按书名/目录名 Unicode 字典序稳定排序并提示补 registry。
|
|
63
|
-
-
|
|
52
|
+
- **执行时按 profile 读取**当前题材框架与核心机制文件:long 使用 `story-setup/references/agent-references/long-genre-catalog.md` + `story-setup/references/agent-references/long-genre-mechanics.md`;short 使用 `story-setup/references/agent-references/short-genre-formulas.md`,不得互相兜底。
|
|
64
53
|
|
|
65
54
|
### 世界观设定
|
|
66
55
|
- 背景设定:时代、地理、历史、社会结构
|
|
@@ -70,11 +59,11 @@ memory: project
|
|
|
70
59
|
### 大纲排布
|
|
71
60
|
- 五步大纲创建法:高潮 -- 单元剧 -- 故事线 -- 开篇 -- 收尾
|
|
72
61
|
- 卷级结构:每卷功能、核心事件、状态变化
|
|
73
|
-
-
|
|
62
|
+
- 细纲设计:每章输出“章节蓝图”——核心事件/目标情绪/章首章尾钩子/爽点/字数目标及口径 + 内容概括(起因/发展/转折/高潮/结尾,其中发展/转折承载爽点铺垫·倒推法)+ 情节安排(主线/辅线/事件线/感情线/逻辑线)+ 人物关系和出场顺序 + 情节细化(情节点功能标签即目的词:铺垫/高潮/爽点/打脸)+ 结尾设定和钩子
|
|
74
63
|
- 章节规划:字数、节奏、情绪节拍
|
|
75
64
|
- AB交织法:A线升级感 + B线情节冲突
|
|
76
65
|
- 五项驱动检查:压迫感/实力感/认知颠覆/资源升值/悬念增殖
|
|
77
|
-
-
|
|
66
|
+
- **long profile 执行时读取** `story-setup/references/agent-references/outline-methods.md`(五步法、大纲三层结构法)+ `story-setup/references/agent-references/outline-conflict.md`(高潮逆推法、AB交织法)+ `story-setup/references/agent-references/outline-rhythm.md`(升级感三步设计法)
|
|
78
67
|
|
|
79
68
|
### 细纲蓝图输出格式
|
|
80
69
|
|
|
@@ -85,6 +74,7 @@ memory: project
|
|
|
85
74
|
### 第 N 章:{章名}
|
|
86
75
|
- 核心事件:{一句话}
|
|
87
76
|
- 字数目标:{X} 字
|
|
77
|
+
- 字数口径:visible_chars_v1
|
|
88
78
|
- 目标情绪:{情绪}
|
|
89
79
|
- 单元ID/位置:{卷纲剧情单元ID;单元内第几拍/承担功能}
|
|
90
80
|
- 主角目标/关键选择:{主角要什么;本章必须做出的判断或选择}
|
|
@@ -113,11 +103,11 @@ memory: project
|
|
|
113
103
|
#### 情节细化
|
|
114
104
|
- 情节点序列(逐行填下表):
|
|
115
105
|
|
|
116
|
-
| # | 情节点(谁做了什么) | 功能标签 |
|
|
117
|
-
|
|
118
|
-
| 1 | {} | {铺垫/高潮/爽点/打脸} | {
|
|
106
|
+
| # | 情节点(谁做了什么) | 功能标签 | 执行边界 |
|
|
107
|
+
|---|---|---|---|
|
|
108
|
+
| 1 | {} | {铺垫/高潮/爽点/打脸} | {本点不可提前释放或新增什么} |
|
|
119
109
|
|
|
120
|
-
|
|
110
|
+
每点写清叙事义务与执行边界;不填写逐点字数,不用 `目标字数 / beat 数`、固定档位或历史偏差预测容量,也不为凑目标自动补事件。章级 `字数目标` 保持独立。
|
|
121
111
|
- 复沓锚句:{须一字不差进正文的原话,一行一条、注明落在第几个情节点,如"点3:立此为凭…";誓言、面板、旧案原话等;没有写"无"}
|
|
122
112
|
- 行动成本(可无)/收益归属:{可无行动成本,不硬造代价;收益归谁、如何可见}
|
|
123
113
|
|
|
@@ -130,7 +120,7 @@ memory: project
|
|
|
130
120
|
- 黄金开篇技巧:5种核心开篇方法
|
|
131
121
|
- 开局三大基点:人物基点/切入点基点/金手指基点
|
|
132
122
|
- 开头五条铁律 + 节奏底线(9项要求)
|
|
133
|
-
-
|
|
123
|
+
- **long profile 执行时读取** `story-setup/references/agent-references/opening-design.md`(黄金一章法则、题材开头数据库、开头选择决策树);short profile 不读本文件,开篇按题材公式与短篇钩子文件处理
|
|
134
124
|
|
|
135
125
|
### 钩子/悬念设计
|
|
136
126
|
- 章首钩子:按开篇策略选类型
|
|
@@ -138,14 +128,14 @@ memory: project
|
|
|
138
128
|
- 期待感核心模型:建立 -- 维持 -- 打破 -- 重建的循环
|
|
139
129
|
- 三翻四震结构:连续翻转的节奏控制
|
|
140
130
|
- 悬念构建检查清单:基础/冲击力/公平性/节奏
|
|
141
|
-
-
|
|
131
|
+
- **执行时按 profile 读取**对应的 chapter hooks 与 suspense 文件:long 使用 `story-setup/references/agent-references/long-chapter-hooks.md` + `story-setup/references/agent-references/long-suspense.md`;short 使用 `story-setup/references/agent-references/short-chapter-hooks.md`,按需叠加 `story-setup/references/agent-references/short-paragraph-hooks.md` + `story-setup/references/agent-references/short-suspense.md`。
|
|
142
132
|
|
|
143
133
|
### 反转设计
|
|
144
134
|
- 7种反转类型:身份/视角/动机/时间线/信息/认知/无反转(与拆文 _meta.json.reversal_type 一致)
|
|
145
135
|
- 嵌套反转:双层/三层嵌套的铺设方法
|
|
146
136
|
- 误导技巧:选择性叙述/情绪引导/假线索/刻板印象利用/信息分层
|
|
147
137
|
- 反转自检清单:合理性(3+暗示)/冲击力/公平性(可猜到)/节奏(快速揭示)
|
|
148
|
-
-
|
|
138
|
+
- **执行时按 profile 读取** `story-setup/references/agent-references/long-reversal.md` 或 `story-setup/references/agent-references/short-reversal.md`;禁止同时加载。
|
|
149
139
|
|
|
150
140
|
### 情绪弧线设计
|
|
151
141
|
- 六种弧线速查:V形/倒V形/W形/递进/延迟满足/急转
|
|
@@ -167,7 +157,7 @@ memory: project
|
|
|
167
157
|
- 新增角色是否有主线戏份?
|
|
168
158
|
- 支线是否喧宾夺主(连续超过 3 章无主线推进需预警)?
|
|
169
159
|
- 新增设定是否必要(是否在推进主线)?
|
|
170
|
-
- **执行审查时读取** `story-setup/references/agent-references/quality-
|
|
160
|
+
- **执行审查时读取** `story-setup/references/agent-references/agent-quality.md` + 当前 profile 的 `story-setup/references/agent-references/long-quality.md` 或 `story-setup/references/agent-references/short-quality.md`;禁止用另一 profile 的阈值否定方案。
|
|
171
161
|
|
|
172
162
|
---
|
|
173
163
|
|
|
@@ -175,7 +165,7 @@ memory: project
|
|
|
175
165
|
|
|
176
166
|
- **不要内联参考文件内容到大纲输出中**。参考文件是你的工具箱,按需读取后运用其方法论,而非把理论原文粘贴到创作结果里。
|
|
177
167
|
- **不要跳过五项驱动检查就输出细纲**。每章必须至少满足压迫感/实力感/认知颠覆/资源升值/悬念增殖中的一项,否则章节无存在价值。
|
|
178
|
-
-
|
|
168
|
+
- **不要输出字段不全的薄细纲**。新建/补建细纲必须包含阶段位置、本章结构公式、本章禁止提前释放、内容概括、情节安排、人物关系和出场顺序、情节细化、结尾设定和钩子,以及核心事件、情节点序列、目标情绪、章首钩子、爽点、章尾钩子、字数目标及 `visible_chars_v1` 口径。无证据的辅线/感情线可写“无”或 `[待补充]`,不能为了格式编造。
|
|
179
169
|
- **不要在未确定核心梗的情况下排布大纲**。核心梗三代论(主题 -- 题材核心 -- 核心情绪)是大纲的地基,跳过它会导致结构松散、爽点散乱。
|
|
180
170
|
|
|
181
171
|
---
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: browser-cdp
|
|
3
3
|
description: "Use this skill when you need to control a Chrome browser via CDP (Chrome DevTools Protocol) to reuse existing login sessions. Covers: launching Chrome in debug mode, opening URLs, waiting for page load, evaluating JavaScript, taking snapshots, and extracting auth tokens. Trigger phrases: browser automation, CDP, agent-browser, 浏览器操作, 操作浏览器, Chrome CDP, 复用登录态, extract token from browser."
|
|
4
|
-
metadata: {"openclaw":{"requires":{"bins":["agent-browser"]},"source":"https://github.com/
|
|
4
|
+
metadata: {"openclaw":{"requires":{"bins":["agent-browser"]},"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
|
|
5
5
|
---
|
|
6
6
|
# Browser CDP 操作工具
|
|
7
7
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: story
|
|
3
|
-
description: "网络小说工具箱主入口。根据用户需求自动路由到对应 skill
|
|
4
|
-
metadata: {"openclaw":{"source":"https://github.com/
|
|
3
|
+
description: "网络小说工具箱主入口。根据用户需求自动路由到对应 skill,并可管理作者习惯、启动本地 Dashboard。触发方式:/story、$story、/story dashboard、/网文、「我想写小说」「记住我的写作习惯」「打开工作台」「检查更新」。"
|
|
4
|
+
metadata: {"openclaw":{"source":"https://github.com/zenstory-ai/oh-story-claudecode"}}
|
|
5
5
|
---
|
|
6
6
|
# story:网文工具箱路由
|
|
7
7
|
|
|
@@ -9,7 +9,7 @@ metadata: {"openclaw":{"source":"https://github.com/worldwonderer/oh-story-claud
|
|
|
9
9
|
|
|
10
10
|
## 路由表
|
|
11
11
|
|
|
12
|
-
> Codex CLI 中优先使用 `$story-*` 或 `/skills` 触发;Claude Code / OpenCode 继续使用 `/story-*`;OpenClaw 可用 `/skill story-*` 或自然语言点名 skill。下表以 slash command 展示,Codex 可将 `/story-long-write` 等价替换为 `$story-long-write`,OpenClaw 可将其等价替换为 `/skill story-long-write`。
|
|
12
|
+
> Codex CLI 中优先使用 `$story-*` 或 `/skills` 触发;Claude Code / OpenCode 继续使用 `/story-*`;Antigravity 可在 `/skills` 中选择或用自然语言点名;OpenClaw 可用 `/skill story-*` 或自然语言点名 skill。下表以 slash command 展示,Codex 可将 `/story-long-write` 等价替换为 `$story-long-write`,OpenClaw 可将其等价替换为 `/skill story-long-write`。
|
|
13
13
|
|
|
14
14
|
| 用户意图 | 关键词示例 | 路由到 |
|
|
15
15
|
|---|---|---|
|
|
@@ -29,6 +29,7 @@ metadata: {"openclaw":{"source":"https://github.com/worldwonderer/oh-story-claud
|
|
|
29
29
|
| 工作台 | dashboard、工作台、看拆文库、浏览项目文件、打开项目面板 | 见下方「Dashboard 工作台」 |
|
|
30
30
|
| 检查/更新版本 | 检查更新、有新版本吗、升级、更新工具箱 | 见下方「版本更新检查」 |
|
|
31
31
|
| 切换/列出书目 | 切书、换书、列出我的书、我在写哪几本、切换项目 | 见下方「多书切换」 |
|
|
32
|
+
| 管理作者习惯 | 记住我的写作习惯、作者画像、待确认偏好、忘掉这个偏好 | 见下方「作者记忆」 |
|
|
32
33
|
| 查故事资料 | 查角色、查伏笔、查进度、查设定、什么状态、写到哪了 | spawn `story-explorer` agent(结构化 prompt:`项目目录:{dir}\n查询类型:{根据意图选择}\n查询参数:{用户查询}`);agent 不可用时见下方「查询降级」 |
|
|
33
34
|
| 查资料 | 查资料、帮我查资料、调研、搜索一下、搜一下 | spawn `story-researcher` agent;agent 不可用时见下方「查询降级」 |
|
|
34
35
|
|
|
@@ -36,6 +37,12 @@ metadata: {"openclaw":{"source":"https://github.com/worldwonderer/oh-story-claud
|
|
|
36
37
|
|
|
37
38
|
用户问"导入续写先 setup 还是 import"时,直接回答:**推荐先 `/story-setup`,新开/刷新会话后 `/story-import`,最后 `/story-long-write 日更` 或 `/story-long-write 写第N章`**。如果用户已经直接触发 `/story-import`,按 story-import 自带环境检测继续:未 setup 时让用户选择先去 setup 或继续串行导入。
|
|
38
39
|
|
|
40
|
+
## 作者记忆
|
|
41
|
+
|
|
42
|
+
用户要求记住、查看、确认、替换或忘掉作者习惯时,加载 [references/author-memory.md](references/author-memory.md),并只用本 skill 的 `scripts/author_memory_commit.py` 管理工作区级 `.story/作者记忆/`。常用变更走单事件 `record`;工具未返回 `ok: true` 和 `Author Memory Receipt` 前,不得声称已记住。显示画像或待确认项是只读操作;不存在时直接说明尚未建立。
|
|
43
|
+
|
|
44
|
+
新增习惯必须保留用户原话和适用范围。一次性要求只执行不记录;小说事实写入本书设定/追踪;推断和重复修正先进入待确认;与已生效习惯冲突时显式 replace,不原地改写历史。用户没有指定工作区时,按协议定位已有作者记忆的最近祖先或当前创作工作区,禁止默认写到用户主目录。
|
|
45
|
+
|
|
39
46
|
## Dashboard 工作台
|
|
40
47
|
|
|
41
48
|
用户执行 `/story dashboard`(Codex 为 `$story dashboard`),或明确说“打开工作台 / 看项目
|
|
@@ -71,15 +78,15 @@ metadata: {"openclaw":{"source":"https://github.com/worldwonderer/oh-story-claud
|
|
|
71
78
|
|
|
72
79
|
1. 分析用户请求,提取意图关键词
|
|
73
80
|
2. 匹配上表,找到对应的 skill
|
|
74
|
-
3. 如果能明确匹配,直接调用对应 skill(Claude/OpenCode 可用 `Skill("skill-name")` 或 slash command;Codex 用 `$skill-name` / `/skills`;OpenClaw 用 `/skill skill-name` 或自然语言点名)
|
|
81
|
+
3. 如果能明确匹配,直接调用对应 skill(Claude/OpenCode 可用 `Skill("skill-name")` 或 slash command;Codex 用 `$skill-name` / `/skills`;Antigravity 用 `/skills` 或自然语言点名;OpenClaw 用 `/skill skill-name` 或自然语言点名)
|
|
75
82
|
4. 如果无法匹配,询问用户想做什么(从上表中选择)
|
|
76
83
|
5. 如果用户说"我想写小说"但未指定长篇/短篇,询问篇幅类型后再路由
|
|
77
84
|
|
|
78
85
|
## 查询降级
|
|
79
86
|
|
|
80
|
-
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version:
|
|
87
|
+
> Spawn 版本提示(不阻断 spawn):先读取项目根 `.story-deployed` 的 `agents_version`。与本版 `agents_version: 29` 不一致时(标记缺失、字段缺失/非整数、小于或大于 29)**照常按文件存在性检查并 spawn**,但只检查当前运行时的 canonical 目录;同时报告 `Notice: agents bundle 版本不匹配(项目 {N},本版 29)` 并提示重新运行 `/story-setup` 后新开会话;大于 29 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告 `Fallback: ... -> solo`。
|
|
81
88
|
|
|
82
|
-
「查故事资料」「查资料」走 agent
|
|
89
|
+
「查故事资料」「查资料」走 agent 前先做轻量可用性检查(路由只做这一层,不承担全局部署策略):当前不在子代理上下文、当前运行时的 Agent/Task 或 `invoke_subagent` 工具可用,且对应部署文件存在(Claude `.claude/agents/*.md`、OpenCode `.opencode/agents/*.md`、Codex `.codex/agents/*.toml`、Antigravity `.agents/agents/agent-name/agent.md`,其中 `agent-name` 为目标 agent 名)→ 可尝试 spawn。Antigravity 用 `invoke_subagent` + 同名 `TypeName`,不得因其他端文件存在而误判。任一不满足,或运行时返回 unknown agent / 未暴露 custom-agent registry,则降级,不硬失败:
|
|
83
90
|
|
|
84
91
|
- `story-explorer` 不可用 → 主线程直接用 Read/Grep 从项目文件检索(角色状态/伏笔/进度/设定),回答前标注 `Fallback: agent unavailable -> direct lookup`;项目尚未部署时提示先 `/story-setup`(Codex 中用 `$story-setup`)。
|
|
85
92
|
- `story-researcher` 不可用 → 主线程用现有检索/回答能力完成,或提示用户改用 `/browser-cdp` 采集,同样标注 `Fallback: agent unavailable -> direct lookup`。
|
|
@@ -107,10 +114,10 @@ metadata: {"openclaw":{"source":"https://github.com/worldwonderer/oh-story-claud
|
|
|
107
114
|
用户问"有没有新版本""检查更新""升级"时执行。**只通知,更不更新由用户定,不自动安装。**
|
|
108
115
|
|
|
109
116
|
1. **当前版本**:读本 skill 同目录的 `VERSION` 文件;缺失则视为未知。
|
|
110
|
-
2. **最新版本**:优先 `gh release view --json tagName,name,url -R
|
|
117
|
+
2. **最新版本**:优先 `gh release view --json tagName,name,url -R zenstory-ai/oh-story-claudecode` 取 `tagName`;无 gh 用 `curl -fsS --max-time 5 https://api.github.com/repos/zenstory-ai/oh-story-claudecode/releases/latest` 取 `.tag_name`(jq 或 grep)。查不到 → 告知"暂时拉不到最新版本,可手动看 [Releases](https://github.com/zenstory-ai/oh-story-claudecode/releases)",不报错。
|
|
111
118
|
3. **比较**:去掉 `v` 前缀按语义版本比(major.minor.patch)。`gh release` 默认取 latest 稳定版,不含 pre-release。
|
|
112
119
|
4. **告知**:
|
|
113
120
|
- 已最新 → 「已是最新版 vX.Y.Z」。
|
|
114
|
-
- 有新版 → 列出 当前 vA → 最新 vB + [Releases](https://github.com/
|
|
115
|
-
- 选更新 → 跑 `npx skills add
|
|
121
|
+
- 有新版 → 列出 当前 vA → 最新 vB + [Releases](https://github.com/zenstory-ai/oh-story-claudecode/releases)/[CHANGELOG](https://github.com/zenstory-ai/oh-story-claudecode/blob/main/CHANGELOG.md)(能拿到 release notes 就附本次要点),再用 AskUserQuestion 问「现在更新吗?」:
|
|
122
|
+
- 选更新 → 跑 `npx skills add zenstory-ai/oh-story-claudecode -y -g`(`-g` 全局,去掉则只更当前目录);完成后提示:已部署过的项目在项目根重跑 `/story-setup`(Codex 中用 `$story-setup`)同步 hooks/agents/references,并**新开一个会话**让 agents 重新注册。
|
|
116
123
|
- 选先不 → 不动,告知随时可再来。
|
|
@@ -1 +1 @@
|
|
|
1
|
-
0.7.
|
|
1
|
+
0.7.9
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
# 作者记忆协议
|
|
2
|
+
|
|
3
|
+
作者记忆用于保存跨会话复用的创作偏好,不保存小说世界里的事实。它借鉴“原始证据 → 候选 → 已确认画像 → 变更记录”的记忆管道,但把决定权留给作者。
|
|
4
|
+
|
|
5
|
+
## 边界与优先级
|
|
6
|
+
|
|
7
|
+
加载优先级从高到低:
|
|
8
|
+
|
|
9
|
+
1. 安全、平台、字数、文件协议等硬性门禁;
|
|
10
|
+
2. 用户在当前请求中的明确要求;
|
|
11
|
+
3. 当前书的 `设定/文风.md`、题材定位、细纲和其他项目设定;
|
|
12
|
+
4. 作者记忆中的本书偏好;
|
|
13
|
+
5. 作者记忆中的题材、流程和全局偏好;
|
|
14
|
+
6. 对标素材、通用方法和默认值。
|
|
15
|
+
|
|
16
|
+
作者记忆不能把本书事实写进 `.story/作者记忆/`,不能覆盖当前请求,不能降低审稿 rubric,也不能让去 AI 味改动剧情意图。小说事实继续由各书的 `追踪/` 和 `设定/` 管理。
|
|
17
|
+
|
|
18
|
+
## 文件与所有权
|
|
19
|
+
|
|
20
|
+
工作区级目录:
|
|
21
|
+
|
|
22
|
+
```text
|
|
23
|
+
{工作区}/.story/作者记忆/
|
|
24
|
+
├── _author-memory-state.json # 唯一结构化权威
|
|
25
|
+
├── 作者画像.md # 仅 active,供作者查看与管理
|
|
26
|
+
├── 待确认.md # pending / conflict,不参与约束
|
|
27
|
+
└── 变更记录.md # 最近 100 次、最新在前的事务记录
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
三个 Markdown 文件都从 state 确定性生成,禁止手改;完整历史保留在 state,变更记录只展示最近 100 次。`作者画像.md` 是人类管理视图,普通写作 agent 不整份注入,而是调用 `query` 取得本次相关的紧凑上下文。作者记忆不存在时,普通写作、审稿和去味任务直接继续,不自动初始化空目录;首次 `record` 会随事务创建。
|
|
31
|
+
|
|
32
|
+
工作区必须显式传给脚本。优先使用已经包含 `.story/作者记忆/` 的最近祖先;首次初始化时使用承载多本书、`.active-book`、`长篇/`、`短篇/` 或 `拆文库/` 的创作工作区根。不要把用户主目录当默认工作区。
|
|
33
|
+
|
|
34
|
+
## 什么时候读取
|
|
35
|
+
|
|
36
|
+
长篇、短篇、去 AI 味开始前,如果 state 已存在,用 `query` 按本书、题材、流程和类型筛选 active 条目。查询输出固定不超过 2048 字节。不要先查询全部再让 agent 自行筛选,按任务直接选择 kind:
|
|
37
|
+
|
|
38
|
+
| 任务 | query kinds | 注入位置 |
|
|
39
|
+
|---|---|---|
|
|
40
|
+
| 正文初稿 / 续写 | `prose_style` + `story_design` | 主会话与实际正文 agent |
|
|
41
|
+
| 去 AI 味 / 改写 | `prose_style` | 主会话与实际改写 agent |
|
|
42
|
+
| 设定 / 大纲 | `story_design` + `workflow` + `interaction` | 主会话,不传正文 agent |
|
|
43
|
+
| 审稿 | `delivery` + `interaction` + 必要的 `prose_style` | 主会话,不降低 rubric |
|
|
44
|
+
|
|
45
|
+
审稿匹配项只用于交付格式、协作方式和“作者有意采用的表达选择”说明;问题严重度和 PASS/FAIL 仍由 rubric 决定。
|
|
46
|
+
|
|
47
|
+
待确认项不进入 prompt 约束,也不应为了确认它们中断当前任务。只有用户主动查看作者画像、候选积累到适合回顾的节点,或新偏好与 active 条目冲突时,才集中呈现。
|
|
48
|
+
|
|
49
|
+
## 可靠性与负荷边界
|
|
50
|
+
|
|
51
|
+
- 明确“记住 / 确认 / 替换 / 忘掉”的请求走单事件 `record`,不要求 agent 手工读取修订号或拼多操作事务。成功响应会给出 `Author Memory Receipt: rN · APxxx`;没有回执就不得声称“已经记住”。
|
|
52
|
+
- 普通创作只做一次本地 `query`,没有 state 时返回空结果且不创建文件;有记忆时也只返回相关 active 条目,硬上限 2048 字节。完整画像、证据、候选和 journal 不进入正文 prompt。
|
|
53
|
+
- 查询项是低优先级倾向,不是逐条打卡清单。自然吸收即可,不复述画像、不刻意提高词面命中率,也不得为命中偏好牺牲正文连贯、节奏、字数或本书既定笔调。
|
|
54
|
+
- 不安装会记录全部用户消息的 prompt hook。自然语言是否属于长期习惯仍需 agent 判断;这样不能承诺隐式偏好 100% 捕获,但避免把一次性要求、私人对话和小说事实静默写入长期记忆。需要确定写入时,用户可明确说“记住:……”,并以回执验收。
|
|
55
|
+
|
|
56
|
+
## 捕获判定
|
|
57
|
+
|
|
58
|
+
| 输入证据 | 处理 |
|
|
59
|
+
|---|---|
|
|
60
|
+
| “以后都这样”“我一直习惯……”等直接、稳定、范围清楚的原话 | `active`,`source=explicit_user` |
|
|
61
|
+
| 用户明确接受助手提出的长期做法 | `active`,`source=accepted_suggestion` |
|
|
62
|
+
| 同类修改反复出现,但用户没说这是长期规则 | `pending`,`source=repeated_correction` |
|
|
63
|
+
| 从成稿或操作轨迹推断出的模式 | `pending`,`source=inferred_pattern` |
|
|
64
|
+
| “这一章别……”“这次给我……”等一次性要求 | 只执行,不记录 |
|
|
65
|
+
| 角色、时间线、伏笔、世界观、当前剧情走向 | 写项目设定/追踪,不写作者记忆 |
|
|
66
|
+
| 助手自己生成的文字、默认模板、工具告警、rubric 结论 | 不自我学习 |
|
|
67
|
+
|
|
68
|
+
保留用户的否定词、限定词和适用范围,`quote` 写原话,`assertion` 只做不改变语义的紧凑归纳。范围规则:
|
|
69
|
+
|
|
70
|
+
- “本书 / 这个角色 / 这次连载” → `book`;
|
|
71
|
+
- “都市文 / 这类题材” → `genre`;
|
|
72
|
+
- 交稿、检查、确认节奏等操作习惯 → `workflow`;
|
|
73
|
+
- “以后 / 一贯 / 我习惯”且无更窄限定 → `global`;
|
|
74
|
+
- 范围含糊但可能稳定 → 取当前最窄合理范围并置 `pending`。
|
|
75
|
+
|
|
76
|
+
类型可选:`prose_style`、`story_design`、`workflow`、`delivery`、`interaction`。置信度与重要度均为 `low | medium | high`。
|
|
77
|
+
|
|
78
|
+
## 冲突、撤回与强化
|
|
79
|
+
|
|
80
|
+
- 同一类型、范围、归纳文本再次出现时,脚本强化原条目,累加证据和确认次数,不重复建条目。
|
|
81
|
+
- 新偏好与 active 条目矛盾时,先以 `conflict` 记候选,并在 `conflicts_with` 列出冲突 ID;当前任务仍按本轮明确要求执行。
|
|
82
|
+
- 作者选定新规则时用 `replace`,一次性启用新条目并把旧条目标成 `superseded`。
|
|
83
|
+
- pending 可以用 `decide=activate|reject`;冲突候选不能绕过旧规则直接 activate。
|
|
84
|
+
- 作者说“忘掉 / 这不再是我的习惯”时用 `forget`,保留历史证据但不再加载。
|
|
85
|
+
- active 条目的语义不可原地偷改;语义变化必须 replace,历史才可审计。
|
|
86
|
+
|
|
87
|
+
## 运行工具
|
|
88
|
+
|
|
89
|
+
先依次尝试 `python3`、`python`、`py -3` 找到 Python 3,再从当前 skill 根运行本地副本:
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py init --workspace {工作区}
|
|
93
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py record --workspace {工作区} --input {单事件.json}
|
|
94
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py query --workspace {工作区} [--kind prose_style] [--book {书名}] [--genre {题材}] [--workflow {流程}]
|
|
95
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py commit --workspace {工作区} --input {事务.json}
|
|
96
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py check --workspace {工作区}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
- `record`:常用单事件入口,自动读取当前修订、首次自动初始化;`event_id` 相同且内容相同会幂等返回原回执,内容不同会失败。
|
|
100
|
+
- `query`:只读相关 active 条目;`--kind` 可重复,不存在 state 时返回空结果且零写入。返回的 `omitted > 0` 时收窄 kind / book / genre / workflow 后重查,不得改读完整画像规避预算。
|
|
101
|
+
- `commit`:高级批量入口;先在内存完成 schema、引用、容量和所有视图校验,最后原子替换 state。事务文件在成功前必须保留;过期修订会在任何写入前失败。
|
|
102
|
+
- `check`:从 state 重建并逐字核验所有派生视图。
|
|
103
|
+
|
|
104
|
+
## 事务格式
|
|
105
|
+
|
|
106
|
+
常用单事件新增或强化:
|
|
107
|
+
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"schema_version": 1,
|
|
111
|
+
"event_id": "conversation-2026-08-25-message-42",
|
|
112
|
+
"operation": {
|
|
113
|
+
"action": "remember",
|
|
114
|
+
"preference": {
|
|
115
|
+
"kind": "prose_style",
|
|
116
|
+
"scope": {"level": "global", "value": null},
|
|
117
|
+
"assertion": "对话尽量短,用动作承接情绪,不用大段解释",
|
|
118
|
+
"quote": "以后对话都短一点,情绪放动作里,别让角色长篇解释。",
|
|
119
|
+
"source_ref": "conversation:2026-08-25",
|
|
120
|
+
"source": "explicit_user",
|
|
121
|
+
"confidence": "high",
|
|
122
|
+
"importance": "high",
|
|
123
|
+
"status": "active",
|
|
124
|
+
"reason": "用户以“以后”明确声明长期偏好",
|
|
125
|
+
"conflicts_with": []
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
把文件交给 `record`。待确认项的 `status` 用 `pending`;冲突候选用 `conflict` 并填写 active ID。确认或拒绝候选时,把下列对象作为新事件的 `operation`:
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{"action":"decide","item_id":"AP002","decision":"activate","quote":"对,这就是我的长期习惯。","reason":"作者明确确认"}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
用新规则替代一个或多个旧条目时,`replace.preference` 与上例字段相同,但不传 `status`、`conflicts_with`,新条目直接 active;下列对象同样作为 `operation`:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"action": "replace",
|
|
142
|
+
"old_ids": ["AP001", "AP002"],
|
|
143
|
+
"preference": {
|
|
144
|
+
"kind": "prose_style",
|
|
145
|
+
"scope": {"level": "book", "value": "雾港来信"},
|
|
146
|
+
"assertion": "本书对话允许更长的试探,但避免解释设定",
|
|
147
|
+
"quote": "这本书可以让对话慢一点,多试探,但还是别拿台词讲设定。",
|
|
148
|
+
"source_ref": "conversation:2026-08-25",
|
|
149
|
+
"source": "explicit_user",
|
|
150
|
+
"confidence": "high",
|
|
151
|
+
"importance": "high",
|
|
152
|
+
"reason": "作者明确用本书新规则替代旧候选"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
撤回条目的 `operation`:
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
{"action":"forget","item_id":"AP003","quote":"忘掉这个偏好。","reason":"作者明确撤回"}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
需要把多个动作绑定成一次原子提交时才用高级 `commit`:顶层传 `schema_version`、唯一 `transaction_id`、当前 `expected_state_revision` 和含 1–32 项的 `operations`。操作按数组顺序应用,任一步失败则整份事务零写入。成功后删除临时输入文件;显式记忆请求还要把工具返回的回执原样告诉用户。
|