novelws 3.0.0 → 4.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 +131 -0
- package/README.md +94 -66
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +35 -33
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +63 -6
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/core/config.d.ts +22 -15
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +28 -16
- package/dist/core/config.js.map +1 -1
- package/dist/core/errors.d.ts +16 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +26 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/utils/diagnostics.d.ts +64 -0
- package/dist/utils/diagnostics.d.ts.map +1 -0
- package/dist/utils/diagnostics.js +227 -0
- package/dist/utils/diagnostics.js.map +1 -0
- package/package.json +1 -1
- package/templates/commands/analyze.md +27 -110
- package/templates/commands/character.md +32 -180
- package/templates/commands/checklist.md +27 -27
- package/templates/commands/clarify.md +2 -2
- package/templates/commands/constitution.md +8 -8
- package/templates/commands/expert.md +3 -3
- package/templates/commands/facts.md +9 -9
- package/templates/commands/guide.md +129 -19
- package/templates/commands/help-me.md +221 -0
- package/templates/commands/plan.md +27 -26
- package/templates/commands/recap.md +16 -16
- package/templates/commands/relations.md +13 -13
- package/templates/commands/revise.md +16 -15
- package/templates/commands/search.md +11 -10
- package/templates/commands/specify.md +4 -4
- package/templates/commands/tasks.md +9 -9
- package/templates/commands/timeline.md +13 -13
- package/templates/commands/track-init.md +8 -8
- package/templates/commands/track.md +177 -552
- package/templates/commands/volume-summary.md +6 -6
- package/templates/commands/write.md +148 -38
- package/templates/dot-claude/CLAUDE.md +5 -5
- package/templates/{config → resources/config}/keyword-mappings.json +19 -19
- package/templates/resources/genres/horror.md +211 -0
- package/templates/resources/genres/military.md +209 -0
- package/templates/resources/genres/sports.md +216 -0
- package/templates/resources/genres/workplace.md +214 -0
- package/templates/resources/genres/youth.md +219 -0
- package/templates/{knowledge-base/requirements/anti-ai-v4.md → resources/requirements/anti-ai-v4-deprecated.md} +13 -1
- package/templates/resources/requirements/anti-ai-v5-balanced.md +203 -0
- package/templates/{scripts → resources/scripts}/README.md +8 -8
- package/templates/{scripts → resources/scripts}/bash/analyze-story.sh +1 -1
- package/templates/resources/scripts/bash/check-analyze-stage.sh +108 -0
- package/templates/{scripts → resources/scripts}/bash/check-consistency.sh +7 -7
- package/templates/{scripts → resources/scripts}/bash/check-facts.sh +1 -1
- package/templates/{scripts → resources/scripts}/bash/check-plot.sh +2 -2
- package/templates/{scripts → resources/scripts}/bash/check-timeline.sh +3 -3
- package/templates/{scripts → resources/scripts}/bash/check-world.sh +5 -5
- package/templates/{scripts → resources/scripts}/bash/check-writing-state.sh +26 -26
- package/templates/{scripts → resources/scripts}/bash/common.sh +3 -3
- package/templates/{scripts → resources/scripts}/bash/constitution.sh +1 -1
- package/templates/{scripts → resources/scripts}/bash/init-tracking.sh +13 -13
- package/templates/{scripts → resources/scripts}/bash/manage-relations.sh +10 -10
- package/templates/resources/scripts/bash/migrate-tracking.sh +183 -0
- package/templates/{scripts → resources/scripts}/bash/plan-story.sh +2 -2
- package/templates/{scripts → resources/scripts}/bash/specify-story.sh +1 -1
- package/templates/{scripts → resources/scripts}/bash/tasks-story.sh +2 -2
- package/templates/{scripts → resources/scripts}/bash/tests/bench-preload-cache.sh +3 -3
- package/templates/{scripts → resources/scripts}/bash/tests/test-cross-platform.sh +1 -1
- package/templates/{scripts → resources/scripts}/bash/tests/test-preload-cache.sh +1 -1
- package/templates/{scripts → resources/scripts}/bash/tests/test-regex-precompile.sh +4 -4
- package/templates/{scripts → resources/scripts}/bash/text-audit.sh +3 -3
- package/templates/{scripts → resources/scripts}/bash/track-progress.sh +5 -5
- package/templates/{scripts → resources/scripts}/powershell/analyze-story.ps1 +1 -1
- package/templates/{scripts → resources/scripts}/powershell/check-consistency.ps1 +8 -8
- package/templates/{scripts → resources/scripts}/powershell/check-plot.ps1 +2 -2
- package/templates/{scripts → resources/scripts}/powershell/check-timeline.ps1 +2 -2
- package/templates/{scripts → resources/scripts}/powershell/check-writing-state.ps1 +31 -31
- package/templates/{scripts → resources/scripts}/powershell/common.ps1 +2 -2
- package/templates/{scripts → resources/scripts}/powershell/constitution.ps1 +1 -1
- package/templates/{scripts → resources/scripts}/powershell/init-tracking.ps1 +5 -5
- package/templates/{scripts → resources/scripts}/powershell/manage-relations.ps1 +6 -6
- package/templates/{scripts → resources/scripts}/powershell/migrate-tracking.ps1 +1 -1
- package/templates/{scripts → resources/scripts}/powershell/plan-story.ps1 +2 -2
- package/templates/{scripts → resources/scripts}/powershell/specify-story.ps1 +1 -1
- package/templates/{scripts → resources/scripts}/powershell/tests/bench-ps-cache.ps1 +10 -10
- package/templates/{scripts → resources/scripts}/powershell/tests/test-ps-cache.ps1 +4 -4
- package/templates/{scripts → resources/scripts}/powershell/text-audit.ps1 +2 -2
- package/templates/{scripts → resources/scripts}/powershell/track-progress.ps1 +2 -2
- package/templates/skills/analysis/character-analysis/SKILL.md +1 -1
- package/templates/skills/analysis/foreshadow-analysis/SKILL.md +1 -1
- package/templates/skills/analysis/hook-analysis/SKILL.md +2 -2
- package/templates/skills/analysis/logic-analysis/SKILL.md +2 -2
- package/templates/skills/analysis/opening-analysis/SKILL.md +1 -1
- package/templates/skills/analysis/pacing-analysis/SKILL.md +1 -1
- package/templates/skills/analysis/power-analysis/SKILL.md +3 -3
- package/templates/skills/analysis/reader-analysis/SKILL.md +1 -1
- package/templates/skills/analysis/style-analysis/SKILL.md +1 -1
- package/templates/skills/analysis/voice-analysis/SKILL.md +1 -1
- package/templates/skills/auto-tracking/SKILL.md +1 -1
- package/templates/skills/quality-assurance/consistency-checker/SKILL.md +1 -1
- package/templates/skills/quality-assurance/facts-checker/SKILL.md +2 -2
- package/templates/skills/quality-assurance/hook-checker/SKILL.md +2 -2
- package/templates/skills/quality-assurance/long-series-continuity/SKILL.md +7 -7
- package/templates/skills/quality-assurance/pre-write-checklist/SKILL.md +22 -22
- package/templates/skills/quality-assurance/setting-detector/SKILL.md +15 -15
- package/templates/skills/quality-assurance/voice-consistency-checker/SKILL.md +1 -1
- package/templates/skills/writing-techniques/character-arc/SKILL.md +1 -1
- package/templates/skills/writing-techniques/multi-thread-narrative/SKILL.md +1 -1
- package/templates/skills/writing-techniques/reader-expectation/SKILL.md +1 -1
- package/templates/skills/writing-techniques/revision-polish/SKILL.md +1 -1
- package/templates/skills/writing-techniques/style-learning/SKILL.md +2 -2
- package/templates/skills/writing-techniques/writing-balance/.gitkeep +0 -0
- package/templates/skills/writing-techniques/writing-balance/SKILL.md +460 -0
- package/templates/skills/writing-techniques/writing-techniques/SKILL.md +727 -0
- package/templates/knowledge-base/README.md +0 -285
- package/templates/scripts/powershell/check-writing-state.ps1.backup +0 -135
- /package/templates/{knowledge-base → resources}/character-archetypes/01-hero.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/02-mentor.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/03-shadow.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/04-ally.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/05-shapeshifter.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/06-trickster.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/07-threshold-guardian.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/08-herald.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/09-father.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/10-mother.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/11-child.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/12-sage.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/README.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/application-guide.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/archetype-combinations.md +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/config.yaml +0 -0
- /package/templates/{knowledge-base → resources}/character-archetypes/examples-analysis.md +0 -0
- /package/templates/{specification-example.md → resources/config/specification-example.md} +0 -0
- /package/templates/{knowledge-base → resources}/craft/character-arc.md +0 -0
- /package/templates/{knowledge-base → resources}/craft/dialogue.md +0 -0
- /package/templates/{knowledge-base → resources}/craft/hook-design.md +0 -0
- /package/templates/{knowledge-base → resources}/craft/pacing.md +0 -0
- /package/templates/{knowledge-base → resources}/craft/power-system.md +0 -0
- /package/templates/{knowledge-base → resources}/craft/scene-structure.md +0 -0
- /package/templates/{knowledge-base → resources}/craft/show-not-tell.md +0 -0
- /package/templates/{knowledge-base → resources}/craft/story-structures.md +0 -0
- /package/templates/{knowledge-base → resources}/craft/tension-management.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/01-first-meeting.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/02-bonding-moment.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/03-declaration.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/04-triumph.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/05-reunion.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/06-forgiveness.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/07-betrayal.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/08-loss.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/09-rejection.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/10-failure.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/11-misunderstanding.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/12-farewell.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/13-revelation.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/14-point-of-no-return.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/15-dark-night.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/16-sacrifice.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/17-awakening.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/18-confrontation.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/19-bittersweet-goodbye.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/20-moral-dilemma.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/21-temptation.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/22-redemption.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/README.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/beat-sequences.md +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/config.yaml +0 -0
- /package/templates/{knowledge-base → resources}/emotional-beats/pacing-guide.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/game-lit.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/historical.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/mystery.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/rebirth.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/revenge.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/romance.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/sci-fi.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/thriller.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/urban.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/wuxia.md +0 -0
- /package/templates/{knowledge-base → resources}/genres/xuanhuan.md +0 -0
- /package/templates/{memory → resources/memory}/constitution.md +0 -0
- /package/templates/{memory → resources/memory}/personal-voice.md +0 -0
- /package/templates/{knowledge-base → resources}/references/README.md +0 -0
- /package/templates/{knowledge-base → resources}/references/china-1920s/culture.md +0 -0
- /package/templates/{knowledge-base → resources}/references/china-1920s/daily-life.md +0 -0
- /package/templates/{knowledge-base → resources}/references/china-1920s/overview.md +0 -0
- /package/templates/{knowledge-base → resources}/references/china-1920s/society.md +0 -0
- /package/templates/{knowledge-base → resources}/references/china-1920s/warlords.md +0 -0
- /package/templates/{knowledge-base → resources}/references/cultivation-world/daily-life.md +0 -0
- /package/templates/{knowledge-base → resources}/references/cultivation-world/overview.md +0 -0
- /package/templates/{knowledge-base → resources}/references/cultivation-world/power-system.md +0 -0
- /package/templates/{knowledge-base → resources}/references/cultivation-world/sects.md +0 -0
- /package/templates/{knowledge-base → resources}/references/cultivation-world/world-setting.md +0 -0
- /package/templates/{knowledge-base → resources}/references/modern-workplace/corporate.md +0 -0
- /package/templates/{knowledge-base → resources}/references/modern-workplace/daily-life.md +0 -0
- /package/templates/{knowledge-base → resources}/references/modern-workplace/overview.md +0 -0
- /package/templates/{knowledge-base → resources}/references/modern-workplace/relationships.md +0 -0
- /package/templates/{knowledge-base → resources}/references/modern-workplace/tech-industry.md +0 -0
- /package/templates/{knowledge-base → resources}/references/tang-dynasty/culture.md +0 -0
- /package/templates/{knowledge-base → resources}/references/tang-dynasty/daily-life.md +0 -0
- /package/templates/{knowledge-base → resources}/references/tang-dynasty/overview.md +0 -0
- /package/templates/{knowledge-base → resources}/references/tang-dynasty/politics.md +0 -0
- /package/templates/{knowledge-base → resources}/references/tang-dynasty/society.md +0 -0
- /package/templates/{knowledge-base → resources}/requirements/README.md +0 -0
- /package/templates/{knowledge-base → resources}/requirements/anti-ai-v3.md +0 -0
- /package/templates/{knowledge-base → resources}/requirements/concretization.md +0 -0
- /package/templates/{knowledge-base → resources}/requirements/fast-paced.md +0 -0
- /package/templates/{knowledge-base → resources}/requirements/no-poison.md +0 -0
- /package/templates/{knowledge-base → resources}/requirements/romance-angst.md +0 -0
- /package/templates/{knowledge-base → resources}/requirements/romance-sweet.md +0 -0
- /package/templates/{knowledge-base → resources}/requirements/serious-literature.md +0 -0
- /package/templates/{knowledge-base → resources}/requirements/strong-emotion.md +0 -0
- /package/templates/{scripts → resources/scripts}/bash/clarify-story.sh +0 -0
- /package/templates/{scripts → resources/scripts}/bash/generate-tasks.sh +0 -0
- /package/templates/{scripts → resources/scripts}/bash/test-word-count.sh +0 -0
- /package/templates/{scripts → resources/scripts}/bash/tests/run-all-benchmarks.sh +0 -0
- /package/templates/{scripts → resources/scripts}/bash/tests/test-cache-semantics.sh +0 -0
- /package/templates/{scripts → resources/scripts}/bash/tests/test-edge-cases-bash.sh +0 -0
- /package/templates/{scripts → resources/scripts}/bash/tests/test-phase1-bash.sh +0 -0
- /package/templates/{scripts → resources/scripts}/bash/tests/test-regression-bash.sh +0 -0
- /package/templates/{scripts → resources/scripts}/bash/tests/test-task6-verification.sh +0 -0
- /package/templates/{scripts → resources/scripts}/powershell/check-analyze-stage.ps1 +0 -0
- /package/templates/{scripts → resources/scripts}/powershell/check-facts.ps1 +0 -0
- /package/templates/{scripts → resources/scripts}/powershell/clarify-story.ps1 +0 -0
- /package/templates/{scripts → resources/scripts}/powershell/generate-tasks.ps1 +0 -0
- /package/templates/{scripts → resources/scripts}/powershell/tests/test-cross-platform.ps1 +0 -0
- /package/templates/{scripts → resources/scripts}/powershell/tests/test-edge-cases-ps.ps1 +0 -0
- /package/templates/{scripts → resources/scripts}/powershell/tests/test-phase1-ps.ps1 +0 -0
- /package/templates/{scripts → resources/scripts}/powershell/tests/test-regression-ps.ps1 +0 -0
- /package/templates/{knowledge-base → resources}/styles/README.md +0 -0
- /package/templates/{knowledge-base → resources}/styles/ancient-style.md +0 -0
- /package/templates/{knowledge-base → resources}/styles/literary.md +0 -0
- /package/templates/{knowledge-base → resources}/styles/minimal.md +0 -0
- /package/templates/{knowledge-base → resources}/styles/natural-voice.md +0 -0
- /package/templates/{knowledge-base → resources}/styles/web-novel.md +0 -0
|
@@ -2,10 +2,11 @@
|
|
|
2
2
|
name: track
|
|
3
3
|
description: 综合追踪小说创作进度和内容
|
|
4
4
|
argument-hint: [--brief | --plot | --stats | --check [--volume vol-XX] | --fix | --sync [--incremental] | --migrate [--auto | --volumes "1-100,101-200"] | --log]
|
|
5
|
-
|
|
5
|
+
recommended-model: claude-haiku-4-5-20251001 # --sync 数据更新速度优先;--check 深度检查可用 sonnet
|
|
6
|
+
allowed-tools: Read(//tracking/**), Read(//tracking/**), Read(//stories/**), Read(//stories/**), Bash(find:*), Bash(wc:*), Bash(grep:*), Bash(*)
|
|
6
7
|
scripts:
|
|
7
|
-
sh:
|
|
8
|
-
ps:
|
|
8
|
+
sh: resources/scripts/bash/track-progress.sh
|
|
9
|
+
ps: resources/scripts/powershell/track-progress.ps1
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# 综合进度追踪
|
|
@@ -44,7 +45,7 @@ resource-loading:
|
|
|
44
45
|
- `--brief` - 显示简要信息
|
|
45
46
|
- `--plot` - 仅显示情节追踪
|
|
46
47
|
- `--stats` - 仅显示统计数据
|
|
47
|
-
- `--check` - **[增强]** 执行深度一致性检查(包含角色验证),支持 `--volume vol-XX`
|
|
48
|
+
- `--check` - **[增强]** 执行深度一致性检查(包含角色验证),支持 `--volume vol-XX` --volume 范围限定,只检查该卷的 tracking 数据
|
|
48
49
|
- `--fix` - **[新增]** 自动修复发现的简单问题
|
|
49
50
|
- `--sync` - **[新增]** 批量同步多章节的 tracking 数据,支持 `--incremental` 增量同步
|
|
50
51
|
|
|
@@ -52,12 +53,12 @@ resource-loading:
|
|
|
52
53
|
|
|
53
54
|
整合多个追踪文件的信息:
|
|
54
55
|
- `progress.json` - 写作进度
|
|
55
|
-
- `
|
|
56
|
-
- `
|
|
57
|
-
- `
|
|
58
|
-
- `
|
|
59
|
-
- `
|
|
60
|
-
- `
|
|
56
|
+
- `tracking/plot-tracker.json` - 情节追踪
|
|
57
|
+
- `tracking/timeline.json` - 时间线
|
|
58
|
+
- `tracking/relationships.json` - 关系网络
|
|
59
|
+
- `tracking/character-state.json` - 角色状态
|
|
60
|
+
- `tracking/narrative-threads.json` - **[新增]** 多线叙事追踪(POV调度、信息差、线程交汇)
|
|
61
|
+
- `tracking/validation-rules.json` - **[新增]** 验证规则(用于--check和--fix)
|
|
61
62
|
|
|
62
63
|
---
|
|
63
64
|
|
|
@@ -151,7 +152,7 @@ resource-loading:
|
|
|
151
152
|
|
|
152
153
|
#### 详细查看单条记录
|
|
153
154
|
|
|
154
|
-
|
|
155
|
+
选择"[查看详情]"时,显示完整的 diff 和更新依据:
|
|
155
156
|
|
|
156
157
|
```markdown
|
|
157
158
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
@@ -162,140 +163,60 @@ resource-loading:
|
|
|
162
163
|
|
|
163
164
|
### 命令执行
|
|
164
165
|
- **命令**: `/write chapter-05 --focus emotion`
|
|
165
|
-
- **执行者**: AI
|
|
166
166
|
- **状态**: 已自动更新
|
|
167
167
|
|
|
168
168
|
### 更新内容
|
|
169
169
|
|
|
170
170
|
#### character-state.json
|
|
171
|
-
|
|
172
|
-
"林晓": {
|
|
173
|
-
"lastAppearance": "chapter-04",
|
|
174
|
-
+ "lastAppearance": "chapter-05",
|
|
175
|
-
"emotion": "平静",
|
|
176
|
-
+ "emotion": "焦虑",
|
|
177
|
-
"location": "训练场"
|
|
178
|
-
}
|
|
179
|
-
```
|
|
171
|
+
- 林晓:lastAppearance chapter-04 → chapter-05,emotion 平静 → 焦虑
|
|
180
172
|
|
|
181
173
|
#### relationships.json
|
|
182
|
-
|
|
183
|
-
+ {
|
|
184
|
-
+ "from": "林晓",
|
|
185
|
-
+ "to": "队长",
|
|
186
|
-
+ "type": "信任",
|
|
187
|
-
+ "strength": 0.6,
|
|
188
|
-
+ "evidence": "Ch.5 首次合作任务",
|
|
189
|
-
+ "lastUpdate": "chapter-05"
|
|
190
|
-
+ }
|
|
191
|
-
```
|
|
174
|
+
+ 新增:林晓 → 队长(信任,strength: 0.6,evidence: Ch.5 首次合作任务)
|
|
192
175
|
|
|
193
176
|
#### plot-tracker.json
|
|
194
|
-
|
|
195
|
-
"plotLines": [
|
|
196
|
-
{
|
|
197
|
-
"id": "主线-001",
|
|
198
|
-
"progress": 0.2,
|
|
199
|
-
+ "progress": 0.3,
|
|
200
|
-
"lastUpdate": "chapter-04",
|
|
201
|
-
+ "lastUpdate": "chapter-05"
|
|
202
|
-
}
|
|
203
|
-
]
|
|
204
|
-
```
|
|
177
|
+
- 主线-001:progress 0.2 → 0.3,lastUpdate chapter-04 → chapter-05
|
|
205
178
|
|
|
206
179
|
#### timeline.json
|
|
207
|
-
|
|
208
|
-
+ {
|
|
209
|
-
+ "day": 15,
|
|
210
|
-
+ "time": "14:00",
|
|
211
|
-
+ "chapter": "chapter-05",
|
|
212
|
-
+ "event": "首次合作任务"
|
|
213
|
-
+ }
|
|
214
|
-
```
|
|
180
|
+
+ 新增:Day 15 14:00 chapter-05 首次合作任务
|
|
215
181
|
|
|
216
182
|
### 更新依据
|
|
217
|
-
-
|
|
218
|
-
-
|
|
219
|
-
-
|
|
220
|
-
-
|
|
221
|
-
|
|
222
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
223
|
-
```
|
|
224
|
-
|
|
225
|
-
#### 过滤查看示例
|
|
226
|
-
|
|
227
|
-
**按命令过滤**:
|
|
228
|
-
```markdown
|
|
229
|
-
📜 /write 命令的更新历史(12 条记录)
|
|
230
|
-
|
|
231
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
232
|
-
|
|
233
|
-
## 2026-02-08 14:30:25 - /write chapter-05
|
|
234
|
-
[摘要...]
|
|
235
|
-
|
|
236
|
-
## 2026-02-07 16:15:00 - /write chapter-04
|
|
237
|
-
[摘要...]
|
|
238
|
-
|
|
239
|
-
[继续列出其他 /write 记录...]
|
|
240
|
-
```
|
|
241
|
-
|
|
242
|
-
**按文件过滤**:
|
|
243
|
-
```markdown
|
|
244
|
-
📜 character-state.json 的更新历史(8 条记录)
|
|
245
|
-
|
|
183
|
+
- 角色分析: Ch.5 林晓对话和行为显示焦虑情绪
|
|
184
|
+
- 关系分析: 林晓与队长首次合作,建立初步信任
|
|
185
|
+
- 情节推进: 主线进展 10%,发现第一条线索
|
|
186
|
+
- 时间线: Ch.5 推进到第 15 天
|
|
246
187
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
247
|
-
|
|
248
|
-
## 2026-02-08 14:30:25 - /write chapter-05
|
|
249
|
-
**变更**: 林晓情绪 平静 → 焦虑
|
|
250
|
-
|
|
251
|
-
## 2026-02-07 16:15:00 - /write chapter-04
|
|
252
|
-
**变更**: 林晓位置更新
|
|
253
|
-
|
|
254
|
-
[继续列出其他记录...]
|
|
255
188
|
```
|
|
256
189
|
|
|
257
|
-
|
|
258
|
-
```markdown
|
|
259
|
-
📜 2026-02-01 至 2026-02-08 的更新历史(15 条记录)
|
|
190
|
+
#### 过滤查看
|
|
260
191
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
192
|
+
支持按命令、文件、时间范围过滤:
|
|
193
|
+
- **按命令**: `/track --log --command=write` → 只显示 /write 命令的更新记录
|
|
194
|
+
- **按文件**: `/track --log --file=character-state.json` → 只显示该文件的变更记录
|
|
195
|
+
- **按时间**: `/track --log --since=2026-02-01 --until=2026-02-08` → 时间范围内的记录
|
|
265
196
|
|
|
266
197
|
### 实现逻辑
|
|
267
198
|
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
4. 按时间倒序排列(最新的在前)
|
|
199
|
+
1. 读取 `tracking/tracking-log.md`,解析日志格式
|
|
200
|
+
2. 根据过滤条件筛选,按时间倒序排列
|
|
201
|
+
3. 默认仅加载摘要(轻量级),选择"查看详情"时加载完整 diff
|
|
202
|
+
4. 大型日志(>1000 条)分页显示
|
|
273
203
|
|
|
274
|
-
|
|
275
|
-
- 提取时间戳、命令类型、更新状态
|
|
276
|
-
- 提取更新文件列表
|
|
277
|
-
- 提取摘要信息(从 diff 中生成)
|
|
278
|
-
- 保留完整的 diff 和更新依据
|
|
279
|
-
|
|
280
|
-
**性能考虑**:
|
|
281
|
-
- 默认仅加载摘要信息(轻量级)
|
|
282
|
-
- 用户选择"查看详情"时才加载完整 diff
|
|
283
|
-
- 对于大型日志文件(>1000 条记录),分页显示
|
|
204
|
+
**注意**:如果 `tracking-log.md` 不存在,说明尚未执行过 tracking 更新命令,执行 `/write` 或 `/plan` 后会自动创建。
|
|
284
205
|
|
|
285
206
|
### 错误处理
|
|
286
207
|
|
|
287
208
|
#### 如果 tracking-log.md 不存在
|
|
288
209
|
|
|
289
|
-
```
|
|
210
|
+
```
|
|
290
211
|
ℹ️ 提示:tracking-log.md 不存在
|
|
291
|
-
- 位置:
|
|
212
|
+
- 位置:tracking/tracking-log.md
|
|
292
213
|
- 原因:尚未执行过任何 tracking 更新命令
|
|
293
214
|
- 建议:执行 /write 或 /plan 命令后会自动创建
|
|
294
215
|
```
|
|
295
216
|
|
|
296
217
|
#### 如果日志格式无法解析
|
|
297
218
|
|
|
298
|
-
```
|
|
219
|
+
```
|
|
299
220
|
⚠️ 警告:日志文件格式异常
|
|
300
221
|
- 文件:tracking-log.md
|
|
301
222
|
- 问题:无法解析部分日志条目
|
|
@@ -338,151 +259,73 @@ resource-loading:
|
|
|
338
259
|
|
|
339
260
|
### 叙事线同步(--check 扩展)
|
|
340
261
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
262
|
+
当检测到 `narrative-threads.json` 或多线叙事结构时,自动提取和更新叙事线数据:
|
|
263
|
+
- **视角角色** → 更新 `povSchedule`
|
|
264
|
+
- **叙事线推进** → 更新 thread 的 `chapters` 和 `lastActiveChapter`
|
|
265
|
+
- **信息揭示** → 更新 `informationState`
|
|
266
|
+
- **叙事线交汇** → 更新 `intersections`
|
|
344
267
|
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
1. **视角角色** → 更新 `povSchedule`(记录本章的 POV 角色和对应线程)
|
|
348
|
-
2. **叙事线推进** → 更新对应 thread 的 `chapters` 和 `lastActiveChapter`
|
|
349
|
-
3. **信息揭示** → 更新 `informationState`(读者/角色的已知信息变化)
|
|
350
|
-
4. **叙事线交汇** → 更新 `intersections`(如本章有多条线交汇)
|
|
351
|
-
|
|
352
|
-
#### 叙事线健康度检测(--check 内)
|
|
268
|
+
检测内容:叙事线活跃度(冷线警告)、视角分布比例、活跃信息差数量。
|
|
353
269
|
|
|
354
270
|
```
|
|
355
271
|
📊 叙事线健康度
|
|
356
272
|
━━━━━━━━━━━━━━━━━━━━
|
|
273
|
+
| 叙事线 | 最后活跃 | 冷线章数 | 状态 |
|
|
274
|
+
|--------|---------|---------|------|
|
|
275
|
+
| 主线 | 第 15 章 | 0 | ✅ 活跃 |
|
|
276
|
+
| 支线1 | 第 12 章 | 3 | ⚠️ 注意 |
|
|
277
|
+
| 暗线 | 第 5 章 | 10 | 🔴 危险 |
|
|
357
278
|
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
| 主线 | main | 第 15 章 | 0 | ✅ 活跃 |
|
|
361
|
-
| 支线1 | sub | 第 12 章 | 3 | ⚠️ 注意 |
|
|
362
|
-
| 暗线 | hidden | 第 5 章 | 10 | 🔴 危险 |
|
|
363
|
-
|
|
364
|
-
⚠️ 警告:
|
|
365
|
-
- 暗线已 10 章未推进,读者可能遗忘
|
|
366
|
-
- 支线1 接近冷线阈值,建议近 2 章内推进
|
|
367
|
-
|
|
368
|
-
📊 视角分布
|
|
369
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
370
|
-
主角视角:60% ████████████░░░░░░░░
|
|
371
|
-
角色B视角:25% █████░░░░░░░░░░░░░░
|
|
372
|
-
角色C视角:15% ███░░░░░░░░░░░░░░░░
|
|
373
|
-
|
|
374
|
-
📊 活跃信息差:[N] 个
|
|
375
|
-
- 最长持续信息差:[描述](已持续 [M] 章)
|
|
279
|
+
视角分布:主角 60% / 角色B 25% / 角色C 15%
|
|
280
|
+
活跃信息差:[N] 个
|
|
376
281
|
```
|
|
377
282
|
|
|
378
283
|
|
|
379
284
|
### 伏笔健康度检测(--check 扩展)
|
|
380
285
|
|
|
381
|
-
在 `--check` 模式下,对 `plot-tracker.json`
|
|
286
|
+
在 `--check` 模式下,对 `plot-tracker.json` 中的伏笔执行健康度检测,包含三项检测:
|
|
287
|
+
|
|
288
|
+
1. **伏笔热度管理** — 基于 `heat` 字段(current/trend/lastMentioned/readerAwareness)检测冷却伏笔
|
|
289
|
+
2. **伏笔回收时机** — 基于 `urgency` 和持续章数,按紧急/建议/可持有三级分类
|
|
290
|
+
3. **伏笔链完整性** — 基于 `chain` 字段(parentId/childIds/chainName)检测孤立伏笔
|
|
382
291
|
|
|
383
292
|
#### 增强后的伏笔数据结构
|
|
384
293
|
|
|
385
|
-
`plot-tracker.json` 的 foreshadowing
|
|
294
|
+
`plot-tracker.json` 的 foreshadowing 条目增强字段:
|
|
386
295
|
|
|
387
296
|
```json
|
|
388
297
|
{
|
|
389
|
-
"
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
"heat": {
|
|
399
|
-
"current": 0.6,
|
|
400
|
-
"trend": "rising|stable|cooling",
|
|
401
|
-
"lastMentioned": 12,
|
|
402
|
-
"mentionCount": 3,
|
|
403
|
-
"readerAwareness": "high|medium|low"
|
|
404
|
-
},
|
|
405
|
-
|
|
406
|
-
"chain": {
|
|
407
|
-
"parentId": null,
|
|
408
|
-
"childIds": ["fs-003", "fs-005"],
|
|
409
|
-
"relatedIds": ["fs-002"],
|
|
410
|
-
"chainName": "[伏笔链名称,如「身世之谜」]"
|
|
411
|
-
},
|
|
412
|
-
|
|
413
|
-
"resolution": {
|
|
414
|
-
"plannedChapter": 25,
|
|
415
|
-
"plannedMethod": "[计划的回收方式]",
|
|
416
|
-
"actualChapter": null,
|
|
417
|
-
"actualMethod": null,
|
|
418
|
-
"impact": "major|moderate|minor"
|
|
419
|
-
},
|
|
420
|
-
|
|
421
|
-
"hints": [
|
|
422
|
-
{
|
|
423
|
-
"chapter": 8,
|
|
424
|
-
"content": "[提示内容]",
|
|
425
|
-
"subtlety": "obvious|moderate|subtle"
|
|
426
|
-
}
|
|
427
|
-
]
|
|
428
|
-
}
|
|
429
|
-
]
|
|
298
|
+
"id": "fs-001",
|
|
299
|
+
"content": "[伏笔内容]",
|
|
300
|
+
"plantedChapter": 3,
|
|
301
|
+
"status": "planted|hinted|partially_resolved|resolved|abandoned",
|
|
302
|
+
"urgency": 0.5,
|
|
303
|
+
"heat": { "current": 0.6, "trend": "rising|stable|cooling", "lastMentioned": 12, "readerAwareness": "high|medium|low" },
|
|
304
|
+
"chain": { "parentId": null, "childIds": ["fs-003"], "chainName": "身世之谜" },
|
|
305
|
+
"resolution": { "plannedChapter": 25, "plannedMethod": "[回收方式]", "impact": "major|moderate|minor" },
|
|
306
|
+
"hints": [{ "chapter": 8, "content": "[提示内容]", "subtlety": "obvious|moderate|subtle" }]
|
|
430
307
|
}
|
|
431
308
|
```
|
|
432
309
|
|
|
433
|
-
####
|
|
310
|
+
#### 检测输出示例
|
|
434
311
|
|
|
435
312
|
```
|
|
436
|
-
🔮
|
|
313
|
+
🔮 伏笔健康度
|
|
437
314
|
━━━━━━━━━━━━━━━━━━━━
|
|
438
|
-
|
|
439
315
|
| 伏笔 | 热度 | 趋势 | 上次提及 | 状态 |
|
|
440
316
|
|------|------|------|---------|------|
|
|
441
317
|
| [身世之谜] | 🔥🔥🔥 高 | ↑ 上升 | 第 15 章 | ✅ 健康 |
|
|
442
|
-
| [神秘宝物] | 🔥🔥 中 | → 稳定 | 第 12 章 | ✅ 健康 |
|
|
443
318
|
| [失踪事件] | 🔥 低 | ↓ 冷却 | 第 5 章 | ⚠️ 需要提示 |
|
|
444
319
|
| [预言] | ❄️ 极低 | ↓ 冷却 | 第 2 章 | ❌ 读者可能已遗忘 |
|
|
445
320
|
|
|
446
|
-
💡 建议:
|
|
447
|
-
- [失踪事件]:在近 2 章内添加一个 subtle 提示
|
|
448
|
-
- [预言]:在近 1 章内添加一个 obvious 提示,或考虑放弃
|
|
449
|
-
```
|
|
450
|
-
|
|
451
|
-
#### 检测 2:伏笔回收时机
|
|
452
|
-
|
|
453
|
-
```
|
|
454
321
|
⏰ 伏笔回收建议
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
- [身世之谜]:已持续 20 章,读者期待值极高
|
|
459
|
-
建议:在第 [N]-[N+3] 章内回收
|
|
460
|
-
推荐方式:[基于情节的具体建议]
|
|
461
|
-
|
|
462
|
-
⚠️ 建议回收(紧急度 0.5-0.8):
|
|
463
|
-
- [神秘宝物]:已持续 12 章,热度中等
|
|
464
|
-
建议:在第 [M]-[M+5] 章内回收
|
|
465
|
-
|
|
466
|
-
✅ 可继续持有(紧急度 < 0.5):
|
|
467
|
-
- [预言]:刚埋设 5 章,可继续持有
|
|
468
|
-
```
|
|
469
|
-
|
|
470
|
-
#### 检测 3:伏笔链完整性
|
|
322
|
+
🔴 紧急:[身世之谜] 已持续 20 章,建议第 [N]-[N+3] 章内回收
|
|
323
|
+
⚠️ 建议:[神秘宝物] 已持续 12 章,建议第 [M]-[M+5] 章内回收
|
|
324
|
+
✅ 可持有:[预言] 刚埋设 5 章
|
|
471
325
|
|
|
472
|
-
|
|
473
|
-
🔗
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
伏笔链「身世之谜」:
|
|
477
|
-
fs-001(身世暗示)→ fs-003(血脉觉醒)→ fs-005(真相揭示)
|
|
478
|
-
状态:fs-001 ✅ 已提示 → fs-003 🔄 进行中 → fs-005 ⏳ 待回收
|
|
479
|
-
|
|
480
|
-
伏笔链「远古秘密」:
|
|
481
|
-
fs-002(古籍线索)→ fs-004(遗迹发现)
|
|
482
|
-
状态:fs-002 ✅ 已提示 → fs-004 ⏳ 待回收
|
|
483
|
-
|
|
484
|
-
⚠️ 孤立伏笔(未关联到任何链):
|
|
485
|
-
- fs-006([内容])— 考虑是否需要关联或放弃
|
|
326
|
+
🔗 伏笔链「身世之谜」:fs-001 ✅ → fs-003 🔄 → fs-005 ⏳
|
|
327
|
+
🔗 伏笔链「远古秘密」:fs-002 ✅ → fs-004 ⏳
|
|
328
|
+
⚠️ 孤立伏笔:fs-006 — 考虑关联或放弃
|
|
486
329
|
```
|
|
487
330
|
|
|
488
331
|
### 模式:创作数据统计(`--stats`)
|
|
@@ -491,10 +334,8 @@ fs-002(古籍线索)→ fs-004(遗迹发现)
|
|
|
491
334
|
|
|
492
335
|
**数据收集**:
|
|
493
336
|
- 读取所有章节文件(`content/*.md`)
|
|
494
|
-
- 读取 `tasks.md`
|
|
495
|
-
- 读取 `
|
|
496
|
-
- 读取 `spec/tracking/plot-tracker.json`
|
|
497
|
-
- 读取 `creative-plan.md`
|
|
337
|
+
- 读取 `tasks.md`、`creative-plan.md`
|
|
338
|
+
- 读取 `tracking/character-state.json`、`tracking/plot-tracker.json`
|
|
498
339
|
|
|
499
340
|
#### 总览面板
|
|
500
341
|
|
|
@@ -502,241 +343,115 @@ fs-002(古籍线索)→ fs-004(遗迹发现)
|
|
|
502
343
|
📊 创作统计 — [故事名]
|
|
503
344
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
504
345
|
|
|
505
|
-
📖 总字数:[N] 字
|
|
506
|
-
📝 章节数:已写 [M] / 计划 [K]
|
|
346
|
+
📖 总字数:[N] 字 | 📝 章节:已写 [M] / 计划 [K]
|
|
507
347
|
📈 完成度:▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░░░░ [X]%
|
|
508
|
-
👥 活跃角色:[A] 个
|
|
509
|
-
🔮 活跃伏笔:[B] 个
|
|
510
|
-
📋 待办任务:[C] 个
|
|
348
|
+
👥 活跃角色:[A] 个 | 🔮 活跃伏笔:[B] 个 | 📋 待办:[C] 个
|
|
511
349
|
```
|
|
512
350
|
|
|
513
|
-
####
|
|
351
|
+
#### 字数详情与角色
|
|
514
352
|
|
|
515
353
|
```
|
|
516
|
-
📝
|
|
354
|
+
📝 字数统计
|
|
517
355
|
━━━━━━━━━━━━━━━━━━━━
|
|
518
|
-
|
|
519
356
|
每章字数分布:
|
|
520
357
|
第 01 章 ████████████████ 3,200 字
|
|
521
358
|
第 02 章 ██████████████░░ 2,800 字
|
|
522
359
|
第 03 章 ████████████████████ 4,100 字
|
|
523
360
|
...
|
|
524
361
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
最长章节:第 [X] 章([N] 字)
|
|
528
|
-
最短章节:第 [Y] 章([M] 字)
|
|
529
|
-
字数标准差:[S] 字
|
|
530
|
-
|
|
531
|
-
每卷字数:
|
|
532
|
-
第 1 卷:[N] 字([M] 章)✅ 已完成
|
|
533
|
-
第 2 卷:[N] 字([M] 章)🔄 进行中
|
|
534
|
-
```
|
|
362
|
+
统计:平均 [N] 字/章 | 最长:第[X]章([N]字) | 最短:第[Y]章([M]字)
|
|
363
|
+
每卷:第 1 卷 [N] 字([M] 章)✅ | 第 2 卷 [N] 字([M] 章)🔄
|
|
535
364
|
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
```
|
|
539
|
-
👥 角色出场频率(Top 10)
|
|
365
|
+
👥 角色出场频率(Top 5)
|
|
540
366
|
━━━━━━━━━━━━━━━━━━━━
|
|
367
|
+
| 角色 | 出场率 | 最近 | 缺席 |
|
|
368
|
+
|------|--------|------|------|
|
|
369
|
+
| [主角] | 100% | 第[K]章 | 0 |
|
|
370
|
+
| [角色A] | 72% | 第[K]章 | 1 |
|
|
371
|
+
| [角色B] | 48% | 第[K]章 | 5 ⚠️ |
|
|
541
372
|
|
|
542
|
-
|
|
543
|
-
|---|------|------|--------|------|------|
|
|
544
|
-
| 1 | [主角] | [N]/[M] | 100% | 第[K]章 | 0 |
|
|
545
|
-
| 2 | [角色A] | [N]/[M] | 72% | 第[K]章 | 1 |
|
|
546
|
-
| 3 | [角色B] | [N]/[M] | 48% | 第[K]章 | 5 ⚠️ |
|
|
547
|
-
...
|
|
548
|
-
|
|
549
|
-
⚠️ 长期缺席角色:
|
|
550
|
-
- [角色C]:10 章未出场
|
|
551
|
-
- [角色D]:8 章未出场
|
|
373
|
+
⚠️ 长期缺席:[角色C] 10 章未出场、[角色D] 8 章未出场
|
|
552
374
|
```
|
|
553
375
|
|
|
554
|
-
####
|
|
376
|
+
#### 内容构成与伏笔状态
|
|
555
377
|
|
|
556
378
|
```
|
|
557
379
|
📊 内容构成(全书平均)
|
|
558
380
|
━━━━━━━━━━━━━━━━━━━━
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
描写:[Y]% ██████░░░░
|
|
562
|
-
叙述:[Z]% ████░░░░░░
|
|
563
|
-
动作:[W]% ███░░░░░░░
|
|
564
|
-
|
|
565
|
-
参考范围(网文):
|
|
566
|
-
对话 30-40% | 描写 20-30% | 叙述 15-25% | 动作 15-25%
|
|
567
|
-
|
|
381
|
+
对话 [X]% | 描写 [Y]% | 叙述 [Z]% | 动作 [W]%
|
|
382
|
+
参考范围:对话 30-40% | 描写 20-30% | 叙述 15-25% | 动作 15-25%
|
|
568
383
|
状态:[✅ 均衡 / ⚠️ 偏向描述]
|
|
569
|
-
```
|
|
570
|
-
|
|
571
|
-
#### 伏笔状态汇总
|
|
572
|
-
|
|
573
|
-
```
|
|
574
|
-
🔮 伏笔状态
|
|
575
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
576
|
-
|
|
577
|
-
总计:[N] 个
|
|
578
|
-
已回收:[A] 个 ✅
|
|
579
|
-
进行中:[B] 个 🔄
|
|
580
|
-
待回收:[C] 个 ⏳
|
|
581
|
-
已放弃:[D] 个 ❌
|
|
582
384
|
|
|
385
|
+
🔮 伏笔状态:[N]个(已回收[A] ✅ | 进行中[B] 🔄 | 待回收[C] ⏳)
|
|
583
386
|
回收率:[X]%(建议 > 80%)
|
|
387
|
+
紧急伏笔:[伏笔内容] — 紧急度 [X],持续 [N] 章
|
|
584
388
|
|
|
585
|
-
紧急伏笔(紧急度 > 0.8):
|
|
586
|
-
1. [伏笔内容] — 紧急度 [X],持续 [N] 章
|
|
587
|
-
2. [伏笔内容] — 紧急度 [Y],持续 [M] 章
|
|
588
|
-
```
|
|
589
|
-
|
|
590
|
-
#### 情节线进度
|
|
591
|
-
|
|
592
|
-
```
|
|
593
389
|
📋 情节线进度
|
|
594
390
|
━━━━━━━━━━━━━━━━━━━━
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
支线 1:[名称]
|
|
600
|
-
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ 90%
|
|
601
|
-
|
|
602
|
-
支线 2:[名称]
|
|
603
|
-
▓▓▓▓▓▓░░░░░░░░░░░░░░ 30%
|
|
391
|
+
主线 [名称] ▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░ 60%
|
|
392
|
+
支线1 [名称] ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░ 90%
|
|
393
|
+
支线2 [名称] ▓▓▓▓▓▓░░░░░░░░░░░░░░ 30%
|
|
604
394
|
```
|
|
605
395
|
|
|
606
396
|
### 节奏健康度检测(--check 扩展)
|
|
607
397
|
|
|
608
|
-
|
|
398
|
+
`--check` 时执行四项节奏检测:
|
|
609
399
|
|
|
610
|
-
|
|
400
|
+
1. **节奏单一性** — 分析最近 N 章情绪强度分布(健康:高/中/低各占 20%-50%;偏单一:某项 >60%;严重:>80% 或连续 5+ 章同强度)
|
|
401
|
+
2. **爽点间隔** — 检测爽点分布(正常 ≤3 章;偏长 4-5 章;过长 >5 章)
|
|
402
|
+
3. **钩子连续性** — 检查最近章节是否有钩子(悬念/反转/信息/情感),标记无钩子章节
|
|
403
|
+
4. **情绪曲线合理性** — 基于张弛有度原则,检测连续高强度导致的读者疲劳
|
|
611
404
|
|
|
612
|
-
|
|
405
|
+
#### 检测输出示例
|
|
613
406
|
|
|
614
407
|
```
|
|
615
408
|
📊 节奏分布(最近 10 章)
|
|
616
409
|
━━━━━━━━━━━━━━━━━━━━
|
|
617
|
-
高强度:[N] 章([X]%)
|
|
618
|
-
|
|
619
|
-
低强度:[N] 章([X]%)
|
|
620
|
-
|
|
621
|
-
判定:
|
|
622
|
-
✅ 节奏多样(高/中/低分布均匀)
|
|
623
|
-
⚠️ 节奏偏单一(连续 [N] 章 [高/中/低] 强度)
|
|
624
|
-
❌ 节奏严重单一([X]% 章节为同一强度)
|
|
625
|
-
```
|
|
626
|
-
|
|
627
|
-
**判定标准**:
|
|
628
|
-
- ✅ 健康:高/中/低各占 20%-50%
|
|
629
|
-
- ⚠️ 偏单一:某一强度占比 > 60%
|
|
630
|
-
- ❌ 严重单一:某一强度占比 > 80%,或连续 5+ 章同一强度
|
|
631
|
-
|
|
632
|
-
#### 检测 2:爽点间隔
|
|
633
|
-
|
|
634
|
-
检查最近章节中爽点的分布间隔:
|
|
635
|
-
|
|
636
|
-
```
|
|
637
|
-
⭐ 爽点间隔检测
|
|
638
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
639
|
-
最近爽点:第 [N] 章([类型])
|
|
640
|
-
当前间隔:[M] 章无爽点
|
|
410
|
+
高强度:[N] 章([X]%)| 中强度:[N] 章([X]%)| 低强度:[N] 章([X]%)
|
|
411
|
+
判定:[✅ 节奏多样 / ⚠️ 偏单一 / ❌ 严重单一]
|
|
641
412
|
|
|
642
|
-
|
|
643
|
-
✅ 间隔正常(≤ 3 章)
|
|
644
|
-
⚠️ 间隔偏长(4-5 章)— 建议在下一章安排爽点
|
|
645
|
-
❌ 间隔过长(> 5 章)— 读者流失风险!
|
|
646
|
-
```
|
|
413
|
+
⭐ 爽点间隔:最近爽点第 [N] 章,当前间隔 [M] 章 [✅/⚠️/❌]
|
|
647
414
|
|
|
648
|
-
|
|
415
|
+
🪝 钩子连续性(最近 5 章):
|
|
416
|
+
第[A]章 ✅ 悬念 | 第[B]章 ✅ 反转 | 第[C]章 ❌ 无钩子 | 第[D]章 ✅ 信息 | 第[E]章 ✅ 情感
|
|
649
417
|
|
|
650
|
-
|
|
418
|
+
📈 情绪曲线:
|
|
419
|
+
第[A]章 ████████░░ 高 → 第[B]章 ██████████ 高 → 第[C]章 █████████░ 高
|
|
420
|
+
⚠️ 连续 3 章高强度,建议下一章安排过渡/日常
|
|
651
421
|
|
|
652
|
-
|
|
653
|
-
🪝 钩子连续性
|
|
422
|
+
🏥 综合节奏健康度
|
|
654
423
|
━━━━━━━━━━━━━━━━━━━━
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
第 [D] 章:✅ 信息 ⭐⭐
|
|
660
|
-
第 [E] 章:✅ 情感 ⭐⭐⭐
|
|
661
|
-
|
|
662
|
-
判定:
|
|
663
|
-
⚠️ 第 [C] 章无钩子,建议补充
|
|
664
|
-
```
|
|
665
|
-
|
|
666
|
-
#### 检测 4:情绪曲线合理性
|
|
667
|
-
|
|
668
|
-
基于张弛有度原则,检查情绪曲线是否合理:
|
|
669
|
-
|
|
670
|
-
```
|
|
671
|
-
📈 情绪曲线
|
|
672
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
673
|
-
第 [A] 章 ████████░░ 高
|
|
674
|
-
第 [B] 章 ██████████ 高
|
|
675
|
-
第 [C] 章 █████████░ 高
|
|
676
|
-
第 [D] 章 ████████░░ 高
|
|
677
|
-
第 [E] 章 ███████░░░ 中高
|
|
678
|
-
|
|
679
|
-
⚠️ 警告:连续 4 章高强度,读者可能疲劳
|
|
680
|
-
💡 建议:下一章安排过渡/日常/角色互动
|
|
681
|
-
```
|
|
682
|
-
|
|
683
|
-
#### 综合节奏健康度评分
|
|
684
|
-
|
|
685
|
-
```
|
|
686
|
-
🏥 节奏健康度
|
|
687
|
-
━━━━━━━━━━━━━━━━━━━━
|
|
688
|
-
节奏多样性:[✅/⚠️/❌]
|
|
689
|
-
爽点间隔 :[✅/⚠️/❌]
|
|
690
|
-
钩子连续性:[✅/⚠️/❌]
|
|
691
|
-
情绪曲线 :[✅/⚠️/❌]
|
|
424
|
+
节奏多样性:[✅/⚠️/❌] 高[X]% 中[Y]% 低[Z]%
|
|
425
|
+
爽点间隔 :[✅/⚠️/❌] 当前间隔 [M] 章
|
|
426
|
+
钩子连续性:[✅/⚠️/❌] 最近 5 章中 [N] 章有钩子
|
|
427
|
+
情绪曲线 :[✅/⚠️/❌] 连续 [K] 章高强度
|
|
692
428
|
|
|
693
429
|
综合评定:[健康 / 需关注 / 需改进]
|
|
694
430
|
```
|
|
695
431
|
|
|
696
432
|
---
|
|
697
433
|
|
|
698
|
-
###
|
|
434
|
+
### 数据一致性验证与深度检查
|
|
699
435
|
|
|
700
|
-
|
|
701
|
-
- plot-tracker.json 与 creative-plan.md 的一致性
|
|
702
|
-
- timeline.json 的时间逻辑
|
|
703
|
-
- relationships.json 的关系冲突
|
|
704
|
-
- character-state.json 的位置合理性
|
|
436
|
+
**基础检查**(默认执行):验证 plot-tracker / timeline / relationships / character-state 的一致性、时间逻辑、关系冲突、位置合理性。
|
|
705
437
|
|
|
706
|
-
|
|
438
|
+
**深度验证 (--check)**:在基础检查之上,增加角色深度验证(名称一致性、称呼规则、行为人设匹配),基于 `validation-rules.json`。支持 `--volume vol-XX` 限定范围。MCP 可用时优先调用 `stats_consistency`。
|
|
707
439
|
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
#### --volume 范围限定
|
|
440
|
+
#### 内部任务流程(自动执行)
|
|
711
441
|
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
-
|
|
442
|
+
```
|
|
443
|
+
Phase 1: 基础验证 [并行]
|
|
444
|
+
T001-T004: 情节一致性 / 时间线验证 / 关系验证 / 世界观验证
|
|
715
445
|
|
|
716
|
-
|
|
446
|
+
Phase 2: 角色深度验证
|
|
447
|
+
T005: 加载 validation-rules.json
|
|
448
|
+
T006-T007: 扫描章节角色名称,对比 character-state.json
|
|
449
|
+
T008-T009: 检查称呼规则,验证角色行为人设
|
|
717
450
|
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
# Phase 1: 基础验证 [并行执行]
|
|
721
|
-
- [x] T001 [P] 执行情节一致性检查 (plot-check逻辑)
|
|
722
|
-
- [x] T002 [P] 执行时间线验证 (timeline逻辑)
|
|
723
|
-
- [x] T003 [P] 执行关系验证 (relations逻辑)
|
|
724
|
-
- [x] T004 [P] 执行世界观验证 (world-check逻辑)
|
|
725
|
-
|
|
726
|
-
# Phase 2: 角色深度验证
|
|
727
|
-
- [x] T005 加载validation-rules.json验证规则
|
|
728
|
-
- [x] T006 扫描所有章节中的角色名称
|
|
729
|
-
- [x] T007 对比character-state.json验证名称一致性
|
|
730
|
-
- [x] T008 检查称呼是否符合relationships.json
|
|
731
|
-
- [x] T009 验证角色行为是否符合人设
|
|
732
|
-
|
|
733
|
-
# Phase 3: 生成综合报告
|
|
734
|
-
- [x] T010 汇总所有验证结果
|
|
735
|
-
- [x] T011 标记问题严重程度
|
|
736
|
-
- [x] T012 生成修复建议
|
|
451
|
+
Phase 3: 生成综合报告
|
|
452
|
+
T010-T012: 汇总结果 → 标记严重程度 → 生成修复建议
|
|
737
453
|
```
|
|
738
454
|
|
|
739
|
-
#### 验证报告示例
|
|
740
455
|
```
|
|
741
456
|
📊 深度验证报告
|
|
742
457
|
━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
@@ -747,32 +462,13 @@ fs-002(古籍线索)→ fs-004(遗迹发现)
|
|
|
747
462
|
2. [中] 第7章: 沈玉卿称呼错误,用了"师兄"
|
|
748
463
|
3. [低] 第12章: 时间线跳跃未说明
|
|
749
464
|
|
|
750
|
-
🔧 可自动修复: 2个
|
|
751
|
-
📝 需人工确认: 1个
|
|
752
|
-
|
|
753
|
-
运行 /track --fix 自动修复简单问题
|
|
465
|
+
🔧 可自动修复: 2个 → 运行 /track --fix
|
|
754
466
|
```
|
|
755
467
|
|
|
756
468
|
### 自动修复模式 (--fix)
|
|
757
469
|
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
#### 自动修复范围
|
|
761
|
-
1. **角色名称错误** - 根据validation-rules.json自动替换
|
|
762
|
-
2. **固定称呼错误** - 自动修正为正确称呼
|
|
763
|
-
3. **简单拼写错误** - 修正明显的typo
|
|
470
|
+
基于验证报告自动修复:角色名称错误、固定称呼错误、简单拼写错误(根据 validation-rules.json)。不可自动修复的问题标记为需人工处理。修复后建议重新运行 `--check` 验证。
|
|
764
471
|
|
|
765
|
-
#### 修复流程
|
|
766
|
-
```markdown
|
|
767
|
-
# 内部修复任务(自动执行)
|
|
768
|
-
- [x] F001 读取验证报告中的问题列表
|
|
769
|
-
- [x] F002 [P] 修复第3章角色名称错误
|
|
770
|
-
- [x] F003 [P] 修复第7章称呼错误
|
|
771
|
-
- [x] F004 生成修复报告
|
|
772
|
-
- [x] F005 更新追踪文件
|
|
773
|
-
```
|
|
774
|
-
|
|
775
|
-
#### 修复报告示例
|
|
776
472
|
```
|
|
777
473
|
🔧 自动修复报告
|
|
778
474
|
━━━━━━━━━━━━━━━━━━━
|
|
@@ -788,26 +484,8 @@ fs-002(古籍线索)→ fs-004(遗迹发现)
|
|
|
788
484
|
|
|
789
485
|
### 智能分析与建议
|
|
790
486
|
|
|
791
|
-
|
|
792
|
-
- 对比计划进度和实际进度
|
|
793
|
-
- 预测完成时间
|
|
794
|
-
- 识别写作瓶颈
|
|
795
|
-
|
|
796
|
-
2. **内容分析**
|
|
797
|
-
- 伏笔覆盖率(已埋设/已回收)
|
|
798
|
-
- 角色出场频率
|
|
799
|
-
- 冲突强度曲线
|
|
487
|
+
根据追踪数据自动分析:进度对比(计划 vs 实际)、完成时间预测、伏笔覆盖率、角色出场频率、冲突强度曲线。基于分析结果提供下一步写作重点、待处理伏笔、关系线和时间线调整建议。
|
|
800
488
|
|
|
801
|
-
3. **行动建议**
|
|
802
|
-
根据分析结果提供:
|
|
803
|
-
- 下一步写作重点
|
|
804
|
-
- 需要处理的伏笔
|
|
805
|
-
- 建议加强的关系线
|
|
806
|
-
- 时间线调整建议
|
|
807
|
-
|
|
808
|
-
### 可视化报告
|
|
809
|
-
|
|
810
|
-
生成结构化报告:
|
|
811
489
|
```
|
|
812
490
|
📊 综合追踪报告
|
|
813
491
|
━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
@@ -821,27 +499,23 @@ fs-002(古籍线索)→ fs-004(遗迹发现)
|
|
|
821
499
|
⚠️ 需要关注:
|
|
822
500
|
- 角色B已5章未出场
|
|
823
501
|
- 支线剧情进度滞后
|
|
824
|
-
- 第45章的时间跳跃需要说明
|
|
825
502
|
```
|
|
826
503
|
|
|
827
504
|
### 数据导出
|
|
828
505
|
|
|
829
|
-
|
|
830
|
-
- Markdown 格式的完整报告
|
|
831
|
-
- JSON 格式的原始数据
|
|
832
|
-
- 可视化图表(关系图、时间轴)
|
|
506
|
+
支持导出为 Markdown 报告、JSON 原始数据、可视化图表(关系图、时间轴)。
|
|
833
507
|
|
|
834
508
|
---
|
|
835
509
|
|
|
836
510
|
### 批量同步模式 (--sync)
|
|
837
511
|
|
|
838
|
-
|
|
512
|
+
批量扫描并同步多个章节的 tracking 数据。适用于连续写了多章但忘记更新 tracking、导入外部内容、数据严重不同步等场景。
|
|
839
513
|
|
|
840
514
|
#### 增量同步(--sync --incremental)
|
|
841
515
|
|
|
842
|
-
|
|
516
|
+
只处理上次同步后的新章节:
|
|
843
517
|
|
|
844
|
-
1. 读取 `
|
|
518
|
+
1. 读取 `tracking/tracking-log.md` 最后一条记录,获取 last_sync_chapter
|
|
845
519
|
2. 扫描 `stories/[current]/content/` 中编号 > last_sync_chapter 的章节
|
|
846
520
|
3. 只对这些新章节执行 tracking 更新
|
|
847
521
|
4. 更新 tracking-log.md 记录本次同步
|
|
@@ -863,16 +537,9 @@ fs-002(古籍线索)→ fs-004(遗迹发现)
|
|
|
863
537
|
```
|
|
864
538
|
📊 同步差异检测
|
|
865
539
|
━━━━━━━━━━━━━━━━━━━━
|
|
866
|
-
已写章节:[N] 章
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
需要同步的章节:第 [M+1] - [N] 章(共 [K] 章)
|
|
870
|
-
|
|
871
|
-
差异类型:
|
|
872
|
-
- 角色状态:[X] 处需更新
|
|
873
|
-
- 关系网络:[Y] 处需更新
|
|
874
|
-
- 情节进度:[Z] 处需更新
|
|
875
|
-
- 时间线:[W] 处需更新
|
|
540
|
+
已写章节:[N] 章 | tracking 最后更新:第 [M] 章
|
|
541
|
+
需要同步:第 [M+1]-[N] 章(共 [K] 章)
|
|
542
|
+
差异:角色 [X] 处 | 关系 [Y] 处 | 情节 [Z] 处 | 时间线 [W] 处
|
|
876
543
|
```
|
|
877
544
|
|
|
878
545
|
##### Step 2: 批量分析
|
|
@@ -924,17 +591,17 @@ tracking 最后更新:第 [M] 章
|
|
|
924
591
|
|
|
925
592
|
读取 tracking 数据时按以下优先级:
|
|
926
593
|
1. **MCP 查询(优先)**:调用对应 MCP 工具获取精确数据
|
|
927
|
-
2. **分片 JSON(次优)**:读取 `
|
|
928
|
-
3. **单文件 JSON(兜底)**:读取 `
|
|
594
|
+
2. **分片 JSON(次优)**:读取 `tracking/volumes/[currentVolume]/` 下的分片文件
|
|
595
|
+
3. **单文件 JSON(兜底)**:读取 `tracking/` 下的单文件
|
|
929
596
|
|
|
930
597
|
**分片模式写入:**
|
|
931
598
|
1. 确定当前章节属于哪个卷(从 volume-summaries.json 的 chapters 范围判断)
|
|
932
|
-
2. 更新该卷的分片文件(如 `
|
|
599
|
+
2. 更新该卷的分片文件(如 `tracking/volumes/vol-03/character-state.json`)
|
|
933
600
|
3. 同步更新全局摘要文件(如 characters-summary.json 的 activeCount)
|
|
934
601
|
4. 如果 MCP 可用,调用 `sync_from_json` 同步到 SQLite
|
|
935
602
|
|
|
936
603
|
**单文件模式写入:**
|
|
937
|
-
- 直接更新 `
|
|
604
|
+
- 直接更新 `tracking/` 下的文件(现有逻辑)
|
|
938
605
|
|
|
939
606
|
---
|
|
940
607
|
|
|
@@ -952,7 +619,7 @@ tracking 最后更新:第 [M] 章
|
|
|
952
619
|
|
|
953
620
|
### 迁移流程
|
|
954
621
|
|
|
955
|
-
|
|
622
|
+
**阶段 1:检测与备份**
|
|
956
623
|
|
|
957
624
|
1. 运行脚本检测当前状态:
|
|
958
625
|
```powershell
|
|
@@ -965,105 +632,63 @@ powershell -File {SCRIPT_DIR}/migrate-tracking.ps1 -Mode check -Json
|
|
|
965
632
|
powershell -File {SCRIPT_DIR}/migrate-tracking.ps1 -Mode backup -Json
|
|
966
633
|
```
|
|
967
634
|
|
|
968
|
-
|
|
635
|
+
**阶段 2:确定卷边界**
|
|
636
|
+
- `--auto`:从 `plot-tracker.json` 的 `checkpoints.volumeEnd` 获取,无则按 100 章一卷
|
|
637
|
+
- `--volumes`:解析用户提供的边界字符串,验证连续性
|
|
638
|
+
- 交互式(默认):分析情节弧线建议卷边界,用户确认
|
|
969
639
|
|
|
970
|
-
|
|
971
|
-
- 读取 `plot-tracker.json` 的 `checkpoints.volumeEnd` 确定已有的卷边界
|
|
972
|
-
- 如果没有卷边界信息,按每 100 章一卷自动划分
|
|
973
|
-
- 最后一卷可以不满 100 章
|
|
974
|
-
|
|
975
|
-
**--volumes 模式:**
|
|
976
|
-
- 解析用户提供的卷边界字符串,如 `"1-100,101-250,251-400"`
|
|
977
|
-
- 验证边界连续且覆盖所有已写章节
|
|
978
|
-
|
|
979
|
-
**交互式模式(默认):**
|
|
980
|
-
- 读取 `plot-tracker.json` 和 `creative-plan.md`
|
|
981
|
-
- 分析情节弧线,建议合理的卷边界
|
|
982
|
-
- 向用户展示建议并确认
|
|
983
|
-
|
|
984
|
-
#### 阶段 3:数据拆分
|
|
640
|
+
**阶段 3:数据拆分**
|
|
985
641
|
|
|
986
642
|
运行脚本创建目录结构:
|
|
987
643
|
```powershell
|
|
988
644
|
powershell -File {SCRIPT_DIR}/migrate-tracking.ps1 -Mode auto -Json
|
|
989
645
|
```
|
|
990
646
|
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
994
|
-
- `protagonist` 复制到每个卷(状态更新为该卷末尾的状态)
|
|
995
|
-
- `supportingCharacters` 按 `lastSeen.chapter` 分配到对应卷
|
|
996
|
-
- `appearanceTracking` 按 `chapter` 分配到对应卷
|
|
997
|
-
- `characterGroups` 每卷独立维护
|
|
647
|
+
按卷边界拆分 character-state / timeline / relationships / plot-tracker 四个文件:
|
|
648
|
+
- 拆分原则:按 chapter 分配数据到对应卷,跨卷数据保留引用
|
|
649
|
+
- 写入 `tracking/volumes/vol-XX/`
|
|
998
650
|
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
-
|
|
1003
|
-
|
|
651
|
+
拆分规则概要:
|
|
652
|
+
| 文件 | 拆分方式 |
|
|
653
|
+
|------|---------|
|
|
654
|
+
| character-state.json | protagonist 复制到每卷(状态为卷末);supportingCharacters 按 lastSeen.chapter 分配;appearanceTracking 按 chapter 分配 |
|
|
655
|
+
| timeline.json | events 按 chapter 分配;storyTime 每卷记录时间范围;parallelEvents 按时间点分配 |
|
|
656
|
+
| relationships.json | characters 复制到每卷(只保留活跃角色);history 按 chapter 分配;factions 复制到每卷(状态为卷末) |
|
|
657
|
+
| plot-tracker.json | foreshadowing 按 planted.chapter 分配(跨卷未解决伏笔保留引用);plotlines 每卷记录进展;checkpoints 按卷分配 |
|
|
1004
658
|
|
|
1005
|
-
|
|
1006
|
-
- `
|
|
1007
|
-
-
|
|
1008
|
-
-
|
|
659
|
+
**阶段 4:生成全局摘要**
|
|
660
|
+
- 生成 4 个摘要文件到 `tracking/summary/`:
|
|
661
|
+
- characters-summary.json — 活跃/归档角色统计
|
|
662
|
+
- plot-summary.json — 未解决伏笔汇总、回收统计
|
|
663
|
+
- timeline-summary.json — 每卷关键里程碑、故事时间范围
|
|
664
|
+
- volume-summaries.json — 每卷摘要(id, title, chapters, wordCount, keyEvents, unresolvedPlots, newCharacters, exitedCharacters)
|
|
1009
665
|
|
|
1010
|
-
|
|
1011
|
-
- `
|
|
1012
|
-
- 跨卷未解决的伏笔在后续卷中保留引用
|
|
1013
|
-
- `plotlines` 每卷记录该卷的进展
|
|
1014
|
-
- `checkpoints` 按卷分配
|
|
666
|
+
**阶段 5:初始化 SQLite**(MCP 可用时)
|
|
667
|
+
- 调用 `sync_from_json` 导入 + `sync_status` 验证
|
|
1015
668
|
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
#### 阶段 4:生成全局摘要
|
|
1019
|
-
|
|
1020
|
-
基于拆分后的数据,生成 4 个摘要文件到 `spec/tracking/summary/`:
|
|
1021
|
-
|
|
1022
|
-
**characters-summary.json:**
|
|
1023
|
-
- 遍历所有卷的 character-state.json
|
|
1024
|
-
- active:最后一卷中仍活跃的角色
|
|
1025
|
-
- archived:已退场/死亡的角色
|
|
1026
|
-
- 统计 totalCount 和 activeCount
|
|
1027
|
-
|
|
1028
|
-
**plot-summary.json:**
|
|
1029
|
-
- 汇总所有卷的伏笔状态
|
|
1030
|
-
- unresolvedForeshadowing:所有 status=active 的伏笔
|
|
1031
|
-
- resolvedCount / totalPlanted 统计
|
|
1032
|
-
|
|
1033
|
-
**timeline-summary.json:**
|
|
1034
|
-
- 提取每卷的关键里程碑事件
|
|
1035
|
-
- 记录故事时间范围
|
|
1036
|
-
|
|
1037
|
-
**volume-summaries.json:**
|
|
1038
|
-
- 每卷生成一条摘要记录
|
|
1039
|
-
- 包含:id, title, chapters, wordCount, keyEvents, unresolvedPlots, newCharacters, exitedCharacters
|
|
1040
|
-
|
|
1041
|
-
#### 阶段 5:初始化 SQLite(如果 MCP 可用)
|
|
1042
|
-
|
|
1043
|
-
如果检测到 novelws-mcp 已安装:
|
|
1044
|
-
- 调用 MCP 工具 `sync_from_json` 将分片数据导入 SQLite
|
|
1045
|
-
- 调用 `sync_status` 验证同步结果
|
|
1046
|
-
|
|
1047
|
-
如果 MCP 不可用,跳过此步骤。
|
|
1048
|
-
|
|
1049
|
-
#### 阶段 6:验证与清理
|
|
669
|
+
**阶段 6:验证与清理**
|
|
1050
670
|
|
|
1051
671
|
1. 验证每个卷的文件都存在且 JSON 格式正确
|
|
1052
672
|
2. 验证摘要文件的统计数据与分卷数据一致
|
|
1053
673
|
3. 确认无误后,删除原始单文件(备份已保存)
|
|
1054
674
|
4. 输出迁移报告:
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
675
|
+
|
|
676
|
+
```
|
|
677
|
+
📦 分片迁移报告
|
|
678
|
+
━━━━━━━━━━━━━━━━━━━
|
|
679
|
+
迁移前:单文件模式,总大小 XXX KB
|
|
680
|
+
迁移后:N 卷分片,每卷平均 XX KB
|
|
681
|
+
备份位置:tracking/backup/YYYYMMDD-HHMMSS/
|
|
682
|
+
```
|
|
1058
683
|
|
|
1059
684
|
### 错误处理
|
|
1060
685
|
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
686
|
+
任何步骤失败时,提示用户从备份恢复:
|
|
687
|
+
```
|
|
688
|
+
迁移失败。备份文件在 tracking/backup/YYYYMMDD-HHMMSS/
|
|
689
|
+
可以手动将备份文件复制回 tracking/ 恢复原状。
|
|
690
|
+
```
|
|
691
|
+
不自动删除备份,由用户手动清理。
|
|
1067
692
|
|
|
1068
693
|
---
|
|
1069
694
|
|