novelws 1.2.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 (320) hide show
  1. package/CHANGELOG.md +161 -0
  2. package/LICENSE +22 -0
  3. package/README.md +372 -0
  4. package/dist/cli.d.ts +3 -0
  5. package/dist/cli.d.ts.map +1 -0
  6. package/dist/cli.js +50 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/check.d.ts +6 -0
  9. package/dist/commands/check.d.ts.map +1 -0
  10. package/dist/commands/check.js +32 -0
  11. package/dist/commands/check.js.map +1 -0
  12. package/dist/commands/init.d.ts +6 -0
  13. package/dist/commands/init.d.ts.map +1 -0
  14. package/dist/commands/init.js +160 -0
  15. package/dist/commands/init.js.map +1 -0
  16. package/dist/commands/plugin.d.ts +6 -0
  17. package/dist/commands/plugin.d.ts.map +1 -0
  18. package/dist/commands/plugin.js +135 -0
  19. package/dist/commands/plugin.js.map +1 -0
  20. package/dist/commands/upgrade.d.ts +6 -0
  21. package/dist/commands/upgrade.d.ts.map +1 -0
  22. package/dist/commands/upgrade.js +92 -0
  23. package/dist/commands/upgrade.js.map +1 -0
  24. package/dist/core/config.d.ts +72 -0
  25. package/dist/core/config.d.ts.map +1 -0
  26. package/dist/core/config.js +136 -0
  27. package/dist/core/config.js.map +1 -0
  28. package/dist/core/errors.d.ts +59 -0
  29. package/dist/core/errors.d.ts.map +1 -0
  30. package/dist/core/errors.js +125 -0
  31. package/dist/core/errors.js.map +1 -0
  32. package/dist/core/platform.d.ts +27 -0
  33. package/dist/core/platform.d.ts.map +1 -0
  34. package/dist/core/platform.js +75 -0
  35. package/dist/core/platform.js.map +1 -0
  36. package/dist/core/template.d.ts +35 -0
  37. package/dist/core/template.d.ts.map +1 -0
  38. package/dist/core/template.js +94 -0
  39. package/dist/core/template.js.map +1 -0
  40. package/dist/plugins/identifier.d.ts +13 -0
  41. package/dist/plugins/identifier.d.ts.map +1 -0
  42. package/dist/plugins/identifier.js +72 -0
  43. package/dist/plugins/identifier.js.map +1 -0
  44. package/dist/plugins/installers/base.d.ts +27 -0
  45. package/dist/plugins/installers/base.d.ts.map +1 -0
  46. package/dist/plugins/installers/base.js +30 -0
  47. package/dist/plugins/installers/base.js.map +1 -0
  48. package/dist/plugins/installers/github.d.ts +22 -0
  49. package/dist/plugins/installers/github.d.ts.map +1 -0
  50. package/dist/plugins/installers/github.js +133 -0
  51. package/dist/plugins/installers/github.js.map +1 -0
  52. package/dist/plugins/installers/local.d.ts +16 -0
  53. package/dist/plugins/installers/local.d.ts.map +1 -0
  54. package/dist/plugins/installers/local.js +69 -0
  55. package/dist/plugins/installers/local.js.map +1 -0
  56. package/dist/plugins/installers/npm.d.ts +20 -0
  57. package/dist/plugins/installers/npm.d.ts.map +1 -0
  58. package/dist/plugins/installers/npm.js +99 -0
  59. package/dist/plugins/installers/npm.js.map +1 -0
  60. package/dist/plugins/manager.d.ts +77 -0
  61. package/dist/plugins/manager.d.ts.map +1 -0
  62. package/dist/plugins/manager.js +349 -0
  63. package/dist/plugins/manager.js.map +1 -0
  64. package/dist/plugins/registry.d.ts +48 -0
  65. package/dist/plugins/registry.d.ts.map +1 -0
  66. package/dist/plugins/registry.js +111 -0
  67. package/dist/plugins/registry.js.map +1 -0
  68. package/dist/plugins/types.d.ts +66 -0
  69. package/dist/plugins/types.d.ts.map +1 -0
  70. package/dist/plugins/types.js +2 -0
  71. package/dist/plugins/types.js.map +1 -0
  72. package/dist/plugins/validator.d.ts +19 -0
  73. package/dist/plugins/validator.d.ts.map +1 -0
  74. package/dist/plugins/validator.js +164 -0
  75. package/dist/plugins/validator.js.map +1 -0
  76. package/dist/utils/logger.d.ts +13 -0
  77. package/dist/utils/logger.d.ts.map +1 -0
  78. package/dist/utils/logger.js +48 -0
  79. package/dist/utils/logger.js.map +1 -0
  80. package/dist/utils/project.d.ts +24 -0
  81. package/dist/utils/project.d.ts.map +1 -0
  82. package/dist/utils/project.js +61 -0
  83. package/dist/utils/project.js.map +1 -0
  84. package/dist/version.d.ts +3 -0
  85. package/dist/version.d.ts.map +1 -0
  86. package/dist/version.js +21 -0
  87. package/dist/version.js.map +1 -0
  88. package/package.json +76 -0
  89. package/plugins/authentic-voice/README.md +31 -0
  90. package/plugins/authentic-voice/commands/authentic-voice.md +73 -0
  91. package/plugins/authentic-voice/commands/authenticity-audit.md +37 -0
  92. package/plugins/authentic-voice/config.yaml +30 -0
  93. package/plugins/authentic-voice/experts/authentic-editor.md +27 -0
  94. package/plugins/export/README.md +319 -0
  95. package/plugins/export/commands/export.md +460 -0
  96. package/plugins/export/commands/generate-cover.md +256 -0
  97. package/plugins/export/commands/metadata.md +309 -0
  98. package/plugins/export/config.yaml +47 -0
  99. package/plugins/export/experts/publishing-expert.md +171 -0
  100. package/plugins/export/templates/epub/chapter-template.html +13 -0
  101. package/plugins/export/templates/epub/cover-template.html +14 -0
  102. package/plugins/export/templates/epub/stylesheet.css +200 -0
  103. package/plugins/export/templates/pdf/ebook-style.css +137 -0
  104. package/plugins/export/templates/pdf/print-style.css +179 -0
  105. package/plugins/export/templates/platforms/jinjiang-format.md +101 -0
  106. package/plugins/export/templates/platforms/qidian-format.md +108 -0
  107. package/plugins/export/templates/platforms/tomato-format.md +95 -0
  108. package/plugins/translate/README.md +265 -0
  109. package/plugins/translate/commands/glossary.md +731 -0
  110. package/plugins/translate/commands/translate-preview.md +543 -0
  111. package/plugins/translate/commands/translate.md +649 -0
  112. package/plugins/translate/config.yaml +43 -0
  113. package/plugins/translate/experts/literary-translator.md +605 -0
  114. package/templates/commands/analyze.md +1485 -0
  115. package/templates/commands/checklist.md +434 -0
  116. package/templates/commands/clarify.md +257 -0
  117. package/templates/commands/constitution.md +257 -0
  118. package/templates/commands/expert.md +136 -0
  119. package/templates/commands/plan.md +749 -0
  120. package/templates/commands/recap.md +613 -0
  121. package/templates/commands/relations.md +96 -0
  122. package/templates/commands/revise.md +341 -0
  123. package/templates/commands/specify.md +682 -0
  124. package/templates/commands/tasks.md +142 -0
  125. package/templates/commands/timeline.md +73 -0
  126. package/templates/commands/track-init.md +137 -0
  127. package/templates/commands/track.md +463 -0
  128. package/templates/commands/write.md +1264 -0
  129. package/templates/config/keyword-mappings.json +106 -0
  130. package/templates/knowledge/audit-config.json +26 -0
  131. package/templates/knowledge/character-profiles.md +152 -0
  132. package/templates/knowledge/character-voices.md +137 -0
  133. package/templates/knowledge/locations.md +184 -0
  134. package/templates/knowledge/world-setting.md +121 -0
  135. package/templates/knowledge-base/README.md +285 -0
  136. package/templates/knowledge-base/character-archetypes/01-hero.md +233 -0
  137. package/templates/knowledge-base/character-archetypes/02-mentor.md +177 -0
  138. package/templates/knowledge-base/character-archetypes/03-shadow.md +221 -0
  139. package/templates/knowledge-base/character-archetypes/04-ally.md +178 -0
  140. package/templates/knowledge-base/character-archetypes/05-shapeshifter.md +177 -0
  141. package/templates/knowledge-base/character-archetypes/06-trickster.md +181 -0
  142. package/templates/knowledge-base/character-archetypes/07-threshold-guardian.md +177 -0
  143. package/templates/knowledge-base/character-archetypes/08-herald.md +180 -0
  144. package/templates/knowledge-base/character-archetypes/09-father.md +249 -0
  145. package/templates/knowledge-base/character-archetypes/10-mother.md +202 -0
  146. package/templates/knowledge-base/character-archetypes/11-child.md +183 -0
  147. package/templates/knowledge-base/character-archetypes/12-sage.md +202 -0
  148. package/templates/knowledge-base/character-archetypes/README.md +60 -0
  149. package/templates/knowledge-base/character-archetypes/application-guide.md +222 -0
  150. package/templates/knowledge-base/character-archetypes/archetype-combinations.md +242 -0
  151. package/templates/knowledge-base/character-archetypes/config.yaml +28 -0
  152. package/templates/knowledge-base/character-archetypes/examples-analysis.md +223 -0
  153. package/templates/knowledge-base/craft/character-arc.md +1153 -0
  154. package/templates/knowledge-base/craft/dialogue.md +1170 -0
  155. package/templates/knowledge-base/craft/pacing.md +1200 -0
  156. package/templates/knowledge-base/craft/scene-structure.md +1136 -0
  157. package/templates/knowledge-base/craft/show-not-tell.md +1012 -0
  158. package/templates/knowledge-base/emotional-beats/01-first-meeting.md +145 -0
  159. package/templates/knowledge-base/emotional-beats/02-bonding-moment.md +226 -0
  160. package/templates/knowledge-base/emotional-beats/03-declaration.md +284 -0
  161. package/templates/knowledge-base/emotional-beats/04-triumph.md +240 -0
  162. package/templates/knowledge-base/emotional-beats/05-reunion.md +396 -0
  163. package/templates/knowledge-base/emotional-beats/06-forgiveness.md +204 -0
  164. package/templates/knowledge-base/emotional-beats/07-betrayal.md +204 -0
  165. package/templates/knowledge-base/emotional-beats/08-loss.md +214 -0
  166. package/templates/knowledge-base/emotional-beats/09-rejection.md +254 -0
  167. package/templates/knowledge-base/emotional-beats/10-failure.md +244 -0
  168. package/templates/knowledge-base/emotional-beats/11-misunderstanding.md +205 -0
  169. package/templates/knowledge-base/emotional-beats/12-farewell.md +283 -0
  170. package/templates/knowledge-base/emotional-beats/13-revelation.md +242 -0
  171. package/templates/knowledge-base/emotional-beats/14-point-of-no-return.md +215 -0
  172. package/templates/knowledge-base/emotional-beats/15-dark-night.md +244 -0
  173. package/templates/knowledge-base/emotional-beats/16-sacrifice.md +246 -0
  174. package/templates/knowledge-base/emotional-beats/17-awakening.md +246 -0
  175. package/templates/knowledge-base/emotional-beats/18-confrontation.md +217 -0
  176. package/templates/knowledge-base/emotional-beats/19-bittersweet-goodbye.md +368 -0
  177. package/templates/knowledge-base/emotional-beats/20-moral-dilemma.md +248 -0
  178. package/templates/knowledge-base/emotional-beats/21-temptation.md +240 -0
  179. package/templates/knowledge-base/emotional-beats/22-redemption.md +210 -0
  180. package/templates/knowledge-base/emotional-beats/README.md +104 -0
  181. package/templates/knowledge-base/emotional-beats/beat-sequences.md +276 -0
  182. package/templates/knowledge-base/emotional-beats/config.yaml +30 -0
  183. package/templates/knowledge-base/emotional-beats/pacing-guide.md +390 -0
  184. package/templates/knowledge-base/genres/historical.md +1127 -0
  185. package/templates/knowledge-base/genres/mystery.md +1123 -0
  186. package/templates/knowledge-base/genres/revenge.md +846 -0
  187. package/templates/knowledge-base/genres/romance.md +948 -0
  188. package/templates/knowledge-base/genres/sci-fi.md +156 -0
  189. package/templates/knowledge-base/genres/thriller.md +166 -0
  190. package/templates/knowledge-base/genres/wuxia.md +143 -0
  191. package/templates/knowledge-base/references/README.md +96 -0
  192. package/templates/knowledge-base/references/china-1920s/culture.md +423 -0
  193. package/templates/knowledge-base/references/china-1920s/daily-life.md +616 -0
  194. package/templates/knowledge-base/references/china-1920s/overview.md +298 -0
  195. package/templates/knowledge-base/references/china-1920s/society.md +703 -0
  196. package/templates/knowledge-base/references/china-1920s/warlords.md +427 -0
  197. package/templates/knowledge-base/references/cultivation-world/daily-life.md +108 -0
  198. package/templates/knowledge-base/references/cultivation-world/overview.md +64 -0
  199. package/templates/knowledge-base/references/cultivation-world/power-system.md +108 -0
  200. package/templates/knowledge-base/references/cultivation-world/sects.md +104 -0
  201. package/templates/knowledge-base/references/cultivation-world/world-setting.md +108 -0
  202. package/templates/knowledge-base/references/modern-workplace/corporate.md +115 -0
  203. package/templates/knowledge-base/references/modern-workplace/daily-life.md +129 -0
  204. package/templates/knowledge-base/references/modern-workplace/overview.md +73 -0
  205. package/templates/knowledge-base/references/modern-workplace/relationships.md +107 -0
  206. package/templates/knowledge-base/references/modern-workplace/tech-industry.md +131 -0
  207. package/templates/knowledge-base/references/tang-dynasty/culture.md +135 -0
  208. package/templates/knowledge-base/references/tang-dynasty/daily-life.md +139 -0
  209. package/templates/knowledge-base/references/tang-dynasty/overview.md +76 -0
  210. package/templates/knowledge-base/references/tang-dynasty/politics.md +121 -0
  211. package/templates/knowledge-base/references/tang-dynasty/society.md +126 -0
  212. package/templates/knowledge-base/requirements/README.md +240 -0
  213. package/templates/knowledge-base/requirements/anti-ai-v3.md +46 -0
  214. package/templates/knowledge-base/requirements/anti-ai-v4.md +430 -0
  215. package/templates/knowledge-base/requirements/fast-paced.md +552 -0
  216. package/templates/knowledge-base/requirements/no-poison.md +60 -0
  217. package/templates/knowledge-base/requirements/romance-angst.md +102 -0
  218. package/templates/knowledge-base/requirements/romance-sweet.md +63 -0
  219. package/templates/knowledge-base/requirements/serious-literature.md +45 -0
  220. package/templates/knowledge-base/requirements/strong-emotion.md +60 -0
  221. package/templates/knowledge-base/styles/README.md +302 -0
  222. package/templates/knowledge-base/styles/ancient-style.md +579 -0
  223. package/templates/knowledge-base/styles/literary.md +439 -0
  224. package/templates/knowledge-base/styles/minimal.md +472 -0
  225. package/templates/knowledge-base/styles/natural-voice.md +930 -0
  226. package/templates/knowledge-base/styles/web-novel.md +525 -0
  227. package/templates/memory/constitution.md +140 -0
  228. package/templates/memory/personal-voice.md +113 -0
  229. package/templates/scripts/README.md +187 -0
  230. package/templates/scripts/bash/analyze-story.sh +170 -0
  231. package/templates/scripts/bash/check-consistency.sh +463 -0
  232. package/templates/scripts/bash/check-plot.sh +374 -0
  233. package/templates/scripts/bash/check-timeline.sh +346 -0
  234. package/templates/scripts/bash/check-world.sh +395 -0
  235. package/templates/scripts/bash/check-writing-state.sh +854 -0
  236. package/templates/scripts/bash/clarify-story.sh +117 -0
  237. package/templates/scripts/bash/common.sh +151 -0
  238. package/templates/scripts/bash/constitution.sh +114 -0
  239. package/templates/scripts/bash/generate-tasks.sh +65 -0
  240. package/templates/scripts/bash/init-tracking.sh +183 -0
  241. package/templates/scripts/bash/manage-relations.sh +174 -0
  242. package/templates/scripts/bash/plan-story.sh +100 -0
  243. package/templates/scripts/bash/specify-story.sh +93 -0
  244. package/templates/scripts/bash/tasks-story.sh +96 -0
  245. package/templates/scripts/bash/test-word-count.sh +182 -0
  246. package/templates/scripts/bash/tests/bench-preload-cache.sh +100 -0
  247. package/templates/scripts/bash/tests/run-all-benchmarks.sh +16 -0
  248. package/templates/scripts/bash/tests/test-cache-semantics.sh +199 -0
  249. package/templates/scripts/bash/tests/test-cross-platform.sh +35 -0
  250. package/templates/scripts/bash/tests/test-edge-cases-bash.sh +60 -0
  251. package/templates/scripts/bash/tests/test-phase1-bash.sh +28 -0
  252. package/templates/scripts/bash/tests/test-preload-cache.sh +123 -0
  253. package/templates/scripts/bash/tests/test-regex-precompile.sh +89 -0
  254. package/templates/scripts/bash/tests/test-regression-bash.sh +42 -0
  255. package/templates/scripts/bash/tests/test-task6-verification.sh +200 -0
  256. package/templates/scripts/bash/text-audit.sh +144 -0
  257. package/templates/scripts/bash/track-progress.sh +194 -0
  258. package/templates/scripts/powershell/analyze-story.ps1 +171 -0
  259. package/templates/scripts/powershell/check-analyze-stage.ps1 +110 -0
  260. package/templates/scripts/powershell/check-consistency.ps1 +138 -0
  261. package/templates/scripts/powershell/check-plot.ps1 +139 -0
  262. package/templates/scripts/powershell/check-timeline.ps1 +112 -0
  263. package/templates/scripts/powershell/check-writing-state.ps1 +490 -0
  264. package/templates/scripts/powershell/check-writing-state.ps1.backup +135 -0
  265. package/templates/scripts/powershell/clarify-story.ps1 +107 -0
  266. package/templates/scripts/powershell/common.ps1 +36 -0
  267. package/templates/scripts/powershell/constitution.ps1 +142 -0
  268. package/templates/scripts/powershell/generate-tasks.ps1 +75 -0
  269. package/templates/scripts/powershell/init-tracking.ps1 +98 -0
  270. package/templates/scripts/powershell/manage-relations.ps1 +134 -0
  271. package/templates/scripts/powershell/plan-story.ps1 +96 -0
  272. package/templates/scripts/powershell/specify-story.ps1 +82 -0
  273. package/templates/scripts/powershell/tests/bench-ps-cache.ps1 +80 -0
  274. package/templates/scripts/powershell/tests/test-cross-platform.ps1 +27 -0
  275. package/templates/scripts/powershell/tests/test-edge-cases-ps.ps1 +29 -0
  276. package/templates/scripts/powershell/tests/test-phase1-ps.ps1 +28 -0
  277. package/templates/scripts/powershell/tests/test-ps-cache.ps1 +73 -0
  278. package/templates/scripts/powershell/tests/test-regression-ps.ps1 +40 -0
  279. package/templates/scripts/powershell/text-audit.ps1 +100 -0
  280. package/templates/scripts/powershell/track-progress.ps1 +105 -0
  281. package/templates/skills/genre-knowledge/fantasy/SKILL.md +355 -0
  282. package/templates/skills/genre-knowledge/mystery/SKILL.md +337 -0
  283. package/templates/skills/genre-knowledge/romance/SKILL.md +228 -0
  284. package/templates/skills/genre-knowledge/sci-fi/SKILL.md +65 -0
  285. package/templates/skills/genre-knowledge/thriller/SKILL.md +95 -0
  286. package/templates/skills/quality-assurance/consistency-checker/SKILL.md +341 -0
  287. package/templates/skills/quality-assurance/continuity-tracker/SKILL.md +157 -0
  288. package/templates/skills/quality-assurance/forgotten-elements/SKILL.md +147 -0
  289. package/templates/skills/quality-assurance/getting-started/SKILL.md +224 -0
  290. package/templates/skills/quality-assurance/pacing-monitor/SKILL.md +143 -0
  291. package/templates/skills/quality-assurance/pov-validator/SKILL.md +135 -0
  292. package/templates/skills/quality-assurance/pre-write-checklist/SKILL.md +583 -0
  293. package/templates/skills/quality-assurance/requirement-detector/CONFLICT_RESOLUTION.md +119 -0
  294. package/templates/skills/quality-assurance/requirement-detector/EXAMPLES.md +146 -0
  295. package/templates/skills/quality-assurance/requirement-detector/KEYWORDS.md +160 -0
  296. package/templates/skills/quality-assurance/requirement-detector/SKILL.md +149 -0
  297. package/templates/skills/quality-assurance/setting-detector/SKILL.md +611 -0
  298. package/templates/skills/quality-assurance/style-detector/CONFLICT_RESOLUTION.md +126 -0
  299. package/templates/skills/quality-assurance/style-detector/EXAMPLES.md +206 -0
  300. package/templates/skills/quality-assurance/style-detector/KEYWORDS.md +207 -0
  301. package/templates/skills/quality-assurance/style-detector/SKILL.md +126 -0
  302. package/templates/skills/quality-assurance/workflow-guide/SKILL.md +381 -0
  303. package/templates/skills/writing-techniques/character-arc/SKILL.md +267 -0
  304. package/templates/skills/writing-techniques/dialogue-techniques/SKILL.md +366 -0
  305. package/templates/skills/writing-techniques/multi-thread-narrative/SKILL.md +553 -0
  306. package/templates/skills/writing-techniques/multi-thread-narrative/experts/thread-analyst.md +226 -0
  307. package/templates/skills/writing-techniques/pacing-control/SKILL.md +377 -0
  308. package/templates/skills/writing-techniques/reader-expectation/SKILL.md +578 -0
  309. package/templates/skills/writing-techniques/reader-expectation/experts/expectation-analyst.md +209 -0
  310. package/templates/skills/writing-techniques/revision-polish/SKILL.md +496 -0
  311. package/templates/skills/writing-techniques/revision-polish/experts/revision-editor.md +221 -0
  312. package/templates/skills/writing-techniques/scene-structure/SKILL.md +361 -0
  313. package/templates/skills/writing-techniques/style-learning/SKILL.md +436 -0
  314. package/templates/specification-example.md +146 -0
  315. package/templates/tracking/character-state.json +78 -0
  316. package/templates/tracking/plot-tracker.json +62 -0
  317. package/templates/tracking/relationships.json +70 -0
  318. package/templates/tracking/timeline.json +49 -0
  319. package/templates/tracking/tracking-log.md +110 -0
  320. package/templates/tracking/validation-rules.json +128 -0
