@oh-story/dsh 0.1.9 → 0.1.11
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 +14 -14
- package/lib/client.js +209 -73
- package/lib/client.js.map +3 -3
- package/lib/drama/manifest.json +248 -168
- package/lib/drama/skills/short-drama/SKILL.md +16 -4
- package/lib/drama/skills/short-drama/assets/project-template/short-drama.json +3 -0
- package/lib/drama/skills/short-drama/references/creator-documents.md +3 -0
- package/lib/drama/skills/short-drama/references/knowhow-index.md +15 -0
- package/lib/drama/skills/short-drama/scripts/creator_markdown_check.py +14 -0
- package/lib/drama/skills/short-drama/scripts/project_tool.py +131 -0
- package/lib/drama/skills/short-drama-assets/SKILL.md +2 -1
- package/lib/drama/skills/short-drama-assets/references/asset-review-checklist.md +2 -0
- package/lib/drama/skills/short-drama-assets/references/character-and-look.md +10 -0
- package/lib/drama/skills/short-drama-assets/references/continuity-lock.md +6 -9
- package/lib/drama/skills/short-drama-assets/references/era-anchors.md +37 -0
- package/lib/drama/skills/short-drama-assets/references/stage-contract.md +2 -0
- package/lib/drama/skills/short-drama-assets/references/voice-direction.md +28 -0
- package/lib/drama/skills/short-drama-develop/SKILL.md +10 -4
- package/lib/drama/skills/short-drama-develop/assets/adaptation-map.example.jsonl +1 -1
- package/lib/drama/skills/short-drama-develop/assets/creative-brief.md +8 -0
- package/lib/drama/skills/short-drama-develop/references/adaptation-craft.md +80 -13
- package/lib/drama/skills/short-drama-develop/references/episode-design.md +95 -12
- package/lib/drama/skills/short-drama-develop/references/genre-and-hook-playbook.md +9 -5
- package/lib/drama/skills/short-drama-develop/references/genre-cards//345/244/215/344/273/207/346/211/223/350/204/270.md +1 -1
- package/lib/drama/skills/short-drama-develop/references/genre-cards//347/263/273/347/273/237/346/265/201.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/200/206/350/242/255.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards//351/207/215/347/224/237/347/251/277/350/266/212.md +51 -0
- package/lib/drama/skills/short-drama-develop/references/genre-cards.md +10 -7
- package/lib/drama/skills/short-drama-develop/references/premise-devices.md +15 -9
- package/lib/drama/skills/short-drama-develop/references/serial-character-and-memory.md +3 -2
- package/lib/drama/skills/short-drama-develop/references/stage-contract.md +14 -7
- package/lib/drama/skills/short-drama-develop/references/story-craft.md +7 -3
- package/lib/drama/skills/short-drama-edit/SKILL.md +65 -44
- package/lib/drama/skills/short-drama-edit/assets/remotion/README.md +49 -13
- package/lib/drama/skills/short-drama-edit/assets/remotion/package.json +4 -2
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Overlay.tsx +31 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Root.tsx +5 -5
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/Subtitles.tsx +68 -69
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/font.ts +39 -29
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/rules.mjs +188 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/schema.ts +26 -13
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/Card.tsx +72 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/CornerChip.tsx +39 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/ScreenText.tsx +36 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/SystemPanel.tsx +44 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/TaskPanel.tsx +100 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/chrome.tsx +197 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/src/screen/tokens.ts +62 -0
- package/lib/drama/skills/short-drama-edit/assets/remotion/tsconfig.json +1 -0
- package/lib/drama/skills/short-drama-edit/assets//345/211/252/350/276/221/345/215/225.md +6 -4
- package/lib/drama/skills/short-drama-edit/references/cut-craft.md +26 -67
- package/lib/drama/skills/short-drama-edit/references/delivery-verify.md +31 -56
- package/lib/drama/skills/short-drama-edit/references/generated-footage.md +42 -78
- package/lib/drama/skills/short-drama-edit/references/sound-and-subtitles.md +44 -92
- package/lib/drama/skills/short-drama-edit/references/stage-contract.md +14 -16
- package/lib/drama/skills/short-drama-edit/scripts/edit_tool.py +1272 -125
- package/lib/drama/skills/short-drama-edit/scripts/selftest.py +113 -9
- package/lib/drama/skills/short-drama-image-prompts/SKILL.md +2 -0
- package/lib/drama/skills/short-drama-image-prompts/references/common-recipe.md +11 -0
- package/lib/drama/skills/short-drama-novel-analyze/SKILL.md +3 -3
- package/lib/drama/skills/short-drama-novel-analyze/assets/episode-candidate.example.jsonl +2 -2
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-triage.md +8 -4
- package/lib/drama/skills/short-drama-novel-analyze/references/adaptation-value.md +10 -3
- package/lib/drama/skills/short-drama-novel-analyze/references/aggregation-and-entities.md +25 -1
- package/lib/drama/skills/short-drama-novel-analyze/references/stage-contract.md +1 -0
- package/lib/drama/skills/short-drama-produce/SKILL.md +5 -1
- package/lib/drama/skills/short-drama-produce/references/adapter-contract.md +14 -20
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-h3-video.md +8 -26
- package/lib/drama/skills/short-drama-produce/references/providers/minimax-speech.md +41 -0
- package/lib/drama/skills/short-drama-produce/scripts/provider_adapters.py +142 -1
- package/lib/drama/skills/short-drama-review/SKILL.md +4 -5
- package/lib/drama/skills/short-drama-review/references/production-quality-gates.md +6 -19
- package/lib/drama/skills/short-drama-review/references/review-method.md +6 -1
- package/lib/drama/skills/short-drama-review/references/rubric-assets-prompts.md +11 -0
- package/lib/drama/skills/short-drama-review/references/rubric-story-script.md +77 -3
- package/lib/drama/skills/short-drama-review/references/rubric-visual-motion.md +24 -35
- package/lib/drama/skills/short-drama-review/references/stage-contract.md +3 -0
- package/lib/drama/skills/short-drama-storyboard/SKILL.md +23 -11
- package/lib/drama/skills/short-drama-storyboard/references/blocking-playbooks.md +1 -1
- package/lib/drama/skills/short-drama-storyboard/references/lighting-craft.md +39 -0
- package/lib/drama/skills/short-drama-storyboard/references/production-shot-grammar.md +2 -2
- package/lib/drama/skills/short-drama-storyboard/references/shot-craft.md +139 -34
- package/lib/drama/skills/short-drama-storyboard/references/stage-contract.md +5 -3
- package/lib/drama/skills/short-drama-video-prompts/SKILL.md +15 -12
- package/lib/drama/skills/short-drama-video-prompts/references/camera-audio-continuity.md +29 -0
- package/lib/drama/skills/short-drama-video-prompts/references/delivery-profile.md +4 -5
- package/lib/drama/skills/short-drama-video-prompts/references/generability.md +4 -2
- package/lib/drama/skills/short-drama-video-prompts/references/minimax-h3.md +52 -39
- package/lib/drama/skills/short-drama-video-prompts/references/motion-recipe.md +24 -21
- package/lib/drama/skills/short-drama-video-prompts/references/performance-action-timing.md +9 -23
- package/lib/drama/skills/short-drama-video-prompts/references/production-prompt-grammar.md +14 -26
- package/lib/drama/skills/short-drama-video-prompts/references/review-and-fixtures.md +1 -1
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.0.md +2 -3
- package/lib/drama/skills/short-drama-video-prompts/references/seedance-2.5.md +34 -9
- package/lib/drama/skills/short-drama-video-prompts/references/stage-contract.md +3 -2
- package/lib/drama/skills/short-drama-video-prompts/references/target-model-profile.md +8 -1
- package/lib/drama/skills/short-drama-video-prompts/references/wan-3.0.md +103 -0
- package/lib/drama/skills/short-drama-video-prompts/scripts/motion_timing_check.py +8 -7
- package/lib/drama/skills/short-drama-write/SKILL.md +10 -7
- package/lib/drama/skills/short-drama-write/references/dialogue-craft.md +1 -1
- package/lib/drama/skills/short-drama-write/references/script-craft.md +56 -3
- package/lib/drama/skills/short-drama-write/references/stage-contract.md +4 -0
- package/lib/drama/skills/short-drama-write/scripts/duration_estimate.py +48 -2
- package/lib/index.js +346 -98
- package/lib/index.js.map +4 -4
- package/lib/novel-to-game/README.md +299 -59
- package/lib/novel-to-game/README_ZH.md +299 -56
- package/lib/novel-to-game/VERSION +1 -1
- package/lib/novel-to-game/examples/jin-ping-mei/build/BUILD_BRIEF.md +3 -1
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/RUN.md +11 -3
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/new-guofeng.css +397 -8
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/css/style.css +0 -31
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/data.js +71 -73
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/engine.js +78 -89
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/main.js +37 -14
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/js/text.js +5 -5
- package/lib/novel-to-game/examples/jin-ping-mei/build/app/package.json +2 -1
- package/lib/novel-to-game/examples/jin-ping-mei/qa/README.md +11 -16
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verification.json +11 -11
- package/lib/novel-to-game/examples/jin-ping-mei/qa/verify_playable_model.mjs +23 -0
- package/lib/novel-to-game/manifest.json +77 -87
- package/lib/novel-to-game/skills/game-art-direction/SKILL.md +7 -12
- package/lib/novel-to-game/skills/game-art-direction/references/art-direction-method.md +27 -106
- package/lib/novel-to-game/skills/game-build/SKILL.md +13 -14
- package/lib/novel-to-game/skills/game-build/references/blender-asset-workflow.md +24 -0
- package/lib/novel-to-game/skills/game-build/references/build-brief-contract.md +45 -82
- package/lib/novel-to-game/skills/game-build/references/generative-media-pipeline.md +14 -45
- package/lib/novel-to-game/skills/game-build/references/playable-model-contract.md +30 -65
- package/lib/novel-to-game/skills/game-build/references/tts-production-contract.md +13 -27
- package/lib/novel-to-game/skills/game-concept/SKILL.md +13 -15
- package/lib/novel-to-game/skills/game-concept/references/concept-method.md +28 -75
- package/lib/novel-to-game/skills/game-qa/SKILL.md +6 -7
- package/lib/novel-to-game/skills/game-qa/references/test-design-method.md +9 -5
- package/lib/novel-to-game/skills/game-world-design/SKILL.md +12 -16
- package/lib/novel-to-game/skills/game-world-design/references/narrative-design-method.md +23 -72
- package/lib/novel-to-game/skills/game-world-design/references/numeric-design-method.md +14 -48
- package/lib/novel-to-game/skills/game-world-design/references/world-design-method.md +36 -103
- package/lib/novel-to-game/skills/novel-game-analyze/SKILL.md +4 -10
- package/lib/novel-to-game/skills/novel-game-analyze/references/gameability-protocol.md +4 -4
- package/lib/novel-to-game/skills/novel-to-game/SKILL.md +9 -21
- package/lib/novel-to-game/skills/novel-to-game/references/intake-method.md +5 -4
- package/lib/novel-to-game/skills/novel-to-game/references/pipeline-contract.md +5 -8
- package/lib/oh-story/manifest.json +607 -327
- package/lib/oh-story/roles/chapter-extractor.md +177 -237
- package/lib/oh-story/roles/character-designer.md +1 -2
- package/lib/oh-story/roles/consistency-checker.md +15 -13
- package/lib/oh-story/roles/narrative-writer.md +36 -38
- package/lib/oh-story/roles/story-architect.md +9 -61
- package/lib/oh-story/roles/story-explorer.md +20 -125
- package/lib/oh-story/roles/story-researcher.md +0 -1
- package/lib/oh-story/skills/story/SKILL.md +15 -9
- package/lib/oh-story/skills/story/VERSION +1 -1
- package/lib/oh-story/skills/story/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story/references/author-memory.md +46 -94
- package/lib/oh-story/skills/story/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-cover/SKILL.md +10 -1
- package/lib/oh-story/skills/story-deslop/SKILL.md +59 -73
- package/lib/oh-story/skills/story-deslop/references/agent-calls.md +5 -0
- package/lib/oh-story/skills/story-deslop/references/anti-ai-writing.md +12 -11
- package/lib/oh-story/skills/story-deslop/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-deslop/references/author-memory.md +46 -94
- package/lib/oh-story/skills/story-deslop/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-deslop/references/deslop-gates.md +22 -5
- package/lib/oh-story/skills/story-deslop/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-deslop/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-deslop/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-import/SKILL.md +64 -584
- package/lib/oh-story/skills/story-import/references/character-state-reverse.md +1 -1
- package/lib/oh-story/skills/story-import/references/deep-analysis.md +47 -0
- package/lib/oh-story/skills/story-import/references/format-and-structure.md +1 -1
- package/lib/oh-story/skills/story-import/references/import-report.md +64 -0
- package/lib/oh-story/skills/story-import/references/import-special-cases.md +34 -0
- package/lib/oh-story/skills/story-import/references/import-tracking.md +95 -0
- package/lib/oh-story/skills/story-import/references/length-routing.md +1 -1
- package/lib/oh-story/skills/story-import/references/outline-reverse-rules.md +79 -0
- package/lib/oh-story/skills/story-import/references/outline-reverse.md +24 -0
- package/lib/oh-story/skills/story-import/references/state-tracking.md +4 -69
- package/lib/oh-story/skills/story-import/references/structure-mapping-long.md +98 -92
- package/lib/oh-story/skills/story-import/references/structure-mapping-short.md +24 -12
- package/lib/oh-story/skills/story-import/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-import/references/tracking-transaction.md +15 -11
- package/lib/oh-story/skills/story-import/scripts/build_outline_brief.py +332 -0
- package/lib/oh-story/skills/story-import/scripts/check-outline-contract.js +132 -27
- package/lib/oh-story/skills/story-import/scripts/tracking_commit.py +478 -15
- package/lib/oh-story/skills/story-import/scripts/wordcount_core.py +182 -23
- package/lib/oh-story/skills/story-long-analyze/SKILL.md +81 -270
- package/lib/oh-story/skills/story-long-analyze/references/author-facing.md +252 -0
- package/lib/oh-story/skills/story-long-analyze/references/deconstruction-notes.md +3 -3
- package/lib/oh-story/skills/story-long-analyze/references/final-checks.md +19 -0
- package/lib/oh-story/skills/story-long-analyze/references/index-rebuild.md +11 -0
- package/lib/oh-story/skills/story-long-analyze/references/inspiration-library.md +105 -0
- package/lib/oh-story/skills/story-long-analyze/references/pipeline-ops.md +138 -64
- package/lib/oh-story/skills/story-long-analyze/references/semantic-acceptance-fixtures.md +84 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage1-golden-chapters.md +128 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage2-extraction.md +229 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage3-plot-rhythm.md +480 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage4-characters-settings.md +195 -0
- package/lib/oh-story/skills/story-long-analyze/references/stage5-report.md +33 -0
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-generator.md +55 -128
- package/lib/oh-story/skills/story-long-analyze/references/style-profile-protocol.md +6 -6
- package/lib/oh-story/skills/story-long-analyze/references/synthesis-inputs.md +39 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/build_chapter_index.py +466 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/inspect_existing_assets.py +702 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/inspiration_index.py +864 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/manage_analysis_run.py +1145 -0
- package/lib/oh-story/skills/story-long-analyze/scripts/render_relation_chart.py +425 -0
- package/lib/oh-story/skills/story-long-scan/SKILL.md +45 -194
- package/lib/oh-story/skills/story-long-scan/references/platform-ciweimao.md +19 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-fanqie.md +45 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-jjwxc.md +28 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-qidian.md +35 -0
- package/lib/oh-story/skills/story-long-scan/references/platform-qimao.md +27 -0
- package/lib/oh-story/skills/story-long-scan/references/topic-decision.md +6 -2
- package/lib/oh-story/skills/story-long-write/SKILL.md +49 -81
- package/lib/oh-story/skills/story-long-write/references/agent-calls.md +47 -0
- package/lib/oh-story/skills/story-long-write/references/anti-ai-writing.md +12 -11
- package/lib/oh-story/skills/story-long-write/references/artifact-protocols.md +24 -202
- package/lib/oh-story/skills/story-long-write/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-long-write/references/author-memory.md +46 -94
- package/lib/oh-story/skills/story-long-write/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/benchmark-recall.md +7 -11
- package/lib/oh-story/skills/story-long-write/references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-long-write/references/cross-book-recall.md +26 -0
- package/lib/oh-story/skills/story-long-write/references/deslop-gates.md +171 -0
- package/lib/oh-story/skills/story-long-write/references/dialogue-mastery.md +4 -0
- package/lib/oh-story/skills/story-long-write/references/emotion-on-page.md +116 -0
- package/lib/oh-story/skills/story-long-write/references/emotional-arc-design.md +1 -114
- package/lib/oh-story/skills/story-long-write/references/emotional-methods.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-chapter-quality.md +7 -15
- package/lib/oh-story/skills/story-long-write/references/long-format.md +0 -8
- package/lib/oh-story/skills/story-long-write/references/long-genre-catalog.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/long-genre-mechanics.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/opening-design.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/outline-methods.md +7 -7
- package/lib/oh-story/skills/story-long-write/references/outline-rhythm.md +3 -3
- package/lib/oh-story/skills/story-long-write/references/outline-structure-theory.md +14 -69
- package/lib/oh-story/skills/story-long-write/references/plot-frameworks.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/plot-special-topics.md +2 -2
- package/lib/oh-story/skills/story-long-write/references/project-files.md +19 -13
- package/lib/oh-story/skills/story-long-write/references/reader-contract-and-progression.md +13 -5
- package/lib/oh-story/skills/story-long-write/references/reference-index.md +5 -6
- package/lib/oh-story/skills/story-long-write/references/stop-and-fix.md +9 -0
- package/lib/oh-story/skills/story-long-write/references/style-combat-face.md +1 -58
- package/lib/oh-story/skills/story-long-write/references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-long-write/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-long-write/references/tracking-transaction.md +15 -11
- package/lib/oh-story/skills/story-long-write/references/workflow-chapter.md +81 -121
- package/lib/oh-story/skills/story-long-write/references/workflow-daily.md +41 -139
- package/lib/oh-story/skills/story-long-write/references/workflow-outline.md +157 -0
- package/lib/oh-story/skills/story-long-write/references/workflow-revision.md +57 -67
- package/lib/oh-story/skills/story-long-write/references/workflow-setup.md +112 -253
- package/lib/oh-story/skills/story-long-write/references/workflow-volume.md +142 -0
- package/lib/oh-story/skills/story-long-write/references/writer-prompt-fallback.md +6 -4
- package/lib/oh-story/skills/story-long-write/references/writing-craft.md +19 -65
- package/lib/oh-story/skills/story-long-write/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-long-write/scripts/build_architect_brief.py +260 -0
- package/lib/oh-story/skills/story-long-write/scripts/build_writer_prompt.py +226 -25
- package/lib/oh-story/skills/story-long-write/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-contract.js +132 -27
- package/lib/oh-story/skills/story-long-write/scripts/check-outline-copy.js +7 -2
- package/lib/oh-story/skills/story-long-write/scripts/outline_view.py +7 -4
- package/lib/oh-story/skills/story-long-write/scripts/storyctl.py +304 -46
- package/lib/oh-story/skills/story-long-write/scripts/tracking_commit.py +478 -15
- package/lib/oh-story/skills/story-long-write/scripts/wordcount_core.py +182 -23
- package/lib/oh-story/skills/story-review/SKILL.md +31 -302
- package/lib/oh-story/skills/story-review/references/agent-prompts.md +184 -0
- package/lib/oh-story/skills/story-review/references/anti-ai-writing.md +12 -11
- package/lib/oh-story/skills/story-review/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-review/references/author-memory.md +46 -94
- package/lib/oh-story/skills/story-review/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-review/references/batch-review.md +19 -0
- package/lib/oh-story/skills/story-review/references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-review/references/dialogue-mastery.md +4 -0
- package/lib/oh-story/skills/story-review/references/review-quality.md +6 -11
- package/lib/oh-story/skills/story-review/references/review-tracking.md +10 -0
- package/lib/oh-story/skills/story-review/references/solo.md +52 -0
- package/lib/oh-story/skills/story-review/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-review/references/tracking-initialization.md +1 -1
- package/lib/oh-story/skills/story-review/references/tracking-transaction.md +15 -11
- package/lib/oh-story/skills/story-review/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-review/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-review/scripts/tracking_commit.py +478 -15
- package/lib/oh-story/skills/story-review/scripts/wordcount_core.py +182 -23
- package/lib/oh-story/skills/story-setup/SKILL.md +71 -452
- package/lib/oh-story/skills/story-setup/references/agent-references/agent-quality.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/anti-ai-writing.md +12 -11
- package/lib/oh-story/skills/story-setup/references/agent-references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/benchmark-style-load.md +107 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/character-relations.md +49 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/deslop-gates.md +22 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/dialogue-mastery.md +4 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/emotion-on-page.md +116 -0
- package/lib/oh-story/skills/story-setup/references/agent-references/emotional-arc-design.md +1 -114
- package/lib/oh-story/skills/story-setup/references/agent-references/format-and-structure.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/genre-prose-cards.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-emotional-methods.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-catalog.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/long-genre-mechanics.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/long-quality.md +7 -5
- package/lib/oh-story/skills/story-setup/references/agent-references/opening-design.md +2 -2
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-conflict.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-methods.md +7 -7
- package/lib/oh-story/skills/story-setup/references/agent-references/outline-rhythm.md +3 -3
- package/lib/oh-story/skills/story-setup/references/agent-references/short-emotional-methods.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/short-genre-formulas.md +0 -15
- package/lib/oh-story/skills/story-setup/references/agent-references/short-reversal.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-combat-face.md +1 -58
- package/lib/oh-story/skills/story-setup/references/agent-references/style-genre-modules.md +1 -1
- package/lib/oh-story/skills/story-setup/references/agent-references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-setup/references/agent-references/writing-craft.md +19 -65
- package/lib/oh-story/skills/story-setup/references/diagnostics.md +4 -4
- package/lib/oh-story/skills/story-short-analyze/SKILL.md +56 -110
- package/lib/oh-story/skills/story-short-analyze/references/analysis-character-relations.md +1 -1
- package/lib/oh-story/skills/story-short-analyze/references/analysis-method.md +42 -0
- package/lib/oh-story/skills/story-short-analyze/references/optional-modules.md +97 -0
- package/lib/oh-story/skills/story-short-analyze/references/output-contract.md +9 -47
- package/lib/oh-story/skills/story-short-analyze/references/quality-checklist.md +80 -0
- package/lib/oh-story/skills/story-short-analyze/references/source-story-quality.md +4 -4
- package/lib/oh-story/skills/story-short-analyze/references/stage2-3-structure-emotion.md +308 -0
- package/lib/oh-story/skills/story-short-analyze/references/stage4-6-reversal-summary.md +611 -0
- package/lib/oh-story/skills/story-short-scan/SKILL.md +35 -65
- package/lib/oh-story/skills/story-short-scan/references/manual-rank-input.md +36 -0
- package/lib/oh-story/skills/story-short-scan/references/platform-dianzhong.md +24 -0
- package/lib/oh-story/skills/story-short-scan/references/platform-heiyan.md +21 -0
- package/lib/oh-story/skills/story-short-scan/references/topic-match.md +38 -0
- package/lib/oh-story/skills/story-short-write/SKILL.md +23 -175
- package/lib/oh-story/skills/story-short-write/references/agent-calls.md +13 -0
- package/lib/oh-story/skills/story-short-write/references/author-memory-maintenance.md +75 -0
- package/lib/oh-story/skills/story-short-write/references/author-memory.md +46 -94
- package/lib/oh-story/skills/story-short-write/references/banned-words.md +2 -2
- package/lib/oh-story/skills/story-short-write/references/benchmark-recall.md +1 -21
- package/lib/oh-story/skills/story-short-write/references/dialogue-mastery.md +4 -0
- package/lib/oh-story/skills/story-short-write/references/emotional-methods.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/genre-writing-formulas.md +0 -15
- package/lib/oh-story/skills/story-short-write/references/output-contract.md +9 -47
- package/lib/oh-story/skills/story-short-write/references/reference-index.md +17 -47
- package/lib/oh-story/skills/story-short-write/references/scene-craft.md +40 -0
- package/lib/oh-story/skills/story-short-write/references/short-craft.md +7 -43
- package/lib/oh-story/skills/story-short-write/references/short-format.md +3 -3
- package/lib/oh-story/skills/story-short-write/references/short-prose-quality.md +2 -1
- package/lib/oh-story/skills/story-short-write/references/short-reversal.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/style-resolution.md +4 -4
- package/lib/oh-story/skills/story-short-write/references/submission-craft.md +1 -1
- package/lib/oh-story/skills/story-short-write/references/villain-and-reveal.md +5 -10
- package/lib/oh-story/skills/story-short-write/references/workflow-design.md +21 -13
- package/lib/oh-story/skills/story-short-write/references/workflow-draft.md +116 -0
- package/lib/oh-story/skills/story-short-write/references/workflow-revision.md +99 -0
- package/lib/oh-story/skills/story-short-write/references/writing-workflow.md +7 -119
- package/lib/oh-story/skills/story-short-write/scripts/author_memory_commit.py +934 -170
- package/lib/oh-story/skills/story-short-write/scripts/check-ai-patterns.js +155 -8
- package/lib/oh-story/skills/story-short-write/scripts/check-outline-copy.js +7 -2
- package/lib/types/client/drama-production-view.d.ts.map +1 -1
- package/lib/types/client/file-activity.d.ts +19 -1
- package/lib/types/client/file-activity.d.ts.map +1 -1
- package/lib/types/client/index.d.ts.map +1 -1
- package/lib/types/client/production-prompts.d.ts +7 -0
- package/lib/types/client/production-prompts.d.ts.map +1 -1
- package/lib/types/client/production-runtime.d.ts +16 -0
- package/lib/types/client/production-runtime.d.ts.map +1 -1
- package/lib/types/client/video-studio.d.ts.map +1 -1
- package/lib/types/drama-adapters.d.ts +5 -3
- package/lib/types/drama-adapters.d.ts.map +1 -1
- package/lib/types/native-hooks.d.ts +53 -1
- package/lib/types/native-hooks.d.ts.map +1 -1
- package/lib/types/role-identity.d.ts +17 -0
- package/lib/types/role-identity.d.ts.map +1 -0
- package/lib/types/role-tool.d.ts.map +1 -1
- package/lib/types/skill-provider.d.ts.map +1 -1
- package/lib/types/video-project.d.ts.map +1 -1
- package/lib/types/workspace-route.d.ts.map +1 -1
- package/lib/video-recap/CHANGELOG.md +60 -1
- package/lib/video-recap/README.en.md +348 -137
- package/lib/video-recap/README.md +340 -136
- package/lib/video-recap/manifest.json +406 -251
- package/lib/video-recap/skills/video-assemble/SKILL.md +30 -15
- package/lib/video-recap/skills/video-assemble/references/audio-modes.md +63 -0
- package/lib/video-recap/skills/video-assemble/references/explicit-audio-mix.md +75 -0
- package/lib/video-recap/skills/video-assemble/references/foreground-compose.md +118 -0
- package/lib/video-recap/skills/video-assemble/references/narration-adoption.md +103 -0
- package/lib/video-recap/skills/video-assemble/references/packaging.md +45 -0
- package/lib/video-recap/skills/video-assemble/references/pair-media.md +74 -0
- package/lib/video-recap/skills/video-assemble/references/source-score.md +147 -0
- package/lib/video-recap/skills/video-assemble/references/subtitle-track.md +202 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/audio_mix_binding.py +279 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/frozen_audio.py +187 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/narration_binding.py +323 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_inputs.py +109 -0
- package/lib/video-recap/skills/video-assemble/scripts/adoption/strict_publish.py +130 -0
- package/lib/video-recap/skills/video-assemble/scripts/artifacts.py +10 -46
- package/lib/video-recap/skills/video-assemble/scripts/assemble.py +378 -119
- package/lib/video-recap/skills/video-assemble/scripts/assemble_constants.py +29 -12
- package/lib/video-recap/skills/video-assemble/scripts/assembly_contract.py +95 -44
- package/lib/video-recap/skills/video-assemble/scripts/assembly_settings.py +75 -32
- package/lib/video-recap/skills/video-assemble/scripts/audio_mix.py +11 -11
- package/lib/video-recap/skills/video-assemble/scripts/compose_foreground.py +293 -0
- package/lib/video-recap/skills/video-assemble/scripts/export_jianying.py +71 -78
- package/lib/video-recap/skills/video-assemble/scripts/jianying/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_builders.py → jianying/builders.py} +39 -67
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_model.py → jianying/model.py} +3 -11
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_optional.py → jianying/optional.py} +1 -1
- package/lib/video-recap/skills/video-assemble/scripts/jianying/schema.py +53 -0
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_templates.py → jianying/templates.py} +1 -1
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_timeline_contract.py → jianying/timeline_contract.py} +34 -13
- package/lib/video-recap/skills/video-assemble/scripts/{jianying_writer.py → jianying/writer.py} +7 -17
- package/lib/video-recap/skills/video-assemble/scripts/lib.py +37 -4
- package/lib/video-recap/skills/video-assemble/scripts/media.py +12 -21
- package/lib/video-recap/skills/video-assemble/scripts/narration_audio.py +64 -34
- package/lib/video-recap/skills/video-assemble/scripts/packaging.py +122 -0
- package/lib/video-recap/skills/video-assemble/scripts/pair_media.py +216 -0
- package/lib/video-recap/skills/video-assemble/scripts/render_preflight.py +1 -3
- package/lib/video-recap/skills/video-assemble/scripts/source_score.py +469 -0
- package/lib/video-recap/skills/video-assemble/scripts/source_subtitles.py +25 -9
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/__init__.py +1 -0
- package/lib/video-recap/skills/video-assemble/scripts/{subtitle_core.py → subtitles/core.py} +13 -6
- package/lib/video-recap/skills/video-assemble/scripts/{subtitle_render.py → subtitles/render.py} +5 -4
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/track.py +324 -0
- package/lib/video-recap/skills/video-assemble/scripts/subtitles/track_binding.py +200 -0
- package/lib/video-recap/skills/video-assemble/scripts/timeline.py +30 -46
- package/lib/video-recap/skills/video-assemble/scripts/timeline_emit.py +91 -7
- package/lib/video-recap/skills/video-assemble/scripts/visual_render.py +22 -8
- package/lib/video-recap/skills/video-cut/SKILL.md +34 -16
- package/lib/video-recap/skills/video-cut/references/shot-review.md +50 -0
- package/lib/video-recap/skills/video-cut/scripts/cut.py +2 -28
- package/lib/video-recap/skills/video-cut/scripts/cut_cli.py +58 -62
- package/lib/video-recap/skills/video-cut/scripts/cut_contract.py +21 -106
- package/lib/video-recap/skills/video-cut/scripts/cut_render.py +14 -9
- package/lib/video-recap/skills/video-cut/scripts/lib.py +39 -0
- package/lib/video-recap/skills/video-cut/scripts/narration_mapping.py +2 -155
- package/lib/video-recap/skills/video-cut/scripts/narrative_selection.py +244 -0
- package/lib/video-recap/skills/video-cut/scripts/shot_review.py +357 -0
- package/lib/video-recap/skills/video-recap/SKILL.md +86 -42
- package/lib/video-recap/skills/video-recap/references/audio-routing.md +126 -0
- package/lib/video-recap/skills/video-recap/references/config-playbook.md +12 -8
- package/lib/video-recap/skills/video-recap/references/data-schema.md +44 -33
- package/lib/video-recap/skills/video-recap/references/resource-library.md +151 -0
- package/lib/video-recap/skills/video-recap/references/shift-left-qc-schema.md +1 -1
- package/lib/video-recap/skills/video-recap/scripts/doctor.py +123 -30
- package/lib/video-recap/skills/video-recap/scripts/final_qc.py +22 -75
- package/lib/video-recap/skills/video-recap/scripts/lib.py +3 -3
- package/lib/video-recap/skills/video-recap/scripts/library.py +509 -0
- package/lib/video-recap/skills/video-recap/scripts/materials.py +63 -91
- package/lib/video-recap/skills/video-recap/scripts/mimo_qc.py +8 -70
- package/lib/video-recap/skills/video-recap/scripts/project_binding.py +286 -0
- package/lib/video-recap/skills/video-recap/scripts/qc/__init__.py +1 -0
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_client.py → qc/mimo_client.py} +1 -1
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_evidence.py → qc/mimo_evidence.py} +33 -66
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_observations.py → qc/mimo_observations.py} +3 -11
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_payload.py → qc/mimo_payload.py} +4 -7
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_report.py → qc/mimo_report.py} +17 -28
- package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_runner.py → qc/mimo_runner.py} +2 -2
- package/lib/video-recap/skills/video-recap/scripts/qc_contract.py +0 -19
- package/lib/video-recap/skills/video-recap/scripts/recap_cli.py +119 -50
- package/lib/video-recap/skills/video-recap/scripts/recap_inspect.py +32 -114
- package/lib/video-recap/skills/video-recap/scripts/recap_review.py +9 -23
- package/lib/video-recap/skills/video-recap/scripts/recap_runner.py +387 -334
- package/lib/video-recap/skills/video-recap/scripts/recap_runtime.py +23 -23
- package/lib/video-recap/skills/video-recap/scripts/recap_source.py +278 -0
- package/lib/video-recap/skills/video-recap/scripts/recap_stage_qc.py +25 -12
- package/lib/video-recap/skills/video-recap/scripts/recap_timeline.py +59 -52
- package/lib/video-recap/skills/video-recap/scripts/resource_lock.py +162 -0
- package/lib/video-recap/skills/video-script/SKILL.md +16 -13
- package/lib/video-recap/skills/video-script/references/creative-editing-playbook.md +9 -5
- package/lib/video-recap/skills/video-script/references/promotional-copy.md +68 -0
- package/lib/video-recap/skills/video-script/references/research-guide.md +1 -1
- package/lib/video-recap/skills/video-script/scripts/evidence_bundle.py +24 -76
- package/lib/video-recap/skills/video-script/scripts/lib.py +10 -87
- package/lib/video-recap/skills/video-script/scripts/narration_lint.py +63 -39
- package/lib/video-recap/skills/video-script/scripts/review.py +0 -2
- package/lib/video-recap/skills/video-script/scripts/review_grounding.py +35 -59
- package/lib/video-recap/skills/video-script/scripts/review_response.py +66 -128
- package/lib/video-recap/skills/video-script/scripts/review_runner.py +12 -20
- package/lib/video-recap/skills/video-script/scripts/speech_ownership.py +4 -4
- package/lib/video-recap/skills/video-script/scripts/validate.py +53 -42
- package/lib/video-recap/skills/video-understanding/SKILL.md +6 -4
- package/lib/video-recap/skills/video-understanding/references/data-schema.md +50 -156
- package/lib/video-recap/skills/video-understanding/references/research-guide.md +4 -4
- package/lib/video-recap/skills/video-understanding/scripts/asr.py +85 -65
- package/lib/video-recap/skills/video-understanding/scripts/asr_timing_evidence.py +270 -0
- package/lib/video-recap/skills/video-understanding/scripts/brief.py +2 -5
- package/lib/video-recap/skills/video-understanding/scripts/briefing/__init__.py +1 -0
- package/lib/video-recap/skills/{video-script/scripts/agent_brief.py → video-understanding/scripts/briefing/builder.py} +38 -35
- package/lib/video-recap/skills/video-understanding/scripts/{brief_context.py → briefing/context.py} +4 -35
- package/lib/video-recap/skills/{video-script/scripts/brief_inputs.py → video-understanding/scripts/briefing/inputs.py} +9 -31
- package/lib/video-recap/skills/{video-script/scripts/brief_timeline.py → video-understanding/scripts/briefing/timeline.py} +5 -6
- package/lib/video-recap/skills/video-understanding/scripts/consolidate.py +65 -116
- package/lib/video-recap/skills/video-understanding/scripts/detect.py +31 -40
- package/lib/video-recap/skills/video-understanding/scripts/lib.py +30 -86
- package/lib/video-recap/skills/video-understanding/scripts/narration_lint.py +63 -39
- package/lib/video-recap/skills/video-understanding/scripts/speech_ownership.py +4 -4
- package/lib/video-recap/skills/video-understanding/scripts/storyboard.py +17 -79
- package/lib/video-recap/skills/video-understanding/scripts/understanding_brief.py +14 -40
- package/lib/video-recap/skills/video-understanding/scripts/understanding_cache.py +64 -46
- package/lib/video-recap/skills/video-understanding/scripts/understanding_runner.py +31 -11
- package/lib/video-recap/skills/video-understanding/scripts/understanding_storyboard.py +19 -14
- package/lib/video-recap/skills/video-understanding/scripts/vlm.py +80 -108
- package/lib/video-recap/skills/video-voiceover/SKILL.md +29 -19
- package/lib/video-recap/skills/video-voiceover/references/index-tts.md +31 -0
- package/lib/video-recap/skills/video-voiceover/scripts/approved_text_policy.py +123 -0
- package/lib/video-recap/skills/video-voiceover/scripts/dub.py +51 -59
- package/lib/video-recap/skills/video-voiceover/scripts/lib.py +8 -44
- package/lib/video-recap/skills/video-voiceover/scripts/providers/__init__.py +1 -0
- package/lib/video-recap/skills/video-voiceover/scripts/providers/index_tts.py +184 -0
- package/lib/video-recap/skills/video-voiceover/scripts/voiceover.py +212 -134
- package/package.json +45 -45
- package/lib/novel-to-game/skills/game-world-design/references/dialogue-design-method.md +0 -58
- package/lib/novel-to-game/skills/game-world-design/references/game-writing-craft.md +0 -53
- package/lib/novel-to-game/skills/novel-to-game/references/intake-benchmark-reference.md +0 -38
- package/lib/oh-story/skills/story-long-analyze/references/material-decomposition.md +0 -530
- package/lib/oh-story/skills/story-long-analyze/references/output-templates.md +0 -559
- package/lib/oh-story/skills/story-long-scan/references/scan-output-format.md +0 -207
- package/lib/oh-story/skills/story-long-write/references/state-tracking.md +0 -108
- package/lib/oh-story/skills/story-short-analyze/references/material-decomposition.md +0 -678
- package/lib/oh-story/skills/story-short-analyze/references/output-templates.md +0 -561
- package/lib/video-recap/skills/video-assemble/scripts/jianying_schema.py +0 -98
- package/lib/video-recap/skills/video-recap/references/creative-editing-playbook.md +0 -225
- package/lib/video-recap/skills/video-recap/references/research-guide.md +0 -74
- package/lib/video-recap/skills/video-recap/references/timeline-and-jianying.md +0 -250
- package/lib/video-recap/skills/video-script/scripts/brief_context.py +0 -348
- package/lib/video-recap/skills/video-script/scripts/narration.py +0 -12
- package/lib/video-recap/skills/video-understanding/scripts/agent_brief.py +0 -399
- package/lib/video-recap/skills/video-understanding/scripts/brief_inputs.py +0 -290
- package/lib/video-recap/skills/video-understanding/scripts/brief_timeline.py +0 -327
- /package/lib/video-recap/skills/video-assemble/scripts/{jianying_tracks.py → jianying/tracks.py} +0 -0
- /package/lib/video-recap/skills/video-recap/scripts/{mimo_qc_contract.py → qc/mimo_contract.py} +0 -0
- /package/lib/video-recap/skills/video-voiceover/scripts/{fish_audio.py → providers/fish_audio.py} +0 -0
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# story-review:full/lean 模式派子代理与综合
|
|
2
|
+
|
|
3
|
+
只有实际模式仍是 full/lean 时才读本文件。
|
|
4
|
+
|
|
5
|
+
使用当前运行时的 Agent 工具并行调用(Codex 原生子代理使用 `agent_type`,Claude Code 使用 `subagent_type`,OpenCode 使用 `subagent` 工具的 `agent` 参数,Antigravity 使用 `invoke_subagent` + 同名 `TypeName`;实际字段以当前 CLI 暴露的工具为准)。每个 Agent 不继承父对话上下文,prompt 必须自包含项目路径、审查范围、文件路径、必要摘录和统一 Findings Schema。审稿视角的三个 prompt 还要内联审查基准包摘要与 Rubric Source,不要求子 Agent 必须读 `story-review/references/*` 才能完成任务(如需补充只读本 Skill 的 references);consistency-checker 例外,它只核对事实,按自己的检查项审,不带审查基准包。所有 reviewer 只读:不改任何文件,只输出结果。
|
|
6
|
+
|
|
7
|
+
**调用规则**:执行 Phase 0 后,只有实际模式仍是 full/lean 时才 spawn。不要 spawn 缺失 Agent。
|
|
8
|
+
|
|
9
|
+
**story-explorer 预查询(可选)**。仅当 `Effective Mode` 仍为 `full`/`lean`、当前允许 spawn 且当前运行时的 Agent 工具可用时,才可在对应 canonical agent 目录下确认 `story-explorer` 已部署并 spawn;Antigravity 检查 `.agents/agents/story-explorer/agent.md`,用 `invoke_subagent` + `TypeName: "story-explorer"`。`solo` 或子代理递归保护场景下不得 spawn,只能直接读取/检索。Prompt 示例:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
项目目录:{dir}
|
|
13
|
+
查询类型:setting_appearances
|
|
14
|
+
查询参数:{审查涉及的设定关键词}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
**Agent 1: story-architect**(subagent_type: story-architect)
|
|
18
|
+
- full/lean 均调用。
|
|
19
|
+
- 审查视角:主题对齐、大纲结构、钩子/反转质量、范围控制、平台期待。
|
|
20
|
+
- 提示指令:
|
|
21
|
+
```
|
|
22
|
+
你是 story-architect,从故事架构层面审查以下内容。
|
|
23
|
+
你的任务是【找问题】,不是验证正确性。以最严苛的标准审视。
|
|
24
|
+
项目路径:{项目根}
|
|
25
|
+
审查范围:{文件路径/章节/必要摘录}
|
|
26
|
+
文风路径:{本书文风全文路径,无则写无}
|
|
27
|
+
style_resolution:{本次生效要求及来源、被覆盖的默认条款、事实边界;文字风格判断共用}
|
|
28
|
+
审查基准包摘要:{Phase 1 形成的 rubric / fallback 摘要,必须内联}
|
|
29
|
+
Rubric Source: file | embedded fallback
|
|
30
|
+
相关文件路径:{设定/大纲/细纲文件路径}
|
|
31
|
+
继承的开放项(分批审查必填,无则写「无」):{从 追踪/伏笔.md 提取的、预计回收章 ≤ 本批末章的已埋未回收钩子,连同上一批未解决 findings 摘要}
|
|
32
|
+
检查项:
|
|
33
|
+
1. 这一章是否推进了故事主题?
|
|
34
|
+
2. 大纲结构是否完整(钩子/爽点/悬念)?
|
|
35
|
+
3. 情绪节奏是否合理?
|
|
36
|
+
4. 钩子和反转设计质量如何?
|
|
37
|
+
5. 范围控制:有无角色/设定膨胀?
|
|
38
|
+
6. 剧情循环是否存在且可重复?(参照审查基准包摘要里的剧情循环原则)
|
|
39
|
+
7. 高潮场景是否用了蓄能→假胜→崩解结构?(参照审查基准包摘要里的高潮构建原则)
|
|
40
|
+
8. 伏笔密度、连载期待和结构信息量是否合理?(伏笔密度通常只作为 S4 结构风险,除非已造成理解混乱)
|
|
41
|
+
9. 按平台 rubric 或通用内容 rubric 逐项对照,标记 PASS/FAIL。
|
|
42
|
+
10. 继承的开放项里,本批本该兑现的钩子/伏笔是否落空?
|
|
43
|
+
11. 开头同质化(仅当本章是全书开篇/前 3 章):开局切口是不是同题材的默认套路(穿越即退婚、系统绑定、末世第一天、开场即打脸等),能不能原样换到任意同类书?"有钩子/非天气开场"不等于不同质。对照 `story-review/references/plot-core-methods.md`「噱头分类与开篇流程」判断——能整体换到同类书=同质化(撞题材模板至少 S2;套路化但有具体人物/处境微差 S3)。
|
|
44
|
+
12. 结尾总结:章尾是总结/升华/复述式收尾("就这样……""他终于明白……""这一夜注定……"),还是落在动作/画面/悬念上?检测器已判 blocking 的(`trailer-summary`)按上面「blocking 一律 S2」处理,不重复定级;检测器没覆盖的总结/升华/复述式收尾按影响定 S2/S3(改写走 /story-deslop:章尾预告与章尾状态总结归 Gate F,其余 blocking 并入 Gate B;本 skill 只标问题不改写)。
|
|
45
|
+
|
|
46
|
+
输出格式:
|
|
47
|
+
VERDICT: APPROVE / CONCERNS / REJECT
|
|
48
|
+
FINDINGS: 必须使用统一 Findings Schema,severity 必须是 S1/S2/S3/S4。
|
|
49
|
+
INHERITED_ITEMS: 逐条列继承的开放项 + 已检查 / 未能检查;本批本该兑现却落空的列为 finding。
|
|
50
|
+
RECOMMENDATIONS: [修改建议]
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Agent 2: character-designer**(subagent_type: character-designer)
|
|
54
|
+
- full 模式调用。
|
|
55
|
+
- 审查视角:角色语言风格一致性、对话质量、人物弧线、关系推进。
|
|
56
|
+
- 提示指令:
|
|
57
|
+
```
|
|
58
|
+
你是 character-designer,从角色和对话层面审查以下内容。
|
|
59
|
+
你的任务是【找问题】,不是验证正确性。以最严苛的标准审视。
|
|
60
|
+
项目路径:{项目根}
|
|
61
|
+
审查范围:{文件路径/章节/必要摘录}
|
|
62
|
+
文风路径:{本书文风全文路径,无则写无}
|
|
63
|
+
style_resolution:{本次生效要求及来源、被覆盖的默认条款、事实边界;文字风格判断共用}
|
|
64
|
+
审查基准包摘要:{Phase 1 形成的 rubric / fallback 摘要,必须内联}
|
|
65
|
+
Rubric Source: file | embedded fallback
|
|
66
|
+
相关角色文件:{角色设定文件路径}
|
|
67
|
+
检查项:
|
|
68
|
+
1. 角色语言风格是否与语言风格档案一致?
|
|
69
|
+
2. 对话是否千篇一律或信息过满?
|
|
70
|
+
3. 人物弧线是否连贯?
|
|
71
|
+
4. 角色行为是否符合其动机?
|
|
72
|
+
5. 对话是否有潜台词和信息控制?
|
|
73
|
+
6. 爱情线好感度与 CP 行为是否匹配?(参照审查基准包摘要或本 Skill 的角色关系参考)
|
|
74
|
+
7. 好感度进度是否可感知?
|
|
75
|
+
8. 对话三症状(可选读 `story-review/references/dialogue-mastery.md` 自查项):① 机械对话/问答式/句间无情绪承接;② 角色当「科普嘴」整段讲设定原理(Gate G 同样管台词);③ 说话不分场合(高压/生死 beat 的玩笑、口头梗、插科打诨出戏)。命中按 S2/S3 报具体引用+改法。
|
|
76
|
+
|
|
77
|
+
输出格式:
|
|
78
|
+
VERDICT: APPROVE / CONCERNS / REJECT
|
|
79
|
+
FINDINGS: 必须使用统一 Findings Schema,severity 必须是 S1/S2/S3/S4。
|
|
80
|
+
RECOMMENDATIONS: [修改建议]
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Agent 3: narrative-writer**(subagent_type: narrative-writer)
|
|
84
|
+
- full 模式调用。
|
|
85
|
+
- 审查视角:AI味检测(含解释腔/上帝感/安排感=模式 8)、情绪烈度(够不够爽/会不会太保守)、格式合规、节奏均匀度、文字自然度。
|
|
86
|
+
- 提示指令:
|
|
87
|
+
```
|
|
88
|
+
你是 narrative-writer,从文字质量层面审查以下内容。
|
|
89
|
+
你的任务是【找问题】,不是验证正确性。以最严苛的标准审视。
|
|
90
|
+
只读审查:不改任何文件(含正文),只输出下方 VERDICT / FINDINGS / RECOMMENDATIONS。
|
|
91
|
+
项目路径:{项目根}
|
|
92
|
+
审查范围:{文件路径/章节/必要摘录}
|
|
93
|
+
文风路径:{本书文风全文路径,无则写无}
|
|
94
|
+
style_resolution:{本次生效要求及来源、被覆盖的默认条款、事实边界;文字风格判断共用}
|
|
95
|
+
审查基准包摘要:{Phase 1 形成的 rubric / fallback 摘要,必须内联}
|
|
96
|
+
Rubric Source: file | embedded fallback
|
|
97
|
+
去味判据:按你读取表的 anti-ai-writing、banned-words、deslop-gates 审(审查任务照表读),这里不摘抄
|
|
98
|
+
检查项:
|
|
99
|
+
1. 是否存在禁用词/套话/陈词滥调,或“像/好像/仿佛/如同”式比喻成片堆叠?
|
|
100
|
+
2. 是否出现 AI 写作指纹、10 种 AI 写作模式(含模式 8 解释腔/上帝视角/安排感)或章末总结体?
|
|
101
|
+
3. 格式是否合规(按戏剧单元/镜头自然断段、无机械字数切分、无空行、对话独立成行、主语节奏自然)?
|
|
102
|
+
4. 标点节奏是否匹配语气/人物声线:是否通篇句号化、随机堆砌问号/感叹号,或残留 `……`/`——` 硬造停顿?本书已明确授权且有功能的停顿不因符号本身判错。
|
|
103
|
+
5. 是否出现“这五个字 / 短短四字 / 三个字一落 / 八个字砸下去”等正文内具体字数表达?若统计口径不明、未见机器核对结果或无叙事必要,标为问题并建议改成非具体数字表达。
|
|
104
|
+
6. 节奏是否均匀(有无连续多节无情绪变化)?
|
|
105
|
+
7. 是否存在删掉无损的任务卡点或流程细节?若只是水/局部节奏问题标 S3;明显拖垮主线推进标 S2。
|
|
106
|
+
8. 身体细节是否重复、无功能?按本书文风和叙事作用判断,不设单词次数硬线。
|
|
107
|
+
9. AI味分级(轻度/中度/重度)及证据。
|
|
108
|
+
10. 去 AI 补充复核:是否有作者解释总结/意义尾巴;是否连续堆精致戏剧反应短语;是否把已有手机/屏幕/公告/规则/证据载体改成叙述者解释;是否把任务卡点当成自然感或凑字数手段;是否机械删除了有功能的生活化/角色化比喻或短篇主观审判句。
|
|
109
|
+
|
|
110
|
+
输出格式:
|
|
111
|
+
VERDICT: APPROVE / CONCERNS / REJECT
|
|
112
|
+
FINDINGS: 必须使用统一 Findings Schema,severity 必须是 S1/S2/S3/S4;AI味级别写入 issue 或 category。
|
|
113
|
+
RECOMMENDATIONS: [修改建议]
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
**Agent 4: consistency-checker**(subagent_type: consistency-checker)
|
|
117
|
+
- full/lean 均调用。
|
|
118
|
+
- 审查视角:grep-first + 推理型一致性检测,输出 S1-S4 报告。
|
|
119
|
+
- 提示指令:
|
|
120
|
+
```
|
|
121
|
+
你是 consistency-checker,使用 grep-first + 推理型一致性审查检测事实矛盾。
|
|
122
|
+
你的任务是【找事实矛盾、状态断线和需要推理才能发现的设定逻辑冲突】,不做创作评判,不评价文学质量,不输出创作修改建议。
|
|
123
|
+
项目路径:{项目根}
|
|
124
|
+
审查范围:{文件路径/章节/必要摘录}
|
|
125
|
+
已知角色:{从设定文件提取角色列表}
|
|
126
|
+
继承的开放项(分批审查必填,无则写「无」):{从 追踪/伏笔.md 提取的、预计回收章 ≤ 本批末章的已埋未回收伏笔,连同上一批未解决 findings 摘要}
|
|
127
|
+
检查项:
|
|
128
|
+
1. 角色属性是否前后一致?
|
|
129
|
+
2. 世界规则是否被违反?
|
|
130
|
+
3. 伏笔状态是否前后一致(已埋/计划回收/已回收/断线)?
|
|
131
|
+
4. 时间线是否自洽?
|
|
132
|
+
5. 术语、身份、地点、能力边界是否前后一致?
|
|
133
|
+
6. 继承的开放项里,本批本该回收的伏笔是否仍悬空?
|
|
134
|
+
|
|
135
|
+
输出格式:
|
|
136
|
+
VERDICT: APPROVE / CONCERNS / REJECT
|
|
137
|
+
FINDINGS: 必须使用统一 Findings Schema,severity 必须是 S1/S2/S3/S4;category 只能使用 consistency / factual / format / causal / rule_boundary。
|
|
138
|
+
INHERITED_ITEMS: 逐条列继承的开放项 + 已检查 / 未能检查;本批新发现、不在 伏笔.md 的开放钩子单列,供主会话回写 追踪/伏笔.md。
|
|
139
|
+
FACTUAL_RECONCILIATION: [仅列需统一的事实来源或需人工裁决项,不写文学创作建议]
|
|
140
|
+
REASONING_CHAINS: [仅列推理型 finding 的前提/规则 -> 触发事件 -> 矛盾点 -> 需裁决问题]
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## 综合裁决
|
|
144
|
+
|
|
145
|
+
1. 收集实际执行的 reviewer VERDICT 和 FINDINGS。
|
|
146
|
+
2. 合并去重:按 `severity` 排序(S1 > S2 > S3 > S4),同级内按影响范围排序。
|
|
147
|
+
3. **可选事实核查**:如果审查内容涉及需要验证的外部事实(历史年代、地理方位、职业细节等),只有在 `Effective Mode` 仍为 `full`/`lean`、当前不是子 Agent、当前运行时的 Agent 工具可用且对应 canonical agent 目录下的 `story-researcher` 已部署时,才可额外 spawn;Antigravity 检查 `.agents/agents/story-researcher/agent.md`,用 `invoke_subagent` + `TypeName: "story-researcher"`。`solo`、missing/malformed/stale/spawn failed 降级或子代理递归保护场景下不得 spawn,只能在报告中标记“需人工事实核查”。
|
|
148
|
+
4. **分歧呈现**:如果 reviewer 间有冲突意见,明确呈现分歧让用户裁决;不要自动妥协。
|
|
149
|
+
5. 按 SKILL.md「报告面向作者」输出综合审查报告:开头说明审查方式与范围,证据不足项写成作者能补的材料,执行路径只进技术备注行。
|
|
150
|
+
|
|
151
|
+
## 报告模板
|
|
152
|
+
|
|
153
|
+
只有实际模式确实为 `full` 或 `lean` 时才使用本模板;如果 Phase 0 或运行时失败导致降级 `solo`,必须改用 solo 模式模板。lean 排除的视角写进「这次怎么审的」;full/lean 必需 reviewer 缺失或 spawn 失败时降级 solo,不在本模板里标「未看」后继续综合。
|
|
154
|
+
|
|
155
|
+
<!-- author-report -->
|
|
156
|
+
```md
|
|
157
|
+
=== 《{书名}》{审查范围}审查 ===
|
|
158
|
+
这次怎么审的:{结构、人物、文字、设定一致性四个视角分头看 | 精简审:结构和设定一致性两个视角},按{番茄 | 起点 | 知乎盐言 | 通用网文}的标准。
|
|
159
|
+
|
|
160
|
+
总体判断:{可以发 | 改完下面几处再发 | 这一章需要重写}——{一句话理由,用读者感受说}
|
|
161
|
+
|
|
162
|
+
## 必须改({n} 处)
|
|
163
|
+
1. 第{N}章「{原文引用}」
|
|
164
|
+
问题:{读者会怎么想、哪里读不通}
|
|
165
|
+
建议:{具体改法}
|
|
166
|
+
|
|
167
|
+
## 建议改({n} 处)
|
|
168
|
+
{同上格式}
|
|
169
|
+
|
|
170
|
+
## 可以不改({n} 处)
|
|
171
|
+
{一行一条:位置 + 问题 + 改法;风格微调也放这里}
|
|
172
|
+
|
|
173
|
+
## 需要你决定
|
|
174
|
+
{审稿视角有分歧、或事实需要你裁定时,写成问题 + 选项 + 我的建议,例如「第12章写左臂受伤、第15章写右臂,统一成哪边?建议左臂(第12章交代了伤的来历)」;没有就写"无"}
|
|
175
|
+
|
|
176
|
+
## 没法判断的地方
|
|
177
|
+
{缺哪份设定或大纲导致没法核对、需要人工查证的外部事实;没有就写"无"}
|
|
178
|
+
|
|
179
|
+
## 下一批接着核对
|
|
180
|
+
{仅分批审查:留到下一批回头看的问题 + 预计在哪几章兑现;否则删掉本节}
|
|
181
|
+
|
|
182
|
+
下一步:{例如「说"改第12章",我按必须改的几处动手」「AI 味集中的段落可以说"去 AI 味"」}
|
|
183
|
+
技术备注:Mode {full | lean}→{full | lean} · Fallback none · Rubric {…} ({file | embedded})
|
|
184
|
+
```
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
> 本文件的句长、视角、标点、修辞与禁用词是默认写法,服从 [style-resolution.md](style-resolution.md) 的逐维裁决。所选 Gate 检查表达效果,不因作者有意选择某写法就机械删除;获准命中按书级 `.deslop-whitelist` 处理。
|
|
4
4
|
|
|
5
|
-
<!-- 同名副本×
|
|
5
|
+
<!-- 同名副本×4 字节同步,改动后跑 scripts/check-shared-files.sh -->
|
|
6
6
|
|
|
7
|
-
> 识别AI
|
|
7
|
+
> 识别AI写作指纹、改写顺序、禁用词约束、改写范例库。用于正文写作后做去AI味自检和改写时查阅。
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
| 写完正文后做去AI自检 | 核心规则 -> AI写作模式检测 -> 质量维度检查 |
|
|
16
16
|
| 改写某段AI味重的文字 | 改写范例库 + 冲突对话改写范例 |
|
|
17
17
|
| 检查是否用了禁用词 | 禁用词与句式速查 -> AI高频词(模式1) |
|
|
18
|
-
| 系统性去除整章AI味 |
|
|
18
|
+
| 系统性去除整章AI味 | 改写顺序 |
|
|
19
19
|
| 检查章尾是否有总结升华 | AI写作指纹 -> 章末总结体 |
|
|
20
20
|
| 判断情绪描写是否告知式 | Show Don't Tell原则 + 去AI味补充技法 |
|
|
21
21
|
| 快速扫描全章质量 | 快速自检口诀 + 质量维度检查 |
|
|
@@ -285,7 +285,7 @@ AI 喜欢把事情凑成三个以显"完整"。-> 砍到只剩最有力的一条
|
|
|
285
285
|
- 剧透式点破潜台词:「那点笑她看得分明」「谁都看得出他在撒谎」-> 把藏着的挑明了。留着别点破。
|
|
286
286
|
- 定性比喻/盖棺句:「像在宣判一件早已定好的事」「像看一件死物」-> 比喻在替角色下定论。非角色此刻强烈主观感受就删;要留也只能是她带偏见的瞬间感觉,不是客观断言。
|
|
287
287
|
|
|
288
|
-
自检:每句问一遍——这是"角色在经历",还是"作者在讲解/安排"
|
|
288
|
+
自检:每句问一遍——这是"角色在经历",还是"作者在讲解/安排"?凡作者跳出来讲,删,或改成角色视角内的呈现。根治办法是锁定深度限知视角:只写视角人物此刻看得见、听得见、想得到的,镜头钉死在角色身体里,作者就没位置跳出来了。
|
|
289
289
|
|
|
290
290
|
改法优先级:先删或原位替换污染句,不在段尾另补“人味”尾巴。需要补信息时,把原来的总结/动机/评价句改成角色当下能碰到的问题、手续、回信、付款、门外动静等具体压力;已有手机/屏幕/公告/门牌/表单等信息,优先作为角色看见的场内载体保留,不要转写成叙述者解释。具体载体跟剧情走,不套固定清单。
|
|
291
291
|
|
|
@@ -372,9 +372,11 @@ AI 喜欢把事情凑成三个以显"完整"。-> 砍到只剩最有力的一条
|
|
|
372
372
|
|
|
373
373
|
---
|
|
374
374
|
|
|
375
|
-
##
|
|
375
|
+
## 改写顺序(只排所选 Gate 的先后)
|
|
376
376
|
|
|
377
|
-
|
|
377
|
+
下面三步只决定所选 Gate 内问题的处理先后,不另起一轮全篇去味;某一步没有对应的所选 Gate 就跳过。
|
|
378
|
+
|
|
379
|
+
### 第一步:去泛化(Strip Generic)
|
|
378
380
|
- 抽象情绪总结句 -> 按规则 2 判断:删重复说明,保留准确直写,需要时用原文已有信息落地
|
|
379
381
|
- 假深度句 -> 删
|
|
380
382
|
- 意义膨胀 -> 缩小到具体影响
|
|
@@ -384,9 +386,9 @@ AI 喜欢把事情凑成三个以显"完整"。-> 砍到只剩最有力的一条
|
|
|
384
386
|
- 过度使用"于是""然而""此刻" -> 删掉一半
|
|
385
387
|
- 所有角色说话一样"高级" -> 区分语气
|
|
386
388
|
|
|
387
|
-
|
|
389
|
+
**原则**:能删就删,不能删就用具体细节替换。
|
|
388
390
|
|
|
389
|
-
###
|
|
391
|
+
### 第二步:去书面化(Cut Professional Diction)
|
|
390
392
|
- 分析性用词("机制""结构""逻辑""体系"出现在小说中)-> 换成日常表达
|
|
391
393
|
- 抽象名词滥用 -> 直接说事
|
|
392
394
|
- 体制内用语("进一步""深入""推进""落实")-> 删
|
|
@@ -394,7 +396,7 @@ AI 喜欢把事情凑成三个以显"完整"。-> 砍到只剩最有力的一条
|
|
|
394
396
|
|
|
395
397
|
**例外**:保留专业感的场景(历史题材正式用语、文学向刻意密度、喜剧夸张修辞)。
|
|
396
398
|
|
|
397
|
-
###
|
|
399
|
+
### 第三步:回自然感(Restore Natural Presence)
|
|
398
400
|
- 具体的感官细节(气味、温度、触感)
|
|
399
401
|
- 角色说话方式的区分(不同人不同语气)
|
|
400
402
|
- 句首变化:连续 3+ 句用同一主语或同一词性开头时换开法(动作、场景、对话引入)
|
|
@@ -407,7 +409,7 @@ AI 喜欢把事情凑成三个以显"完整"。-> 砍到只剩最有力的一条
|
|
|
407
409
|
|
|
408
410
|
### 执行范围
|
|
409
411
|
|
|
410
|
-
调用方指定 Gate 时,只处理选定 Gate
|
|
412
|
+
调用方指定 Gate 时,只处理选定 Gate;改写顺序只排先后,不重新分级或扩大范围。未指定范围时,按实际问题选择适用检查。
|
|
411
413
|
|
|
412
414
|
### 自检清单
|
|
413
415
|
- 对话自然度检查:对话是否使用口语化表达,是否避免了书面语/正式腔调
|
|
@@ -551,5 +553,4 @@ AI 喜欢把事情凑成三个以显"完整"。-> 砍到只剩最有力的一条
|
|
|
551
553
|
- [ ] **detector advisory 逐条复核**:`micro-action-tic` / `stock-reaction-tic` / `abstract-summary-tic` / `cliche-density-tic` / `metaphor-density-tic` / `reasoning-chain-tic` / `system-notice-formality-tic` / `overcompressed-prose-tic` / `low-connective-density-tic` / `action-list-tic` 命中时按脚本给出的修法处理:先通读判断是不是机械复现,确属再改;功能性写法保留或标 `[需复核]`,不做同义词轮换、不机械注水
|
|
552
554
|
- [ ] **不做硬指标投机**:不为反检测强制每句换行、50-60 字一行、对话 50%-60%、英文点省略号,或把 `地/得` 全改成 `的`
|
|
553
555
|
- [ ] **任务卡点服从原文边界**:抽象总结若改成角色办事被卡住,必须来自原文已有任务/证据/手续/物件缺口;不新增原文没有的事件链
|
|
554
|
-
- [ ] **去AI三遍法执行**:轻度只做Pass1,中度做Pass1+2,重度完整三遍
|
|
555
556
|
- [ ] **对话自然度测试**:无书面语痕迹 = 通过
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
# 作者记忆维护
|
|
2
|
+
|
|
3
|
+
[author-memory.md](author-memory.md) 的少见时刻补充:记一条、确认、替换、忘掉和优先级仍按那份协议,本文件只在下列情况读——作者说「整理作者记忆」,或回执 `warnings`/查询 `omitted_ids` 提示超编;写入因 `作者画像.md` 写满失败;书根就是工作区,或工具报 `state.book`、单书布局错误;要做存量迁移 `migrate`、多事件原子 `commit`、派生视图 `check`;冲突候选要落定;碰到升级前留下的旧条目。
|
|
4
|
+
|
|
5
|
+
作者记忆借鉴“原始证据 → 候选 → 已确认画像 → 变更记录”的记忆管道,但把决定权留给作者。
|
|
6
|
+
|
|
7
|
+
## 文件
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
{工作区}/.story/作者记忆/ # 项目级 store:global / genre / workflow 条目,编号 AP
|
|
11
|
+
├── _author-memory-state.json # 唯一结构化权威
|
|
12
|
+
├── 作者画像.md # 仅 active,供作者查看与管理
|
|
13
|
+
├── 待确认.md # pending / conflict,不参与约束
|
|
14
|
+
└── 变更记录.md # 最近 100 次、最新在前的事务记录
|
|
15
|
+
{书}/.story/作者记忆/ # 书级 store:只存这本书的 book 条目,编号 BP,同样四个文件
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
三个 Markdown 文件都从 state 确定性生成,禁止手改;完整历史保留在 state,变更记录只展示最近 100 次。`作者画像.md` 是人类管理视图,普通写作 agent 不整份注入,而是调用 `query` 取得本次相关的紧凑上下文。
|
|
19
|
+
|
|
20
|
+
## 任务映射表
|
|
21
|
+
|
|
22
|
+
各 skill 入口的 `query` 命令按此表选 kind;写入时的预算提醒也按这四类任务组合估算。
|
|
23
|
+
|
|
24
|
+
| 任务 | query kinds | 注入位置 |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| 正文初稿 / 续写 | `prose_style` + `story_design` | 主会话与实际正文 agent |
|
|
27
|
+
| 去 AI 味 / 改写 | `prose_style` | 主会话与实际改写 agent |
|
|
28
|
+
| 设定 / 大纲 | `story_design` + `workflow` + `interaction` | 主会话,不传正文 agent |
|
|
29
|
+
| 审稿 | `delivery` + `interaction` + 必要的 `prose_style` | 主会话,不降低 rubric |
|
|
30
|
+
|
|
31
|
+
审稿匹配项只用于交付格式、协作方式和“作者有意采用的表达选择”说明;问题严重度和 PASS/FAIL 仍由 rubric 决定。
|
|
32
|
+
|
|
33
|
+
## 注入预算与容量
|
|
34
|
+
|
|
35
|
+
- **写入不因注入预算失败**:`record` / `commit` 照常成功、给回执;工具按上表四类任务组合估算最坏查询情形(全局条目+各 scope 维度最重的单一切片,切片按大小写无关归并、轻重按写作时真正读到的字段算,与真实查询同一把尺),装不进 2048 字节的组合在返回的 `warnings` 里点名将被略过的条目及其断言首句。
|
|
36
|
+
- 写入落盘后另一级 store 读不出来(书目录不存在、`--book` 与书级记录不符等)也照常给回执,`warnings` 注明本次提醒没算上它。写书级条目时「本书+全局」按实际条目精确计算;写项目级条目时只看得到项目级 store,顺手传 `--book-root` 就把当前这本书也算进提醒。
|
|
37
|
+
- 查询按 **重要度 → 本书例外 → 最近更新** 排序装填(同一范围的条目必在同一 store,「最近」按该 store 的修订号比,不跨 store 比较),先丢的恒是重要度较低的条目——`importance` 决定超编时谁留在 prompt 里。装不下的条目跳过而不中断(一条长的不挡后面的短条),漏下的 ID 按同一优先级报进 `omitted_ids`(最多列 20 条,`omitted` 是真实总数)。
|
|
38
|
+
- 注入预算之外还有一道硬上限:`作者画像.md` 超过 12288 字节时写入会直接失败并要求先整理。active 条目攒到几十上百条才会碰到(远在注入预算之后),碰到就走「整理作者记忆」;`forget` 这类减量操作在满编时照常可用。
|
|
39
|
+
|
|
40
|
+
## 整理作者记忆
|
|
41
|
+
|
|
42
|
+
作者说「整理作者记忆」,或回执 `warnings`/查询 `omitted_ids` 提示超编、写入因画像写满失败时:读项目级与当前书的 `作者画像.md`(每条都标了范围、重要度、把握和确认次数,重要度就是超编时的去留依据),提出合并同义条(`replace` 多合一)、退役过时条(`forget`)、给错标成 `high` 的条目下调重要度、把超长断言压缩成一句话的提案;项目级画像里还有「本书:」条目时,「对该书运行 `migrate --book-root`」列为默认提案项。清单用原话逐条列给作者确认(编号只放括号里),确认后按 store 各汇成一份 `commit` 事务提交(一份事务只写一个 store)。合并时保住每条的否定词、限定词和适用范围——合不动就退役其中一条,不要靠删限定词把两条凑成一条。整理只由作者发起或确认,不自动执行。
|
|
43
|
+
|
|
44
|
+
## 冲突候选
|
|
45
|
+
|
|
46
|
+
冲突候选(`conflict`)不能绕过旧规则直接 `decide=activate`。作者选新说法:用 `replace`,`old_ids` 同时列旧 active 条目和这条冲突候选,新条目直接 active、两条旧的标 `superseded`;作者留旧规则:对候选 `decide=reject`。旧条目被 `replace` / `forget` 撤下后,它不再是任何候选的冲突对象,冲突对象清空的候选退回 `pending`。
|
|
47
|
+
|
|
48
|
+
## 单书布局
|
|
49
|
+
|
|
50
|
+
书根就是工作区(`--book-root` 与 `--workspace` 同一目录)时,书级 store 改住 `{工作区}/.story/作者记忆/书级/`,与项目级各自一份 state;首次建立的书名优先取项目级存量本书条目里唯一的书名,再取目录名。旧版曾把书级 state 写在项目级位置,此后项目级读写都报 `state.book`;带 `--book-root {工作区}` 运行任一命令(含 `query`)会先把它原样移进 `书级/`,不改内容。这个目录其实是某个工作区里的一本书时(上一层叫 `长篇/` 或 `短篇/`,或某个祖先有 `.active-book` 或项目级 state),工具直接报错、不动任何文件,按报错改传 `--workspace`。
|
|
51
|
+
|
|
52
|
+
## 存量迁移
|
|
53
|
+
|
|
54
|
+
不做双读:升级前写进项目级 store 的 book 条目不再参与查询与预算估算,也不再接受新的 book 写入;它们仍在 `作者画像.md` 里可见、可 `decide` / `forget`。对每本书运行一次 `migrate --book-root {书目录}` 即可整批搬回来:断言、证据、确认次数、重要度原样保留,换成 `BP` 编号,原 `AP` 条目标 `superseded` 并注明去向;与全局条目的冲突关系在迁移后不再成立,这类候选退回 `pending`。书级每个源条目一笔事务,重跑只补没做完的一半。「整理作者记忆」看到项目级画像里还有「本书:」条目时,把迁移列为默认提案项。
|
|
55
|
+
|
|
56
|
+
## 旧条目
|
|
57
|
+
|
|
58
|
+
- 升级前写下的长断言不受 120 字节新建上限约束:原样重申它会**强化**原条目(确认次数 +1),不会因超长被拒;只有真正新建条目才校验 120 字节。
|
|
59
|
+
- 存量 state 里推断类旧来源的条目照常可读、可确认、可退役;新写入仍只接受 `explicit_user`、`accepted_suggestion`、`manual`。
|
|
60
|
+
|
|
61
|
+
## 其他命令
|
|
62
|
+
|
|
63
|
+
先依次尝试 `python3`、`python`、`py -3` 找到 Python 3,再从当前 skill 根运行本地副本(`record` / `query` 见 author-memory.md):
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py init --workspace {工作区} [--book-root {书目录}]
|
|
67
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py commit --workspace {工作区} [--book-root {书目录}] --input {工作区}/.story/work/作者记忆-事务.json
|
|
68
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py migrate --workspace {工作区} --book-root {书目录}
|
|
69
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py check --workspace {工作区} [--book-root {书目录}]
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
- `commit`:高级批量入口,只在需要把多个动作绑定成一次原子提交时用(如整理作者记忆)。顶层传 `schema_version`、唯一 `transaction_id`、当前 `expected_state_revision` 和含 1–32 项的 `operations`(每项与单事件的 `operation` 同形)。一份事务只写一个 store;先在内存完成 schema、引用、容量和所有视图校验,操作按数组顺序应用,任一步失败则整份事务零写入,最后原子替换 state。过期修订会在任何写入前失败。事务文件在成功前必须保留,成功后删除;显式记忆请求按 author-memory.md「回执怎么告诉作者」转告。
|
|
73
|
+
- `migrate`:把项目级 store 里某本书的存量 book 条目整批搬进 `--book-root` 的书级 store,幂等,中途失败直接重跑;返回 `migrated`(源→新编号),没有存量时为空。
|
|
74
|
+
- `check`:从 state 重建并逐字核验所有派生视图;传 `--book-root` 时两级一起核验。
|
|
75
|
+
- `init`:显式初始化 store;平常不需要,首次 `record` 会随事务创建。
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# 作者记忆协议
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
作者记忆保存跨会话复用的创作偏好,不保存小说世界里的事实,决定权留给作者。本文件管最常见的时刻:作者说出一条偏好,或要确认、替换、忘掉某条。少见情况读 [author-memory-maintenance.md](author-memory-maintenance.md):整理作者记忆与超编、画像写满、单书布局与 `state.book` 报错、存量迁移、多事件 `commit`、`check`、冲突候选落定、升级前的旧条目。
|
|
4
4
|
|
|
5
5
|
## 边界与优先级
|
|
6
6
|
|
|
@@ -17,95 +17,73 @@
|
|
|
17
17
|
|
|
18
18
|
作者记忆不能把本书事实写进 `.story/作者记忆/`,不能覆盖当前请求,不能降低审稿 rubric,也不能让去 AI 味改动剧情意图。小说事实继续由各书的 `追踪/` 和 `设定/` 管理。
|
|
19
19
|
|
|
20
|
-
##
|
|
20
|
+
## 存放与路由
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
两级 store,记忆随书走:`{工作区}/.story/作者记忆/` 存 global / genre / workflow 条目(编号 `AP`),`{书}/.story/作者记忆/` 只存本书的 book 条目(编号 `BP`)。每级各有 `作者画像.md`(生效条目)和 `待确认.md`(候选,不参与约束),都从 state 生成,禁止手改;不存在时写作、审稿、去味照常继续,首次 `record` 自动创建。
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
{工作区}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
├── 待确认.md # pending / conflict,不参与约束
|
|
29
|
-
└── 变更记录.md # 最近 100 次、最新在前的事务记录
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
三个 Markdown 文件都从 state 确定性生成,禁止手改;完整历史保留在 state,变更记录只展示最近 100 次。`作者画像.md` 是人类管理视图,普通写作 agent 不整份注入,而是调用 `query` 取得本次相关的紧凑上下文。`query` 要显式传 `--book`、已知的 `--genre` / `--workflow`;只传 kind 不会返回本书或题材项。作者记忆不存在时,普通写作、审稿和去味任务直接继续,不自动初始化空目录;首次 `record` 会随事务创建。
|
|
33
|
-
|
|
34
|
-
工作区必须显式传给脚本。优先使用已经包含 `.story/作者记忆/` 的最近祖先;首次初始化时使用承载多本书、`.active-book`、`长篇/`、`短篇/` 或 `拆文库/` 的创作工作区根。不要把用户主目录当默认工作区。
|
|
35
|
-
|
|
36
|
-
## 什么时候读取
|
|
37
|
-
|
|
38
|
-
长篇、短篇、去 AI 味开始前,如果 state 已存在,用 `query` 按本书、题材、流程和类型筛选 active 条目。查询输出固定不超过 2048 字节。不要先查询全部再让 agent 自行筛选,按任务直接选择 kind:
|
|
24
|
+
- `--workspace` 必须显式传,指创作工作区根——承载多本书、`.active-book`、`长篇/`、`短篇/` 或 `拆文库/` 的那一层;已有记忆时,是项目级 state(不带 `book` 字段)所在的最近祖先。`长篇/`、`短篇/` 下的书目录永远不当 `--workspace`,也不要把用户主目录当默认工作区。
|
|
25
|
+
- `--book-root` 是当前书的项目目录(`.active-book` 指向、或含 `设定/`、`正文/` 的那一层,如 `{工作区}/长篇/{书名}/`);书名默认取书级 state 记的名字,首次取目录名,`--book` 可覆盖。书根就是工作区时读维护文件「单书布局」。
|
|
26
|
+
- ID 前缀就是 store:`decide` / `forget` 看 `item_id`(`AP` 项目级,`BP` 书级),`remember` / `replace` 看 `scope.level`(`book` 书级,其余项目级)。书级操作必须传 `--book-root`,没传直接报错,不会退而写进项目级。
|
|
27
|
+
- `replace` 与 `conflicts_with` 不能跨 store:本书例外按优先级覆盖全局规则,不算冲突,直接 `remember` 为 book 条目;要把全局规则改成本书规则,拆成 `forget` + `remember` 两个事件。
|
|
39
28
|
|
|
40
|
-
|
|
41
|
-
|---|---|---|
|
|
42
|
-
| 正文初稿 / 续写 | `prose_style` + `story_design` | 主会话与实际正文 agent |
|
|
43
|
-
| 去 AI 味 / 改写 | `prose_style` | 主会话与实际改写 agent |
|
|
44
|
-
| 设定 / 大纲 | `story_design` + `workflow` + `interaction` | 主会话,不传正文 agent |
|
|
45
|
-
| 审稿 | `delivery` + `interaction` + 必要的 `prose_style` | 主会话,不降低 rubric |
|
|
29
|
+
## 查询
|
|
46
30
|
|
|
47
|
-
|
|
31
|
+
各 skill 入口已写好本任务的 `query` 命令(长篇正文由组装脚本代查);没写命令的长篇设定、大纲等任务查 `story_design` + `workflow` + `interaction`,结果只给主会话、不传正文 agent。四类任务的映射表见维护文件。state 存在才查(两级都不存在时返回空结果、零写入);结果合并项目级与 `--book-root` 所指书级(不传就拿不到本书条目),`--kind` 必传,输出不超过 2048 字节。
|
|
48
32
|
|
|
49
|
-
|
|
33
|
+
普通创作只做一次本地 `query`,完整画像、证据、候选和 journal 不进 prompt。查询项是低优先级倾向,不是逐条打卡清单:自然吸收,不复述画像、不刻意提高词面命中率,不为命中牺牲连贯、节奏、字数或本书既定笔调。**`omitted_ids` 非空=记忆超编**,不是「没有更多了」:转告作者并建议「整理作者记忆」,不得改读完整画像规避预算。待确认项不进 prompt,也不为确认它们中断任务;只在作者主动查看、候选积累到适合回顾的节点,或新偏好与 active 条目冲突时集中呈现。
|
|
50
34
|
|
|
51
|
-
##
|
|
35
|
+
## 记不记、记成什么
|
|
52
36
|
|
|
53
|
-
|
|
54
|
-
- 普通创作只做一次本地 `query`,没有 state 时返回空结果且不创建文件;有记忆时也只返回相关 active 条目,硬上限 2048 字节。完整画像、证据、候选和 journal 不进入正文 prompt。
|
|
55
|
-
- 查询项是低优先级倾向,不是逐条打卡清单。自然吸收即可,不复述画像、不刻意提高词面命中率,也不得为命中偏好牺牲正文连贯、节奏、字数或本书既定笔调。
|
|
56
|
-
- 不安装会记录全部用户消息的 prompt hook。自然语言是否属于长期习惯仍需 agent 判断;这样不能承诺隐式偏好 100% 捕获,但避免把一次性要求、私人对话和小说事实静默写入长期记忆。需要确定写入时,用户可明确说“记住:……”,并以回执验收。
|
|
57
|
-
|
|
58
|
-
## 捕获判定
|
|
37
|
+
不装记录全部用户消息的 prompt hook,不在作者没开口时观察他,只记作者明确表达的偏好。是否属于长期习惯由 agent 判断,拿不准就只执行不记录;作者可明说“记住:……”,以回执验收。
|
|
59
38
|
|
|
60
39
|
| 输入证据 | 处理 |
|
|
61
40
|
|---|---|
|
|
62
41
|
| “以后都这样”“我一直习惯……”等直接、稳定、范围清楚的原话 | `active`,`source=explicit_user` |
|
|
63
42
|
| 用户明确接受助手提出的长期做法 | `active`,`source=accepted_suggestion` |
|
|
64
|
-
|
|
|
65
|
-
|
|
|
43
|
+
| 作者原话像长期偏好但范围或稳定性含糊 | `pending`,取当前最窄合理范围;待确认只来自作者自己的话 |
|
|
44
|
+
| 同类修改反复出现、从成稿或操作轨迹看出的模式 | 不记录、不推断;作者没开口的偏好不进记忆 |
|
|
66
45
|
| “这一章别……”“这次给我……”等一次性要求 | 只执行,不记录 |
|
|
67
46
|
| 角色、时间线、伏笔、世界观、当前剧情走向 | 写项目设定/追踪,不写作者记忆 |
|
|
68
47
|
| 助手自己生成的文字、默认模板、工具告警、rubric 结论 | 不自我学习 |
|
|
69
48
|
|
|
70
|
-
|
|
49
|
+
保留否定词、限定词和适用范围:`quote` 写原话,`assertion` 只做不改变语义的紧凑归纳,**新建条目限一句话(≤120 字节,约 40 个字)**,写不下就压缩措辞、不切限定词;背景写进 `reason`(不进 prompt),不另开字段。
|
|
50
|
+
|
|
51
|
+
**一条偏好就是一条记录,例外和限定不许拆出去单列。** 「以后少用破折号,对话里也别用,除非表示打断」整条写成「破折号少用、对话里也不用,只在表示打断时保留」:超编时条目逐条被丢,拆开就可能只丢掉例外,把作者说过的限定变成绝对禁令。只有原话塞了**几条互不依赖**的偏好(如「多用短句」+「章末留钩子」)才拆。
|
|
52
|
+
|
|
53
|
+
范围:“本书 / 这个角色 / 这次连载” → `book`;“都市文 / 这类题材” → `genre`;交稿、检查、确认节奏等操作习惯 → `workflow`;“以后 / 一贯 / 我习惯”且无更窄限定 → `global`;含糊但可能稳定 → 最窄合理范围并置 `pending`。
|
|
71
54
|
|
|
72
|
-
|
|
73
|
-
- “都市文 / 这类题材” → `genre`;
|
|
74
|
-
- 交稿、检查、确认节奏等操作习惯 → `workflow`;
|
|
75
|
-
- “以后 / 一贯 / 我习惯”且无更窄限定 → `global`;
|
|
76
|
-
- 范围含糊但可能稳定 → 取当前最窄合理范围并置 `pending`。
|
|
55
|
+
类型:`prose_style`、`story_design`、`workflow`、`delivery`、`interaction`。置信度与重要度均为 `low | medium | high`;超编时先丢重要度低的,按偏好的实际分量填,不要一律 `high`。`source` 只接受 `explicit_user`、`accepted_suggestion`、`manual`,工具拒绝推断类来源。
|
|
77
56
|
|
|
78
|
-
|
|
57
|
+
## 确认、替换、忘掉与冲突
|
|
79
58
|
|
|
80
|
-
|
|
59
|
+
- 同一类型、范围、归纳文本再出现,脚本强化原条目(累加证据与确认次数),不重复建条。
|
|
60
|
+
- 新偏好与同一 store 的 active 条目矛盾:以 `conflict` 记候选,`conflicts_with` 列冲突 ID,本轮仍按当前要求执行;本书例外与全局规则不算冲突。冲突候选不能直接 activate,落定见维护文件「冲突候选」。
|
|
61
|
+
- pending 用 `decide=activate|reject`。同一范围的规则改版用 `replace`,新条目启用、旧条目标 `superseded`;只有作者明确撤销或改变旧规则范围才跨范围替换。
|
|
62
|
+
- 作者说“忘掉 / 这不再是我的习惯”用 `forget`,保留历史证据但不再加载。active 条目的语义不可原地偷改,语义变化必须 replace,历史才可审计。
|
|
81
63
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
64
|
+
## 回执怎么告诉作者
|
|
65
|
+
|
|
66
|
+
回复就两行纯文本,不加代码块或引用格式:第一行用一句人话说记住了什么、管哪本书或哪类场合,如「记住了:《{书名}》的对话一律用「」,以后写这本书都照这个来;想改随时说。」;第二行是机器回执作凭证,如「技术备注:Author Memory Receipt: r1 · BP001」。
|
|
67
|
+
|
|
68
|
+
- 确认、替换、忘掉同理:「好,这条生效了:……」「换成了:……,原来的「……」不再用」「忘掉了:……」。只进待确认时说「这条先记在待确认里,你说"确认"才生效」;有冲突时用原话说明跟哪条旧习惯冲突。
|
|
69
|
+
- `warnings` / `omitted_ids` 不原样贴:说「你的习惯攒得有点多,写正文时这几条可能顾不上:「……」」,并建议说「整理作者记忆」。不提字节、prompt、kind、scope;编号只能跟着原话出现。
|
|
88
70
|
|
|
89
71
|
## 运行工具
|
|
90
72
|
|
|
91
|
-
|
|
73
|
+
依次尝试 `python3`、`python`、`py -3` 找到 Python 3,从当前 skill 根运行本地副本:
|
|
92
74
|
|
|
93
75
|
```text
|
|
94
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py
|
|
95
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py
|
|
96
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py query --workspace {工作区} [--kind prose_style] [--book {书名}] [--genre {题材}] [--workflow {流程}]
|
|
97
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py commit --workspace {工作区} --input {事务.json}
|
|
98
|
-
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py check --workspace {工作区}
|
|
76
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py record --workspace {工作区} [--book-root {书目录}] --input {工作区}/.story/work/作者记忆-事件.json
|
|
77
|
+
{PYTHON} {当前 skill 根}/scripts/author_memory_commit.py query --workspace {工作区} --book-root {书目录} --kind {类型}(必传,可重复) [--genre {题材}] [--workflow {流程}]
|
|
99
78
|
```
|
|
100
79
|
|
|
101
|
-
- `
|
|
102
|
-
-
|
|
103
|
-
- `
|
|
104
|
-
- `check`:从 state 重建并逐字核验所有派生视图。
|
|
80
|
+
- 子命令都可加 `--book {书名}`;写某本书时一律带 `--book-root`。事件 JSON 写在 `{工作区}/.story/work/`(不写系统 `/tmp`),成功后删掉;book 条目的 `scope.value` 填书名(书级 store 已记的名字,首次取目录名)。
|
|
81
|
+
- 明确的“记住 / 确认 / 替换 / 忘掉”都走单事件 `record`:自动读该 store 当前修订、首次自动初始化,不手工读修订号或拼多操作事务。同一 `event_id` 同内容幂等返回原回执,内容不同则失败;返回的 `store` / `book` 说明写到了哪一级。
|
|
82
|
+
- 成功才有 `Author Memory Receipt: rN · APxxx`,没有回执不得声称“已经记住”。**写入不因注入预算失败**:`warnings` 只是提醒(另一级 store 读不出来也在这里注明),按上节转告;有回执就是已记住,不要换 `event_id` 重试。
|
|
105
83
|
|
|
106
|
-
##
|
|
84
|
+
## 事件格式
|
|
107
85
|
|
|
108
|
-
|
|
86
|
+
新增或强化(`record` 输入;book 范围传 `--book-root`):
|
|
109
87
|
|
|
110
88
|
```json
|
|
111
89
|
{
|
|
@@ -117,11 +95,11 @@
|
|
|
117
95
|
"kind": "prose_style",
|
|
118
96
|
"scope": {"level": "global", "value": null},
|
|
119
97
|
"assertion": "对话尽量短,用动作承接情绪,不用大段解释",
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
98
|
+
"quote": "以后对话都短一点,情绪放动作里,别让角色长篇解释。",
|
|
99
|
+
"source_ref": "conversation:2026-08-25",
|
|
100
|
+
"source": "explicit_user",
|
|
101
|
+
"confidence": "high",
|
|
102
|
+
"importance": "high",
|
|
125
103
|
"status": "active",
|
|
126
104
|
"reason": "用户以“以后”明确声明长期偏好",
|
|
127
105
|
"conflicts_with": []
|
|
@@ -130,36 +108,10 @@
|
|
|
130
108
|
}
|
|
131
109
|
```
|
|
132
110
|
|
|
133
|
-
|
|
111
|
+
待确认用 `"status": "pending"`;冲突候选用 `conflict` 并填同一 store 的 active ID。确认、替换、忘掉时,把下列对象换进新事件的 `operation`(`BP` 编号传 `--book-root`);`replace.preference` 字段同上但不传 `status`、`conflicts_with`,新条目直接 active:
|
|
134
112
|
|
|
135
113
|
```json
|
|
136
114
|
{"action":"decide","item_id":"AP002","decision":"activate","quote":"对,这就是我的长期习惯。","reason":"作者明确确认"}
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
用新规则替代一个或多个旧条目时,`replace.preference` 与上例字段相同,但不传 `status`、`conflicts_with`,新条目直接 active;下列对象同样作为 `operation`:
|
|
140
|
-
|
|
141
|
-
```json
|
|
142
|
-
{
|
|
143
|
-
"action": "replace",
|
|
144
|
-
"old_ids": ["AP001"],
|
|
145
|
-
"preference": {
|
|
146
|
-
"kind": "prose_style",
|
|
147
|
-
"scope": {"level": "global", "value": null},
|
|
148
|
-
"assertion": "以后对话允许更长的试探,但避免解释设定",
|
|
149
|
-
"quote": "把以前对话都要短的习惯替换掉:以后可以让对话慢一点,多试探,但还是别拿台词讲设定。",
|
|
150
|
-
"source_ref": "conversation:2026-08-25",
|
|
151
|
-
"source": "explicit_user",
|
|
152
|
-
"confidence": "high",
|
|
153
|
-
"importance": "high",
|
|
154
|
-
"reason": "作者明确替换原有全局规则,不是新增本书例外"
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
```
|
|
158
|
-
|
|
159
|
-
撤回条目的 `operation`:
|
|
160
|
-
|
|
161
|
-
```json
|
|
115
|
+
{"action":"replace","old_ids":["AP001"],"preference":{"kind":"prose_style","scope":{"level":"global","value":null},"assertion":"以后对话允许更长的试探,但避免解释设定","quote":"……","source_ref":"conversation:2026-08-25","source":"explicit_user","confidence":"high","importance":"high","reason":"作者明确替换原有全局规则,不是新增本书例外"}}
|
|
162
116
|
{"action":"forget","item_id":"AP003","quote":"忘掉这个偏好。","reason":"作者明确撤回"}
|
|
163
117
|
```
|
|
164
|
-
|
|
165
|
-
需要把多个动作绑定成一次原子提交时才用高级 `commit`:顶层传 `schema_version`、唯一 `transaction_id`、当前 `expected_state_revision` 和含 1–32 项的 `operations`。操作按数组顺序应用,任一步失败则整份事务零写入。成功后删除临时输入文件;显式记忆请求还要把工具返回的回执原样告诉用户。
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
|
|
7
7
|
## 默认优先检查的句式(先对照本书文风)
|
|
8
8
|
|
|
9
|
-
写网文最毒的 AI
|
|
9
|
+
写网文最毒的 AI 句式,作者一旦养成就会反复出现。以下是优先检查的句式:
|
|
10
10
|
|
|
11
11
|
| 毒级 | 句式 | 错误例 | 修法 |
|
|
12
12
|
|------|------|--------|------|
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
| ★★★ | 抽象命运/开端收束:"命运……棋局/獠牙" / "这一刻终于明白" / "反击才刚刚开始" | "命运终于露出獠牙;属于他的反击才刚刚开始" | 回到角色当下可见的文件、动作、对话或物理后果 |
|
|
22
22
|
| ★★ | 章末预告 "他不知道的是……" | "他不知道的是,更大的风暴即将来临" | 用具体钩子物件/事件收束,避免空泛预告 |
|
|
23
23
|
|
|
24
|
-
>
|
|
24
|
+
> ★★★★★ 命中一处就要改;轻/中/重分档只按去 AI 味诊断的密度指标定。
|
|
25
25
|
|
|
26
26
|
`check-ai-patterns.js` 的 `formulaic-parallelism` 还会提示「至于X不X,怎么X」和同动词「不V A,不V B」。这两类可能是功能性口语,因此只做 advisory;Gate B 必须连同台词读语境复核,若只是复述细纲/前文就压成一次判断,不能因 hook 豁免台词而跳过。
|
|
27
27
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# story-review:多章分批审查
|
|
2
|
+
|
|
3
|
+
多章/整卷/整本审查要拆成两批及以上时读本文件;单章或少量章节一次审完不读。full、lean、solo 都适用。
|
|
4
|
+
|
|
5
|
+
## 跨批审查落盘契约
|
|
6
|
+
|
|
7
|
+
分批时维护 **{项目根}/.story-review/state.md**:
|
|
8
|
+
|
|
9
|
+
1. 首批确定本次完整审查范围和批次顺序。每批综合裁决后,用同目录临时文件 + rename 原子重写 state.md,不能只把结果留在对话里。
|
|
10
|
+
2. state.md 只记录完整审查范围、已完成范围、下一批,以及“上一批未解决 findings 摘要”。摘要项保留 location、issue 和预计核查/兑现范围。
|
|
11
|
+
3. 下一批开始前先读取 state.md,把未解决摘要注入 reviewer prompt;已解决或用户明确不处理的项不再继承,但须在本批输出中说明。
|
|
12
|
+
4. 每个项目同时只维护一条跨批审查;若新一轮与 state.md 中未完成范围不同,先说明会丢弃的旧进度并征得用户确认,确认后在首批完成时覆盖。续接时 state.md 缺失、损坏或本批超出既定范围,应明确报告并停止,不猜测旧内容;非分批审查不创建它。
|
|
13
|
+
|
|
14
|
+
**.story-review/** 只保存审查状态,不属于小说事实追踪;不得借此修改正文、设定、大纲或 `追踪/`。
|
|
15
|
+
|
|
16
|
+
## 每批开审前
|
|
17
|
+
|
|
18
|
+
- **跨批连续性(分批必做)**:审每一批前,先读 `追踪/伏笔.md` 中状态为 `已埋` 且计划回收章 ≤ 本批末章的当前行,再按需读取相关 `追踪/逐章记录/第NNN章.md` 查变更原因;同时读取涉及角色的独立快照,并按上方契约把 state.md 的上一批未解决 findings 摘要作为「继承的开放项」注入 reviewer / consistency-checker prompt(solo 由自己逐条核对)。新发现但尚未登记的开放钩子先列为维护候选,收尾时必须有正文证据才能进入修订事务。
|
|
19
|
+
- **乱序/重叠审查提醒**:若已审过靠后的范围(如先审 300-400),之后审靠前的范围(200-300)时,只有当本批**新增/改动了一个开放项、且其预计兑现章落在已审过的靠后范围内**,才提醒用户「200-300 的改动可能影响已审的 300-400」,并让用户选择复审受影响章节 / 全量复审 / 仅记为待办——**默认记为待办,不盲目全量重跑**。无具体跨范围依赖时不提醒。
|