@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,188 @@
|
|
|
1
|
+
# 04 写作执行须知
|
|
2
|
+
|
|
3
|
+
> 本文件是写作阶段的**产物契约**:写什么文件、写成什么格式、什么会被校验拦下。
|
|
4
|
+
> 怎么写(场景、对话、开篇、文风、诊断)在 `references/写作指导/`。
|
|
5
|
+
> 写作的流程编排由插件的写作驱动负责:它按批派活、逐章校验、把错误发回来。
|
|
6
|
+
> **你不需要自己跑校验脚本,也不需要自己决定写第几章。**
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 一、核心铁律(违反任意一条都会被校验拦下)
|
|
11
|
+
|
|
12
|
+
> 1. **只写驱动指定的章**。本轮要写哪几章、写到哪个路径,驱动会在派活时写清楚。按给定顺序写,不要跳章、不要多写、不要写别的章号。
|
|
13
|
+
>
|
|
14
|
+
> 2. **章首第一行必须是 `# 第N章 <标题>`**(N 为阿拉伯数字或中文数字,如 `# 第1章 引入` / `# 第001章 灭门` / `# 第十二章 高潮`),且标题中的章号必须与驱动指定的章号一致。正文小标题用 `##` 或 `###`,**不得再出现 `#` 一级标题**。`CHAPTER_TITLE` / `CHAPTER_TITLE_DUP` 会拦截。
|
|
15
|
+
>
|
|
16
|
+
> 3. **不出现 AI 分析口吻**(`基本一致` / `无重大问题`)。`FORBIDDEN_WORD` 会拦截。
|
|
17
|
+
>
|
|
18
|
+
> 4. **不出现占位符**:`[X]` / `[Y]` / `[Z]` / `[W]` 出现在正文任何位置都会被拦;`待确认` / `待定` / `待补充` / `TBD` / `N/A` / `未定` / `xxx` **独占一行**时会被拦(正文里当普通词用不算)。统一报 `PLACEHOLDER`。
|
|
19
|
+
>
|
|
20
|
+
> 5. **每写完一章就更新台账**。章/人物/伏笔/时间线四个台账必须与已写章节同步。
|
|
21
|
+
>
|
|
22
|
+
> 6. **不修改 `模板/` 和 `references/` 下的任何文件**。这两个目录是只读输入。
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 二、产物清单
|
|
27
|
+
|
|
28
|
+
| 产物 | 路径 | 说明 |
|
|
29
|
+
|---|---|---|
|
|
30
|
+
| 第 N 章正文 | `设定/raw/sources/写作/第NNN章.md` | N 三位补零,如 `第001章.md` |
|
|
31
|
+
| 章台账 | `设定/raw/sources/写作/台账/章台账.json` | 每写完一章追加一条 |
|
|
32
|
+
| 人物台账 | `设定/raw/sources/写作/台账/人物台账.json` | 只更新本章出场角色 |
|
|
33
|
+
| 伏笔台账 | `设定/raw/sources/写作/台账/伏笔台账.json` | 只更新 open / progressing 状态 |
|
|
34
|
+
| 时间线台账 | `设定/raw/sources/写作/台账/时间线台账.json` | 推进 in-world-time |
|
|
35
|
+
|
|
36
|
+
**正文第一行**:`# 第NNN章 <标题>`,三位补零与文件名保持一致。
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 三、怎么写
|
|
41
|
+
|
|
42
|
+
写作方法在 `references/写作指导/`,按需读:
|
|
43
|
+
|
|
44
|
+
| 文件 | 什么时候读 |
|
|
45
|
+
|---|---|
|
|
46
|
+
| `00-index.md` | 不知道该读哪篇时先读它 |
|
|
47
|
+
| `01-scene.md` | 每一章都要用:场景五要素(目标/冲突/转折/结果/余味) |
|
|
48
|
+
| `02-chapter-workflow.md` | 成章流程:怎么从一个场景推进到下一个 |
|
|
49
|
+
| `03-opening-chapter.md` | 第 1 章,或需要写强开篇的章 |
|
|
50
|
+
| `04-dialogue-mastery.md` | 写对话前:权力博弈、潜台词、语言档案 |
|
|
51
|
+
| `05-genre-formulas.md` | 题材套路公式(该题材怎么写才成立) |
|
|
52
|
+
| `06-tone-ensemble.md` | 文风与语气:多人同场时怎么区分声音 |
|
|
53
|
+
| `07-ledger-audit.md` | 台账怎么记、怎么审 |
|
|
54
|
+
| `08-diagnosis-revision.md` | 收到校验错误后怎么定位并改写 |
|
|
55
|
+
| `09-reading-power.md` | 钩子 13 式 / 章首引子 7 式 / 微兑现 7 种 / 30-40-30 结构 |
|
|
56
|
+
|
|
57
|
+
${benchmark_refs_block}
|
|
58
|
+
|
|
59
|
+
**每章的硬性要求**:
|
|
60
|
+
|
|
61
|
+
- 按细纲的 `function_main`(本章主功能)组织场景,通常 2-4 个场景
|
|
62
|
+
- **章首钩子**:按细纲的 `hook_head` 类型,前 100 字内兑现
|
|
63
|
+
- **章尾钩子**:按细纲的 `hook_tail` 类型,章尾后 100 字内兑现,强度按 `hook_strength`
|
|
64
|
+
- **爽点**:按细纲的 `satisfaction_type` / `satisfaction_scale` 写
|
|
65
|
+
- **伏笔动作**:埋设自然融入场景;推进给提示不揭示;回收兑现读者预期
|
|
66
|
+
- **对话**:遮住角色名能分辨出是谁在说话
|
|
67
|
+
- **字数**:贴近细纲的 `word_target`,偏差超过 ±20% 会被 `WORD_COUNT` 拦下
|
|
68
|
+
- **角色出场**:本章**至少要提到一个已建档角色**,否则报 `NO_CHARACTER_MENTION`(warning)。提到角色后另有 `CHARACTER_MENTION`(信息性 warning,列出本章出场角色与出现次数)。校验器**不读细纲、不检查未建档的角色名** —— 该出场的角色没写不会被它拦,得自己对照细纲。
|
|
69
|
+
- **钩子类型**:章首用 7 式章首引子之一、章末用 13 式章末钩子之一,取值见 `09-reading-power.md`;登记进章台账的 `hook_head_type` / `hook_tail_type`,写错会被 `HOOK_TYPE_INVALID` 拦下
|
|
70
|
+
- **钩子不重复**:不得连续 3 章用同一种章末钩子(同一大分类也不行),否则 `HOOK_REPEAT`
|
|
71
|
+
- **微兑现**:每章至少 1 个微兑现(信息/关系/能力/资源/认可/情绪/线索),登记进章台账的 `micro_payoffs`,缺了会被 `MICRO_PAYOFF_MISSING` 拦下
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## 四、台账格式
|
|
76
|
+
|
|
77
|
+
**章台账.json**(每章追加一条;**重写某章时要替换掉同 ch 的旧条目,不要留两条**):
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"ch": 1,
|
|
82
|
+
"actual_word_count": 2050,
|
|
83
|
+
"scene_count": 3,
|
|
84
|
+
"hook_head_type": "未完成动作引子",
|
|
85
|
+
"hook_tail_type": "突然揭示",
|
|
86
|
+
"hook_strength": "强",
|
|
87
|
+
"micro_payoffs": ["信息兑现", "情绪兑现"],
|
|
88
|
+
"revival_events": [],
|
|
89
|
+
"main_progress": "灭门 + 收到妹妹手机",
|
|
90
|
+
"foreshadow_actions": ["埋 FS001", "埋 FS003"],
|
|
91
|
+
"character_status_changes": ["陆子仲:从保安 → 决定复仇"],
|
|
92
|
+
"in_world_time_start": "第 1 年秋,夜",
|
|
93
|
+
"in_world_time_end": "第 1 年秋,深夜"
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
| 字段 | 取值 | 说明 |
|
|
98
|
+
|---|---|---|
|
|
99
|
+
| `hook_head_type` | 7 式章首引子之一 | 见 `09-reading-power.md` |
|
|
100
|
+
| `hook_tail_type` | 13 式章末钩子之一 | 见 `09-reading-power.md`;不得连续 3 章用同一种 |
|
|
101
|
+
| `micro_payoffs` | 7 种微兑现,至少 1 个 | 信息/关系/能力/资源/认可/情绪/线索 |
|
|
102
|
+
| `revival_events` | 角色名列表 | 本章有角色复生时登记,格式 `"角色名:因何复生"`;否则空数组 |
|
|
103
|
+
|
|
104
|
+
**人物台账.json**(key 是角色名):
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"陆子仲": {
|
|
109
|
+
"current_location": "城中村出租屋",
|
|
110
|
+
"current_goal": "确认妹妹死因",
|
|
111
|
+
"known_info": ["妹妹的手机在园区被找到", "坤沙是园区老板"],
|
|
112
|
+
"status": "轻伤(左臂)",
|
|
113
|
+
"last_appear_chapter": 1
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**伏笔台账.json**(key 是伏笔 id):
|
|
119
|
+
|
|
120
|
+
```json
|
|
121
|
+
{
|
|
122
|
+
"FS001": {
|
|
123
|
+
"type": "小伏笔",
|
|
124
|
+
"content": "妹妹的旧手机",
|
|
125
|
+
"buried_chapter": 1,
|
|
126
|
+
"expected_recovery_chapter": 15,
|
|
127
|
+
"status": "open",
|
|
128
|
+
"actual_recovery_chapter": null
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**时间线台账.json**:
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"current_time": "第 1 年秋,深夜",
|
|
138
|
+
"elapsed_days": 1,
|
|
139
|
+
"events": [
|
|
140
|
+
{"ch": 1, "time": "第 1 年秋,夜", "event": "妹妹遗照", "location": "城中村"}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 五、会被校验拦下的东西
|
|
148
|
+
|
|
149
|
+
| 类别 | 具体 | 错误码 |
|
|
150
|
+
|---|---|---|
|
|
151
|
+
| 标题 | 首行格式错 / 章号与驱动指定的不一致 / 多个一级标题 | `CHAPTER_TITLE` / `CHAPTER_TITLE_DUP` |
|
|
152
|
+
| 正文 | 全文为空 / 正文过短(< 50 非空白字符)/ 空段落过多 | `EMPTY_CHAPTER` / `EMPTY_BODY` / `EMPTY_PARAGRAPH` |
|
|
153
|
+
| 字数 | 偏离基准或细纲 `word_target` 超过 ±20% | `WORD_COUNT` / `WORD_TARGET_MISMATCH` |
|
|
154
|
+
| 字符集 | 韩文谚文 / 日文假名 | `CHARSET_KO` / `CHARSET_JP` |
|
|
155
|
+
| 占位 | `[X]`(任意位置)/ `待确认` / `xxx`(独占一行)等 | `PLACEHOLDER` |
|
|
156
|
+
| 禁用词 | `基本一致` / `无重大问题` | `FORBIDDEN_WORD` |
|
|
157
|
+
| 钩子 | 细纲钩子强度为"强"时,章首/章尾各 100 字内的有效内容不足 30 字 | `HOOK_HEAD_MISSING` / `HOOK_TAIL_MISSING` |
|
|
158
|
+
| 钩子 | 台账登记的钩子类型不在 7 式/13 式之内 | `HOOK_TYPE_INVALID` |
|
|
159
|
+
| 钩子 | 连续 3 章用了同一种(或同一大分类)章末钩子 | `HOOK_REPEAT` |
|
|
160
|
+
| 微兑现 | 本章没有登记微兑现,或类型不在 7 种之内 | `MICRO_PAYOFF_MISSING` |
|
|
161
|
+
| 死人 | 已死亡角色在本章正文出现(且未登记复生) | `DEAD_CHARACTER_APPEARS` |
|
|
162
|
+
| 台账 | 章台账里没有本章条目 | `LEDGER_ENTRY_MISSING` |
|
|
163
|
+
| 角色 | 本章出场角色与出现次数(信息性提示,不检查未建档的角色名) | `CHARACTER_MENTION` |
|
|
164
|
+
| 细纲 | 本章没有细纲(重点章应补上) | `OUTLINE_MISSING`(warning) |
|
|
165
|
+
| 角色 | 本章没提到任何建档角色 | `NO_CHARACTER_MENTION`(warning) |
|
|
166
|
+
| 上游 | 上游数据不完整 / 上游未提供 / 上游未通过全量校验 | `UPSTREAM_PARTIAL`(warning)/ `UPSTREAM_MISSING` / `UPSTREAM_NOT_PASSED` |
|
|
167
|
+
| 规则文件 | 关系词表与元数据不同步 | `REL_KIND_META_DRIFT`(脚本缺陷,停止并上报) |
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 六、收到错误后怎么改
|
|
172
|
+
|
|
173
|
+
驱动会把校验错误原样发回来(`code` / `path` / `message` / `hint`)。按这个顺序处理:
|
|
174
|
+
|
|
175
|
+
1. **只改错误指向的字段**。错误没提到的部分不要动——前面已通过的章更要一字不动。
|
|
176
|
+
2. **按 `hint` 的方向改**,不要绕过(例如字数不够就扩写场景,不要改细纲)。
|
|
177
|
+
3. 改完**重写整章**(章节文件是整份覆盖,不是打补丁)。
|
|
178
|
+
4. 如果一个错误无法只靠改这一章解决(例如需要前情铺垫),在汇报里说明原因,由驱动决定怎么处理。
|
|
179
|
+
|
|
180
|
+
**汇报格式**(写完本轮后给一段话):
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
本轮完成:第 11-20 章
|
|
184
|
+
- 第11章《标题》(实际 2080 字),钩子 悬念对话/突然揭示(强),出场 陆子仲、陈队
|
|
185
|
+
- ...
|
|
186
|
+
埋设:FS003;回收:FS001
|
|
187
|
+
无细纲的章:第 14 章
|
|
188
|
+
```
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# 05 去 AI 味执行须知
|
|
2
|
+
|
|
3
|
+
> 本文件是去味阶段的**产物契约**:改什么文件、改成什么样、什么会被拦下。
|
|
4
|
+
> 改写手法(怎么把 AI 腔改成人话)在 `references/写作指导/10-deslop.md`。
|
|
5
|
+
> 去味的流程编排由插件的去味驱动负责:它逐章检测、备份、派活、复扫、判改动比例、
|
|
6
|
+
> 必要时会自动回滚原文。
|
|
7
|
+
> **你不需要自己跑检测脚本,也不需要自己决定改哪一章。**
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 一、核心铁律
|
|
12
|
+
|
|
13
|
+
> 1. **只改 AI 味,不改剧情**。人物、事件、因果、伏笔、事实、字数结构一律不动。
|
|
14
|
+
> 去味是"换个说法",不是"重写这一章"。
|
|
15
|
+
>
|
|
16
|
+
> 2. **只改驱动指出的目标文件**,直接覆盖原文件。不要新建文件、不要改文件名、
|
|
17
|
+
> 不要改第一行的标题(`# 第N章 <标题>`)。
|
|
18
|
+
>
|
|
19
|
+
> 3. **不要动台账**。`设定/raw/sources/写作/台账/` 下的文件由写作阶段维护,
|
|
20
|
+
> 本阶段碰了会和写作阶段的登记对不上。
|
|
21
|
+
>
|
|
22
|
+
> 4. **不要动 `模板/` 和 `references/` 下的任何文件**。这两个目录是只读输入。
|
|
23
|
+
>
|
|
24
|
+
> 5. **改动幅度要小**。驱动按改动比例判级:超过 35% 会**自动回滚原文**,
|
|
25
|
+
> 你的这一轮等于白做。改得少而准,比改得多而狠有用。
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 二、产物清单
|
|
30
|
+
|
|
31
|
+
| 产物 | 路径 | 谁写 |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| 第 N 章正文(改写后) | `设定/raw/sources/写作/第NNN章.md` | 你(覆盖原文件) |
|
|
34
|
+
| 原文备份 | `设定/raw/sources/写作/.revisions/第NNN章_<时间戳>.md` | 驱动(改写前自动备份) |
|
|
35
|
+
| 去味报告 | `审查报告/第NNN章_去AI味报告.md` | 驱动(按检测结果生成) |
|
|
36
|
+
|
|
37
|
+
你只负责第一项。备份和报告都由驱动写,你不要碰。
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## 三、怎么改
|
|
42
|
+
|
|
43
|
+
**手法见 `references/写作指导/10-deslop.md`**,那里有四种手法(拔高→事实 / 抽象→动作 /
|
|
44
|
+
套话→具体 / 排比→断句)、每种的例子,以及"不要做的事"。
|
|
45
|
+
|
|
46
|
+
本阶段特别强调两条:
|
|
47
|
+
|
|
48
|
+
1. **改句式,不删信息**。把拔高句换成具体动作或具体后果,不是把句子删短。
|
|
49
|
+
2. **不要机械替换**。把"此外,"整段删掉会让句子散架,把"至关重要"换成"重要"会丢掉语气。
|
|
50
|
+
AI 腔是句式问题,不是词的问题。
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## 四、会被拦下的东西
|
|
55
|
+
|
|
56
|
+
驱动在改写后会**再扫一遍**(复扫),`blocking` 类没清零就不算改完:
|
|
57
|
+
|
|
58
|
+
| 级别 | 错误码 | 含义 | 后果 |
|
|
59
|
+
|---|---|---|---|
|
|
60
|
+
| `blocking` | `AI_PATTERN_BLOCKING` | 命中就要改 | 复扫仍有命中 → 驱动会带着剩余清单再派一轮 |
|
|
61
|
+
| `advisory` | `AI_PATTERN_ADVISORY` | 只提示 | 不拦,但会写进报告 |
|
|
62
|
+
|
|
63
|
+
完整清单(24 类,每类带改法)见提示词末尾的「AI 模式清单」。
|
|
64
|
+
|
|
65
|
+
**驱动判定的三件事**(不是你能商量的):
|
|
66
|
+
|
|
67
|
+
1. **复扫**:改完必须清掉全部 `blocking`。
|
|
68
|
+
2. **改动比例**:超过 35% → 原文被回滚,本轮作废。
|
|
69
|
+
3. **回滚**:改动幅度或复扫结果不达标时,原文会被还原成改写前的样子。
|
|
70
|
+
所以不要在一次改写里塞太多东西。
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## 五、收到复扫结果后怎么改
|
|
75
|
+
|
|
76
|
+
驱动重派时会告诉你上一轮为什么没过:
|
|
77
|
+
|
|
78
|
+
| 情况 | 驱动的话 | 你该怎么改 |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| 改动超限被回滚 | "改动幅度超过 35%,原文已还原" | 只改列出的那几处,其余句子一个字不动 |
|
|
81
|
+
| 复扫仍有命中 | "仍有 N 处 blocking 没清掉" | 只针对剩下的类目继续改,别重写整章 |
|
|
82
|
+
| 文件没变 | "目标文件内容没有变化" | 确认你真的写回了文件,而不是只贴在回复里 |
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## 六、汇报格式
|
|
87
|
+
|
|
88
|
+
改完给一段话:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
第 12 章去味完成
|
|
92
|
+
- 改了 6 处:三段式法则 3 处(第 5、12、30 行)、破折号 2 处(第 8、19 行)、过度限定 1 处(第 22 行)
|
|
93
|
+
- 第 5 行:原文"他愤怒、悲伤、绝望",改为三句短句
|
|
94
|
+
- 第 8 行:破折号改为逗号,并把后半句提为独立句
|
|
95
|
+
- 剧情、人物、伏笔未改动
|
|
96
|
+
```
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Project Purpose
|
|
2
|
+
|
|
3
|
+
## Goal
|
|
4
|
+
|
|
5
|
+
分析 `raw/sources/骨架/`、`raw/sources/血肉/`、`raw/sources/节奏/` 三个目录下的设定文件,根据 heading 层级结构提炼内容到 `wiki/` 对应的子目录。
|
|
6
|
+
|
|
7
|
+
## Key Questions
|
|
8
|
+
|
|
9
|
+
1. `raw/sources/骨架/` 目录下的框架要素、角色、冲突是否完整?
|
|
10
|
+
2. `raw/sources/血肉/` 目录下的势力、物品、地点是否与骨架目录一致?
|
|
11
|
+
3. `raw/sources/节奏/` 目录下的细纲、分卷、伏笔是否与骨架、血肉匹配?
|
|
12
|
+
4. 三个目录下的设定之间是否存在冲突、矛盾或遗漏?
|
|
13
|
+
5. 伏笔的埋设、推进、回收是否形成完整闭环?
|
|
14
|
+
|
|
15
|
+
## Scope
|
|
16
|
+
|
|
17
|
+
**In scope:**
|
|
18
|
+
- `raw/sources/骨架/` 目录:框架要素、核心冲突、核心角色、主线支线、结局方向
|
|
19
|
+
- `raw/sources/血肉/` 目录:世界观、势力、物品、地点、关系网
|
|
20
|
+
- `raw/sources/节奏/` 目录:主线大纲、分卷表、情绪节奏、伏笔表、章节细纲
|
|
21
|
+
- 冲突检测:量化冲突、角色冲突、伏笔冲突、关系冲突
|
|
22
|
+
- 缺失检测:骨架缺失、血肉缺失、节奏缺失
|
|
23
|
+
|
|
24
|
+
**Out of scope:**
|
|
25
|
+
- `*闭环检查报告.md` 文件
|
|
26
|
+
- `故事框架.md` 文件
|
|
27
|
+
- 具体的章节正文内容
|
|
28
|
+
- 文笔、语句优化
|
|
29
|
+
|
|
30
|
+
## Thesis
|
|
31
|
+
|
|
32
|
+
> TBD
|
|
33
|
+
|
|
34
|
+
## Analysis Workflow
|
|
35
|
+
|
|
36
|
+
1. **第一步:骨架分析**
|
|
37
|
+
- 分析 `raw/sources/骨架/` 目录下的文件
|
|
38
|
+
- 每个 `## heading` 生成一个独立的 wiki 页面
|
|
39
|
+
- 根据 heading 名称推断 type
|
|
40
|
+
|
|
41
|
+
2. **第二步:血肉分析**
|
|
42
|
+
- 分析 `raw/sources/血肉/` 目录下的文件
|
|
43
|
+
- 势力/物品/地点文件根据 `## 基本信息` 等 heading 提取
|
|
44
|
+
- 生成关系网页面
|
|
45
|
+
|
|
46
|
+
3. **第三步:节奏分析**
|
|
47
|
+
- 分析 `raw/sources/节奏/` 目录下的文件
|
|
48
|
+
- 细纲_*.md 直接对应章节细纲
|
|
49
|
+
- 伏笔表生成伏笔回收页面
|
|
50
|
+
|
|
51
|
+
4. **第四步:冲突检测**
|
|
52
|
+
- 对比骨架、血肉、节奏三个目录的分析结果
|
|
53
|
+
- 检测量化冲突、角色冲突、伏笔冲突、关系冲突
|
|
54
|
+
- 生成 review 条目到 `.llm-wiki/review.json`
|
|
55
|
+
|
|
56
|
+
5. **第五步:缺失检测**
|
|
57
|
+
- 检查骨架、血肉、节奏三个目录是否有缺失内容
|
|
58
|
+
- 生成 review 条目
|
|
59
|
+
|
|
60
|
+
## Expected Outputs
|
|
61
|
+
|
|
62
|
+
- `wiki/框架-容量/`:容量.md
|
|
63
|
+
- `wiki/框架-结构/`:结构.md
|
|
64
|
+
- `wiki/框架-角色/`:角色.md
|
|
65
|
+
- `wiki/框架-冲突/`:冲突.md
|
|
66
|
+
- `wiki/框架-弧光/`:弧光.md
|
|
67
|
+
- `wiki/核心冲突/`:核心冲突详情
|
|
68
|
+
- `wiki/人物/`:角色详情
|
|
69
|
+
- `wiki/结构-三幕/`:三幕结构.md
|
|
70
|
+
- `wiki/结构-主线/`:主线.md
|
|
71
|
+
- `wiki/结构-支线/`:支线-{N}.md
|
|
72
|
+
- `wiki/结局/`:结局.md
|
|
73
|
+
- `wiki/世界观/`:世界观.md
|
|
74
|
+
- `wiki/势力/`:势力详情
|
|
75
|
+
- `wiki/物品/`:物品详情
|
|
76
|
+
- `wiki/地点/`:地点详情
|
|
77
|
+
- `wiki/关系/`:关系网.md
|
|
78
|
+
- `wiki/技能/`:技能详情
|
|
79
|
+
- `wiki/节奏-大纲/`:主线大纲.md
|
|
80
|
+
- `wiki/节奏-分卷/`:分卷表.md
|
|
81
|
+
- `wiki/节奏-情绪/`:情绪节奏.md
|
|
82
|
+
- `wiki/节奏-伏笔/`:伏笔表.md
|
|
83
|
+
- `wiki/细纲/`:细纲_{NNN}.md
|
|
84
|
+
- `wiki/审查-冲突/`:冲突检测结果
|
|
85
|
+
- `wiki/审查-缺失/`:缺失检测结果
|
|
86
|
+
- `.llm-wiki/review.json`:结构化的冲突/缺失列表
|
|
87
|
+
|
|
88
|
+
## Heading to Type Mapping
|
|
89
|
+
|
|
90
|
+
| Heading Name | Inferred Type |
|
|
91
|
+
|--------------|-----------|
|
|
92
|
+
| 容量要素 | 框架-容量 |
|
|
93
|
+
| 结构要素 | 框架-结构 |
|
|
94
|
+
| 角色要素 | 框架-角色 |
|
|
95
|
+
| 冲突要素 | 框架-冲突 |
|
|
96
|
+
| 弧光要素 | 框架-弧光 |
|
|
97
|
+
| 基本信息 | base type(根据文件路径) |
|
|
98
|
+
| 核心成员 / 角色名 | 角色 |
|
|
99
|
+
| 势力设定 / 世界观设定 | 继承父级 |
|
|
100
|
+
| 势力资源 / 物品 | 物品/地点 |
|
|
101
|
+
| 与其他势力的关系 | 关系 |
|
|
102
|
+
| 卷数与章节分配 | 分卷表 |
|
|
103
|
+
|
|
104
|
+
## Files to Skip
|
|
105
|
+
|
|
106
|
+
- `*闭环检查报告.md` - 分析报告,不需要提炼
|
|
107
|
+
- `故事框架.md` - 纯描述性内容
|