@cloud411716/fancy-webnovel 1.0.46 → 2.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.
- package/client.js +183 -0
- package/cordis.patch.yml +0 -14
- package/index.js +21 -37
- package/lib/chinese-num.js +111 -0
- package/lib/deployed-state.js +141 -0
- package/lib/error-codes.js +104 -0
- package/lib/infra.js +569 -0
- package/lib/llm-wiki.js +109 -0
- package/lib/safe-rm.js +94 -0
- package/lib/scraper-utils.js +165 -0
- package/package.json +37 -5
- package/plugins/fancy-analyze/command-input.js +65 -0
- package/plugins/fancy-analyze/index.js +973 -0
- package/plugins/fancy-analyze/schema-analyze.md +379 -0
- package/plugins/fancy-analyze/schema-write.md +178 -0
- package/plugins/fancy-analyze/scripts/split_source.js +292 -0
- package/plugins/fancy-analyze/summary-progress.js +431 -0
- package/plugins/fancy-analyze/templates.js +881 -0
- package/plugins/fancy-bootstrap/index.js +168 -0
- package/plugins/fancy-bootstrap/scripts/init.js +143 -0
- package/plugins/fancy-bootstrap/scripts/path-utils.js +21 -0
- package/plugins/fancy-bootstrap/templates.js +54 -0
- package/plugins/fancy-import/import-core.js +1118 -0
- package/plugins/fancy-import/import-driver.js +581 -0
- package/plugins/fancy-import/index.js +730 -0
- package/plugins/fancy-import/prompts/01-import-prompt.md +106 -0
- package/plugins/fancy-import/templates.js +49 -0
- package/plugins/fancy-scan/index.js +319 -0
- package/plugins/fancy-scan/scripts/run-scan.js +520 -0
- package/plugins/fancy-scan/scripts/scrapers/fanqie-rank-scraper.js +794 -0
- package/plugins/fancy-scan/scripts/scrapers/jjwxc-rank-scraper.js +339 -0
- package/plugins/fancy-scan/scripts/scrapers/qimao-rank-scraper.js +611 -0
- package/plugins/fancy-scan/templates.js +295 -0
- package/plugins/fancy-story-builder/deploy-manifest.js +239 -0
- package/plugins/fancy-story-builder/deslop-driver.js +821 -0
- package/plugins/fancy-story-builder/flesh-output.js +155 -0
- package/plugins/fancy-story-builder/index.js +3152 -0
- package/plugins/fancy-story-builder/prompts/01-skeleton-prompt.md +553 -0
- package/plugins/fancy-story-builder/prompts/02-flesh-prompt.md +540 -0
- package/plugins/fancy-story-builder/prompts/03-rhythm-prompt.md +504 -0
- package/plugins/fancy-story-builder/prompts/04-writing-prompt.md +188 -0
- package/plugins/fancy-story-builder/prompts/05-deslop-prompt.md +96 -0
- package/plugins/fancy-story-builder/purpose-template.md +107 -0
- package/plugins/fancy-story-builder/references/formulas-rhythm.json +302 -0
- package/plugins/fancy-story-builder/references/formulas-skeleton.json +229 -0
- package/plugins/fancy-story-builder/references/glossary.md +585 -0
- package/plugins/fancy-story-builder/references/index.md +490 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/00-index.md +174 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/01-scene.md +150 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/02-chapter-workflow.md +99 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/03-opening-chapter.md +104 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/04-dialogue-mastery.md +274 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/05-genre-formulas.md +432 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/06-tone-ensemble.md +259 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/07-ledger-audit.md +222 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/08-diagnosis-revision.md +205 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/09-reading-power.md +135 -0
- package/plugins/fancy-story-builder/references//345/206/231/344/275/234/346/214/207/345/257/274/10-deslop.md +129 -0
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/00-index.md +98 -0
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/01-upgrade-rhythm.md +300 -0
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/02-arc-rhythm.md +168 -0
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/03-highpoint-hooks.md +189 -0
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/04-satisfaction.md +226 -0
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/05-foreshadow-density.md +195 -0
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/06-chapter-outline.md +226 -0
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/07-audit.md +163 -0
- package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/00-index.md +100 -0
- package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/01-character.md +239 -0
- package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/02-worldbuilding.md +245 -0
- package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/03-relations.md +181 -0
- package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/04-emotion-methods.md +286 -0
- package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/05-audit.md +177 -0
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/00-index.md +91 -0
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/01-positioning.md +208 -0
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/02-packaging.md +135 -0
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/03-entities.md +305 -0
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/04-conflict.md +328 -0
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/05-quota.md +187 -0
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/06-audit.md +142 -0
- package/plugins/fancy-story-builder/rhythm-output.js +140 -0
- package/plugins/fancy-story-builder/schema-setting.md +324 -0
- package/plugins/fancy-story-builder/scripts/ai-patterns.js +619 -0
- package/plugins/fancy-story-builder/scripts/check-guide-compliance.js +289 -0
- package/plugins/fancy-story-builder/scripts/content-quality.js +413 -0
- package/plugins/fancy-story-builder/scripts/deslop-validate.js +143 -0
- package/plugins/fancy-story-builder/scripts/error-classes.js +112 -0
- package/plugins/fancy-story-builder/scripts/flesh-validate.js +1189 -0
- package/plugins/fancy-story-builder/scripts/formula-engine.js +112 -0
- package/plugins/fancy-story-builder/scripts/graph-utils.js +1385 -0
- package/plugins/fancy-story-builder/scripts/label-coverage.js +171 -0
- package/plugins/fancy-story-builder/scripts/prompt-drift-check.js +441 -0
- package/plugins/fancy-story-builder/scripts/reading-power.js +298 -0
- package/plugins/fancy-story-builder/scripts/rhythm-validate.js +1216 -0
- package/plugins/fancy-story-builder/scripts/semantic-lint.js +377 -0
- package/plugins/fancy-story-builder/scripts/skeleton-quota.js +145 -0
- package/plugins/fancy-story-builder/scripts/skeleton-validate.js +1832 -0
- package/plugins/fancy-story-builder/scripts/stage-batches.js +1371 -0
- package/plugins/fancy-story-builder/scripts/stage-contract.js +417 -0
- package/plugins/fancy-story-builder/scripts/upstream-query.js +198 -0
- package/plugins/fancy-story-builder/scripts/writing-rules.js +167 -0
- package/plugins/fancy-story-builder/scripts/writing-validate.js +682 -0
- package/plugins/fancy-story-builder/skeleton-output.js +199 -0
- package/plugins/fancy-story-builder/stage-driver.js +1049 -0
- package/plugins/fancy-story-builder/templates//350/212/202/345/245/217//346/227/266/345/272/217/346/230/240/345/260/204/346/250/241/346/235/277.json +204 -0
- package/plugins/fancy-story-builder/templates//350/212/202/345/245/217//347/253/240/350/212/202/347/273/206/347/272/262/346/250/241/346/235/277.json +34 -0
- package/plugins/fancy-story-builder/templates//350/212/202/345/245/217//347/253/240/350/212/202/350/247/204/345/210/222/346/250/241/346/235/277.json +24 -0
- package/plugins/fancy-story-builder/templates//350/212/202/345/245/217//350/212/202/345/245/217/345/217/202/346/225/260/346/250/241/346/235/277.json +27 -0
- package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//344/270/226/347/225/214/350/247/202/350/247/204/345/210/231/346/250/241/346/235/277.json +66 -0
- package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/205/263/351/224/256/351/201/223/345/205/267/346/250/241/346/235/277.json +76 -0
- package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/206/262/347/252/201/346/250/241/346/235/277.json +72 -0
- package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/211/247/346/203/205/346/250/241/346/235/277.json +37 -0
- package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/212/277/345/212/233/346/250/241/346/235/277.json +53 -0
- package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/234/260/347/202/271/346/250/241/346/235/277.json +40 -0
- package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//347/273/223/345/261/200/346/250/241/346/235/277.json +79 -0
- package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//350/247/222/350/211/262/346/250/241/346/235/277.json +132 -0
- package/plugins/fancy-story-builder/templates//351/252/250/346/236/266//345/205/263/347/263/273/346/250/241/346/235/277.json +133 -0
- package/plugins/fancy-story-builder/templates//351/252/250/346/236/266//345/256/236/344/275/223/346/250/241/346/235/277.json +160 -0
- package/plugins/fancy-story-builder/templates//351/252/250/346/236/266//345/261/202/347/272/247/346/250/241/346/235/277.json +65 -0
- package/plugins/fancy-story-builder/templates//351/252/250/346/236/266//346/241/206/346/236/266/346/250/241/346/235/277.json +134 -0
- package/plugins/fancy-story-builder/templates.js +1248 -0
- package/plugins/fancy-story-builder/wiki-references.js +204 -0
- package/plugins/fancy-story-builder/writing-driver.js +1061 -0
- package/plugins/fancy-topic/index.js +704 -0
- package/plugins/fancy-topic/scripts/select-topic.js +274 -0
- package/plugins/fancy-topic/templates.js +373 -0
- package/commands/bootstrap/index.js +0 -164
- package/commands/bootstrap/init-project.js +0 -121
- package/commands/scan/index.js +0 -283
- package/commands/scan/platforms/fanqie.js +0 -146
- package/commands/scan/platforms/jinjiang.js +0 -143
- package/commands/scan/platforms/qidian.js +0 -102
- package/commands/scan/platforms/qimao.js +0 -127
- package/commands/scan/scraper.js +0 -195
- package/infra.js +0 -160
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# 情感方法
|
|
2
|
+
|
|
3
|
+
> 血肉阶段第 4 份。情绪弧线类型 + 叠加规则 + 引擎七环 + 三板斧 + 题材策略。
|
|
4
|
+
> 本文件不写章节号(→ 节奏阶段),不写字数分配表(→ 节奏阶段),不写数据结构(→ 模板),不写验证(→ 脚本)。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、决策路由
|
|
9
|
+
|
|
10
|
+
| 你在做什么 | 用哪节 |
|
|
11
|
+
|---|---|
|
|
12
|
+
| 选情绪弧线 | §2 情绪弧线类型 |
|
|
13
|
+
| 叠加弧线 | §3 弧线叠加规则 |
|
|
14
|
+
| 设计单元引擎 | §4 引擎七环 |
|
|
15
|
+
| 设计情感三板斧 | §5 三板斧(可选) |
|
|
16
|
+
| 按题材选策略 | §6 题材策略 |
|
|
17
|
+
| 中段加压 | §7 中段加压 |
|
|
18
|
+
| 期待感管理 | §8 期待感管理 |
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## 二、情绪弧线类型
|
|
23
|
+
|
|
24
|
+
### 2.1 六种弧线
|
|
25
|
+
|
|
26
|
+
| 弧线 | 情绪效果 | 适用题材 |
|
|
27
|
+
|---|---|---|
|
|
28
|
+
| V 形 | 虐完翻盘 | 重生复仇、破镜重圆、亲情催泪、成长治愈 |
|
|
29
|
+
| 倒 V 形 | 甜完刀死(BE) | BE 虐恋、职场翻车、友情背叛、信任崩塌 |
|
|
30
|
+
| W 形 | 多反转猜不到 | 多反转悬疑、追妻火葬场、商战博弈 |
|
|
31
|
+
| 递进形 | 层层打脸升级 | 打脸爽文、层层揭秘、逆袭翻盘 |
|
|
32
|
+
| 延迟满足 | 隐忍后大爆发 | 复仇爽文、身份揭秘、长线布局 |
|
|
33
|
+
| 急转形 | 结尾颠覆 | 细思极恐、身份错位、动机反转 |
|
|
34
|
+
|
|
35
|
+
### 2.2 弧线的结构定义
|
|
36
|
+
|
|
37
|
+
每种弧线由"阶段"构成,**具体的字数分配、章节换算属于节奏阶段**。血肉阶段只需确定:
|
|
38
|
+
- 选哪种弧线
|
|
39
|
+
- 叠加方式(如果叠加)
|
|
40
|
+
- 每个单元的情绪命题
|
|
41
|
+
|
|
42
|
+
### 2.3 弧线的"关键点"(结构定义,非章节)
|
|
43
|
+
|
|
44
|
+
- V 形:谷底在哪一段(结构比例,非章节)
|
|
45
|
+
- 倒 V 形:顶点在哪一段
|
|
46
|
+
- W 形:几个波峰,哪个最高
|
|
47
|
+
- 递进形:几个台阶,每阶的"小胜 vs 大胜"强度
|
|
48
|
+
- 延迟满足:爆发触发在哪一段
|
|
49
|
+
- 急转形:急转在哪一段
|
|
50
|
+
|
|
51
|
+
**具体的段比例与章节换算,属于节奏阶段**(`formulas-rhythm.json` 的 `arc_phase_ratio`)。血肉阶段不写数字。
|
|
52
|
+
|
|
53
|
+
### 2.4 转折点位置统一定义
|
|
54
|
+
|
|
55
|
+
转折点的"段"是结构的段,不是章节的段。段与章的换算由节奏阶段处理。
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 三、弧线叠加规则
|
|
60
|
+
|
|
61
|
+
### 3.1 两种叠加方式
|
|
62
|
+
|
|
63
|
+
| 方式 | 定义 | 适用 |
|
|
64
|
+
|---|---|---|
|
|
65
|
+
| 主副叠加 | 主弧定基调,副弧定转折时机 | 延迟满足 + 急转、V 形 + 急转 |
|
|
66
|
+
| 分段叠加 | 前段用 A 弧,后段用 B 弧 | W 形前半 + 延迟满足后半 |
|
|
67
|
+
|
|
68
|
+
**不超过两种弧线。**
|
|
69
|
+
|
|
70
|
+
### 3.2 叠加算法
|
|
71
|
+
|
|
72
|
+
1. 定主弧:决定全书情绪基调
|
|
73
|
+
2. 定副弧:决定关键转折时机
|
|
74
|
+
3. 时间轴对齐:主弧的转折点与副弧的转折点不能冲突。如果冲突,主弧优先,副弧的转折点挪到主弧转折点之前
|
|
75
|
+
4. 字数分配:按主弧的字数分配表切分(**具体分配在节奏阶段**),副弧不单独占字数,只在主弧的对应段落内做"转折标记"
|
|
76
|
+
5. 章节钩子:以主弧决定章尾钩子基调(**具体在节奏阶段**),副弧转折点所在的章用强钩子
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 四、引擎七环
|
|
81
|
+
|
|
82
|
+
### 4.1 七环
|
|
83
|
+
|
|
84
|
+
每个剧情单元先设计能制造情绪与兑现的**正向发动机**:
|
|
85
|
+
|
|
86
|
+
> **核心情绪命题 → 承载对象/情绪缺口 → 受阻或缺口维持原因 → 本轮触发 → 主角不可替代的点火/转化动作 → 意义变化或可见兑现 → 题材/契约兑现**
|
|
87
|
+
|
|
88
|
+
七环说明:
|
|
89
|
+
1. **核心情绪命题**:这个单元要让读者感受什么?(爽/燃/甜/虐/恐/治愈)
|
|
90
|
+
2. **承载对象/情绪缺口**:情绪落在谁/什么上?(人物/关系/目标/规则/场景)
|
|
91
|
+
3. **受阻或缺口维持原因**:为什么没有被直接解决?为什么此前仍悬置?
|
|
92
|
+
4. **本轮触发**:这个单元什么事件打破了平衡?
|
|
93
|
+
5. **主角不可替代的点火/转化动作**:主角凭什么介入/转化?为什么非他不可?
|
|
94
|
+
6. **意义变化或可见兑现**:读者的投入如何改变意义?得到什么可见兑现?
|
|
95
|
+
7. **题材/契约兑现**:这个单元兑现了题材承诺的什么?
|
|
96
|
+
|
|
97
|
+
**不适用的环节可写"无/即时",但必须保持因果闭合。**
|
|
98
|
+
|
|
99
|
+
### 4.2 合理性五问
|
|
100
|
+
|
|
101
|
+
用于核心单元(卷末/大高潮/反转),过渡单元可简化:
|
|
102
|
+
|
|
103
|
+
1. 为何是该承载对象?
|
|
104
|
+
2. 为何是现在?
|
|
105
|
+
3. 为什么没有被直接解决?
|
|
106
|
+
4. 主角凭什么介入/转化?
|
|
107
|
+
5. 现实/设定边界如何约束?
|
|
108
|
+
|
|
109
|
+
**轻量版**:过渡单元只做第 2、4 问。
|
|
110
|
+
|
|
111
|
+
### 4.3 引擎七环的落点
|
|
112
|
+
|
|
113
|
+
七环的"核心情绪命题"决定该单元在弧线中的位置(属于哪段)。七环本身**不单独建 JSON 字段**,是血肉阶段的设计思路,最终落到各实体的 `description` / `focus_points` / `escalation_path` 等描述字段中。
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 五、情感三板斧(可选,仅情感/虐心/亲情题材)
|
|
118
|
+
|
|
119
|
+
### 5.1 第一斧:羁绊铺设
|
|
120
|
+
|
|
121
|
+
目标:用具体物件/数字/细节建立关系质感,让读者相信这段关系是真实的。
|
|
122
|
+
|
|
123
|
+
方法:
|
|
124
|
+
- 用具体细节建立时间感
|
|
125
|
+
- 用具体物件承载感情(金锁、账本数字、木头小马)
|
|
126
|
+
- 用重复动作建立习惯(每天一碗粥、定期来看望)
|
|
127
|
+
|
|
128
|
+
核心:羁绊越具体,后面的撕裂越痛。不要用"他们很相爱"这种抽象描述。
|
|
129
|
+
|
|
130
|
+
### 5.2 第二斧:情感撕裂
|
|
131
|
+
|
|
132
|
+
目标:制造反差,让读者以为恨对了 → 发现恨错了(或反过来)。
|
|
133
|
+
|
|
134
|
+
方法:
|
|
135
|
+
- 反差法:先展示温暖一面,再用残酷真相击碎
|
|
136
|
+
- 错位法:角色 A 以为在保护角色 B,实际上在伤害
|
|
137
|
+
- 延迟真相法:关键信息在读者最不期待的时候揭示
|
|
138
|
+
|
|
139
|
+
核心:撕裂的力度取决于铺垫的厚度。
|
|
140
|
+
|
|
141
|
+
### 5.3 第三斧:余韵钝痛
|
|
142
|
+
|
|
143
|
+
目标:不用大哭大闹,用安静细节击穿读者防线。
|
|
144
|
+
|
|
145
|
+
方法:
|
|
146
|
+
- 用日常动作承载巨大情感(继续喂粥、把衣服叠好、不回头)
|
|
147
|
+
- 用物件细节制造余韵(坏掉的金锁、木头小马、沾血的戒指)
|
|
148
|
+
- 用"不"制造留白(不解释、不回头、不流泪)
|
|
149
|
+
|
|
150
|
+
核心:最好的余韵不靠大哭,靠"看完之后很久都忘不掉"。
|
|
151
|
+
|
|
152
|
+
### 5.4 三板斧适用声明
|
|
153
|
+
|
|
154
|
+
| 题材 | 是否要求三板斧 |
|
|
155
|
+
|---|---|
|
|
156
|
+
| 情感/虐心/亲情 | 推荐使用 |
|
|
157
|
+
| 古言/复仇 | 可选 |
|
|
158
|
+
| 爽文/悬疑/职场/升级 | 不要求 |
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## 六、题材策略
|
|
163
|
+
|
|
164
|
+
### 6.1 世情/爽文
|
|
165
|
+
|
|
166
|
+
- 情绪反弹速度:快
|
|
167
|
+
- 打脸密度:高
|
|
168
|
+
- 反派嚣张度:递增
|
|
169
|
+
- 结尾基调:痛快、解气
|
|
170
|
+
- 三板斧:不要求
|
|
171
|
+
|
|
172
|
+
### 6.2 情感/虐心
|
|
173
|
+
|
|
174
|
+
- 羁绊细节密度:高
|
|
175
|
+
- 反差设计:先暖后冷,先甜后苦
|
|
176
|
+
- 余韵技法:安静结尾 + 物件细节
|
|
177
|
+
- 结尾基调:意难平、释然
|
|
178
|
+
- 三板斧:推荐使用
|
|
179
|
+
|
|
180
|
+
### 6.3 古言/复仇
|
|
181
|
+
|
|
182
|
+
- 设定简洁原则:人物关系清晰
|
|
183
|
+
- 暴力美学写法:打脸要直接
|
|
184
|
+
- 底牌时机:最后揭示最大底牌
|
|
185
|
+
- 结尾基调:大快人心、因果报应
|
|
186
|
+
- 三板斧:撕裂可用,余韵可选
|
|
187
|
+
|
|
188
|
+
### 6.4 悬疑/推理
|
|
189
|
+
|
|
190
|
+
- 信息差布局:读者知角色不知道,或反过来
|
|
191
|
+
- 排除法结构:逐步排除可能性,最后只剩真相
|
|
192
|
+
- 动机揭示节奏:先揭示做了什么,再揭示为什么做
|
|
193
|
+
- 结尾基调:细思极恐、原来如此
|
|
194
|
+
- 三板斧:不要求
|
|
195
|
+
|
|
196
|
+
### 6.5 年代/亲情
|
|
197
|
+
|
|
198
|
+
- 代际冲突处理:不站队,展示双方的苦
|
|
199
|
+
- 时代细节质感:用时代特有的物件/习俗建立质感
|
|
200
|
+
- 和解节奏:不急和解,先让双方充分受伤
|
|
201
|
+
- 结尾基调:温暖中带着遗憾
|
|
202
|
+
- 三板斧:推荐使用
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 七、中段加压
|
|
207
|
+
|
|
208
|
+
### 7.1 四种手段
|
|
209
|
+
|
|
210
|
+
1. **公开升级**:把私下伤害搬到公开场合(家宴、公司会议、直播、典礼)
|
|
211
|
+
2. **双重背叛**:已知一层背叛后再加一层(经济背叛、名誉背叛、立场反转、证据篡改)
|
|
212
|
+
3. **代价加速**:不行动的代价不断升高(失去机会、当众羞辱、连累他人)
|
|
213
|
+
4. **战略性沉默**:主角暂不反击,沉默本身持续加压(他人误读、反派更放肆)
|
|
214
|
+
|
|
215
|
+
### 7.2 中段加压的落点
|
|
216
|
+
|
|
217
|
+
中段加压的具体手段**不单独建字段**,而是体现在血肉阶段的 `escalation_path`(冲突升级路径)的"description"中。
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 八、期待感管理
|
|
222
|
+
|
|
223
|
+
### 8.1 六法则
|
|
224
|
+
|
|
225
|
+
1. **期待最大化定律**:爽点到来前那一刻是全篇张力最高位置
|
|
226
|
+
2. **信息顺序操纵**:先植入什么信息,读者就先入为主往哪个方向想
|
|
227
|
+
3. **期待递增法**:在基底期待上不断添加细节,注入更具体化的需求缺口
|
|
228
|
+
4. **断期待禁止**:下一个期待立起来之前,绝不能结束当前期待
|
|
229
|
+
5. **下行情节安全原则**:下行中必须给读者安全感
|
|
230
|
+
6. **爽点递增对比**:连续爽点逐级递增
|
|
231
|
+
|
|
232
|
+
### 8.2 期待的落点
|
|
233
|
+
|
|
234
|
+
期待感的"开环/闭环"具体在节奏阶段的时序映射中表达。血肉阶段在 `冲突.json` 的 `information_gaps`(信息差内容)和 `escalation_path`(升级路径)中体现"期待是什么"。
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## 九、情绪核心公式
|
|
239
|
+
|
|
240
|
+
写每个场景时分离三层情绪:
|
|
241
|
+
1. **角色自己的情绪**(角色感受到的)
|
|
242
|
+
2. **文本传递的情绪**(文本要让读者感受的)
|
|
243
|
+
3. **读者实际感受的情绪**(读者真正的体验)
|
|
244
|
+
|
|
245
|
+
同一场景三层可以完全不同:角色在哭,文本在撩,读者在爽。
|
|
246
|
+
|
|
247
|
+
**注**:三层情绪的"写法"属于写作阶段(`04-01-scene.md`),血肉阶段只在设计单元时考虑"三层是什么"。
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## 十、常见反例
|
|
252
|
+
|
|
253
|
+
| 反例 | 为什么错 | 正确做法 |
|
|
254
|
+
|---|---|---|
|
|
255
|
+
| 弧线类型与题材不匹配 | 情绪效果错位 | 按 §2.1 选 |
|
|
256
|
+
| 叠加超过两种弧线 | 节奏乱 | 只保留 2 种 |
|
|
257
|
+
| 引擎七环有环不闭合 | 单元无情绪 | 每环必须闭合 |
|
|
258
|
+
| 三板斧用在爽文 | 不适用 | 按 §5.4 判断 |
|
|
259
|
+
| 中段加压只有一种 | 力度不够 | 至少两种 |
|
|
260
|
+
| 期待感被"断"(开环没闭环) | 读者弃书 | 闭环一个开环时下一个已立 |
|
|
261
|
+
| 填了字数分配表或章节换算 | 违反血肉阶段禁令 | 移到节奏阶段 |
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## 十一、与其他文件的关系
|
|
266
|
+
|
|
267
|
+
| 本文件输出 | 落到哪个字段 | 参考哪个公式 | 由哪个脚本验证 |
|
|
268
|
+
|---|---|---|---|
|
|
269
|
+
| 弧线类型与叠加方式 | `角色.json` 的 `characters[].arc_type`(具体角色) + `arc_change_descriptions`(弧光变化描述) | 无公式 | `flesh-validate.js` 的 `FLESH_ARC_INCONSISTENT`(warning) |
|
|
270
|
+
| 单元的情绪命题 | 各实体的 `description` / `focus_points` / `escalation_path` | 无公式 | 无(设计层) |
|
|
271
|
+
| 引擎七环 | 不单独字段(思路落地到各实体) | 无公式 | 无 |
|
|
272
|
+
| 中段加压 | `冲突.json` 的 `escalation_path[].description` | 无公式 | 无 |
|
|
273
|
+
| 期待感 | `冲突.json` 的 `information_gaps` | 无公式 | 无 |
|
|
274
|
+
|
|
275
|
+
**不输出到**:
|
|
276
|
+
- 弧线的"章节关键点" → 属于节奏阶段 `时序映射.json` 的 `arc_rhythm`
|
|
277
|
+
- 字数分配表 → 属于节奏阶段
|
|
278
|
+
- 高潮/爽点的具体章节 → 属于节奏阶段 `时序映射.json`
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## 十二、版本记录
|
|
283
|
+
|
|
284
|
+
| 版本 | 变更 |
|
|
285
|
+
|---|---|
|
|
286
|
+
| v1.0 | 从原 02-03 + 02-04 合并精简重组。删除所有字数分配表和章节换算(移到节奏阶段);删除"弧线关键点按段中点定义"的具体百分比(移到 formulas-rhythm.json);保留弧线类型/叠加规则/引擎七环/三板斧/题材策略/中段加压/期待管理的方法论;新增"与其他文件的关系"节 |
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# 血肉验证
|
|
2
|
+
|
|
3
|
+
> 血肉阶段最后一份。横向验证流程与问题记录。**所有验证由脚本执行,本文件不写检查清单。**
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## 一、验证流程
|
|
8
|
+
|
|
9
|
+
血肉阶段的验证分两级:
|
|
10
|
+
|
|
11
|
+
1. **单文件校验**:每个文件生成后立即跑(见提示词"七、每文件生成循环")
|
|
12
|
+
2. **全量校验**:8 个文件全部单检通过后跑
|
|
13
|
+
|
|
14
|
+
本文件不重复单文件校验的流程(那在 `prompts/02-flesh-prompt.md` 的"七"),只讲**全量校验失败后怎么处理**。
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## 二、前置检查失败的处理
|
|
19
|
+
|
|
20
|
+
如果启动时"前置检查"失败(骨架未就绪),按提示词的 BLOCKED 格式输出,不进入生成流程。
|
|
21
|
+
|
|
22
|
+
**前置检查项**:
|
|
23
|
+
- 骨架 `.stage-status.json` 不存在
|
|
24
|
+
- 骨架 `all_check.status !== "PASSED"`
|
|
25
|
+
- 骨架 4 个 JSON 有缺失
|
|
26
|
+
|
|
27
|
+
**处理方向**:回到骨架阶段完成或修复,不血肉阶段自行"补骨架"。
|
|
28
|
+
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
## 三、单文件校验失败的处理
|
|
32
|
+
|
|
33
|
+
单文件 `status: 1` 时:
|
|
34
|
+
- 按 `errors[]` 回喂
|
|
35
|
+
- 只改 `errors` 指出的字段
|
|
36
|
+
- 重跑该文件单检
|
|
37
|
+
- 累计 5 次失败 → BLOCKED
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 四、全量校验失败的处理
|
|
42
|
+
|
|
43
|
+
全量校验返回 `status: 1` 时,按以下流程:
|
|
44
|
+
|
|
45
|
+
### 4.1 按文件分组
|
|
46
|
+
|
|
47
|
+
`errors[]` 每条有 `path` 字段。按"根因文件"分组:
|
|
48
|
+
|
|
49
|
+
| 错误的根因 | 应回改的文件 |
|
|
50
|
+
|---|---|
|
|
51
|
+
| `EXTRA_FIELD`(某文件相关字段) | 看 `path` 前缀 |
|
|
52
|
+
| `FLESH_REF_MISSING` | 看 `path` 前缀(如 `characters[]` → 角色.json) |
|
|
53
|
+
| `FLESH_NAME_MISMATCH` | 同上 |
|
|
54
|
+
| `FLESH_XREF_MISSING` | 引用方文件(如 `角色.json` 的关系 target_name) |
|
|
55
|
+
| `FLESH_WORLD_RULE_CATEGORY` | `世界观规则.json` |
|
|
56
|
+
| `FLESH_DETAILS_ORPHAN` | `关键道具.json` |
|
|
57
|
+
| `FLESH_EXTRA_ENTITY` | 血肉中多了骨架没有的 id |
|
|
58
|
+
| `FLESH_CHAPTER_FORBIDDEN` | 看 `path` 前缀 |
|
|
59
|
+
| `FLESH_ARC_INCONSISTENT`(warning) | `角色.json` |
|
|
60
|
+
|
|
61
|
+
### 4.2 改根因文件
|
|
62
|
+
|
|
63
|
+
一次只改一类错误:
|
|
64
|
+
- 先修 error,再修 warning
|
|
65
|
+
- 同类错误一起修
|
|
66
|
+
- 不顺手改其他字段
|
|
67
|
+
|
|
68
|
+
### 4.3 重跑受影响文件的单检
|
|
69
|
+
|
|
70
|
+
改完某个文件后,只跑该文件的单检:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
node references/flesh-validate.js \
|
|
74
|
+
--input=设定/raw/sources/血肉/<文件名>.json \
|
|
75
|
+
--template=模板/血肉/<文件名>模板.json \
|
|
76
|
+
--file=<类型> \
|
|
77
|
+
--upstream=设定/raw/sources/骨架
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
单检通过后,才重跑全量。
|
|
81
|
+
|
|
82
|
+
### 4.4 重跑全量
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
node references/flesh-validate.js \
|
|
86
|
+
--stage-dir=设定/raw/sources/血肉 \
|
|
87
|
+
--template-dir=模板/血肉 \
|
|
88
|
+
--upstream=设定/raw/sources/骨架 \
|
|
89
|
+
--all
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 4.5 最多 3 轮
|
|
93
|
+
|
|
94
|
+
全量最多跑 3 轮。第 3 轮仍失败时,按提示词的 BLOCKED 格式输出,附第 3 轮完整 errors。
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 五、跨文件错误的特殊处理
|
|
99
|
+
|
|
100
|
+
### 5.1 FLESH_REF_MISSING
|
|
101
|
+
|
|
102
|
+
血肉的 id 不在骨架中。**修复方向**:
|
|
103
|
+
- 如果骨架确实漏了这个实体 → 回到骨架阶段补(不能血肉自行"扩展")
|
|
104
|
+
- 如果是笔误 → 改成骨架中的 id
|
|
105
|
+
|
|
106
|
+
### 5.2 FLESH_NAME_MISMATCH
|
|
107
|
+
|
|
108
|
+
同一 id 的 name 与骨架不一致。**修复方向**:改为骨架中的 name。
|
|
109
|
+
|
|
110
|
+
### 5.3 FLESH_XREF_MISSING
|
|
111
|
+
|
|
112
|
+
引用的 name 不在骨架对应实体中。**修复方向**:检查拼写,或改引用。
|
|
113
|
+
|
|
114
|
+
### 5.4 FLESH_EXTRA_ENTITY
|
|
115
|
+
|
|
116
|
+
血肉有骨架没有的 id。**修复方向**:删除该实体。血肉不能创造新实体。
|
|
117
|
+
|
|
118
|
+
### 5.5 FLESH_INCOMPLETE(warning)
|
|
119
|
+
|
|
120
|
+
骨架实体在血肉中缺失。**修复方向**:补全该实体的血肉档案。全量写完时应覆盖所有骨架实体。
|
|
121
|
+
|
|
122
|
+
### 5.6 FLESH_DETAILS_ORPHAN
|
|
123
|
+
|
|
124
|
+
关键道具的 details 与 items 不对应。**修复方向**:一一对应——每个 item 有且仅有一条 details。
|
|
125
|
+
|
|
126
|
+
### 5.7 FLESH_WORLD_RULE_CATEGORY
|
|
127
|
+
|
|
128
|
+
规则 id 前缀与所属数组不匹配。**修复方向**:R → `core_rules`,I → `information_rules`,SR → `social_rules`。
|
|
129
|
+
|
|
130
|
+
### 5.8 FLESH_CHAPTER_FORBIDDEN
|
|
131
|
+
|
|
132
|
+
血肉出现章节号字段。**修复方向**:删除该字段。章节号属于节奏阶段。如果 LLM 想表达"某实体在什么时间出现",应改写为描述性字段(如 `description` / `expected_volume` 等),章节由节奏阶段确定。
|
|
133
|
+
|
|
134
|
+
### 5.9 FLESH_ARC_INCONSISTENT(warning)
|
|
135
|
+
|
|
136
|
+
`arc_type` 与 `arc_stages` 兼容性偏离。**修复方向**:调整 `arc_stages` 到兼容范围,或改 `arc_type`。
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
## 六、问题记录
|
|
141
|
+
|
|
142
|
+
全量校验失败时,用以下模板记录(**不对外展示,只作为工作记录**):
|
|
143
|
+
|
|
144
|
+
| # | 错误代码 | path | 问题描述 | 根因文件 | 修改动作 | 状态 |
|
|
145
|
+
|---|---|---|---|---|---|---|
|
|
146
|
+
| 1 | FLESH_REF_MISSING | characters[3].id | C004 不在骨架 | 角色.json | 改为骨架的 id 或删除 | open |
|
|
147
|
+
| 2 | FLESH_DETAILS_ORPHAN | details.P003 | P003 缺 details | 关键道具.json | 补 details.P003 | open |
|
|
148
|
+
|
|
149
|
+
全部 `open` 转 `resolved` 后,重跑全量。
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## 七、输出确认
|
|
154
|
+
|
|
155
|
+
全量校验返回 `status: 0` 后,按 `prompts/02-flesh-prompt.md` 的"九、输出交付格式"输出交付摘要。
|
|
156
|
+
|
|
157
|
+
**这是唯一允许报告"完成"的场景**。其他场景(单文件通过、中间轮次)不得输出"通过/完成/PASS"。
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
## 八、与其他文件的关系
|
|
162
|
+
|
|
163
|
+
| 本文件作用 | 引用 |
|
|
164
|
+
|---|---|
|
|
165
|
+
| 全量校验失败后的处理流程 | `prompts/02-flesh-prompt.md` 的"七、7.8" |
|
|
166
|
+
| 错误代码的修复方向 | `prompts/02-flesh-prompt.md` 的"十二、常见错误代码速查" |
|
|
167
|
+
| 输出确认 | `prompts/02-flesh-prompt.md` 的"九、输出交付格式" |
|
|
168
|
+
|
|
169
|
+
**本文件本身不直接输出到任何 JSON**,它是验证阶段的工作手册。
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 九、版本记录
|
|
174
|
+
|
|
175
|
+
| 版本 | 变更 |
|
|
176
|
+
|---|---|
|
|
177
|
+
| v1.0 | 从原 02-06 精简。删除所有 `- [ ]` 检查清单(验证归脚本);保留验证流程、问题清单模板、输出确认;新增"与其他文件的关系"节 |
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# 骨架阶段入口
|
|
2
|
+
|
|
3
|
+
> 本文件是骨架阶段的唯一入口。回答"骨架阶段做什么、按什么顺序读、产出什么"。
|
|
4
|
+
> 本文件不定义方法、不写公式、不写验证逻辑。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、阶段目标
|
|
9
|
+
|
|
10
|
+
产出一套骨架文档,回答七个问题:写给谁、卖什么、谁在演、谁在组织、谁在挡、怎么走、伏笔爽点钩子怎么布。
|
|
11
|
+
|
|
12
|
+
骨架不通过,不进入血肉阶段。
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## 二、四阶段定位
|
|
17
|
+
|
|
18
|
+
骨架是四阶段的第一层。按"信息生命期"标准:
|
|
19
|
+
- **骨架**:实体、关系、数量、卷级归属(全书不变,无章节号)
|
|
20
|
+
- 血肉:每个实体具体什么样(全书不变,无章节号)
|
|
21
|
+
- 节奏:什么时间发生什么(含章节号)
|
|
22
|
+
- 写作:具体怎么写
|
|
23
|
+
|
|
24
|
+
骨架阶段的产物不得包含任何章节号。具体清单见 `references/glossary.md` 第六节。
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## 三、加载顺序
|
|
29
|
+
|
|
30
|
+
| 序 | 文件 | 作用 |
|
|
31
|
+
|---|---|---|
|
|
32
|
+
| 1 | 01-positioning.md | 定需求、平台、一句话故事、核心梗 |
|
|
33
|
+
| 2 | 02-packaging.md | 定书名、简介、标签、一句话卖点 |
|
|
34
|
+
| 3 | 03-entities.md | 建角色/势力/实体的骨架卡 |
|
|
35
|
+
| 4 | 04-conflict.md | 建主线矛盾、双线、死亡赌注、黏结剂 |
|
|
36
|
+
| 5 | 05-quota.md | 在公式区间内选定各实体数量 |
|
|
37
|
+
| 6 | 06-audit.md | 横向验证流程与问题记录 |
|
|
38
|
+
|
|
39
|
+
**顺序说明**:03 必须在 04 之前。实体清单决定矛盾形状——先有"谁和谁对立",才有"主角被卷入什么矛盾"。先写矛盾再补实体,会出现"矛盾需要某个实体,临时造一个"的倒置。
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
## 四、产出清单
|
|
44
|
+
|
|
45
|
+
| 产出 | 落到哪个 JSON |
|
|
46
|
+
|---|---|
|
|
47
|
+
| 实体清单 | `实体.json` 的 12 类数组 |
|
|
48
|
+
| 关系清单 | `关系.json` 的 9 类数组 |
|
|
49
|
+
| 数量配额 | `框架.json` 的 `quota` 与 `volume_ratio` |
|
|
50
|
+
| 卷级归属 | `层级.json` 的 `volumes` / `acts` / `main_line_span` / `branch_span` |
|
|
51
|
+
|
|
52
|
+
**具体数据结构见 `模板/骨架/` 下的 4 个模板**,本文件不重复定义。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 五、决策路由
|
|
57
|
+
|
|
58
|
+
| 你在做什么 | 查 |
|
|
59
|
+
|---|---|
|
|
60
|
+
| 定题材、找卖点 | 01-positioning.md |
|
|
61
|
+
| 起书名、写简介 | 02-packaging.md |
|
|
62
|
+
| 建主角卡 | 03-entities.md |
|
|
63
|
+
| 建反派 | 03-entities.md |
|
|
64
|
+
| 建金手指 | 03-entities.md |
|
|
65
|
+
| 建势力格局 | 03-entities.md |
|
|
66
|
+
| 画势力对立线 | 03-entities.md |
|
|
67
|
+
| 定主角势力归属 | 03-entities.md |
|
|
68
|
+
| 设计主线矛盾 | 04-conflict.md |
|
|
69
|
+
| 设计双线 | 04-conflict.md |
|
|
70
|
+
| 定死亡赌注 | 04-conflict.md |
|
|
71
|
+
| 定黏结剂 | 04-conflict.md |
|
|
72
|
+
| 选定数量配额 | 05-quota.md |
|
|
73
|
+
| 骨架横向验证 | 06-audit.md |
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 六、与其他文件的关系
|
|
78
|
+
|
|
79
|
+
| 本文件作用 | 被谁引用 |
|
|
80
|
+
|---|---|
|
|
81
|
+
| 骨架阶段入口 | `prompts/01-skeleton-prompt.md`(提示词读本文件确定加载顺序) |
|
|
82
|
+
|
|
83
|
+
**本文件本身不直接输出到任何 JSON**,它是导航文件。所有具体输出由 01-06 子文件负责。
|
|
84
|
+
|
|
85
|
+
---
|
|
86
|
+
|
|
87
|
+
## 七、版本记录
|
|
88
|
+
|
|
89
|
+
| 版本 | 变更 |
|
|
90
|
+
|---|---|
|
|
91
|
+
| v1.0 | 从原 01-00 精简。删除产出清单中的章节相关内容;删除横向验证清单(移到 06-audit.md);明确"四阶段定位"与"信息生命期"标准 |
|