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.
Files changed (237) hide show
  1. package/CHANGELOG.md +131 -0
  2. package/README.md +94 -66
  3. package/dist/commands/init.d.ts.map +1 -1
  4. package/dist/commands/init.js +35 -33
  5. package/dist/commands/init.js.map +1 -1
  6. package/dist/commands/upgrade.d.ts.map +1 -1
  7. package/dist/commands/upgrade.js +63 -6
  8. package/dist/commands/upgrade.js.map +1 -1
  9. package/dist/core/config.d.ts +22 -15
  10. package/dist/core/config.d.ts.map +1 -1
  11. package/dist/core/config.js +28 -16
  12. package/dist/core/config.js.map +1 -1
  13. package/dist/core/errors.d.ts +16 -0
  14. package/dist/core/errors.d.ts.map +1 -1
  15. package/dist/core/errors.js +26 -0
  16. package/dist/core/errors.js.map +1 -1
  17. package/dist/utils/diagnostics.d.ts +64 -0
  18. package/dist/utils/diagnostics.d.ts.map +1 -0
  19. package/dist/utils/diagnostics.js +227 -0
  20. package/dist/utils/diagnostics.js.map +1 -0
  21. package/package.json +1 -1
  22. package/templates/commands/analyze.md +27 -110
  23. package/templates/commands/character.md +32 -180
  24. package/templates/commands/checklist.md +27 -27
  25. package/templates/commands/clarify.md +2 -2
  26. package/templates/commands/constitution.md +8 -8
  27. package/templates/commands/expert.md +3 -3
  28. package/templates/commands/facts.md +9 -9
  29. package/templates/commands/guide.md +129 -19
  30. package/templates/commands/help-me.md +221 -0
  31. package/templates/commands/plan.md +27 -26
  32. package/templates/commands/recap.md +16 -16
  33. package/templates/commands/relations.md +13 -13
  34. package/templates/commands/revise.md +16 -15
  35. package/templates/commands/search.md +11 -10
  36. package/templates/commands/specify.md +4 -4
  37. package/templates/commands/tasks.md +9 -9
  38. package/templates/commands/timeline.md +13 -13
  39. package/templates/commands/track-init.md +8 -8
  40. package/templates/commands/track.md +177 -552
  41. package/templates/commands/volume-summary.md +6 -6
  42. package/templates/commands/write.md +148 -38
  43. package/templates/dot-claude/CLAUDE.md +5 -5
  44. package/templates/{config → resources/config}/keyword-mappings.json +19 -19
  45. package/templates/resources/genres/horror.md +211 -0
  46. package/templates/resources/genres/military.md +209 -0
  47. package/templates/resources/genres/sports.md +216 -0
  48. package/templates/resources/genres/workplace.md +214 -0
  49. package/templates/resources/genres/youth.md +219 -0
  50. package/templates/{knowledge-base/requirements/anti-ai-v4.md → resources/requirements/anti-ai-v4-deprecated.md} +13 -1
  51. package/templates/resources/requirements/anti-ai-v5-balanced.md +203 -0
  52. package/templates/{scripts → resources/scripts}/README.md +8 -8
  53. package/templates/{scripts → resources/scripts}/bash/analyze-story.sh +1 -1
  54. package/templates/resources/scripts/bash/check-analyze-stage.sh +108 -0
  55. package/templates/{scripts → resources/scripts}/bash/check-consistency.sh +7 -7
  56. package/templates/{scripts → resources/scripts}/bash/check-facts.sh +1 -1
  57. package/templates/{scripts → resources/scripts}/bash/check-plot.sh +2 -2
  58. package/templates/{scripts → resources/scripts}/bash/check-timeline.sh +3 -3
  59. package/templates/{scripts → resources/scripts}/bash/check-world.sh +5 -5
  60. package/templates/{scripts → resources/scripts}/bash/check-writing-state.sh +26 -26
  61. package/templates/{scripts → resources/scripts}/bash/common.sh +3 -3
  62. package/templates/{scripts → resources/scripts}/bash/constitution.sh +1 -1
  63. package/templates/{scripts → resources/scripts}/bash/init-tracking.sh +13 -13
  64. package/templates/{scripts → resources/scripts}/bash/manage-relations.sh +10 -10
  65. package/templates/resources/scripts/bash/migrate-tracking.sh +183 -0
  66. package/templates/{scripts → resources/scripts}/bash/plan-story.sh +2 -2
  67. package/templates/{scripts → resources/scripts}/bash/specify-story.sh +1 -1
  68. package/templates/{scripts → resources/scripts}/bash/tasks-story.sh +2 -2
  69. package/templates/{scripts → resources/scripts}/bash/tests/bench-preload-cache.sh +3 -3
  70. package/templates/{scripts → resources/scripts}/bash/tests/test-cross-platform.sh +1 -1
  71. package/templates/{scripts → resources/scripts}/bash/tests/test-preload-cache.sh +1 -1
  72. package/templates/{scripts → resources/scripts}/bash/tests/test-regex-precompile.sh +4 -4
  73. package/templates/{scripts → resources/scripts}/bash/text-audit.sh +3 -3
  74. package/templates/{scripts → resources/scripts}/bash/track-progress.sh +5 -5
  75. package/templates/{scripts → resources/scripts}/powershell/analyze-story.ps1 +1 -1
  76. package/templates/{scripts → resources/scripts}/powershell/check-consistency.ps1 +8 -8
  77. package/templates/{scripts → resources/scripts}/powershell/check-plot.ps1 +2 -2
  78. package/templates/{scripts → resources/scripts}/powershell/check-timeline.ps1 +2 -2
  79. package/templates/{scripts → resources/scripts}/powershell/check-writing-state.ps1 +31 -31
  80. package/templates/{scripts → resources/scripts}/powershell/common.ps1 +2 -2
  81. package/templates/{scripts → resources/scripts}/powershell/constitution.ps1 +1 -1
  82. package/templates/{scripts → resources/scripts}/powershell/init-tracking.ps1 +5 -5
  83. package/templates/{scripts → resources/scripts}/powershell/manage-relations.ps1 +6 -6
  84. package/templates/{scripts → resources/scripts}/powershell/migrate-tracking.ps1 +1 -1
  85. package/templates/{scripts → resources/scripts}/powershell/plan-story.ps1 +2 -2
  86. package/templates/{scripts → resources/scripts}/powershell/specify-story.ps1 +1 -1
  87. package/templates/{scripts → resources/scripts}/powershell/tests/bench-ps-cache.ps1 +10 -10
  88. package/templates/{scripts → resources/scripts}/powershell/tests/test-ps-cache.ps1 +4 -4
  89. package/templates/{scripts → resources/scripts}/powershell/text-audit.ps1 +2 -2
  90. package/templates/{scripts → resources/scripts}/powershell/track-progress.ps1 +2 -2
  91. package/templates/skills/analysis/character-analysis/SKILL.md +1 -1
  92. package/templates/skills/analysis/foreshadow-analysis/SKILL.md +1 -1
  93. package/templates/skills/analysis/hook-analysis/SKILL.md +2 -2
  94. package/templates/skills/analysis/logic-analysis/SKILL.md +2 -2
  95. package/templates/skills/analysis/opening-analysis/SKILL.md +1 -1
  96. package/templates/skills/analysis/pacing-analysis/SKILL.md +1 -1
  97. package/templates/skills/analysis/power-analysis/SKILL.md +3 -3
  98. package/templates/skills/analysis/reader-analysis/SKILL.md +1 -1
  99. package/templates/skills/analysis/style-analysis/SKILL.md +1 -1
  100. package/templates/skills/analysis/voice-analysis/SKILL.md +1 -1
  101. package/templates/skills/auto-tracking/SKILL.md +1 -1
  102. package/templates/skills/quality-assurance/consistency-checker/SKILL.md +1 -1
  103. package/templates/skills/quality-assurance/facts-checker/SKILL.md +2 -2
  104. package/templates/skills/quality-assurance/hook-checker/SKILL.md +2 -2
  105. package/templates/skills/quality-assurance/long-series-continuity/SKILL.md +7 -7
  106. package/templates/skills/quality-assurance/pre-write-checklist/SKILL.md +22 -22
  107. package/templates/skills/quality-assurance/setting-detector/SKILL.md +15 -15
  108. package/templates/skills/quality-assurance/voice-consistency-checker/SKILL.md +1 -1
  109. package/templates/skills/writing-techniques/character-arc/SKILL.md +1 -1
  110. package/templates/skills/writing-techniques/multi-thread-narrative/SKILL.md +1 -1
  111. package/templates/skills/writing-techniques/reader-expectation/SKILL.md +1 -1
  112. package/templates/skills/writing-techniques/revision-polish/SKILL.md +1 -1
  113. package/templates/skills/writing-techniques/style-learning/SKILL.md +2 -2
  114. package/templates/skills/writing-techniques/writing-balance/.gitkeep +0 -0
  115. package/templates/skills/writing-techniques/writing-balance/SKILL.md +460 -0
  116. package/templates/skills/writing-techniques/writing-techniques/SKILL.md +727 -0
  117. package/templates/knowledge-base/README.md +0 -285
  118. package/templates/scripts/powershell/check-writing-state.ps1.backup +0 -135
  119. /package/templates/{knowledge-base → resources}/character-archetypes/01-hero.md +0 -0
  120. /package/templates/{knowledge-base → resources}/character-archetypes/02-mentor.md +0 -0
  121. /package/templates/{knowledge-base → resources}/character-archetypes/03-shadow.md +0 -0
  122. /package/templates/{knowledge-base → resources}/character-archetypes/04-ally.md +0 -0
  123. /package/templates/{knowledge-base → resources}/character-archetypes/05-shapeshifter.md +0 -0
  124. /package/templates/{knowledge-base → resources}/character-archetypes/06-trickster.md +0 -0
  125. /package/templates/{knowledge-base → resources}/character-archetypes/07-threshold-guardian.md +0 -0
  126. /package/templates/{knowledge-base → resources}/character-archetypes/08-herald.md +0 -0
  127. /package/templates/{knowledge-base → resources}/character-archetypes/09-father.md +0 -0
  128. /package/templates/{knowledge-base → resources}/character-archetypes/10-mother.md +0 -0
  129. /package/templates/{knowledge-base → resources}/character-archetypes/11-child.md +0 -0
  130. /package/templates/{knowledge-base → resources}/character-archetypes/12-sage.md +0 -0
  131. /package/templates/{knowledge-base → resources}/character-archetypes/README.md +0 -0
  132. /package/templates/{knowledge-base → resources}/character-archetypes/application-guide.md +0 -0
  133. /package/templates/{knowledge-base → resources}/character-archetypes/archetype-combinations.md +0 -0
  134. /package/templates/{knowledge-base → resources}/character-archetypes/config.yaml +0 -0
  135. /package/templates/{knowledge-base → resources}/character-archetypes/examples-analysis.md +0 -0
  136. /package/templates/{specification-example.md → resources/config/specification-example.md} +0 -0
  137. /package/templates/{knowledge-base → resources}/craft/character-arc.md +0 -0
  138. /package/templates/{knowledge-base → resources}/craft/dialogue.md +0 -0
  139. /package/templates/{knowledge-base → resources}/craft/hook-design.md +0 -0
  140. /package/templates/{knowledge-base → resources}/craft/pacing.md +0 -0
  141. /package/templates/{knowledge-base → resources}/craft/power-system.md +0 -0
  142. /package/templates/{knowledge-base → resources}/craft/scene-structure.md +0 -0
  143. /package/templates/{knowledge-base → resources}/craft/show-not-tell.md +0 -0
  144. /package/templates/{knowledge-base → resources}/craft/story-structures.md +0 -0
  145. /package/templates/{knowledge-base → resources}/craft/tension-management.md +0 -0
  146. /package/templates/{knowledge-base → resources}/emotional-beats/01-first-meeting.md +0 -0
  147. /package/templates/{knowledge-base → resources}/emotional-beats/02-bonding-moment.md +0 -0
  148. /package/templates/{knowledge-base → resources}/emotional-beats/03-declaration.md +0 -0
  149. /package/templates/{knowledge-base → resources}/emotional-beats/04-triumph.md +0 -0
  150. /package/templates/{knowledge-base → resources}/emotional-beats/05-reunion.md +0 -0
  151. /package/templates/{knowledge-base → resources}/emotional-beats/06-forgiveness.md +0 -0
  152. /package/templates/{knowledge-base → resources}/emotional-beats/07-betrayal.md +0 -0
  153. /package/templates/{knowledge-base → resources}/emotional-beats/08-loss.md +0 -0
  154. /package/templates/{knowledge-base → resources}/emotional-beats/09-rejection.md +0 -0
  155. /package/templates/{knowledge-base → resources}/emotional-beats/10-failure.md +0 -0
  156. /package/templates/{knowledge-base → resources}/emotional-beats/11-misunderstanding.md +0 -0
  157. /package/templates/{knowledge-base → resources}/emotional-beats/12-farewell.md +0 -0
  158. /package/templates/{knowledge-base → resources}/emotional-beats/13-revelation.md +0 -0
  159. /package/templates/{knowledge-base → resources}/emotional-beats/14-point-of-no-return.md +0 -0
  160. /package/templates/{knowledge-base → resources}/emotional-beats/15-dark-night.md +0 -0
  161. /package/templates/{knowledge-base → resources}/emotional-beats/16-sacrifice.md +0 -0
  162. /package/templates/{knowledge-base → resources}/emotional-beats/17-awakening.md +0 -0
  163. /package/templates/{knowledge-base → resources}/emotional-beats/18-confrontation.md +0 -0
  164. /package/templates/{knowledge-base → resources}/emotional-beats/19-bittersweet-goodbye.md +0 -0
  165. /package/templates/{knowledge-base → resources}/emotional-beats/20-moral-dilemma.md +0 -0
  166. /package/templates/{knowledge-base → resources}/emotional-beats/21-temptation.md +0 -0
  167. /package/templates/{knowledge-base → resources}/emotional-beats/22-redemption.md +0 -0
  168. /package/templates/{knowledge-base → resources}/emotional-beats/README.md +0 -0
  169. /package/templates/{knowledge-base → resources}/emotional-beats/beat-sequences.md +0 -0
  170. /package/templates/{knowledge-base → resources}/emotional-beats/config.yaml +0 -0
  171. /package/templates/{knowledge-base → resources}/emotional-beats/pacing-guide.md +0 -0
  172. /package/templates/{knowledge-base → resources}/genres/game-lit.md +0 -0
  173. /package/templates/{knowledge-base → resources}/genres/historical.md +0 -0
  174. /package/templates/{knowledge-base → resources}/genres/mystery.md +0 -0
  175. /package/templates/{knowledge-base → resources}/genres/rebirth.md +0 -0
  176. /package/templates/{knowledge-base → resources}/genres/revenge.md +0 -0
  177. /package/templates/{knowledge-base → resources}/genres/romance.md +0 -0
  178. /package/templates/{knowledge-base → resources}/genres/sci-fi.md +0 -0
  179. /package/templates/{knowledge-base → resources}/genres/thriller.md +0 -0
  180. /package/templates/{knowledge-base → resources}/genres/urban.md +0 -0
  181. /package/templates/{knowledge-base → resources}/genres/wuxia.md +0 -0
  182. /package/templates/{knowledge-base → resources}/genres/xuanhuan.md +0 -0
  183. /package/templates/{memory → resources/memory}/constitution.md +0 -0
  184. /package/templates/{memory → resources/memory}/personal-voice.md +0 -0
  185. /package/templates/{knowledge-base → resources}/references/README.md +0 -0
  186. /package/templates/{knowledge-base → resources}/references/china-1920s/culture.md +0 -0
  187. /package/templates/{knowledge-base → resources}/references/china-1920s/daily-life.md +0 -0
  188. /package/templates/{knowledge-base → resources}/references/china-1920s/overview.md +0 -0
  189. /package/templates/{knowledge-base → resources}/references/china-1920s/society.md +0 -0
  190. /package/templates/{knowledge-base → resources}/references/china-1920s/warlords.md +0 -0
  191. /package/templates/{knowledge-base → resources}/references/cultivation-world/daily-life.md +0 -0
  192. /package/templates/{knowledge-base → resources}/references/cultivation-world/overview.md +0 -0
  193. /package/templates/{knowledge-base → resources}/references/cultivation-world/power-system.md +0 -0
  194. /package/templates/{knowledge-base → resources}/references/cultivation-world/sects.md +0 -0
  195. /package/templates/{knowledge-base → resources}/references/cultivation-world/world-setting.md +0 -0
  196. /package/templates/{knowledge-base → resources}/references/modern-workplace/corporate.md +0 -0
  197. /package/templates/{knowledge-base → resources}/references/modern-workplace/daily-life.md +0 -0
  198. /package/templates/{knowledge-base → resources}/references/modern-workplace/overview.md +0 -0
  199. /package/templates/{knowledge-base → resources}/references/modern-workplace/relationships.md +0 -0
  200. /package/templates/{knowledge-base → resources}/references/modern-workplace/tech-industry.md +0 -0
  201. /package/templates/{knowledge-base → resources}/references/tang-dynasty/culture.md +0 -0
  202. /package/templates/{knowledge-base → resources}/references/tang-dynasty/daily-life.md +0 -0
  203. /package/templates/{knowledge-base → resources}/references/tang-dynasty/overview.md +0 -0
  204. /package/templates/{knowledge-base → resources}/references/tang-dynasty/politics.md +0 -0
  205. /package/templates/{knowledge-base → resources}/references/tang-dynasty/society.md +0 -0
  206. /package/templates/{knowledge-base → resources}/requirements/README.md +0 -0
  207. /package/templates/{knowledge-base → resources}/requirements/anti-ai-v3.md +0 -0
  208. /package/templates/{knowledge-base → resources}/requirements/concretization.md +0 -0
  209. /package/templates/{knowledge-base → resources}/requirements/fast-paced.md +0 -0
  210. /package/templates/{knowledge-base → resources}/requirements/no-poison.md +0 -0
  211. /package/templates/{knowledge-base → resources}/requirements/romance-angst.md +0 -0
  212. /package/templates/{knowledge-base → resources}/requirements/romance-sweet.md +0 -0
  213. /package/templates/{knowledge-base → resources}/requirements/serious-literature.md +0 -0
  214. /package/templates/{knowledge-base → resources}/requirements/strong-emotion.md +0 -0
  215. /package/templates/{scripts → resources/scripts}/bash/clarify-story.sh +0 -0
  216. /package/templates/{scripts → resources/scripts}/bash/generate-tasks.sh +0 -0
  217. /package/templates/{scripts → resources/scripts}/bash/test-word-count.sh +0 -0
  218. /package/templates/{scripts → resources/scripts}/bash/tests/run-all-benchmarks.sh +0 -0
  219. /package/templates/{scripts → resources/scripts}/bash/tests/test-cache-semantics.sh +0 -0
  220. /package/templates/{scripts → resources/scripts}/bash/tests/test-edge-cases-bash.sh +0 -0
  221. /package/templates/{scripts → resources/scripts}/bash/tests/test-phase1-bash.sh +0 -0
  222. /package/templates/{scripts → resources/scripts}/bash/tests/test-regression-bash.sh +0 -0
  223. /package/templates/{scripts → resources/scripts}/bash/tests/test-task6-verification.sh +0 -0
  224. /package/templates/{scripts → resources/scripts}/powershell/check-analyze-stage.ps1 +0 -0
  225. /package/templates/{scripts → resources/scripts}/powershell/check-facts.ps1 +0 -0
  226. /package/templates/{scripts → resources/scripts}/powershell/clarify-story.ps1 +0 -0
  227. /package/templates/{scripts → resources/scripts}/powershell/generate-tasks.ps1 +0 -0
  228. /package/templates/{scripts → resources/scripts}/powershell/tests/test-cross-platform.ps1 +0 -0
  229. /package/templates/{scripts → resources/scripts}/powershell/tests/test-edge-cases-ps.ps1 +0 -0
  230. /package/templates/{scripts → resources/scripts}/powershell/tests/test-phase1-ps.ps1 +0 -0
  231. /package/templates/{scripts → resources/scripts}/powershell/tests/test-regression-ps.ps1 +0 -0
  232. /package/templates/{knowledge-base → resources}/styles/README.md +0 -0
  233. /package/templates/{knowledge-base → resources}/styles/ancient-style.md +0 -0
  234. /package/templates/{knowledge-base → resources}/styles/literary.md +0 -0
  235. /package/templates/{knowledge-base → resources}/styles/minimal.md +0 -0
  236. /package/templates/{knowledge-base → resources}/styles/natural-voice.md +0 -0
  237. /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