@@ -0,0 +1,613 @@
1
+ ---
2
+ name: recap
3
+ description: 自动重建创作上下文,汇总角色状态、未解决伏笔、情节进展和关系网络,生成结构化简报
4
+ argument-hint: [--brief]
5
+ allowed-tools: Read(//**), Bash(find:*), Bash(wc:*), Bash(grep:*), Bash(*)
6
+ model: claude-sonnet-4-5-20250929
7
+ ---
8
+
9
+ # /recap - 上下文重建命令
10
+
11
+ 在隔天/隔周续写前,或写到 30+ 章后感觉失焦时,使用本命令快速重建完整的创作上下文。
12
+
13
+ **核心价值**:让作者在 5 分钟内从"完全忘记"到"胸有成竹"。
14
+
15
+ ---
16
+
17
+ ## 使用场景
18
+
19
+ ### 场景 1:隔天续写
20
+ ```
21
+ 用户:"昨天写到 28 章,今天继续写 29 章,先回顾一下"
22
+ → 执行 /recap,输出完整上下文简报
23
+ → 快速扫描后开始 /write
24
+ ```
25
+
26
+ ### 场景 2:长篇失焦诊断
27
+ ```
28
+ 用户:"写到 35 章了,感觉有点乱"
29
+ → 执行 /recap,发现 3 个超期伏笔、2 个角色长期未出现
30
+ → 基于简报调整后续写作计划
31
+ ```
32
+
33
+ ### 场景 3:计划调整
34
+ ```
35
+ 用户:"我想调整后面的情节,先看看现在的状态"
36
+ → 执行 /recap,展示全局视图
37
+ → 基于简报讨论调整方案
38
+ ```
39
+
40
+ ---
41
+
42
+ ## 执行流程
43
+
44
+ ### 阶段 1: 数据采集
45
+
46
+ **读取以下文件(按优先级排序)**:
47
+
48
+ #### 第一优先级:追踪数据(核心数据源)
49
+
50
+ 1. `spec/tracking/character-state.json` - 角色当前状态
51
+ 2. `spec/tracking/plot-tracker.json` - 情节追踪(含伏笔)
52
+ 3. `spec/tracking/relationships.json` - 关系网络
53
+ 4. `spec/tracking/timeline.json` - 时间线
54
+
55
+ #### 第二优先级:创作基础文件
56
+
57
+ 5. `stories/[current]/specification.md` - 故事规格
58
+ 6. `stories/[current]/creative-plan.md` - 创作计划
59
+ 7. `stories/[current]/tasks.md` - 任务清单
60
+
61
+ #### 第三优先级:最近内容
62
+
63
+ 8. 最近 3 章的章节文件(`stories/[current]/content/chapter-XX.md`)
64
+ - 按文件名倒序排列,取最近 3 个
65
+
66
+ #### 第四优先级:辅助文件(可选)
67
+
68
+ 9. `.specify/memory/constitution.md` - 创作宪法
69
+ 10. `spec/tracking/validation-rules.json` - 验证规则
70
+
71
+ **数据缺失处理**:
72
+
73
+ | 文件 | 缺失时的行为 |
74
+ |------|------------|
75
+ | character-state.json | 警告,从最近章节推断角色状态 |
76
+ | plot-tracker.json | 警告,简报中省略伏笔部分 |
77
+ | relationships.json | 警告,简报中省略关系网络 |
78
+ | timeline.json | 警告,简报中省略时间线 |
79
+ | specification.md | 报错,建议先执行 /specify |
80
+ | creative-plan.md | 警告,简报中省略计划信息 |
81
+ | tasks.md | 警告,简报中省略任务状态 |
82
+ | 章节文件 | 报错,尚无可回顾的内容 |
83
+
84
+ **如果所有追踪文件都不存在**:
85
+ ```
86
+ ⚠️ 追踪数据缺失
87
+
88
+ 未找到任何追踪文件(spec/tracking/)。
89
+ 本简报将基于现有章节内容和规格文件生成简化版。
90
+
91
+ 建议:
92
+ 1. 执行 /track-init 初始化追踪系统
93
+ 2. 执行 /track 更新追踪数据
94
+ 3. 然后重新执行 /recap 获取完整简报
95
+ ```
96
+
97
+ ---
98
+
99
+ ### 阶段 2: 智能汇总
100
+
101
+ 按以下结构生成上下文简报。
102
+
103
+ **参数处理**:
104
+ - 无参数:生成完整的 8 部分简报
105
+ - `--brief`:仅生成"快速参考卡片"(第 8 部分)
106
+
107
+ ---
108
+
109
+ ## 上下文简报模板
110
+
111
+ ### 简报头部
112
+
113
+ ```markdown
114
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
115
+ 📋 上下文简报
116
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
117
+
118
+ 生成日期:[当前日期]
119
+ 故事名称:[从 specification.md 提取]
120
+ 当前进度:第 [N] 章 / 预计 [M] 章
121
+ 数据来源:[列出实际读取的追踪文件]
122
+ ```
123
+
124
+ ---
125
+
126
+ ### 第 1 部分:角色当前状态
127
+
128
+ **数据来源**:`character-state.json` > 最近章节内容
129
+
130
+ ```markdown
131
+ ### 1. 角色当前状态 🎭
132
+
133
+ **主角**
134
+
135
+ **[角色名]** (主角)
136
+ - **位置**:[当前所在地](第 [N] 章)
137
+ - **状态**:[物理/情感状态]
138
+ - **目标**:[当前追求的目标]
139
+ - **弧线阶段**:[当前发展阶段]
140
+ - **最近变化**:[最后一次重要变化,章节号]
141
+
142
+ **重要配角**(按重要性排序)
143
+
144
+ **[角色名]** ([角色功能])
145
+ - **状态**:[一句话概括]
146
+ - **最后出场**:第 [N] 章
147
+
148
+ **次要角色快速参考**:
149
+ - 角色 A:[一句话状态]
150
+ - 角色 B:[一句话状态]
151
+ ```
152
+
153
+ **角色状态警告算法**:
154
+
155
+ 从 `character-state.json` 的 `appearanceTracking` 和 `characterGroups` 中检测:
156
+
157
+ ```
158
+ 对于每个重要角色(importance = "high" 或 "medium"):
159
+ chapters_since_appearance = 当前章节 - 最后出场章节
160
+
161
+ 如果 importance == "high" 且 chapters_since_appearance > 10:
162
+ ⚠️ "[角色名] 已 [N] 章未出场(重要角色)"
163
+
164
+ 如果 importance == "medium" 且 chapters_since_appearance > 15:
165
+ ⚠️ "[角色名] 已 [N] 章未出场"
166
+ ```
167
+
168
+ 将所有警告在该部分末尾集中展示:
169
+
170
+ ```markdown
171
+ **⚠️ 角色状态警告**:
172
+ - [角色名] 已 [N] 章未出场(重要角色,建议尽快安排出场)
173
+ - [角色名] 已 [N] 章未出场
174
+ ```
175
+
176
+ ---
177
+
178
+ ### 第 2 部分:主线情节进展
179
+
180
+ **数据来源**:`plot-tracker.json` > `creative-plan.md`
181
+
182
+ ```markdown
183
+ ### 2. 主线情节进展 📖
184
+
185
+ **故事当前位置**(三幕/多卷结构)
186
+
187
+ [从 specification.md 提取结构信息,生成进度条]
188
+ 第一幕 [========] 完成
189
+ 第二幕 [=====>....] 进行中(60%)
190
+ 第三幕 [...........] 未开始
191
+
192
+ **情节线状态**
193
+
194
+ **主线:[主线名称]** — [状态]
195
+ - 最新进展:[一句话概括](第 [N] 章)
196
+ - 下一步行动:[从 creative-plan.md 提取]
197
+
198
+ **副线 A:[副线名称]** — [状态]
199
+ - 最新进展:[一句话概括](第 [N] 章)
200
+
201
+ **副线 B:[副线名称]** — [状态]
202
+ - 最新进展:[一句话概括](第 [N] 章)
203
+
204
+ **已完成情节线**:
205
+ - ✅ [情节线名称](第 [X]-[Y] 章)
206
+ ```
207
+
208
+ **进度计算方法**:
209
+
210
+ ```
211
+ 从 plot-tracker.json 的 plotlines 中:
212
+ 主线进度 = completedNodes.length / (completedNodes.length + upcomingNodes.length)
213
+ 副线进度 = 同上
214
+
215
+ 从 specification.md 的章节规划中:
216
+ 总体进度 = 已写章节数 / 预计总章节数
217
+ ```
218
+
219
+ ---
220
+
221
+ ### 第 3 部分:未解决的伏笔与悬念
222
+
223
+ **数据来源**:`plot-tracker.json` 的 `foreshadowing` 数组
224
+
225
+ ```markdown
226
+ ### 3. 未解决的伏笔与悬念 🔍
227
+
228
+ **高优先级(需尽快处理)**
229
+
230
+ ⏰ **[伏笔内容描述]**
231
+ - 埋下:第 [N] 章
232
+ - 已经过:[X] 章 ⚠️ 超过 15 章未处理
233
+ - 计划解决:第 [M] 章
234
+ - 处理建议:[基于创作计划给出的建议]
235
+
236
+ **中优先级(正常节奏)**
237
+
238
+ ⏳ **[伏笔内容描述]**
239
+ - 埋下:第 [N] 章
240
+ - 已经过:[X] 章
241
+ - 计划解决:第 [M] 章
242
+
243
+ **低优先级(长线伏笔)**
244
+
245
+ 📌 **[伏笔内容描述]**
246
+ - 埋下:第 [N] 章
247
+ - 已经过:[X] 章
248
+ - 计划解决:第 [M] 章(长期伏笔)
249
+ ```
250
+
251
+ **伏笔优先级判断算法**:
252
+
253
+ ```
254
+ 对于 plot-tracker.json 中每个 status == "active" 的伏笔:
255
+
256
+ chapters_since = 当前章节 - planted.chapter
257
+ planned_resolve = plannedReveal.chapter
258
+
259
+ 判断优先级:
260
+ 1. 如果 chapters_since > 15:
261
+ → 高优先级(超期未处理)
262
+
263
+ 2. 如果 planned_resolve 存在 且 planned_resolve - 当前章节 <= 3:
264
+ → 高优先级(即将需要解决)
265
+
266
+ 3. 如果 chapters_since > 8:
267
+ → 中优先级
268
+
269
+ 4. 其他:
270
+ → 低优先级
271
+ ```
272
+
273
+ **高优先级伏笔的处理建议**:
274
+
275
+ ```
276
+ 如果 chapters_since > 15 且 planned_resolve 已过期:
277
+ → "此伏笔已严重超期,建议在接下来 3 章内处理或明确推迟"
278
+
279
+ 如果 chapters_since > 15 且 planned_resolve 未过期:
280
+ → "此伏笔时间较长,建议在近期章节中埋入暗示保持读者兴趣"
281
+
282
+ 如果 planned_resolve - 当前章节 <= 3:
283
+ → "此伏笔即将到达计划解决点,请在第 [M] 章前做好铺垫"
284
+ ```
285
+
286
+ ---
287
+
288
+ ### 第 4 部分:角色关系网络
289
+
290
+ **数据来源**:`relationships.json`
291
+
292
+ ```markdown
293
+ ### 4. 角色关系网络 💞
294
+
295
+ **核心关系状态**
296
+
297
+ [角色A] ←→ [角色B]:[关系类型]([趋势符号] [趋势描述])
298
+ 最近互动:第 [N] 章,[互动内容]
299
+
300
+ [角色A] ←→ [角色C]:[关系类型]([趋势符号] [趋势描述])
301
+ 最近互动:第 [N] 章,[互动内容]
302
+ ⚠️ [如有警告,在此展示]
303
+
304
+ **关系变化趋势**(最近 5 章)
305
+ - ↗ [角色A] & [角色B]:[变化描述]
306
+ - ↘ [角色C] & [角色D]:[变化描述]
307
+ - → 其他关系保持稳定
308
+
309
+ **派系/阵营概览**(如适用)
310
+ - [派系名]:[成员],[目标],[状态]
311
+ ```
312
+
313
+ **趋势符号说明**:
314
+
315
+ ```
316
+ ↗ = 关系升温/改善(trajectory: "positive")
317
+ ↘ = 关系恶化/降温(trajectory: "negative")
318
+ → = 关系稳定(trajectory: "stable")
319
+ ↕ = 关系不稳定/波动(trajectory: "volatile")
320
+ ```
321
+
322
+ **关系变化趋势提取**:
323
+
324
+ ```
325
+ 从 relationships.json 的 history 数组中:
326
+ 取最近 5 章的 changes 记录
327
+ 按 impact 排序(high > medium > low)
328
+ 展示 impact 为 high 或 medium 的变化
329
+ ```
330
+
331
+ ---
332
+
333
+ ### 第 5 部分:上一章回顾
334
+
335
+ **数据来源**:最近章节文件(`stories/[current]/content/chapter-XX.md`)
336
+
337
+ ```markdown
338
+ ### 5. 上一章回顾 📄
339
+
340
+ **第 [N] 章:[章节标题]**([字数] 字)
341
+
342
+ **核心事件**:
343
+ - [事件 1]
344
+ - [事件 2]
345
+ - [事件 3]
346
+
347
+ **章节结尾**(续写衔接点):
348
+ > [引用上一章最后 2-3 段原文]
349
+
350
+ **结尾状态**:
351
+ - 悬念:[有/无,如果有则描述]
352
+ - 时间点:[故事内时间]
353
+ - 地点:[角色所在位置]
354
+
355
+ **下一章衔接建议**:
356
+ - [根据 tasks.md 和 creative-plan.md 提取的下一章任务]
357
+ - [续写应注意的衔接要点]
358
+ ```
359
+
360
+ **上一章提取逻辑**:
361
+
362
+ ```
363
+ 1. 列出 stories/[current]/content/ 下所有 chapter-*.md 文件
364
+ 2. 按文件名排序,取最后一个
365
+ 3. 读取文件内容
366
+ 4. 提取标题(第一个 # 标题)
367
+ 5. 统计字数(使用 wc 或字符串计数)
368
+ 6. 提取最后 2-3 段作为"章节结尾"
369
+ 7. 分析核心事件(从内容中概括 3-5 个关键情节点)
370
+ ```
371
+
372
+ ---
373
+
374
+ ### 第 6 部分:时间线快照
375
+
376
+ **数据来源**:`timeline.json`
377
+
378
+ ```markdown
379
+ ### 6. 时间线快照 ⏰
380
+
381
+ **故事内时间**:
382
+ - 起始时间:[年月日/第 1 天]
383
+ - 当前时间:[年月日/第 N 天]
384
+ - 已过时长:[X 天/月/年]
385
+
386
+ **重要时间节点**(倒序,最近 5 个):
387
+ - 第 [N] 章:[事件]([故事内日期/天数])
388
+ - 第 [N-1] 章:[事件]([故事内日期/天数])
389
+ - ...
390
+
391
+ **⚠️ 时间线问题**(如有):
392
+ - [从 timeline.json 或 plot-tracker.json 的 notes.inconsistencies 检测的问题]
393
+ ```
394
+
395
+ **时间线提取逻辑**:
396
+
397
+ ```
398
+ 从 timeline.json 的 events 数组中:
399
+ 按 day(或 chapter)倒序排列
400
+ 取最近 5 个事件
401
+ 标记有时间矛盾的事件(如果 day 值出现非递增情况)
402
+ ```
403
+
404
+ ---
405
+
406
+ ### 第 7 部分:创作状态检查
407
+
408
+ **数据来源**:`tasks.md` + `creative-plan.md` + 章节文件统计
409
+
410
+ ```markdown
411
+ ### 7. 创作状态检查 ✅
412
+
413
+ **完成度**:
414
+ - 已写章节:[N] / 预计 [M] 章([X]%)
415
+ - 已写字数:[N] 字
416
+ - 剩余字数预估:约 [K] 字
417
+
418
+ **节奏检查**(最近 5 章):
419
+
420
+ 从 plot-tracker.json 的 currentState 或最近章节内容分析:
421
+ 章节 事件密度
422
+ [N-4] ████░░░░░░ [描述]
423
+ [N-3] ███████░░░ [描述]
424
+ [N-2] █████░░░░░ [描述]
425
+ [N-1] ████████░░ [描述]
426
+ [N] ████░░░░░░ [描述]
427
+
428
+ 节奏评估:[有起伏/过于平淡/过于紧张]
429
+
430
+ **任务清单状态**(从 tasks.md 统计):
431
+ - ✅ 已完成:[N] 项
432
+ - 🔄 进行中:[M] 项
433
+ - ⏸️ 待办:[K] 项
434
+
435
+ **下一步关键任务**(Top 3):
436
+ 1. [任务 1](来自 tasks.md 中第一个未完成任务)
437
+ 2. [任务 2]
438
+ 3. [任务 3]
439
+ ```
440
+
441
+ **节奏评估算法**:
442
+
443
+ ```
444
+ 从最近 5 章内容中分析:
445
+ 事件密度 = 章节中的关键情节点数量
446
+
447
+ 评估标准:
448
+ 如果最近 5 章事件密度变化 < 2(方差很小):
449
+ → "过于平淡,建议增加起伏"
450
+
451
+ 如果最近 5 章事件密度持续 > 7:
452
+ → "过于紧张,建议适当放缓让读者喘息"
453
+
454
+ 如果最近 5 章事件密度有高有低(方差 > 3):
455
+ → "节奏良好,有张有弛"
456
+ ```
457
+
458
+ ---
459
+
460
+ ### 第 8 部分:快速参考卡片
461
+
462
+ **这是 `--brief` 模式下唯一输出的内容**。
463
+
464
+ ```markdown
465
+ ### 8. 快速参考卡片 🎯
466
+
467
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
468
+ 📍 **当前位置**
469
+ [主角在哪,什么状态,什么时间点]
470
+
471
+ 🎯 **下一章目标**
472
+ [从 tasks.md + creative-plan.md 提取]
473
+
474
+ ⚠️ **注意事项**
475
+ - [超期伏笔提醒]
476
+ - [长期未出场角色提醒]
477
+ - [一致性警告]
478
+
479
+ 💡 **续写衔接**
480
+ - 上章结尾:[一句话概括]
481
+ - 衔接方式:[建议的开头方向]
482
+
483
+ 📊 **进度**:第 [N]/[M] 章([X]%)
484
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
485
+ ```
486
+
487
+ ---
488
+
489
+ ## 简报尾部
490
+
491
+ ```markdown
492
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
493
+ 📊 上下文简报结束
494
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
495
+
496
+ **建议行动**:
497
+ 1. 如果有 ⚠️ 警告,先处理警告项
498
+ 2. 重读上一章结尾,找到续写衔接点
499
+ 3. 确认下一章任务
500
+ 4. 执行 /write 开始创作
501
+
502
+ **数据更新提醒**:
503
+ - 本简报基于当前追踪数据生成
504
+ - 如追踪数据过时,请先执行 /track 更新
505
+ - 建议每 5-10 章或隔天续写时执行一次 /recap
506
+ ```
507
+
508
+ ---
509
+
510
+ ## 与其他命令的关系
511
+
512
+ | 命令 | 关系 | 数据流 |
513
+ |------|------|--------|
514
+ | `/track-init` | 前置基础 | 初始化追踪系统 → 为 /recap 提供数据 |
515
+ | `/track` | 数据更新 | /track 更新追踪数据 → /recap 读取最新数据 |
516
+ | `/write` | 后续流程 | /recap 重建上下文 → /write 执行写作 |
517
+ | `/analyze` | 互补验证 | /analyze 深度分析 ↔ /recap 状态概览 |
518
+ | pre-write-checklist | 集成 | /recap 简报可替代部分检查清单功能 |
519
+
520
+ **推荐工作流**:
521
+
522
+ ```
523
+ 隔天续写:/recap → /write
524
+ 定期整理:/track → /recap → 根据简报调整计划
525
+ 长篇诊断:/recap → 发现问题 → /analyze 深入分析
526
+ ```
527
+
528
+ ---
529
+
530
+ ## 高级功能
531
+
532
+ ### --brief 简化模式
533
+
534
+ ```
535
+ /recap --brief
536
+ ```
537
+
538
+ 仅输出第 8 部分"快速参考卡片",适合快速刷新记忆。
539
+
540
+ **使用场景**:
541
+ - 短暂离开后回来继续写
542
+ - 已经很了解故事,只需快速确认
543
+
544
+ ---
545
+
546
+ ## 错误处理
547
+
548
+ ### 故事不存在
549
+
550
+ ```
551
+ ❌ 未找到活跃故事
552
+
553
+ 请先执行 /specify 创建故事规格。
554
+ ```
555
+
556
+ ### 无章节内容
557
+
558
+ ```
559
+ ⚠️ 尚未开始写作
560
+
561
+ 未找到任何章节文件(stories/[current]/content/)。
562
+ 无法生成上下文简报。
563
+
564
+ 请先执行 /write 开始创作,然后再使用 /recap。
565
+ ```
566
+
567
+ ### 追踪数据过期
568
+
569
+ ```
570
+ ⚠️ 追踪数据可能过时
571
+
572
+ 最后更新时间:[日期]([N] 天前)
573
+ 已写章节数超过最后更新时的章节数 [X] 章。
574
+
575
+ 建议先执行 /track 更新追踪数据后再查看简报。
576
+ ```
577
+
578
+ ---
579
+
580
+ ## 技术说明
581
+
582
+ ### 数据处理优先级
583
+
584
+ 当多个数据源存在冲突时:
585
+ 1. **追踪文件** > **章节内容推断**(追踪文件经过 /track 验证,更可靠)
586
+ 2. **最近章节** > **早期章节**(最近的信息更准确)
587
+ 3. **character-state.json** > **规格文件**(实时状态 > 初始设定)
588
+
589
+ ### 信息量控制
590
+
591
+ - **主要角色**:展示完整信息(位置、状态、目标、弧线)
592
+ - **次要角色**:一句话状态
593
+ - **伏笔**:按优先级排序,高优先级详细展示,低优先级简要列出
594
+ - **关系**:仅展示有变化或有问题的关系
595
+
596
+ ### 简报长度参考
597
+
598
+ - **完整简报**(8 部分):约 800-1500 字
599
+ - **简化简报**(--brief):约 200-300 字
600
+
601
+ ---
602
+
603
+ ## 成功标准
604
+
605
+ **用户反馈目标**:
606
+ - "5 分钟就能想起所有关键信息"
607
+ - "不再害怕隔天续写"
608
+ - "30 章后依然清楚知道故事在哪"
609
+
610
+ **技术指标**:
611
+ - 信息准确率 > 95%(基于追踪数据的准确性)
612
+ - 警告召回率 > 90%(真实问题能被检测到)
613
+ - 简报覆盖度 100%(所有有效追踪数据都被纳入简报)
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: relations
3
+ description: 管理和追踪角色关系变化
4
+ argument-hint: [update | show | history | check] [角色] [关系] [目标角色]
5
+ allowed-tools: Read(//spec/tracking/relationships.json), Read(spec/tracking/relationships.json), Write(//spec/tracking/relationships.json), Write(spec/tracking/relationships.json), Bash(find:*), Bash(*)
6
+ model: claude-sonnet-4-5-20250929
7
+ scripts:
8
+ sh: .specify/scripts/bash/manage-relations.sh
9
+ ps: .specify/scripts/powershell/manage-relations.ps1
10
+ ---
11
+
12
+ # 角色关系管理
13
+
14
+ 追踪和管理角色之间的关系动态,确保关系发展的合理性。
15
+
16
+ ## 资源加载(可选)
17
+
18
+ 本命令用于管理角色关系,默认读取 `tracking/relationships.json`。
19
+
20
+ ### 可选配置
21
+
22
+ ```yaml
23
+ resource-loading:
24
+ relations:
25
+ knowledge-base:
26
+ craft:
27
+ - character-arc # 角色弧线知识
28
+ skills:
29
+ quality-assurance:
30
+ - consistency-checker # 关系一致性检查
31
+ ```
32
+
33
+ **推荐资源**: character-arc.md(理解关系演变)
34
+
35
+ ## 功能
36
+
37
+ 1. **关系网络** - 维护角色之间的关系图谱
38
+ 2. **关系变化** - 记录关系的演变历程
39
+ 3. **派系管理** - 追踪各势力派系的对立与合作
40
+ 4. **情感追踪** - 管理角色间的情感发展
41
+
42
+ ## 使用方法
43
+
44
+ 执行脚本 {SCRIPT} [操作] [参数]:
45
+ - `update` - 更新角色关系
46
+ - `show` - 显示关系网络
47
+ - `history` - 查看关系变化历史
48
+ - `check` - 验证关系逻辑
49
+
50
+ 示例:
51
+ ```
52
+ {SCRIPT} update 李中庸 allies 沈玉卿 --chapter 61 --note 初入翰林相助
53
+ # PowerShell:
54
+ {SCRIPT} -Command update -A 李中庸 -Relation allies -B 沈玉卿 -Chapter 61 -Note 初入翰林相助
55
+ ```
56
+
57
+ ## 数据存储
58
+
59
+ 关系数据存储在 `spec/tracking/relationships.json`:
60
+ ```json
61
+ {
62
+ "characters": {
63
+ "主角": {
64
+ "盟友": ["角色A", "角色B"],
65
+ "敌对": ["角色C"],
66
+ "爱慕": ["角色D"],
67
+ "未知": ["角色E"]
68
+ }
69
+ },
70
+ "factions": {
71
+ "改革派": ["主角", "角色A"],
72
+ "保守派": ["角色C", "角色F"]
73
+ }
74
+ }
75
+ ```
76
+
77
+ ## 输出示例
78
+
79
+ ```
80
+ 👥 角色关系网络
81
+ ━━━━━━━━━━━━━━━━━━━━
82
+ 主角:李中庸
83
+ ├─ 💕 爱慕:沈玉卿
84
+ ├─ 🤝 盟友:张居正(隐藏)
85
+ ├─ 📚 导师:利玛窦
86
+ ├─ ⚔️ 敌对:申时行派系
87
+ └─ 👁️ 监视:东厂
88
+
89
+ 派系对立:
90
+ 改革派 ←→ 保守派
91
+ 东林党 ←→ 阉党
92
+
93
+ 最近变化(第60章):
94
+ - 沈玉卿:陌生人 → 相互吸引
95
+ - 张居正:未知 → 师承关系
96
+ ```