novelws 3.1.0 → 5.0.0
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/CHANGELOG.md +115 -564
- package/README.md +81 -598
- package/dist/cli.js +1 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +18 -103
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +18 -52
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/core/config.d.ts +7 -36
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +11 -38
- package/dist/core/config.js.map +1 -1
- package/dist/core/errors.d.ts +0 -31
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +0 -58
- package/dist/core/errors.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +2 -16
- package/dist/utils/diagnostics.d.ts.map +1 -1
- package/dist/utils/diagnostics.js +7 -73
- package/dist/utils/diagnostics.js.map +1 -1
- package/dist/utils/project.d.ts +1 -1
- package/dist/utils/project.d.ts.map +1 -1
- package/dist/utils/project.js +3 -3
- package/dist/utils/project.js.map +1 -1
- package/package.json +1 -2
- package/templates/commands/analyze.md +65 -265
- package/templates/commands/expand.md +70 -0
- package/templates/commands/plan.md +47 -452
- package/templates/commands/specify.md +43 -869
- package/templates/commands/write.md +49 -556
- package/templates/dot-claude/CLAUDE.md +38 -202
- package/templates/resources/anti-ai.md +16 -0
- package/templates/resources/style-reference.md +19 -0
- package/templates/tracking/character-state.json +1 -76
- package/templates/tracking/plot-tracker.json +3 -60
- package/templates/tracking/relationships.json +1 -68
- package/templates/tracking/timeline.json +1 -47
- package/dist/commands/plugin.d.ts +0 -6
- package/dist/commands/plugin.d.ts.map +0 -1
- package/dist/commands/plugin.js +0 -135
- package/dist/commands/plugin.js.map +0 -1
- package/dist/plugins/identifier.d.ts +0 -13
- package/dist/plugins/identifier.d.ts.map +0 -1
- package/dist/plugins/identifier.js +0 -72
- package/dist/plugins/identifier.js.map +0 -1
- package/dist/plugins/installers/base.d.ts +0 -27
- package/dist/plugins/installers/base.d.ts.map +0 -1
- package/dist/plugins/installers/base.js +0 -30
- package/dist/plugins/installers/base.js.map +0 -1
- package/dist/plugins/installers/github.d.ts +0 -22
- package/dist/plugins/installers/github.d.ts.map +0 -1
- package/dist/plugins/installers/github.js +0 -133
- package/dist/plugins/installers/github.js.map +0 -1
- package/dist/plugins/installers/local.d.ts +0 -16
- package/dist/plugins/installers/local.d.ts.map +0 -1
- package/dist/plugins/installers/local.js +0 -69
- package/dist/plugins/installers/local.js.map +0 -1
- package/dist/plugins/installers/npm.d.ts +0 -20
- package/dist/plugins/installers/npm.d.ts.map +0 -1
- package/dist/plugins/installers/npm.js +0 -99
- package/dist/plugins/installers/npm.js.map +0 -1
- package/dist/plugins/manager.d.ts +0 -77
- package/dist/plugins/manager.d.ts.map +0 -1
- package/dist/plugins/manager.js +0 -349
- package/dist/plugins/manager.js.map +0 -1
- package/dist/plugins/registry.d.ts +0 -48
- package/dist/plugins/registry.d.ts.map +0 -1
- package/dist/plugins/registry.js +0 -111
- package/dist/plugins/registry.js.map +0 -1
- package/dist/plugins/types.d.ts +0 -66
- package/dist/plugins/types.d.ts.map +0 -1
- package/dist/plugins/types.js +0 -2
- package/dist/plugins/types.js.map +0 -1
- package/dist/plugins/validator.d.ts +0 -19
- package/dist/plugins/validator.d.ts.map +0 -1
- package/dist/plugins/validator.js +0 -164
- package/dist/plugins/validator.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -13
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -48
- package/dist/utils/logger.js.map +0 -1
- package/plugins/authentic-voice/README.md +0 -31
- package/plugins/authentic-voice/commands/authentic-voice.md +0 -73
- package/plugins/authentic-voice/commands/authenticity-audit.md +0 -37
- package/plugins/authentic-voice/config.yaml +0 -30
- package/plugins/authentic-voice/experts/authentic-editor.md +0 -27
- package/plugins/export/README.md +0 -319
- package/plugins/export/commands/export.md +0 -460
- package/plugins/export/commands/generate-cover.md +0 -256
- package/plugins/export/commands/metadata.md +0 -309
- package/plugins/export/config.yaml +0 -47
- package/plugins/export/experts/publishing-expert.md +0 -171
- package/plugins/export/templates/epub/chapter-template.html +0 -13
- package/plugins/export/templates/epub/cover-template.html +0 -14
- package/plugins/export/templates/epub/stylesheet.css +0 -200
- package/plugins/export/templates/pdf/ebook-style.css +0 -137
- package/plugins/export/templates/pdf/print-style.css +0 -179
- package/plugins/export/templates/platforms/jinjiang-format.md +0 -101
- package/plugins/export/templates/platforms/qidian-format.md +0 -108
- package/plugins/export/templates/platforms/tomato-format.md +0 -95
- package/plugins/translate/README.md +0 -265
- package/plugins/translate/commands/glossary.md +0 -731
- package/plugins/translate/commands/translate-preview.md +0 -543
- package/plugins/translate/commands/translate.md +0 -649
- package/plugins/translate/config.yaml +0 -43
- package/plugins/translate/experts/literary-translator.md +0 -605
- package/templates/commands/character.md +0 -287
- package/templates/commands/checklist.md +0 -744
- package/templates/commands/clarify.md +0 -269
- package/templates/commands/constitution.md +0 -269
- package/templates/commands/expert.md +0 -188
- package/templates/commands/facts.md +0 -552
- package/templates/commands/guide.md +0 -900
- package/templates/commands/help-me.md +0 -221
- package/templates/commands/recap.md +0 -748
- package/templates/commands/relations.md +0 -385
- package/templates/commands/revise.md +0 -450
- package/templates/commands/search.md +0 -531
- package/templates/commands/tasks.md +0 -396
- package/templates/commands/timeline.md +0 -309
- package/templates/commands/track-init.md +0 -149
- package/templates/commands/track.md +0 -704
- package/templates/commands/volume-summary.md +0 -471
- package/templates/config/keyword-mappings.json +0 -226
- package/templates/knowledge/audit-config.json +0 -26
- package/templates/knowledge/character-profiles.md +0 -152
- package/templates/knowledge/character-voices.md +0 -137
- package/templates/knowledge/locations.md +0 -184
- package/templates/knowledge/world-setting.md +0 -121
- package/templates/knowledge-base/README.md +0 -285
- package/templates/knowledge-base/character-archetypes/01-hero.md +0 -233
- package/templates/knowledge-base/character-archetypes/02-mentor.md +0 -177
- package/templates/knowledge-base/character-archetypes/03-shadow.md +0 -221
- package/templates/knowledge-base/character-archetypes/04-ally.md +0 -178
- package/templates/knowledge-base/character-archetypes/05-shapeshifter.md +0 -177
- package/templates/knowledge-base/character-archetypes/06-trickster.md +0 -181
- package/templates/knowledge-base/character-archetypes/07-threshold-guardian.md +0 -177
- package/templates/knowledge-base/character-archetypes/08-herald.md +0 -180
- package/templates/knowledge-base/character-archetypes/09-father.md +0 -249
- package/templates/knowledge-base/character-archetypes/10-mother.md +0 -202
- package/templates/knowledge-base/character-archetypes/11-child.md +0 -183
- package/templates/knowledge-base/character-archetypes/12-sage.md +0 -202
- package/templates/knowledge-base/character-archetypes/README.md +0 -60
- package/templates/knowledge-base/character-archetypes/application-guide.md +0 -222
- package/templates/knowledge-base/character-archetypes/archetype-combinations.md +0 -242
- package/templates/knowledge-base/character-archetypes/config.yaml +0 -28
- package/templates/knowledge-base/character-archetypes/examples-analysis.md +0 -223
- package/templates/knowledge-base/craft/character-arc.md +0 -1153
- package/templates/knowledge-base/craft/dialogue.md +0 -1170
- package/templates/knowledge-base/craft/hook-design.md +0 -345
- package/templates/knowledge-base/craft/pacing.md +0 -1200
- package/templates/knowledge-base/craft/power-system.md +0 -254
- package/templates/knowledge-base/craft/scene-structure.md +0 -1136
- package/templates/knowledge-base/craft/show-not-tell.md +0 -1012
- package/templates/knowledge-base/craft/story-structures.md +0 -134
- package/templates/knowledge-base/craft/tension-management.md +0 -168
- package/templates/knowledge-base/emotional-beats/01-first-meeting.md +0 -145
- package/templates/knowledge-base/emotional-beats/02-bonding-moment.md +0 -226
- package/templates/knowledge-base/emotional-beats/03-declaration.md +0 -284
- package/templates/knowledge-base/emotional-beats/04-triumph.md +0 -240
- package/templates/knowledge-base/emotional-beats/05-reunion.md +0 -396
- package/templates/knowledge-base/emotional-beats/06-forgiveness.md +0 -204
- package/templates/knowledge-base/emotional-beats/07-betrayal.md +0 -204
- package/templates/knowledge-base/emotional-beats/08-loss.md +0 -214
- package/templates/knowledge-base/emotional-beats/09-rejection.md +0 -254
- package/templates/knowledge-base/emotional-beats/10-failure.md +0 -244
- package/templates/knowledge-base/emotional-beats/11-misunderstanding.md +0 -205
- package/templates/knowledge-base/emotional-beats/12-farewell.md +0 -283
- package/templates/knowledge-base/emotional-beats/13-revelation.md +0 -242
- package/templates/knowledge-base/emotional-beats/14-point-of-no-return.md +0 -215
- package/templates/knowledge-base/emotional-beats/15-dark-night.md +0 -244
- package/templates/knowledge-base/emotional-beats/16-sacrifice.md +0 -246
- package/templates/knowledge-base/emotional-beats/17-awakening.md +0 -246
- package/templates/knowledge-base/emotional-beats/18-confrontation.md +0 -217
- package/templates/knowledge-base/emotional-beats/19-bittersweet-goodbye.md +0 -368
- package/templates/knowledge-base/emotional-beats/20-moral-dilemma.md +0 -248
- package/templates/knowledge-base/emotional-beats/21-temptation.md +0 -240
- package/templates/knowledge-base/emotional-beats/22-redemption.md +0 -210
- package/templates/knowledge-base/emotional-beats/README.md +0 -104
- package/templates/knowledge-base/emotional-beats/beat-sequences.md +0 -276
- package/templates/knowledge-base/emotional-beats/config.yaml +0 -30
- package/templates/knowledge-base/emotional-beats/pacing-guide.md +0 -390
- package/templates/knowledge-base/genres/game-lit.md +0 -174
- package/templates/knowledge-base/genres/historical.md +0 -1127
- package/templates/knowledge-base/genres/horror.md +0 -211
- package/templates/knowledge-base/genres/military.md +0 -209
- package/templates/knowledge-base/genres/mystery.md +0 -1123
- package/templates/knowledge-base/genres/rebirth.md +0 -177
- package/templates/knowledge-base/genres/revenge.md +0 -846
- package/templates/knowledge-base/genres/romance.md +0 -948
- package/templates/knowledge-base/genres/sci-fi.md +0 -156
- package/templates/knowledge-base/genres/sports.md +0 -216
- package/templates/knowledge-base/genres/thriller.md +0 -166
- package/templates/knowledge-base/genres/urban.md +0 -170
- package/templates/knowledge-base/genres/workplace.md +0 -214
- package/templates/knowledge-base/genres/wuxia.md +0 -143
- package/templates/knowledge-base/genres/xuanhuan.md +0 -234
- package/templates/knowledge-base/genres/youth.md +0 -219
- package/templates/knowledge-base/references/README.md +0 -96
- package/templates/knowledge-base/references/china-1920s/culture.md +0 -423
- package/templates/knowledge-base/references/china-1920s/daily-life.md +0 -616
- package/templates/knowledge-base/references/china-1920s/overview.md +0 -298
- package/templates/knowledge-base/references/china-1920s/society.md +0 -703
- package/templates/knowledge-base/references/china-1920s/warlords.md +0 -427
- package/templates/knowledge-base/references/cultivation-world/daily-life.md +0 -108
- package/templates/knowledge-base/references/cultivation-world/overview.md +0 -64
- package/templates/knowledge-base/references/cultivation-world/power-system.md +0 -108
- package/templates/knowledge-base/references/cultivation-world/sects.md +0 -104
- package/templates/knowledge-base/references/cultivation-world/world-setting.md +0 -108
- package/templates/knowledge-base/references/modern-workplace/corporate.md +0 -115
- package/templates/knowledge-base/references/modern-workplace/daily-life.md +0 -129
- package/templates/knowledge-base/references/modern-workplace/overview.md +0 -73
- package/templates/knowledge-base/references/modern-workplace/relationships.md +0 -107
- package/templates/knowledge-base/references/modern-workplace/tech-industry.md +0 -131
- package/templates/knowledge-base/references/tang-dynasty/culture.md +0 -135
- package/templates/knowledge-base/references/tang-dynasty/daily-life.md +0 -139
- package/templates/knowledge-base/references/tang-dynasty/overview.md +0 -76
- package/templates/knowledge-base/references/tang-dynasty/politics.md +0 -121
- package/templates/knowledge-base/references/tang-dynasty/society.md +0 -126
- package/templates/knowledge-base/requirements/README.md +0 -240
- package/templates/knowledge-base/requirements/anti-ai-v3.md +0 -46
- package/templates/knowledge-base/requirements/anti-ai-v4-deprecated.md +0 -442
- package/templates/knowledge-base/requirements/anti-ai-v5-balanced.md +0 -203
- package/templates/knowledge-base/requirements/concretization.md +0 -90
- package/templates/knowledge-base/requirements/fast-paced.md +0 -552
- package/templates/knowledge-base/requirements/no-poison.md +0 -60
- package/templates/knowledge-base/requirements/romance-angst.md +0 -102
- package/templates/knowledge-base/requirements/romance-sweet.md +0 -63
- package/templates/knowledge-base/requirements/serious-literature.md +0 -45
- package/templates/knowledge-base/requirements/strong-emotion.md +0 -60
- package/templates/knowledge-base/styles/README.md +0 -302
- package/templates/knowledge-base/styles/ancient-style.md +0 -579
- package/templates/knowledge-base/styles/literary.md +0 -439
- package/templates/knowledge-base/styles/minimal.md +0 -472
- package/templates/knowledge-base/styles/natural-voice.md +0 -930
- package/templates/knowledge-base/styles/web-novel.md +0 -525
- package/templates/memory/personal-voice.md +0 -113
- package/templates/scripts/README.md +0 -187
- package/templates/scripts/bash/analyze-story.sh +0 -170
- package/templates/scripts/bash/check-analyze-stage.sh +0 -108
- package/templates/scripts/bash/check-consistency.sh +0 -463
- package/templates/scripts/bash/check-facts.sh +0 -214
- package/templates/scripts/bash/check-plot.sh +0 -374
- package/templates/scripts/bash/check-timeline.sh +0 -346
- package/templates/scripts/bash/check-world.sh +0 -395
- package/templates/scripts/bash/check-writing-state.sh +0 -854
- package/templates/scripts/bash/clarify-story.sh +0 -117
- package/templates/scripts/bash/common.sh +0 -151
- package/templates/scripts/bash/constitution.sh +0 -114
- package/templates/scripts/bash/generate-tasks.sh +0 -65
- package/templates/scripts/bash/init-tracking.sh +0 -183
- package/templates/scripts/bash/manage-relations.sh +0 -174
- package/templates/scripts/bash/migrate-tracking.sh +0 -183
- package/templates/scripts/bash/plan-story.sh +0 -100
- package/templates/scripts/bash/specify-story.sh +0 -93
- package/templates/scripts/bash/tasks-story.sh +0 -96
- package/templates/scripts/bash/test-word-count.sh +0 -182
- package/templates/scripts/bash/tests/bench-preload-cache.sh +0 -100
- package/templates/scripts/bash/tests/run-all-benchmarks.sh +0 -16
- package/templates/scripts/bash/tests/test-cache-semantics.sh +0 -199
- package/templates/scripts/bash/tests/test-cross-platform.sh +0 -35
- package/templates/scripts/bash/tests/test-edge-cases-bash.sh +0 -60
- package/templates/scripts/bash/tests/test-phase1-bash.sh +0 -28
- package/templates/scripts/bash/tests/test-preload-cache.sh +0 -123
- package/templates/scripts/bash/tests/test-regex-precompile.sh +0 -89
- package/templates/scripts/bash/tests/test-regression-bash.sh +0 -42
- package/templates/scripts/bash/tests/test-task6-verification.sh +0 -200
- package/templates/scripts/bash/text-audit.sh +0 -144
- package/templates/scripts/bash/track-progress.sh +0 -194
- package/templates/scripts/powershell/analyze-story.ps1 +0 -174
- package/templates/scripts/powershell/check-analyze-stage.ps1 +0 -110
- package/templates/scripts/powershell/check-consistency.ps1 +0 -138
- package/templates/scripts/powershell/check-facts.ps1 +0 -195
- package/templates/scripts/powershell/check-plot.ps1 +0 -139
- package/templates/scripts/powershell/check-timeline.ps1 +0 -112
- package/templates/scripts/powershell/check-writing-state.ps1 +0 -486
- package/templates/scripts/powershell/clarify-story.ps1 +0 -107
- package/templates/scripts/powershell/common.ps1 +0 -36
- package/templates/scripts/powershell/constitution.ps1 +0 -145
- package/templates/scripts/powershell/generate-tasks.ps1 +0 -70
- package/templates/scripts/powershell/init-tracking.ps1 +0 -98
- package/templates/scripts/powershell/manage-relations.ps1 +0 -134
- package/templates/scripts/powershell/migrate-tracking.ps1 +0 -145
- package/templates/scripts/powershell/plan-story.ps1 +0 -99
- package/templates/scripts/powershell/specify-story.ps1 +0 -85
- package/templates/scripts/powershell/tests/bench-ps-cache.ps1 +0 -80
- package/templates/scripts/powershell/tests/test-cross-platform.ps1 +0 -27
- package/templates/scripts/powershell/tests/test-edge-cases-ps.ps1 +0 -29
- package/templates/scripts/powershell/tests/test-phase1-ps.ps1 +0 -28
- package/templates/scripts/powershell/tests/test-ps-cache.ps1 +0 -73
- package/templates/scripts/powershell/tests/test-regression-ps.ps1 +0 -40
- package/templates/scripts/powershell/text-audit.ps1 +0 -102
- package/templates/scripts/powershell/track-progress.ps1 +0 -105
- package/templates/skills/analysis/character-analysis/SKILL.md +0 -71
- package/templates/skills/analysis/foreshadow-analysis/SKILL.md +0 -45
- package/templates/skills/analysis/hook-analysis/SKILL.md +0 -111
- package/templates/skills/analysis/logic-analysis/SKILL.md +0 -58
- package/templates/skills/analysis/opening-analysis/SKILL.md +0 -59
- package/templates/skills/analysis/pacing-analysis/SKILL.md +0 -55
- package/templates/skills/analysis/power-analysis/SKILL.md +0 -148
- package/templates/skills/analysis/reader-analysis/SKILL.md +0 -117
- package/templates/skills/analysis/style-analysis/SKILL.md +0 -60
- package/templates/skills/analysis/voice-analysis/SKILL.md +0 -42
- package/templates/skills/auto-tracking/SKILL.md +0 -280
- package/templates/skills/genre-knowledge/fantasy/SKILL.md +0 -355
- package/templates/skills/genre-knowledge/mystery/SKILL.md +0 -337
- package/templates/skills/genre-knowledge/romance/SKILL.md +0 -228
- package/templates/skills/genre-knowledge/sci-fi/SKILL.md +0 -65
- package/templates/skills/genre-knowledge/thriller/SKILL.md +0 -95
- package/templates/skills/planning/volume-detail/SKILL.md +0 -219
- package/templates/skills/quality-assurance/consistency-checker/SKILL.md +0 -412
- package/templates/skills/quality-assurance/continuity-tracker/SKILL.md +0 -157
- package/templates/skills/quality-assurance/facts-checker/SKILL.md +0 -405
- package/templates/skills/quality-assurance/forgotten-elements/SKILL.md +0 -147
- package/templates/skills/quality-assurance/getting-started/SKILL.md +0 -224
- package/templates/skills/quality-assurance/hook-checker/SKILL.md +0 -164
- package/templates/skills/quality-assurance/hook-checker/experts/hook-analyst.md +0 -33
- package/templates/skills/quality-assurance/long-series-continuity/SKILL.md +0 -570
- package/templates/skills/quality-assurance/pacing-monitor/SKILL.md +0 -143
- package/templates/skills/quality-assurance/pov-validator/SKILL.md +0 -135
- package/templates/skills/quality-assurance/pre-write-checklist/SKILL.md +0 -583
- package/templates/skills/quality-assurance/requirement-detector/CONFLICT_RESOLUTION.md +0 -119
- package/templates/skills/quality-assurance/requirement-detector/EXAMPLES.md +0 -146
- package/templates/skills/quality-assurance/requirement-detector/KEYWORDS.md +0 -160
- package/templates/skills/quality-assurance/requirement-detector/SKILL.md +0 -149
- package/templates/skills/quality-assurance/setting-detector/SKILL.md +0 -611
- package/templates/skills/quality-assurance/style-detector/CONFLICT_RESOLUTION.md +0 -126
- package/templates/skills/quality-assurance/style-detector/EXAMPLES.md +0 -206
- package/templates/skills/quality-assurance/style-detector/KEYWORDS.md +0 -207
- package/templates/skills/quality-assurance/style-detector/SKILL.md +0 -264
- package/templates/skills/quality-assurance/voice-consistency-checker/SKILL.md +0 -103
- package/templates/skills/quality-assurance/voice-consistency-checker/experts/voice-analyst.md +0 -21
- package/templates/skills/quality-assurance/workflow-guide/SKILL.md +0 -381
- package/templates/skills/writing-techniques/character-arc/SKILL.md +0 -267
- package/templates/skills/writing-techniques/dialogue-techniques/SKILL.md +0 -366
- package/templates/skills/writing-techniques/multi-thread-narrative/SKILL.md +0 -708
- package/templates/skills/writing-techniques/multi-thread-narrative/experts/thread-analyst.md +0 -226
- package/templates/skills/writing-techniques/pacing-control/SKILL.md +0 -480
- package/templates/skills/writing-techniques/reader-expectation/SKILL.md +0 -1026
- package/templates/skills/writing-techniques/reader-expectation/experts/expectation-analyst.md +0 -209
- package/templates/skills/writing-techniques/revision-polish/SKILL.md +0 -496
- package/templates/skills/writing-techniques/revision-polish/experts/revision-editor.md +0 -221
- package/templates/skills/writing-techniques/scene-structure/SKILL.md +0 -361
- package/templates/skills/writing-techniques/style-learning/SKILL.md +0 -436
- package/templates/skills/writing-techniques/writing-balance/.gitkeep +0 -0
- package/templates/skills/writing-techniques/writing-balance/SKILL.md +0 -460
- package/templates/skills/writing-techniques/writing-techniques/SKILL.md +0 -727
- package/templates/specification-example.md +0 -146
- package/templates/tracking/story-facts.json +0 -5
- package/templates/tracking/summary/characters-summary.json +0 -7
- package/templates/tracking/summary/plot-summary.json +0 -13
- package/templates/tracking/summary/timeline-summary.json +0 -8
- package/templates/tracking/summary/volume-summaries.json +0 -5
- package/templates/tracking/tracking-log.md +0 -110
- package/templates/tracking/validation-rules.json +0 -128
- /package/templates/{memory → resources}/constitution.md +0 -0
|
@@ -1,396 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: 将创作计划分解为可执行的任务清单
|
|
3
|
-
allowed-tools: Read(//stories/**/creative-plan.md), Read(//stories/**/creative-plan.md), Read(//stories/**/specification.md), Read(//stories/**/specification.md), Write(//stories/**/tasks.md), Write(//stories/**/tasks.md), Bash(find:*), Bash(*)
|
|
4
|
-
scripts:
|
|
5
|
-
sh: .specify/scripts/bash/tasks-story.sh
|
|
6
|
-
ps: .specify/scripts/powershell/generate-tasks.ps1
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
基于创作计划生成具体的、可执行的任务列表。
|
|
10
|
-
|
|
11
|
-
## 资源加载(可选)
|
|
12
|
-
|
|
13
|
-
本命令用于管理创作任务,默认不加载额外资源。
|
|
14
|
-
|
|
15
|
-
### 可选配置
|
|
16
|
-
|
|
17
|
-
如果需要在任务规划时参考写作技巧:
|
|
18
|
-
|
|
19
|
-
```yaml
|
|
20
|
-
resource-loading:
|
|
21
|
-
tasks:
|
|
22
|
-
knowledge-base:
|
|
23
|
-
craft:
|
|
24
|
-
- scene-structure # 场景结构规划
|
|
25
|
-
- pacing # 节奏规划
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
**推荐资源**: scene-structure.md, pacing.md(辅助任务规划)
|
|
29
|
-
|
|
30
|
-
---
|
|
31
|
-
|
|
32
|
-
## Tracking 数据加载策略
|
|
33
|
-
|
|
34
|
-
在 `--from-plan` 模式下,需要读取 tracking 数据生成修复/维护任务,采用 **三层回退** 机制:
|
|
35
|
-
|
|
36
|
-
### Layer 3: MCP 查询(优先)
|
|
37
|
-
|
|
38
|
-
```typescript
|
|
39
|
-
// 如果 MCP 已启用且数据已同步
|
|
40
|
-
// 获取延迟伏笔
|
|
41
|
-
const overduePlots = await mcp.call('novelws-mcp/query_plot', {
|
|
42
|
-
status: 'overdue', // 紧急度 > 0.9 或已超期
|
|
43
|
-
volume: 'vol-03' // 可选:仅查询指定卷
|
|
44
|
-
});
|
|
45
|
-
|
|
46
|
-
// 获取卷进度统计
|
|
47
|
-
const volumeStats = await mcp.call('novelws-mcp/stats_volume', {
|
|
48
|
-
volume: 'vol-03'
|
|
49
|
-
});
|
|
50
|
-
|
|
51
|
-
// 获取角色缺席情况
|
|
52
|
-
const characters = await mcp.call('novelws-mcp/query_characters', {
|
|
53
|
-
volume: 'vol-03',
|
|
54
|
-
absent: true // 仅返回长期缺席的角色
|
|
55
|
-
});
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
**优势**:
|
|
59
|
-
- 高性能聚合查询(自动计算紧急度)
|
|
60
|
-
- 跨卷数据对比
|
|
61
|
-
- 自动过滤需要关注的项
|
|
62
|
-
|
|
63
|
-
### Layer 2: 分片 JSON(次优)
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
# 当 spec/tracking/volumes/ 存在时
|
|
67
|
-
# 读取摘要数据
|
|
68
|
-
plot_summary=$(cat spec/tracking/summary/plot-summary.json)
|
|
69
|
-
|
|
70
|
-
# 提取未解决伏笔和紧急伏笔
|
|
71
|
-
unresolved_plots=$(echo "$plot_summary" | jq '.unresolved')
|
|
72
|
-
urgent_plots=$(echo "$plot_summary" | jq '.urgent')
|
|
73
|
-
|
|
74
|
-
# 读取角色摘要
|
|
75
|
-
character_summary=$(cat spec/tracking/summary/characters-summary.json)
|
|
76
|
-
absent_characters=$(echo "$character_summary" | jq '.absent')
|
|
77
|
-
```
|
|
78
|
-
|
|
79
|
-
**适用场景**:
|
|
80
|
-
- MCP 未启用或同步延迟
|
|
81
|
-
- 摘要数据已足够生成任务
|
|
82
|
-
- 需要快速扫描全局状态
|
|
83
|
-
|
|
84
|
-
### Layer 1: 单文件 JSON(兜底)
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
# 传统模式,加载完整文件并手动过滤
|
|
88
|
-
plot_tracker=$(cat spec/tracking/plot-tracker.json)
|
|
89
|
-
character_state=$(cat spec/tracking/character-state.json)
|
|
90
|
-
|
|
91
|
-
# 手动计算紧急度、缺席章节等
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
**向下兼容**:小型项目(< 300 章)使用单文件模式
|
|
95
|
-
|
|
96
|
-
### 从 Tracking 数据生成任务的规则
|
|
97
|
-
|
|
98
|
-
| 数据来源 | 生成的任务类型 | 优先级 | 条件 |
|
|
99
|
-
|---------|--------------|--------|------|
|
|
100
|
-
| plot-tracker | 伏笔回收任务 | P0-P2 | 紧急度 > 0.5 |
|
|
101
|
-
| character-state | 角色出场任务 | P1-P2 | 缺席章节数 > 阈值 |
|
|
102
|
-
| /analyze 反馈 | 修复任务 | P0-P1 | 存在错误或冲突 |
|
|
103
|
-
| tracking 落后 | 数据同步任务 | P1 | 落后章节数 > 2 |
|
|
104
|
-
|
|
105
|
-
### 使用示例
|
|
106
|
-
|
|
107
|
-
```bash
|
|
108
|
-
# 从计划生成任务(包含 tracking 数据分析)
|
|
109
|
-
/tasks --from-plan
|
|
110
|
-
|
|
111
|
-
# 生成的任务示例:
|
|
112
|
-
# [P0] 回收伏笔"身世之谜"(已延迟 5 章,紧急度 0.95)
|
|
113
|
-
# [P1] 安排师姐出场(已缺席 8 章)
|
|
114
|
-
# [P1] 同步 tracking 数据(落后 3 章)
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
---
|
|
118
|
-
|
|
119
|
-
## 目标
|
|
120
|
-
|
|
121
|
-
将宏观计划转化为微观任务,让创作变得可管理、可追踪。
|
|
122
|
-
|
|
123
|
-
## 执行步骤
|
|
124
|
-
|
|
125
|
-
### 1. 加载计划文档
|
|
126
|
-
|
|
127
|
-
运行 `{SCRIPT}` 加载:
|
|
128
|
-
- 创作计划:`stories/*/creative-plan.md`
|
|
129
|
-
- 章节架构信息
|
|
130
|
-
- 时间线和依赖关系
|
|
131
|
-
|
|
132
|
-
### 2. 生成任务列表
|
|
133
|
-
|
|
134
|
-
创建 `stories/*/tasks.md`,包含:
|
|
135
|
-
|
|
136
|
-
#### 核心写作任务
|
|
137
|
-
|
|
138
|
-
**重要**:从specification.md第五章和creative-plan.md的线索分布,为每个写作任务标注涉及线索。
|
|
139
|
-
|
|
140
|
-
```markdown
|
|
141
|
-
## 写作任务
|
|
142
|
-
|
|
143
|
-
### 高优先级 [必须首先完成]
|
|
144
|
-
|
|
145
|
-
- [ ] [P0] **T001** - 第1章:[章节标题] (目标字数)
|
|
146
|
-
- **核心任务**:[本章的主要任务]
|
|
147
|
-
- **关键情节**:[具体情节点]
|
|
148
|
-
- **涉及线索**:
|
|
149
|
-
- PL-XX([线索名称]) ⭐⭐⭐ 主推进
|
|
150
|
-
- PL-YY([线索名称]) ⭐ 背景
|
|
151
|
-
- **交汇点**:[如适用] X-001([交汇点描述])
|
|
152
|
-
- **伏笔埋设/揭晓**:[如适用] F-001埋设 / F-002揭晓
|
|
153
|
-
- **必须包含**:[关键元素列表]
|
|
154
|
-
- **章末钩子**:[悬念设置]
|
|
155
|
-
- **依赖**:无
|
|
156
|
-
- **输出**:`content/volume1/chapter-001.md`
|
|
157
|
-
|
|
158
|
-
- [ ] [P0] **T002** - 角色档案:主角详细设定
|
|
159
|
-
- **核心任务**:完善主角设定
|
|
160
|
-
- **必须包含**:性格、背景、能力、欲望、恐惧、成长弧线
|
|
161
|
-
- **依赖**:无
|
|
162
|
-
- **输出**:`characters/protagonist.md`
|
|
163
|
-
|
|
164
|
-
### 中优先级 [正常推进]
|
|
165
|
-
|
|
166
|
-
- [ ] [P1] **T005** - 第5章:[章节标题] (目标字数)
|
|
167
|
-
- **核心任务**:[本章主要任务]
|
|
168
|
-
- **关键情节**:[具体情节]
|
|
169
|
-
- **涉及线索**:
|
|
170
|
-
- PL-01([线索名]) ⭐⭐⭐ 主推进
|
|
171
|
-
- PL-02([线索名]) ⭐⭐ 辅助
|
|
172
|
-
- **交汇点**:无
|
|
173
|
-
- **伏笔埋设/揭晓**:F-001埋设([伏笔内容])
|
|
174
|
-
- **必须包含**:[关键元素]
|
|
175
|
-
- **章末钩子**:[悬念]
|
|
176
|
-
- **依赖**:T004(第4章)
|
|
177
|
-
- **输出**:`content/volume1/chapter-005.md`
|
|
178
|
-
|
|
179
|
-
### 低优先级 [可选完善]
|
|
180
|
-
|
|
181
|
-
- [ ] [P2] 番外:角色前传
|
|
182
|
-
- [ ] [P2] 设定集:详细世界观
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
**任务字段说明**:
|
|
186
|
-
- **涉及线索**:从creative-plan.md的"活跃线索"列读取,标明本章推进哪些线索
|
|
187
|
-
- **交汇点**:从specification.md 5.3节读取,标明本章是否为交汇点
|
|
188
|
-
- **伏笔埋设/揭晓**:从specification.md 5.4节读取,标明本章涉及的伏笔操作
|
|
189
|
-
|
|
190
|
-
#### 任务标记说明
|
|
191
|
-
- `[P]` - 可并行执行
|
|
192
|
-
- `[依赖:X]` - 需要先完成任务X
|
|
193
|
-
- `[P0/P1/P2]` - 优先级标记
|
|
194
|
-
|
|
195
|
-
### 3. 任务排序和分组
|
|
196
|
-
|
|
197
|
-
- 按优先级分组
|
|
198
|
-
- 识别依赖关系
|
|
199
|
-
- 标记可并行任务
|
|
200
|
-
- 估算完成时间
|
|
201
|
-
|
|
202
|
-
### 4. 生成执行计划
|
|
203
|
-
|
|
204
|
-
```markdown
|
|
205
|
-
## 执行计划
|
|
206
|
-
|
|
207
|
-
### 第一阶段(第1周)
|
|
208
|
-
并行任务组1:
|
|
209
|
-
- 主角设定 [P]
|
|
210
|
-
- 世界观基础 [P]
|
|
211
|
-
- 第1章草稿 [P]
|
|
212
|
-
|
|
213
|
-
### 第二阶段(第2-3周)
|
|
214
|
-
串行任务:
|
|
215
|
-
- 第2章 [依赖:第1章]
|
|
216
|
-
- 第3章 [依赖:第2章]
|
|
217
|
-
|
|
218
|
-
并行任务组2:
|
|
219
|
-
- 配角设定 [P]
|
|
220
|
-
- 场景设计 [P]
|
|
221
|
-
```
|
|
222
|
-
|
|
223
|
-
### 5. 输出任务统计
|
|
224
|
-
|
|
225
|
-
- 总任务数
|
|
226
|
-
- 预计总字数
|
|
227
|
-
- 预计完成时间
|
|
228
|
-
- 关键里程碑
|
|
229
|
-
|
|
230
|
-
提示下一步:开始执行 `/write` 或查看特定任务详情。
|
|
231
|
-
|
|
232
|
-
---
|
|
233
|
-
|
|
234
|
-
## 增强功能
|
|
235
|
-
|
|
236
|
-
### 任务优先级
|
|
237
|
-
|
|
238
|
-
每个任务可设置优先级,用于排序和筛选:
|
|
239
|
-
|
|
240
|
-
| 优先级 | 标记 | 含义 |
|
|
241
|
-
|--------|------|------|
|
|
242
|
-
| P0 | 🔴 | 紧急:阻塞写作进度 |
|
|
243
|
-
| P1 | 🟠 | 重要:影响质量但不阻塞 |
|
|
244
|
-
| P2 | 🟡 | 普通:常规写作任务 |
|
|
245
|
-
| P3 | 🟢 | 低优:优化/润色类 |
|
|
246
|
-
|
|
247
|
-
#### 优先级排序视图
|
|
248
|
-
|
|
249
|
-
**触发条件**:`$ARGUMENTS` 包含 `--by-priority`
|
|
250
|
-
|
|
251
|
-
```
|
|
252
|
-
📋 任务列表(按优先级)
|
|
253
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
254
|
-
|
|
255
|
-
🔴 P0 紧急:
|
|
256
|
-
□ 回收「身世之谜」伏笔(已延迟 5 章)
|
|
257
|
-
□ 修复第 18 章时间线冲突
|
|
258
|
-
|
|
259
|
-
🟠 P1 重要:
|
|
260
|
-
□ 写第 26 章(主线推进)
|
|
261
|
-
□ 安排师姐出场(已缺席 7 章)
|
|
262
|
-
|
|
263
|
-
🟡 P2 普通:
|
|
264
|
-
□ 写第 27 章
|
|
265
|
-
□ 补充城主之女的背景设定
|
|
266
|
-
|
|
267
|
-
🟢 P3 低优:
|
|
268
|
-
☑ 润色第 20 章对话
|
|
269
|
-
□ 更新角色关系图
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
### 任务依赖关系
|
|
273
|
-
|
|
274
|
-
任务之间可以设置依赖关系,支持显式依赖和自动检测:
|
|
275
|
-
|
|
276
|
-
#### 依赖关系图
|
|
277
|
-
|
|
278
|
-
```
|
|
279
|
-
📋 任务依赖图
|
|
280
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
281
|
-
|
|
282
|
-
[完善力量体系设定] ──→ [写第 26 章战斗场景]
|
|
283
|
-
│
|
|
284
|
-
↓
|
|
285
|
-
[写第 27 章战后处理] ──→ [写第 28 章新篇章]
|
|
286
|
-
|
|
287
|
-
[安排师姐出场] ──→ [写第 26 章](师姐在此章出场)
|
|
288
|
-
|
|
289
|
-
⚠️ 阻塞任务:
|
|
290
|
-
- 「完善力量体系设定」阻塞了 3 个下游任务
|
|
291
|
-
→ 建议优先处理
|
|
292
|
-
```
|
|
293
|
-
|
|
294
|
-
#### 自动依赖检测
|
|
295
|
-
|
|
296
|
-
自动检测以下隐含依赖:
|
|
297
|
-
|
|
298
|
-
| 依赖类型 | 检测规则 |
|
|
299
|
-
|---------|---------|
|
|
300
|
-
| 章节顺序 | 第 N+1 章自动依赖第 N 章 |
|
|
301
|
-
| 设定依赖 | 引用某设定的写作任务依赖该设定的完善任务 |
|
|
302
|
-
| 伏笔依赖 | 伏笔回收任务依赖伏笔埋设任务 |
|
|
303
|
-
| 角色依赖 | 角色出场任务依赖角色设定完善任务 |
|
|
304
|
-
|
|
305
|
-
### 从计划自动生成任务
|
|
306
|
-
|
|
307
|
-
**触发条件**:`$ARGUMENTS` 包含 `--from-plan`
|
|
308
|
-
|
|
309
|
-
**执行流程**:
|
|
310
|
-
1. 读取 `creative-plan.md`
|
|
311
|
-
2. 提取每章的计划内容
|
|
312
|
-
3. 为每章生成一个写作任务
|
|
313
|
-
4. 自动设置依赖关系(顺序依赖)
|
|
314
|
-
5. 按三层 Fallback 读取 tracking 数据生成修复/维护任务:
|
|
315
|
-
- **MCP 查询(优先)**:`query_plot --status=overdue` 获取延迟伏笔,`stats_volume` 获取进度
|
|
316
|
-
- **分片 JSON(次优)**:读取 `spec/tracking/summary/plot-summary.json` 获取未解决伏笔
|
|
317
|
-
- **单文件 JSON(兜底)**:读取 `spec/tracking/plot-tracker.json`
|
|
318
|
-
6. 从 `/analyze` 反馈中提取修复任务
|
|
319
|
-
7. 从 `/track --check` 中提取维护任务
|
|
320
|
-
|
|
321
|
-
#### 生成规则
|
|
322
|
-
|
|
323
|
-
| 来源 | 生成的任务类型 | 优先级 |
|
|
324
|
-
|------|--------------|--------|
|
|
325
|
-
| 章节计划 | 写作任务 | P2 |
|
|
326
|
-
| 伏笔回收计划 | 伏笔任务 | 根据紧急度 P0-P2 |
|
|
327
|
-
| 角色出场计划 | 角色任务 | P1-P2 |
|
|
328
|
-
| 分析反馈 | 修复任务 | P0-P1 |
|
|
329
|
-
| tracking 落后 | 维护任务 | P1 |
|
|
330
|
-
|
|
331
|
-
#### 输出示例
|
|
332
|
-
|
|
333
|
-
```
|
|
334
|
-
📋 从计划生成任务
|
|
335
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
336
|
-
|
|
337
|
-
已生成 8 个任务:
|
|
338
|
-
|
|
339
|
-
🟡 P2 写作任务(5 个):
|
|
340
|
-
□ 写第 26 章:师姐出场 + 主角突破
|
|
341
|
-
□ 写第 27 章:新敌人登场
|
|
342
|
-
□ 写第 28 章:情报收集
|
|
343
|
-
□ 写第 29 章:潜入敌营
|
|
344
|
-
□ 写第 30 章:卷末高潮
|
|
345
|
-
|
|
346
|
-
🟠 P1 伏笔任务(2 个):
|
|
347
|
-
□ 在第 26 章回收「身世之谜」伏笔
|
|
348
|
-
□ 在第 28 章埋设「远古秘密」伏笔
|
|
349
|
-
|
|
350
|
-
🔴 P0 修复任务(1 个):
|
|
351
|
-
□ 修复第 18 章时间线冲突
|
|
352
|
-
|
|
353
|
-
是否确认生成?[Y/N]
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
### 任务完成度统计
|
|
357
|
-
|
|
358
|
-
**触发条件**:`$ARGUMENTS` 包含 `--stats`
|
|
359
|
-
|
|
360
|
-
```
|
|
361
|
-
📊 任务统计
|
|
362
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
363
|
-
|
|
364
|
-
总任务:[N] 个
|
|
365
|
-
✅ 已完成:[A] 个([X]%)
|
|
366
|
-
🔄 进行中:[B] 个
|
|
367
|
-
⏳ 待办 :[C] 个
|
|
368
|
-
❌ 已取消:[D] 个
|
|
369
|
-
|
|
370
|
-
按优先级:
|
|
371
|
-
🔴 P0:[完成]/[总数]
|
|
372
|
-
🟠 P1:[完成]/[总数]
|
|
373
|
-
🟡 P2:[完成]/[总数]
|
|
374
|
-
🟢 P3:[完成]/[总数]
|
|
375
|
-
|
|
376
|
-
按类型:
|
|
377
|
-
写作任务:[完成]/[总数]
|
|
378
|
-
修复任务:[完成]/[总数]
|
|
379
|
-
维护任务:[完成]/[总数]
|
|
380
|
-
|
|
381
|
-
进度条:▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░ [X]%
|
|
382
|
-
```
|
|
383
|
-
|
|
384
|
-
---
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
## 🔗 命令链式提示
|
|
388
|
-
|
|
389
|
-
**命令执行完成后,自动附加下一步建议**:
|
|
390
|
-
|
|
391
|
-
```
|
|
392
|
-
💡 下一步建议:
|
|
393
|
-
1️⃣ `/write [章节号]` — 开始执行第一个写作任务
|
|
394
|
-
2️⃣ `/analyze --type=framework` — 写作前验证框架一致性
|
|
395
|
-
3️⃣ `/track-init` — 初始化追踪系统(如尚未初始化)
|
|
396
|
-
```
|
|
@@ -1,309 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: timeline
|
|
3
|
-
description: 管理和验证故事时间线
|
|
4
|
-
argument-hint: [add | check | show | sync] [--volume vol-XX | --recent N]
|
|
5
|
-
allowed-tools: Read(//spec/tracking/timeline.json), Read(//spec/tracking/timeline.json), Write(//spec/tracking/timeline.json), Write(//spec/tracking/timeline.json), Read(//stories/**/content/**), Read(//stories/**/content/**), Bash(find:*), Bash(*)
|
|
6
|
-
scripts:
|
|
7
|
-
sh: .specify/scripts/bash/check-timeline.sh
|
|
8
|
-
ps: .specify/scripts/powershell/check-timeline.ps1
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# 时间线管理
|
|
12
|
-
|
|
13
|
-
维护故事的时间轴,确保时间逻辑的一致性。
|
|
14
|
-
|
|
15
|
-
## 资源加载(可选)
|
|
16
|
-
|
|
17
|
-
本命令用于管理故事时间线,默认读取 `tracking/timeline.json`。
|
|
18
|
-
|
|
19
|
-
### 可选配置
|
|
20
|
-
|
|
21
|
-
```yaml
|
|
22
|
-
resource-loading:
|
|
23
|
-
timeline:
|
|
24
|
-
knowledge-base:
|
|
25
|
-
craft:
|
|
26
|
-
- pacing # 时间节奏控制
|
|
27
|
-
skills:
|
|
28
|
-
quality-assurance:
|
|
29
|
-
- consistency-checker # 时间线一致性检查
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
**推荐资源**: pacing.md(时间节奏控制)
|
|
33
|
-
|
|
34
|
-
## 数据加载策略
|
|
35
|
-
|
|
36
|
-
本命令采用 **三层回退** 机制加载时间线数据:
|
|
37
|
-
|
|
38
|
-
### Layer 3: MCP 查询(优先)
|
|
39
|
-
|
|
40
|
-
```typescript
|
|
41
|
-
// 如果 MCP 已启用且数据已同步
|
|
42
|
-
const events = await mcp.call('novelws-mcp/query_timeline', {
|
|
43
|
-
volume: 'vol-03', // --volume 参数
|
|
44
|
-
limit: 50 // --recent 参数
|
|
45
|
-
});
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**优势**:
|
|
49
|
-
- 高性能范围查询(volume/时间范围过滤)
|
|
50
|
-
- 支持 FTS5 全文搜索事件描述
|
|
51
|
-
- 自动聚合统计(时间跨度、事件密度)
|
|
52
|
-
|
|
53
|
-
### Layer 2: 分片 JSON(次优)
|
|
54
|
-
|
|
55
|
-
```bash
|
|
56
|
-
# 当 spec/tracking/volumes/ 存在时
|
|
57
|
-
timeline_data=$(cat spec/tracking/volumes/vol-03/timeline.json)
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
**适用场景**:
|
|
61
|
-
- MCP 未启用或同步延迟
|
|
62
|
-
- 需要精确章节级别的时间戳
|
|
63
|
-
- 手动编辑 JSON 后即时查看
|
|
64
|
-
|
|
65
|
-
### Layer 1: 单文件 JSON(兜底)
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# 传统模式,加载完整文件
|
|
69
|
-
timeline_data=$(cat spec/tracking/timeline.json)
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**向下兼容**:小型项目(< 300 章)继续使用单文件模式
|
|
73
|
-
|
|
74
|
-
### 参数过滤行为
|
|
75
|
-
|
|
76
|
-
- **`--volume vol-XX`**: 仅加载指定卷的时间线事件(Layer 3/2 生效,Layer 1 需手动过滤)
|
|
77
|
-
- **`--recent N`**: 显示最近 N 个事件(Layer 3 直接限制,Layer 1/2 取最后 N 条)
|
|
78
|
-
|
|
79
|
-
## 功能
|
|
80
|
-
|
|
81
|
-
1. **时间记录** - 追踪每个章节的时间点
|
|
82
|
-
2. **并行事件** - 管理同时发生的多线剧情
|
|
83
|
-
3. **历史对照** - 与真实历史事件对比(历史小说)
|
|
84
|
-
4. **逻辑验证** - 检查时间跨度的合理性
|
|
85
|
-
|
|
86
|
-
## 使用方法
|
|
87
|
-
|
|
88
|
-
执行脚本 {SCRIPT},支持以下操作:
|
|
89
|
-
|
|
90
|
-
### 子命令
|
|
91
|
-
|
|
92
|
-
- **`add`** - 添加时间节点
|
|
93
|
-
- 在指定章节记录时间戳
|
|
94
|
-
- 支持 `--volume` 自动写入对应卷分片
|
|
95
|
-
|
|
96
|
-
- **`check`** - 验证时间连续性
|
|
97
|
-
- 检测时间冲突(顺序、并行、持续、跳跃、年龄)
|
|
98
|
-
- `--volume vol-XX`: 仅检查指定卷
|
|
99
|
-
- `--recent N`: 仅检查最近 N 个事件
|
|
100
|
-
|
|
101
|
-
- **`show`** - 显示时间线概览
|
|
102
|
-
- 生成单线或多线程时间轴可视化
|
|
103
|
-
- `--volume vol-XX`: 仅显示指定卷事件
|
|
104
|
-
- `--recent N`: 仅显示最近 N 个事件
|
|
105
|
-
|
|
106
|
-
- **`sync`** - 同步并行事件
|
|
107
|
-
- 对齐多线程叙事的时间点
|
|
108
|
-
- 标记线程交汇点
|
|
109
|
-
|
|
110
|
-
## 时间线数据
|
|
111
|
-
|
|
112
|
-
时间线信息存储在 `spec/tracking/timeline.json` 中:
|
|
113
|
-
- 故事内时间(年/月/日)
|
|
114
|
-
- 章节对应关系
|
|
115
|
-
- 重要事件标记
|
|
116
|
-
- 时间跨度计算
|
|
117
|
-
|
|
118
|
-
## 示例输出
|
|
119
|
-
|
|
120
|
-
```
|
|
121
|
-
📅 故事时间线
|
|
122
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
123
|
-
当前时间:万历三十年春
|
|
124
|
-
|
|
125
|
-
第1章 | 万历二十九年冬月 | 穿越事件
|
|
126
|
-
第4章 | 万历三十年正月 | 北上赴考
|
|
127
|
-
第6章 | 万历三十年二月 | 会试
|
|
128
|
-
第8章 | 万历三十年三月 | 殿试
|
|
129
|
-
第61章 | 万历三十年四月 | [待写]
|
|
130
|
-
|
|
131
|
-
⏱️ 时间跨度:5个月
|
|
132
|
-
🔄 并行事件:日本入侵朝鲜
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
## 数据写入协议
|
|
136
|
-
|
|
137
|
-
时间线数据更新遵循以下协议:
|
|
138
|
-
|
|
139
|
-
### 分片模式(spec/tracking/volumes/ 存在)
|
|
140
|
-
|
|
141
|
-
1. **确定目标卷**:
|
|
142
|
-
- 如果命令指定 `--volume vol-XX`,写入对应卷
|
|
143
|
-
- 如果基于章节号(如 `add` 命令),根据章节号确定卷:
|
|
144
|
-
```bash
|
|
145
|
-
# 示例:ch-042 属于 vol-02(假设每卷 50 章)
|
|
146
|
-
volume_num=$((chapter_num / 50 + 1))
|
|
147
|
-
target_volume="vol-$(printf '%02d' $volume_num)"
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
2. **写入分片文件**:
|
|
151
|
-
```bash
|
|
152
|
-
# 写入指定卷的 timeline.json
|
|
153
|
-
Write(spec/tracking/volumes/${target_volume}/timeline.json)
|
|
154
|
-
```
|
|
155
|
-
|
|
156
|
-
3. **更新全局摘要**(如果事件跨度影响摘要统计):
|
|
157
|
-
```bash
|
|
158
|
-
# 更新 timeline-summary.json 的统计信息
|
|
159
|
-
Write(spec/tracking/summary/timeline-summary.json)
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
4. **触发 MCP 同步**(如果启用):
|
|
163
|
-
```bash
|
|
164
|
-
mcp-cli call novelws-mcp/sync_from_json '{
|
|
165
|
-
"mode": "incremental",
|
|
166
|
-
"tables": ["events"]
|
|
167
|
-
}'
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
### 单文件模式(传统)
|
|
171
|
-
|
|
172
|
-
直接写入完整 `timeline.json`:
|
|
173
|
-
```bash
|
|
174
|
-
Write(spec/tracking/timeline.json)
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### 写入示例
|
|
178
|
-
|
|
179
|
-
```typescript
|
|
180
|
-
// add 命令:添加时间节点到第 42 章
|
|
181
|
-
const chapterNum = 42;
|
|
182
|
-
const volumeNum = Math.floor((chapterNum - 1) / 50) + 1;
|
|
183
|
-
const targetVolume = `vol-${String(volumeNum).padStart(2, '0')}`;
|
|
184
|
-
|
|
185
|
-
// 读取目标卷的 timeline 分片
|
|
186
|
-
const timelinePath = isSharded
|
|
187
|
-
? `spec/tracking/volumes/${targetVolume}/timeline.json`
|
|
188
|
-
: 'spec/tracking/timeline.json';
|
|
189
|
-
|
|
190
|
-
const timeline = JSON.parse(fs.readFileSync(timelinePath));
|
|
191
|
-
|
|
192
|
-
// 添加新事件
|
|
193
|
-
timeline.events.push({
|
|
194
|
-
chapter: 'ch-042',
|
|
195
|
-
date: '万历三十年四月十五',
|
|
196
|
-
description: '主角突破筑基期',
|
|
197
|
-
type: 'major'
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
// 写回分片
|
|
201
|
-
fs.writeFileSync(timelinePath, JSON.stringify(timeline, null, 2));
|
|
202
|
-
|
|
203
|
-
// 同步到 MCP(如果启用)
|
|
204
|
-
if (mcpEnabled) {
|
|
205
|
-
await mcp.call('novelws-mcp/sync_from_json', {
|
|
206
|
-
mode: 'incremental',
|
|
207
|
-
tables: ['events']
|
|
208
|
-
});
|
|
209
|
-
}
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
---
|
|
213
|
-
## 增强功能
|
|
214
|
-
|
|
215
|
-
### 时间线可视化
|
|
216
|
-
|
|
217
|
-
#### 单线时间线视图
|
|
218
|
-
|
|
219
|
-
```
|
|
220
|
-
📅 故事时间线
|
|
221
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
222
|
-
|
|
223
|
-
[年份/日期] [事件] [章节]
|
|
224
|
-
─────────────────────────────────────────────
|
|
225
|
-
第 1 天 主角入学 第 1 章
|
|
226
|
-
│
|
|
227
|
-
第 1 天 遇到师姐 第 1 章
|
|
228
|
-
│
|
|
229
|
-
第 3 天 第一次修炼 第 2 章
|
|
230
|
-
│
|
|
231
|
-
第 7 天 突破练气一层 第 3 章
|
|
232
|
-
┊ (跳跃:20 天)
|
|
233
|
-
第 27 天 参加门派考核 第 4 章
|
|
234
|
-
│
|
|
235
|
-
第 27 天 与反派初次冲突 第 4 章
|
|
236
|
-
│
|
|
237
|
-
第 30 天 外出历练 第 5 章
|
|
238
|
-
┊ (跳跃:60 天)
|
|
239
|
-
第 90 天 历练归来 第 8 章
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
#### 多线程时间对齐视图
|
|
243
|
-
|
|
244
|
-
当故事有多条叙事线时,展示各线在同一时间轴上的对齐情况:
|
|
245
|
-
|
|
246
|
-
```
|
|
247
|
-
📅 多线程时间线
|
|
248
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
249
|
-
|
|
250
|
-
时间 主线(主角) 支线1(角色B) 支线2(角色C)
|
|
251
|
-
──────────────────────────────────────────────────────────
|
|
252
|
-
第 1 天 入学 [ch1] — —
|
|
253
|
-
第 3 天 修炼 [ch2] — —
|
|
254
|
-
第 7 天 突破 [ch3] 出发 [ch4] —
|
|
255
|
-
第 15 天 — 到达 [ch5] 接到任务 [ch6]
|
|
256
|
-
第 20 天 考核 [ch7] 调查 [ch8] 出发 [ch9]
|
|
257
|
-
第 27 天 冲突 [ch10] 发现线索 [ch11] ★ 与主角相遇 [ch10]
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
**时间对齐规则**:
|
|
261
|
-
- 同一天发生的事件对齐在同一行
|
|
262
|
-
- `—` 表示该线在此时间点无活动
|
|
263
|
-
- `★` 标记线程交汇点
|
|
264
|
-
- 时间跳跃用 `┊` 表示
|
|
265
|
-
|
|
266
|
-
### 时间冲突检测
|
|
267
|
-
|
|
268
|
-
自动检测以下类型的时间冲突:
|
|
269
|
-
|
|
270
|
-
| 冲突类型 | 描述 | 示例 |
|
|
271
|
-
|---------|------|------|
|
|
272
|
-
| 顺序冲突 | 事件 A 应在事件 B 之前,但章节顺序相反 | 第 5 章写「三天后」,第 6 章写「昨天」 |
|
|
273
|
-
| 并行冲突 | 同一角色同一时间出现在两个地点 | 角色A 在第 10 章(第 5 天)在城东,第 11 章(第 5 天)在城西 |
|
|
274
|
-
| 持续冲突 | 事件持续时间与描述不符 | 「三天的旅程」但只写了一个场景 |
|
|
275
|
-
| 跳跃冲突 | 时间跳跃期间有未交代的事件 | 跳过 30 天,但期间应有门派考核 |
|
|
276
|
-
| 年龄冲突 | 角色年龄与时间线不符 | 开篇 16 岁,一年后仍写 16 岁 |
|
|
277
|
-
|
|
278
|
-
#### 冲突报告格式
|
|
279
|
-
|
|
280
|
-
```
|
|
281
|
-
⚠️ 时间冲突检测
|
|
282
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
283
|
-
|
|
284
|
-
🔴 严重冲突:
|
|
285
|
-
1. 并行冲突:角色A 在第 5 天同时出现在两个地点
|
|
286
|
-
- 第 10 章:角色A 在城东战斗
|
|
287
|
-
- 第 11 章:角色A 在城西购物(同一天)
|
|
288
|
-
→ 建议:调整第 11 章时间为第 6 天
|
|
289
|
-
|
|
290
|
-
⚠️ 轻微冲突:
|
|
291
|
-
2. 持续冲突:第 5-8 章描述「三天旅程」,但内容只覆盖 1 天
|
|
292
|
-
→ 建议:补充旅途中的场景,或缩短旅程时间
|
|
293
|
-
|
|
294
|
-
💡 提示:
|
|
295
|
-
3. 时间跳跃:第 8-9 章之间跳过 60 天
|
|
296
|
-
→ 确认:这 60 天内是否有需要交代的事件?
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
---
|
|
300
|
-
## 🔗 命令链式提示
|
|
301
|
-
|
|
302
|
-
**命令执行完成后,自动附加下一步建议**:
|
|
303
|
-
|
|
304
|
-
```
|
|
305
|
-
💡 下一步建议:
|
|
306
|
-
1️⃣ `/write [章节号]` — 时间线确认无误,继续写作
|
|
307
|
-
2️⃣ `/track --check` — 执行深度一致性检查(含时间线验证)
|
|
308
|
-
3️⃣ `/analyze --focus=logic` — 深度查找时间线逻辑漏洞
|
|
309
|
-
```
|