- allowed-tools: Read(//spec/tracking/**), Read(//spec/tracking/**), Read(//stories/**), Read(//stories/**), Bash(find:*), Bash(wc:*), Bash(grep:*), Bash(*)
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: .specify/scripts/bash/track-progress.sh
8
- ps: .specify/scripts/powershell/track-progress.ps1
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
- - `spec/tracking/plot-tracker.json` - 情节追踪
56
- - `spec/tracking/timeline.json` - 时间线
57
- - `spec/tracking/relationships.json` - 关系网络
58
- - `spec/tracking/character-state.json` - 角色状态
59
- - `spec/tracking/narrative-threads.json` - **[新增]** 多线叙事追踪(POV调度、信息差、线程交汇)
60
- - `spec/tracking/validation-rules.json` - **[新增]** 验证规则(用于--check和--fix)
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
- 当用户选择"[查看详情]"时,显示完整的 diff 和更新依据:
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
- ```diff
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
- ```diff
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
- ```diff
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
- ```diff
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
- - **角色分析**: Ch.5 林晓的对话和行为显示焦虑情绪
218
- - **关系分析**: Ch.5 林晓与队长首次合作,建立初步信任
219
- - **情节推进**: 主线进展 10%,发现第一条线索
220
- - **时间线**: Ch.5 情节推进到第 15 天
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
- **读取 tracking-log.md**:
269
- 1. 读取 `spec/tracking/tracking-log.md`
270
- 2. 解析日志格式,提取所有更新记录
271
- 3. 根据过滤条件筛选记录
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
- ```markdown
210
+ ```
290
211
  ℹ️ 提示:tracking-log.md 不存在
291
- - 位置:spec/tracking/tracking-log.md
212
+ - 位置:tracking/tracking-log.md
292
213
  - 原因:尚未执行过任何 tracking 更新命令
293
214
  - 建议:执行 /write 或 /plan 命令后会自动创建
294
215
  ```
295
216
 
296
217
  #### 如果日志格式无法解析
297
218
 
298
- ```markdown
219
+ ```
299
220
  ⚠️ 警告:日志文件格式异常
300
221
  - 文件:tracking-log.md
301
222
  - 问题:无法解析部分日志条目
@@ -338,151 +259,73 @@ resource-loading:
338
259
 
339
260
  ### 叙事线同步(--check 扩展)
340
261
 
341
- 当故事使用多线叙事时(检测到 `narrative-threads.json` 存在或 `specification.md` 中标记了多线结构),`/track` 在章节同步流程中自动提取和更新叙事线数据。
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
- "foreshadowing": [
390
- {
391
- "id": "fs-001",
392
- "content": "[伏笔内容]",
393
- "plantedChapter": 3,
394
- "plantedContext": "[埋设时的上下文摘要]",
395
- "status": "planted|hinted|partially_resolved|resolved|abandoned",
396
- "urgency": 0.5,
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
- #### 检测 1:伏笔热度管理
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
- 🔴 紧急回收(紧急度 > 0.8):
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
- - 读取 `spec/tracking/character-state.json`
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
- 平均每章:[N]
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
- 对话:[X]% ████████░░
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
- ▓▓▓▓▓▓▓▓▓▓▓▓░░░░░░░░ 60%
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
- 当使用 `--check` 参数时,除了基础一致性验证外,还执行节奏健康度检测:
398
+ `--check` 时执行四项节奏检测:
609
399
 
610
- #### 检测 1:节奏单一性
400
+ 1. **节奏单一性** — 分析最近 N 章情绪强度分布(健康:高/中/低各占 20%-50%;偏单一:某项 >60%;严重:>80% 或连续 5+ 章同强度)
401
+ 2. **爽点间隔** — 检测爽点分布(正常 ≤3 章;偏长 4-5 章;过长 >5 章)
402
+ 3. **钩子连续性** — 检查最近章节是否有钩子(悬念/反转/信息/情感),标记无钩子章节
403
+ 4. **情绪曲线合理性** — 基于张弛有度原则,检测连续高强度导致的读者疲劳
611
404
 
612
- 分析最近 N 章的情绪节奏(高/中/低),检测是否过于单一:
405
+ #### 检测输出示例
613
406
 
614
407
  ```
615
408
  📊 节奏分布(最近 10 章)
616
409
  ━━━━━━━━━━━━━━━━━━━━
617
- 高强度:[N] 章([X]%)
618
- 中强度:[N] 章([X]%)
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
- #### 检测 3:钩子连续性
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
- 最近 5 章钩子状态:
656
- [A] 章:✅ 悬念 ⭐⭐⭐
657
- [B] 章:✅ 反转 ⭐⭐⭐⭐
658
- [C] 章:❌ 无钩子
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
- ### 深度验证模式 (--check)
438
+ **深度验证 (--check)**:在基础检查之上,增加角色深度验证(名称一致性、称呼规则、行为人设匹配),基于 `validation-rules.json`。支持 `--volume vol-XX` 限定范围。MCP 可用时优先调用 `stats_consistency`。
707
439
 
708
- 当使用 `--check` 参数时,执行程序化的深度验证:
709
-
710
- #### --volume 范围限定
440
+ #### 内部任务流程(自动执行)
711
441
 
712
- 支持 `--volume vol-XX` 限定检查范围:
713
- - --volume:只检查该卷的 tracking 数据和对应章节
714
- - 不带 --volume:检查当前卷(分片模式)或全部(单文件模式)
442
+ ```
443
+ Phase 1: 基础验证 [并行]
444
+ T001-T004: 情节一致性 / 时间线验证 / 关系验证 / 世界观验证
715
445
 
716
- **MCP 优先:** 如果 MCP 可用,调用 `stats_consistency` 获取一致性报告,避免逐文件扫描。
446
+ Phase 2: 角色深度验证
447
+ T005: 加载 validation-rules.json
448
+ T006-T007: 扫描章节角色名称,对比 character-state.json
449
+ T008-T009: 检查称呼规则,验证角色行为人设
717
450
 
718
- #### 内部任务流程(自动执行)
719
- ```markdown
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
- 当使用 `--fix` 参数时,基于验证报告自动修复:
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
- 1. **进度分析**
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
- 当使用 `--sync` 参数时,批量扫描并同步多个章节的 tracking 数据:
512
+ 批量扫描并同步多个章节的 tracking 数据。适用于连续写了多章但忘记更新 tracking、导入外部内容、数据严重不同步等场景。
839
513
 
840
514
  #### 增量同步(--sync --incremental)
841
515
 
842
- 不扫描所有章节,只处理上次同步后的新章节:
516
+ 只处理上次同步后的新章节:
843
517
 
844
- 1. 读取 `spec/tracking/tracking-log.md` 最后一条记录,获取 last_sync_chapter
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
- tracking 最后更新:第 [M]
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(次优)**:读取 `spec/tracking/volumes/[currentVolume]/` 下的分片文件
928
- 3. **单文件 JSON(兜底)**:读取 `spec/tracking/` 下的单文件
594
+ 2. **分片 JSON(次优)**:读取 `tracking/volumes/[currentVolume]/` 下的分片文件
595
+ 3. **单文件 JSON(兜底)**:读取 `tracking/` 下的单文件
929
596
 
930
597
  **分片模式写入:**
931
598
  1. 确定当前章节属于哪个卷(从 volume-summaries.json 的 chapters 范围判断)
932
- 2. 更新该卷的分片文件(如 `spec/tracking/volumes/vol-03/character-state.json`)
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
- - 直接更新 `spec/tracking/` 下的文件(现有逻辑)
604
+ - 直接更新 `tracking/` 下的文件(现有逻辑)
938
605
 
939
606
  ---
940
607
 
@@ -952,7 +619,7 @@ tracking 最后更新:第 [M] 章
952
619
 
953
620
  ### 迁移流程
954
621
 
955
- #### 阶段 1:检测与备份
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
- #### 阶段 2:确定卷边界
635
+ **阶段 2:确定卷边界**
636
+ - `--auto`:从 `plot-tracker.json` 的 `checkpoints.volumeEnd` 获取,无则按 100 章一卷
637
+ - `--volumes`:解析用户提供的边界字符串,验证连续性
638
+ - 交互式(默认):分析情节弧线建议卷边界,用户确认
969
639
 
970
- **--auto 模式:**
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
- 然后按卷边界拆分每个 tracking 文件:
992
-
993
- **character-state.json 拆分规则:**
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
- **timeline.json 拆分规则:**
1000
- - `events` `chapter` 分配到对应卷
1001
- - `storyTime` 每卷记录该卷的时间范围
1002
- - `parallelEvents` 按时间点分配
1003
- - `anomalies` 分配到发现该异常的卷
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
- **relationships.json 拆分规则:**
1006
- - `characters` 复制到每个卷(只保留该卷活跃的角色)
1007
- - `history` `chapter` 分配到对应卷
1008
- - `factions` 复制到每个卷(状态更新为该卷末尾)
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
- **plot-tracker.json 拆分规则:**
1011
- - `foreshadowing` `planted.chapter` 分配到对应卷
1012
- - 跨卷未解决的伏笔在后续卷中保留引用
1013
- - `plotlines` 每卷记录该卷的进展
1014
- - `checkpoints` 按卷分配
666
+ **阶段 5:初始化 SQLite**(MCP 可用时)
667
+ - 调用 `sync_from_json` 导入 + `sync_status` 验证
1015
668
 
1016
- 将拆分后的数据写入 `spec/tracking/volumes/vol-XX/` 对应文件。
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
- - 迁移前:单文件模式,总大小 XXX KB
1056
- - 迁移后:N 卷分片,每卷平均 XX KB
1057
- - 备份位置:spec/tracking/backup/YYYYMMDD-HHMMSS/
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
- 迁移失败。备份文件在 spec/tracking/backup/YYYYMMDD-HHMMSS/
1064
- 可以手动将备份文件复制回 spec/tracking/ 恢复原状。
1065
- ```
1066
- - 不自动删除备份,由用户手动清理
686
+ 任何步骤失败时,提示用户从备份恢复:
687
+ ```
688
+ 迁移失败。备份文件在 tracking/backup/YYYYMMDD-HHMMSS/
689
+ 可以手动将备份文件复制回 tracking/ 恢复原状。
690
+ ```
691
+ 不自动删除备份,由用户手动清理。
1067
692
 
1068
693
  ---
1069
694