@cloud411716/fancy-webnovel 2.2.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client.js +201 -15
- package/cordis.patch.yml +5 -0
- package/docs/douyin-plugin.md +118 -0
- package/docs/material-library/README.md +404 -0
- package/docs/material-library/import.js +437 -0
- package/docs/material-library/prompt.md +370 -0
- package/docs/material-library/queries.surql +94 -0
- package/docs/material-library/sample.jsonl +14 -0
- package/docs/material-library/schema.surql +46 -0
- package/docs/mcp-profile.example.yml +24 -0
- package/docs/story-graph-design.md +602 -0
- package/docs/story-graph-validation.md +81 -0
- package/docs/workspace-mcp.md +284 -0
- package/index.js +11 -7
- package/lib/atomic-write.js +109 -0
- package/lib/chapter-order.js +100 -0
- package/lib/confirmation.js +80 -0
- package/lib/db-init.js +123 -0
- package/lib/deployed-state.js +11 -11
- package/lib/direction-labels.js +265 -0
- package/lib/error-codes.js +31 -31
- package/lib/infra.js +29 -4
- package/lib/material-db.js +149 -0
- package/lib/path-guard.js +150 -0
- package/lib/projects.js +400 -0
- package/lib/scraper-utils.js +140 -0
- package/lib/surreal-server.js +338 -0
- package/lib/topic-decision.js +860 -0
- package/lib/topic-fields.js +251 -0
- package/lib/topic-schema.js +225 -0
- package/lib/workspace.js +501 -0
- package/package.json +29 -4
- package/plugins/fancy-analyze/analyze-definitions.md +519 -0
- package/plugins/fancy-analyze/index.js +1128 -77
- package/plugins/fancy-analyze/ingest-coverage.js +107 -0
- package/plugins/fancy-analyze/schema-analyze.md +355 -107
- package/plugins/fancy-analyze/scripts/append-summary-chapter.js +612 -0
- package/plugins/fancy-analyze/summary-progress.js +71 -7
- package/plugins/fancy-analyze/templates.js +437 -139
- package/plugins/fancy-bootstrap/index.js +276 -131
- package/plugins/fancy-bootstrap/scripts/init.js +59 -25
- package/plugins/fancy-bootstrap/templates.js +35 -18
- package/plugins/fancy-db/index.js +172 -0
- package/plugins/fancy-douyin/deploy.js +134 -0
- package/plugins/fancy-douyin/index.js +551 -0
- package/plugins/fancy-douyin/prompts/01-analysis-prompt.md +84 -0
- package/plugins/fancy-douyin/scripts/crawl-note.cjs +194 -0
- package/plugins/fancy-douyin/scripts/lib.cjs +197 -0
- package/plugins/fancy-douyin/scripts/scan-account.cjs +128 -0
- package/plugins/fancy-douyin/scripts/start-chrome.cjs +203 -0
- package/plugins/fancy-douyin/state.js +197 -0
- package/plugins/fancy-douyin/templates.js +127 -0
- package/plugins/fancy-export/exporter.js +805 -0
- package/plugins/fancy-export/index.js +63 -0
- package/plugins/fancy-import/import-driver.js +29 -6
- package/plugins/fancy-import/index.js +13 -5
- package/plugins/fancy-import/prompts/01-import-prompt.md +39 -14
- package/plugins/fancy-import/templates.js +17 -8
- package/plugins/fancy-material/exporter.js +153 -0
- package/plugins/fancy-material/genres.js +256 -0
- package/plugins/fancy-material/index.js +835 -0
- package/plugins/fancy-material/inventory.js +143 -0
- package/plugins/fancy-material/kinds.js +313 -0
- package/plugins/fancy-material/queue.js +55 -0
- package/plugins/fancy-material/scripts/query.js +254 -0
- package/plugins/fancy-material/templates.js +258 -0
- package/plugins/fancy-material/tool-deploy.js +138 -0
- package/plugins/fancy-material/validate.js +149 -0
- package/plugins/fancy-project/index.js +133 -0
- package/plugins/fancy-scan/existing-block.js +100 -0
- package/plugins/fancy-scan/index.js +410 -21
- package/plugins/fancy-scan/prompts/01-analysis-prompt.md +302 -0
- package/plugins/fancy-scan/scripts/append-block.js +725 -0
- package/plugins/fancy-scan/scripts/report-validate.js +824 -0
- package/plugins/fancy-scan/scripts/run-scan.js +169 -22
- package/plugins/fancy-scan/scripts/scrapers/fanqie-rank-scraper.js +145 -16
- package/plugins/fancy-scan/scripts/scrapers/jjwxc-rank-scraper.js +179 -49
- package/plugins/fancy-scan/scripts/scrapers/qimao-rank-scraper.js +38 -20
- package/plugins/fancy-scan/templates/blocks.js +155 -0
- package/plugins/fancy-scan/templates/platforms.js +372 -0
- package/plugins/fancy-scan/templates/report-schema.js +90 -0
- package/plugins/fancy-scan/templates.js +545 -146
- package/plugins/fancy-scan/tool-deploy.js +335 -0
- package/plugins/fancy-scan/wait-turn.js +46 -0
- package/plugins/fancy-story-builder/db/README.md +106 -0
- package/plugins/fancy-story-builder/db/client.js +228 -0
- package/plugins/fancy-story-builder/db/commands.js +145 -0
- package/plugins/fancy-story-builder/db/ids.js +39 -0
- package/plugins/fancy-story-builder/db/import.js +798 -0
- package/plugins/fancy-story-builder/db/project.js +299 -0
- package/plugins/fancy-story-builder/db/query.js +361 -0
- package/plugins/fancy-story-builder/db/schema.js +417 -0
- package/plugins/fancy-story-builder/db/stage-sync.js +238 -0
- package/plugins/fancy-story-builder/flesh-output.js +19 -6
- package/plugins/fancy-story-builder/index.js +4105 -396
- package/plugins/fancy-story-builder/patch-driver.js +390 -0
- package/plugins/fancy-story-builder/prompts/01-skeleton-prompt.md +29 -19
- package/plugins/fancy-story-builder/prompts/02-flesh-prompt.md +72 -10
- package/plugins/fancy-story-builder/prompts/03-rhythm-prompt.md +40 -5
- package/plugins/fancy-story-builder/prompts/04-writing-prompt.md +37 -0
- package/plugins/fancy-story-builder/purpose-template.md +42 -66
- package/plugins/fancy-story-builder/references/formulas-skeleton.json +229 -56
- package/plugins/fancy-story-builder/references/genre-profiles.json +3514 -0
- package/plugins/fancy-story-builder/references/glossary.md +15 -6
- package/plugins/fancy-story-builder/references/index.md +97 -6
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/00-index.md +1 -1
- package/plugins/fancy-story-builder/references//350/212/202/345/245/217/346/214/207/345/257/274/07-audit.md +25 -7
- package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/01-character.md +5 -1
- package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/03-relations.md +6 -2
- package/plugins/fancy-story-builder/references//350/241/200/350/202/211/346/214/207/345/257/274/05-audit.md +15 -5
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/00-index.md +1 -1
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/01-positioning.md +2 -1
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/03-entities.md +1 -1
- package/plugins/fancy-story-builder/references//351/252/250/346/236/266/346/214/207/345/257/274/06-audit.md +19 -1
- package/plugins/fancy-story-builder/schema-setting.json +1100 -0
- package/plugins/fancy-story-builder/schema-setting.md +201 -293
- package/plugins/fancy-story-builder/scripts/brief-validate.js +164 -0
- package/plugins/fancy-story-builder/scripts/content-quality.js +4 -1
- package/plugins/fancy-story-builder/scripts/flesh-validate.js +135 -12
- package/plugins/fancy-story-builder/scripts/graph-utils.js +146 -47
- package/plugins/fancy-story-builder/scripts/reference-log.js +110 -0
- package/plugins/fancy-story-builder/scripts/rhythm-validate.js +100 -4
- package/plugins/fancy-story-builder/scripts/schema-pages.js +2668 -0
- package/plugins/fancy-story-builder/scripts/semantic-lint.js +5 -1
- package/plugins/fancy-story-builder/scripts/skeleton-validate.js +158 -17
- package/plugins/fancy-story-builder/scripts/stage-batches.js +36 -2
- package/plugins/fancy-story-builder/scripts/stage-contract.js +12 -0
- package/plugins/fancy-story-builder/scripts/story-artifacts.js +933 -0
- package/plugins/fancy-story-builder/scripts/upstream-query.js +1 -1
- package/plugins/fancy-story-builder/scripts/v2/baseline.js +112 -0
- package/plugins/fancy-story-builder/scripts/v2/cast.js +517 -0
- package/plugins/fancy-story-builder/scripts/v2/context.js +434 -0
- package/plugins/fancy-story-builder/scripts/v2/contracts.js +493 -0
- package/plugins/fancy-story-builder/scripts/v2/core.js +419 -0
- package/plugins/fancy-story-builder/scripts/v2/engine.js +1068 -0
- package/plugins/fancy-story-builder/scripts/v2/export-markdown.js +794 -0
- package/plugins/fancy-story-builder/scripts/v2/genre.js +195 -0
- package/plugins/fancy-story-builder/scripts/v2/knowledge.js +321 -0
- package/plugins/fancy-story-builder/scripts/v2/macro.js +409 -0
- package/plugins/fancy-story-builder/scripts/v2/manifest.js +538 -0
- package/plugins/fancy-story-builder/scripts/v2/migrate.js +137 -0
- package/plugins/fancy-story-builder/scripts/v2/prompts.js +1335 -0
- package/plugins/fancy-story-builder/scripts/v2/rhythm.js +618 -0
- package/plugins/fancy-story-builder/scripts/v2/scale.js +843 -0
- package/plugins/fancy-story-builder/scripts/v2/snapshot.js +121 -0
- package/plugins/fancy-story-builder/scripts/v2/stages.js +273 -0
- package/plugins/fancy-story-builder/scripts/v2/writing.js +216 -0
- package/plugins/fancy-story-builder/storydb/README.md +271 -0
- package/plugins/fancy-story-builder/storydb/cli.js +458 -0
- package/plugins/fancy-story-builder/storydb/client.js +351 -0
- package/plugins/fancy-story-builder/storydb/compile.js +452 -0
- package/plugins/fancy-story-builder/storydb/context.js +288 -0
- package/plugins/fancy-story-builder/storydb/definitions.js +699 -0
- package/plugins/fancy-story-builder/storydb/driver.js +106 -0
- package/plugins/fancy-story-builder/storydb/dsh-tools.js +313 -0
- package/plugins/fancy-story-builder/storydb/export.js +175 -0
- package/plugins/fancy-story-builder/storydb/ids.js +31 -0
- package/plugins/fancy-story-builder/storydb/impact.js +170 -0
- package/plugins/fancy-story-builder/storydb/import.js +559 -0
- package/plugins/fancy-story-builder/storydb/mcp.js +99 -0
- package/plugins/fancy-story-builder/storydb/prompts.js +952 -0
- package/plugins/fancy-story-builder/storydb/stage-command.js +379 -0
- package/plugins/fancy-story-builder/storydb/stage.js +426 -0
- package/plugins/fancy-story-builder/storydb/store.js +891 -0
- package/plugins/fancy-story-builder/storydb/tools.js +592 -0
- package/plugins/fancy-story-builder/storydb/validation.js +183 -0
- package/plugins/fancy-story-builder/templates/v2/10-scale/scale-template.json +144 -0
- package/plugins/fancy-story-builder/templates/v2/20-macro/emotion-template.json +15 -0
- package/plugins/fancy-story-builder/templates/v2/20-macro/endings-template.json +16 -0
- package/plugins/fancy-story-builder/templates/v2/20-macro/lines-template.json +28 -0
- package/plugins/fancy-story-builder/templates/v2/20-macro/roles-template.json +10 -0
- package/plugins/fancy-story-builder/templates/v2/20-macro/story-template.json +19 -0
- package/plugins/fancy-story-builder/templates/v2/20-macro/volumes-template.json +24 -0
- package/plugins/fancy-story-builder/templates/v2/20-macro/world-template.json +24 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/characters-template.json +49 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/climaxes-template.json +14 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/conflicts-template.json +30 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/factions-template.json +18 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/foreshadows-template.json +29 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/information-template.json +29 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/items-template.json +13 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/locations-template.json +12 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/payoffs-template.json +16 -0
- package/plugins/fancy-story-builder/templates/v2/30-cast/relations-template.json +44 -0
- package/plugins/fancy-story-builder/templates/v2/40-rhythm/chapter-map-template.json +81 -0
- package/plugins/fancy-story-builder/templates/v2/40-rhythm/outline-template.json +162 -0
- package/plugins/fancy-story-builder/templates/v2/50-writing/ledger-template.json +46 -0
- package/plugins/fancy-story-builder/templates/v2/60-deslop/report-template.json +10 -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 +267 -44
- 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 +121 -19
- 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 +129 -21
- package/plugins/fancy-story-builder/templates//350/241/200/350/202/211//345/205/266/344/273/226/345/256/236/344/275/223/346/250/241/346/235/277.json +62 -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 +76 -17
- 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 +56 -8
- 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 +63 -13
- 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 +34 -6
- 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 +81 -18
- 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 +202 -42
- 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 +160 -27
- 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 +217 -41
- 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 +215 -41
- package/plugins/fancy-story-builder/templates.js +272 -74
- package/plugins/fancy-story-builder/wiki-references.js +429 -93
- package/plugins/fancy-story-builder/writing-driver.js +336 -9
- package/plugins/fancy-topic/index.js +414 -61
- package/plugins/fancy-topic/prompts/01-exploration-prompt.md +115 -0
- package/plugins/fancy-topic/scripts/save-suggestion.js +219 -0
- package/plugins/fancy-topic/scripts/select-topic.js +106 -63
- package/plugins/fancy-topic/templates.js +225 -122
- package/plugins/fancy-topic/tool-deploy.js +200 -0
- package/lib/safe-rm.js +0 -94
|
@@ -1,324 +1,232 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
|
18
|
-
|
|
19
|
-
|
|
|
20
|
-
|
|
|
21
|
-
|
|
|
22
|
-
|
|
|
23
|
-
|
|
|
24
|
-
|
|
|
25
|
-
|
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
|
|
|
29
|
-
|
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
|
33
|
-
|
|
|
34
|
-
| 来源 | wiki/来源/ |
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
|
56
|
-
| 场景 | 场景-{章节号}-{场景序号}.md | 场景-第1章-场景1.md |
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## ⚠️ 语言强制要求
|
|
61
|
-
|
|
62
|
-
**所有输出内容必须是中文,包括:**
|
|
63
|
-
|
|
64
|
-
1. **文件名**:使用中文,如 `时间线-全书主线.md`
|
|
65
|
-
2. **title**:使用中文,如 `全书主线时间线`
|
|
66
|
-
3. **正文内容**:所有文字描述必须使用中文
|
|
67
|
-
4. **表格内容**:所有表格中的文字必须使用中文
|
|
68
|
-
5. **type 值**:所有 type 的值必须是中文,如 `时间线`、`冲突演变`
|
|
69
|
-
|
|
70
|
-
**禁止输出英文内容。唯一例外:代码块、JSON、YAML 格式中的英文键名(如 `type:`、`title:`)。**
|
|
71
|
-
|
|
72
|
-
---
|
|
73
|
-
|
|
74
|
-
## ⚠️ 绝对禁止的行为
|
|
75
|
-
|
|
76
|
-
1. **禁止创建新的 type** - 只能使用本 schema 定义的 type
|
|
77
|
-
2. **禁止创建新的目录** - 只能使用本 schema 定义的目录
|
|
78
|
-
3. **禁止生成"无"的页面** - 来源表格中标记为"无"的 type 不需要生成
|
|
79
|
-
4. **禁止跳过闭环检查** - 必须检查所有"有"的页面是否存在
|
|
80
|
-
5. **缺失必须补充** - 如果"有"的页面缺失,必须生成 review 并补充
|
|
81
|
-
|
|
82
|
-
---
|
|
83
|
-
|
|
84
|
-
## 各文件 heading 到 type 的映射
|
|
85
|
-
|
|
86
|
-
### 1. 主线大纲.md
|
|
87
|
-
|
|
88
|
-
| heading | 提取的 type | 说明 |
|
|
89
|
-
|---------|-------------|------|
|
|
90
|
-
| 全书主线时间线 | 时间线 | 表格:阶段、章节范围、核心任务、关键情节点 |
|
|
91
|
-
| 核心冲突演变 | 冲突演变 | 列表:第一阶段/第二阶段/...:章节范围、冲突描述 |
|
|
92
|
-
| 卷核心任务 | 时间线 | 表格:卷号、卷名、核心任务、期望情感弧 |
|
|
93
|
-
| 伏笔宏观布局 | 伏笔布局 | 表格:伏笔ID、类型、内容摘要、预期回收阶段 |
|
|
94
|
-
| 主线推进节点 | 主线推进 | 列表:章节范围、推进内容 |
|
|
95
|
-
| 章节钩子分布 | 章节钩子 | 表格:章节号、钩子类型、钩子内容 |
|
|
96
|
-
| 情绪节奏概览 | 情绪弧线 | 概览内容 |
|
|
97
|
-
| 爽点密度规划 | 爽点 | 表格:章节范围、爽点类型、爽点描述 |
|
|
98
|
-
| 高潮设计 | 高潮点 | 表格:高潮类型、章节位置、情绪峰值 |
|
|
99
|
-
| 角色弧光节点分布 | 角色弧光 | 表格:角色名、弧光节点章节、弧光描述 |
|
|
100
|
-
| 支线交织点与主线关系 | 支线交织 | 表格:交织点、涉及章节、与主线关系 |
|
|
101
|
-
|
|
102
|
-
### 2. 分卷表.md
|
|
103
|
-
|
|
104
|
-
| heading | 提取的 type | 说明 |
|
|
105
|
-
|---------|-------------|------|
|
|
106
|
-
| 整体结构 | 分卷 | 结构概述 |
|
|
107
|
-
| 分卷详情 | 分卷 | 详细分卷信息 |
|
|
108
|
-
| 卷内节奏起伏 | 分卷 | 节奏起伏描述 |
|
|
109
|
-
| 卷内伏笔布局 | 分卷 | 伏笔布局描述 |
|
|
110
|
-
| 卷末收束要素 | 分卷 | 卷末收束要素描述 |
|
|
111
|
-
| 章节阶段分配 | 分卷 | 表格:阶段、章节范围、核心任务 |
|
|
112
|
-
|
|
113
|
-
### 3. 情绪节奏.md
|
|
114
|
-
|
|
115
|
-
| heading | 提取的 type | 说明 |
|
|
116
|
-
|---------|-------------|------|
|
|
117
|
-
| 整体情绪弧线 | 情绪弧线 | 弧线类型(V形/倒V形/W形/递进/延迟满足) |
|
|
118
|
-
| 各卷情绪分布 | 情绪弧线 | 表格:卷号、开局/中段/高潮/收束情绪 |
|
|
119
|
-
| 高潮点分布 | 高潮点 | 表格:小高潮/中高潮/大高潮的章节位置、情绪峰值 |
|
|
120
|
-
|
|
121
|
-
### 4. 伏笔表.md
|
|
122
|
-
|
|
123
|
-
| heading | 提取的 type | 说明 |
|
|
124
|
-
|---------|-------------|------|
|
|
125
|
-
| 伏笔列表 | 伏笔 | 表格:ID、类型、内容摘要、埋设章节、推进章节、回收章节、状态 |
|
|
126
|
-
| 伏笔状态 | 伏笔 | 状态说明:埋设 → 推进中 → 已回收/已失效/已放弃 |
|
|
127
|
-
| 伏笔排布原则 | 伏笔 | 排布原则描述 |
|
|
128
|
-
| 伏笔与章节对照 | 伏笔 | 伏笔与章节对照表 |
|
|
129
|
-
|
|
130
|
-
### 5. `细纲_*.md`(每个文件对应一个章节)
|
|
131
|
-
|
|
132
|
-
| heading | 提取的 type | 说明 |
|
|
133
|
-
|---------|-------------|------|
|
|
134
|
-
| 基本信息 | 章节细纲 | 表格:章号、标题、字数目标、视角 |
|
|
135
|
-
| 章节定位 | 章节细纲 | 主线进度、副线进度 |
|
|
136
|
-
| 章节时间线 | 章节细纲 | 起点/终点时间 |
|
|
137
|
-
| 必覆盖节点 | 章节细纲 | 节点列表(≥3个) |
|
|
138
|
-
| 爽点设计 | 爽点 | 类型(打脸/收获/身份/情感/智力/探索/团战)、设计内容 |
|
|
139
|
-
| 伏笔动作 | 伏笔 | 埋设/推进/回收的伏笔ID |
|
|
140
|
-
| 章首钩子内容 | 章节钩子 | 章首钩子具体内容 |
|
|
141
|
-
| 章末钩子内容 | 章节钩子 | 章末钩子具体内容 |
|
|
142
|
-
| 本章禁区 | 章节细纲 | 绝对不能出现的内容 |
|
|
143
|
-
| 场景分解 | 场景 | 场景列表 |
|
|
144
|
-
| 与前序/后续章节关系 | 章节细纲 | 章节关系描述 |
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## 来源要求(必须执行)
|
|
149
|
-
|
|
150
|
-
**每个 wiki 页面必须包含"来源"章节,作为第一个内容块。**
|
|
151
|
-
|
|
152
|
-
来源格式示例:
|
|
153
|
-
|
|
154
|
-
```markdown
|
|
155
|
-
## 来源
|
|
156
|
-
|
|
157
|
-
| 字段 | 值 |
|
|
158
|
-
|------|---|
|
|
159
|
-
| 来源文件 | raw/sources/节奏/主线大纲.md |
|
|
160
|
-
| 来源类型 | 主线大纲 |
|
|
161
|
-
| 生成时间 | YYYY-MM-DD HH:mm:ss |
|
|
162
|
-
|
|
163
|
-
### 本页包含的 type
|
|
164
|
-
|
|
165
|
-
| type | 是否生成 | 说明 |
|
|
1
|
+
# 故事设定分析规范
|
|
2
|
+
|
|
3
|
+
## Page Types
|
|
4
|
+
|
|
5
|
+
| Type | Directory | Purpose |
|
|
6
|
+
|------|-----------|---------|
|
|
7
|
+
| 书 | wiki/书/ | 全书根对象 |
|
|
8
|
+
| 卷 | wiki/卷/ | 分卷 |
|
|
9
|
+
| 幕 | wiki/幕/ | 幕 |
|
|
10
|
+
| 章 | wiki/章/ | 章节元数据 |
|
|
11
|
+
| 细纲要求 | wiki/细纲要求/ | 一条细纲要求 |
|
|
12
|
+
| 场景 | wiki/场景/ | 场景 |
|
|
13
|
+
| 人物 | wiki/人物/ | 角色 |
|
|
14
|
+
| 其他实体 | wiki/其他实体/ | 灵魂/神魂/器灵等题材特有存在 |
|
|
15
|
+
| 势力 | wiki/势力/ | 势力 |
|
|
16
|
+
| 地点 | wiki/地点/ | 地点 |
|
|
17
|
+
| 道具 | wiki/道具/ | 关键道具 |
|
|
18
|
+
| 冲突 | wiki/冲突/ | 冲突 |
|
|
19
|
+
| 伏笔 | wiki/伏笔/ | 伏笔 |
|
|
20
|
+
| 高潮 | wiki/高潮/ | 高潮点 |
|
|
21
|
+
| 爽点 | wiki/爽点/ | 爽点 |
|
|
22
|
+
| 结局 | wiki/结局/ | 结局 |
|
|
23
|
+
| 世界观 | wiki/世界观/ | 世界观规则 |
|
|
24
|
+
| 主线 | wiki/主线/ | 主线 |
|
|
25
|
+
| 支线 | wiki/支线/ | 支线 |
|
|
26
|
+
| 关系 | wiki/关系/ | 角色关系 |
|
|
27
|
+
| 势力关系 | wiki/势力关系/ | 势力关系 |
|
|
28
|
+
| 势力成员 | wiki/势力成员/ | 势力成员关系 |
|
|
29
|
+
| 主题 | wiki/主题/ | 主题 |
|
|
30
|
+
| 角色弧光 | wiki/角色弧光/ | 角色弧光 |
|
|
31
|
+
| 角色状态 | wiki/角色状态/ | 角色状态快照 |
|
|
32
|
+
| 时间线 | wiki/时间线/ | 时间线事件 |
|
|
33
|
+
| 正文 | wiki/正文/ | 章节正文 |
|
|
34
|
+
| 来源 | wiki/来源/ | 来源摘要(辅助页) |
|
|
35
|
+
| 信息差 | wiki/信息差/ | 一条信息差及其知情范围 |
|
|
36
|
+
| 章节细纲 | wiki/细纲/ | 每章写作硬约束(时间线/伏笔/爽点/人物/信息差/必须与禁止) |
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## 核心原则
|
|
41
|
+
|
|
42
|
+
1. 2.0 项目里 `设定/00-baseline/`、`10-scale/`、`20-macro/`、`30-cast/`、`40-rhythm/`、`50-writing/` 下的阶段 JSON 是**事实源**;`wiki/` 是确定性派生视图。旧 1.x 项目仍以 `设定/raw/sources/骨架|血肉|节奏|写作/` 为事实源。
|
|
43
|
+
2. 上表中的故事对象页由插件的 `schemaingest` 从阶段 JSON 生成。LLM **禁止**创建、改名、移动、删除这些对象页,也**禁止**手工补写它们的 frontmatter。
|
|
44
|
+
3. LLM ingest 只做两件事:
|
|
45
|
+
- 为每个来源文件写一个 `wiki/来源/*.md` 摘要页(`type: 来源`);
|
|
46
|
+
- 写无法结构化归类的补充说明,但不得新增故事对象页。
|
|
47
|
+
4. type 系统是封闭的:只能使用上表定义的值,禁止新增 type 或目录。
|
|
48
|
+
5. 每条人物关系、势力关系、势力成员都生成**独立页面**,供 llm_wiki 做语义检查。关系类型 `kind` 是自由文本,**不设枚举**;插件只校验两端存在、不能自指、变化节点完整,关系是否自洽交给语义检查。
|
|
49
|
+
6. 所有输出必须是中文。唯一例外:代码块、JSON、YAML 中的英文字段名。
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## ID 规则
|
|
54
|
+
|
|
55
|
+
| Type | ID 格式 | 示例 |
|
|
166
56
|
|------|---------|------|
|
|
167
|
-
|
|
|
168
|
-
|
|
|
169
|
-
|
|
|
170
|
-
|
|
|
171
|
-
|
|
|
172
|
-
|
|
|
57
|
+
| 书 | `BOOK` | BOOK |
|
|
58
|
+
| 卷 | `V{NNN}` | V001 |
|
|
59
|
+
| 幕 | `A{NNN}` | A001 |
|
|
60
|
+
| 章 | `CH{NNN}` | CH001 |
|
|
61
|
+
| 细纲要求 | `RQ-CH{NNN}-{NN}` | RQ-CH001-01 |
|
|
62
|
+
| 场景 | `SCN-CH{NNN}-{NN}` | SCN-CH001-01 |
|
|
63
|
+
| 人物 | `C{NNN}` | C001 |
|
|
64
|
+
| 其他实体 | `O{NNN}` | O001 |
|
|
65
|
+
| 势力 | `F{NNN}` | F001 |
|
|
66
|
+
| 地点 | `L{NNN}` | L001 |
|
|
67
|
+
| 道具 | `P{NNN}` | P001 |
|
|
68
|
+
| 冲突 | `X{NNN}` | X001 |
|
|
69
|
+
| 伏笔 | `FS{NNN}` | FS001 |
|
|
70
|
+
| 高潮 | `CL{NNN}` | CL001 |
|
|
71
|
+
| 爽点 | `PL{NNN}` | PL001 |
|
|
72
|
+
| 结局 | `E{NNN}` | E001 |
|
|
73
|
+
| 世界观 | `SR{NNN}` / `R{NNN}` / `I{NNN}` | R001 |
|
|
74
|
+
| 主线 | `M{NNN}` | M001 |
|
|
75
|
+
| 支线 | `B{NNN}` | B001 |
|
|
76
|
+
| 关系 | `REL{NNN}` | REL001 |
|
|
77
|
+
| 势力关系 | `FREL{NNN}` | FREL001 |
|
|
78
|
+
| 势力成员 | `MEM{NNN}` | MEM001 |
|
|
79
|
+
| 主题 | `TH{NNN}` | TH001 |
|
|
80
|
+
| 角色弧光 | `ARC-C{NNN}-V{NNN}` | ARC-C001-V001 |
|
|
81
|
+
| 角色状态 | `CS-C{NNN}-CH{NNN}` | CS-C001-CH001 |
|
|
82
|
+
| 时间线 | `T{NNN}` | T001 |
|
|
83
|
+
| 正文 | `TXT-CH{NNN}` | TXT-CH001 |
|
|
84
|
+
| 来源 | `SRC-{slug}` | SRC-skeleton-entity |
|
|
85
|
+
| 信息差 | `IG-X{NNN}-{NN}` | IG-X001-01 |
|
|
86
|
+
| 章节细纲 | `OB-CH{NNN}` | OB-CH001 |
|
|
87
|
+
|
|
88
|
+
ID 一经生成必须稳定。后续阶段只能更新同一 ID 的正文或字段,不能换 ID 重建。
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## 标题规则
|
|
93
|
+
|
|
94
|
+
所有页面标题必须是:
|
|
95
|
+
|
|
96
|
+
```text
|
|
97
|
+
<ID>_<中文标题>
|
|
173
98
|
```
|
|
174
99
|
|
|
175
|
-
|
|
176
|
-
- "有"的页面**必须生成**
|
|
177
|
-
- "无"的页面**不需要生成**
|
|
178
|
-
- 闭环检查时,如果在"### 本页包含的 type"表格中"是否生成"列为"有"的页面缺失,**必须补充**
|
|
100
|
+
例如:
|
|
179
101
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
对于每个标记为"有"的 type,必须检查:
|
|
187
|
-
- wiki 中是否存在对应的页面
|
|
188
|
-
- 如果缺失,**必须立即补充页面**才能 ingest 下一个文件
|
|
102
|
+
- `BOOK_香火簿`
|
|
103
|
+
- `V001_除夕分岁`
|
|
104
|
+
- `CH001_第1章`
|
|
105
|
+
- `RQ-CH001-01_CH001 主功能`
|
|
106
|
+
- `C001_陆守拙`
|
|
107
|
+
- `F001_陆氏宗族`
|
|
189
108
|
|
|
109
|
+
ID 前缀用于排序和定位,后面的中文标题用于阅读。
|
|
190
110
|
|
|
191
111
|
---
|
|
192
112
|
|
|
193
|
-
##
|
|
113
|
+
## 链接规则
|
|
194
114
|
|
|
195
|
-
|
|
115
|
+
- 页面之间的关系只写在 frontmatter 的 `related` 里。
|
|
116
|
+
- `related` 必须使用 `[[ID|完整标题]]`:链接目标是**文件名里的 ID**,`|` 后面是给人看的标题。
|
|
117
|
+
只写 `[[完整标题]]` 会让 llm_wiki 去找 `C001_陆守拙.md`,但实际文件是 `C001.md`,UI 会显示 “Related page not found”。
|
|
196
118
|
|
|
197
119
|
```yaml
|
|
198
|
-
---
|
|
199
|
-
type: 时间线
|
|
200
|
-
title: 全书主线时间线
|
|
201
|
-
sources: [raw/sources/节奏/主线大纲.md]
|
|
202
120
|
related:
|
|
203
|
-
-
|
|
204
|
-
|
|
205
|
-
-
|
|
206
|
-
title: 伏笔宏观布局
|
|
207
|
-
---
|
|
121
|
+
- "[[V001|V001_除夕分岁]]"
|
|
122
|
+
- "[[CH001|CH001_第1章]]"
|
|
123
|
+
- "[[C001|C001_陆守拙]]"
|
|
208
124
|
```
|
|
209
125
|
|
|
210
|
-
|
|
126
|
+
- 不要写 `related: [F001]`,也不要写 `related: [陆氏宗族]`。
|
|
127
|
+
- 正文不要再生成“关系网 / 上级 / 下级 / 相邻”这类区块。
|
|
128
|
+
如果正文确实需要内联链接,只使用 `[[ID]]` 占位符作为覆盖锚点,不要用关系表表达关系。
|
|
129
|
+
- 每个页面至少要链接到一个相关页面;所有页面最终要能连成一张网,不能有孤立页面。
|
|
130
|
+
|
|
131
|
+
### `related` 应该包含什么
|
|
132
|
+
|
|
133
|
+
| 页面类型 | 建议链接到 |
|
|
134
|
+
|----------|------------|
|
|
135
|
+
| 书 | 卷、主题、主线、世界观、势力、地点、冲突、来源索引 |
|
|
136
|
+
| 卷 | 书、幕、相邻卷 |
|
|
137
|
+
| 幕 | 卷、章、相邻幕 |
|
|
138
|
+
| 章 | 幕、卷、细纲要求、章节细纲、场景、正文、伏笔、高潮、爽点、结局、时间线、相邻章 |
|
|
139
|
+
| 细纲要求 | 章、同章相邻要求 |
|
|
140
|
+
| 场景 | 章、地点、人物、冲突、同章相邻场景 |
|
|
141
|
+
| 正文 | 章、本章细纲要求、相邻正文 |
|
|
142
|
+
| 人物 | 势力、关系、势力成员、角色弧光、角色状态、道具、其他实体、相关章节 |
|
|
143
|
+
| 势力 | 书、人物、势力成员、势力关系 |
|
|
144
|
+
| 地点 | 书、场景、冲突 |
|
|
145
|
+
| 道具 | 拥有者人物/势力、相关场景或章节 |
|
|
146
|
+
| 冲突 | 书、人物、场景、时间线 |
|
|
147
|
+
| 伏笔 | 埋设章、回收章、相关人物 |
|
|
148
|
+
| 高潮 | 章、人物 |
|
|
149
|
+
| 爽点 | 章 |
|
|
150
|
+
| 结局 | 章、人物、相关伏笔 |
|
|
151
|
+
| 世界观 | 书、相关势力/人物/章节 |
|
|
152
|
+
| 主线 | 书、支线、时间线 |
|
|
153
|
+
| 支线 | 主线、相关章节、主角 |
|
|
154
|
+
| 其他实体 | 相关人物、其他实体、关系页 |
|
|
155
|
+
| 关系 | from 人物、to 人物 |
|
|
156
|
+
| 势力关系 | from 势力、to 势力 |
|
|
157
|
+
| 势力成员 | 人物、势力 |
|
|
158
|
+
| 主题 | 书、相关卷 |
|
|
159
|
+
| 角色弧光 | 人物、卷、角色状态 |
|
|
160
|
+
| 角色状态 | 人物、章、地点、关系 |
|
|
161
|
+
| 时间线 | 章、人物、地点、冲突、主线/支线 |
|
|
162
|
+
| 来源 | 来源索引、相关对象页 |
|
|
163
|
+
| 信息差 | 冲突、知情/不知情人物、创建章、解决章 |
|
|
164
|
+
| 章节细纲 | 章、卷、幕、视角人物、出场人物、地点、冲突、伏笔、高潮、爽点、信息差 |
|
|
165
|
+
|
|
166
|
+
同类型页面(卷、幕、章、细纲要求、场景、正文、时间线等)要互相链接相邻项,形成有序链。
|
|
167
|
+
|
|
168
|
+
---
|
|
169
|
+
|
|
170
|
+
## 正文要求
|
|
171
|
+
|
|
172
|
+
- 故事对象页的正文由插件从 JSON 生成,LLM 不要改写;需要补充说明时写入 `来源` 摘要页或在对话中说明。
|
|
173
|
+
- 正文不要生成“关系网 / 上级 / 下级 / 相邻”区块;关系只放在 `related` 里。
|
|
174
|
+
- 来源摘要页正文第一块必须是 `## 来源`,列出源文件、生成时间和摘要;`related` 至少包含 `[[SRC-INDEX_来源索引]]` 和一个相关对象页。
|
|
175
|
+
- 禁止空页、占位页、只有标题的页面。
|
|
176
|
+
- 禁止把同一对象拆成多个 type 或多个目录的重复页。
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
|
|
180
|
+
## 来源摘要页(type: 来源)
|
|
181
|
+
|
|
182
|
+
来源摘要页是 LLM ingest 唯一可以创建的类型,用于记录“这个源文件讲了什么”。`SRC-INDEX` 由插件维护,LLM 不要创建或改写它。来源页没有 schema link 字段,但仍需通过 `related` 接入关系网。
|
|
211
183
|
|
|
212
|
-
```
|
|
184
|
+
```markdown
|
|
213
185
|
---
|
|
214
|
-
type:
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
186
|
+
type: 来源
|
|
187
|
+
id: SRC-skeleton-entity
|
|
188
|
+
title: SRC-skeleton-entity_骨架-实体
|
|
189
|
+
source_file: raw/sources/骨架/实体.json
|
|
190
|
+
related:
|
|
191
|
+
- "[[SRC-INDEX|来源索引]]"
|
|
192
|
+
- "[[BOOK|香火簿]]"
|
|
193
|
+
- "[[C001|C001_陆守拙]]"
|
|
194
|
+
- "[[F001|F001_陆氏宗族]]"
|
|
195
|
+
created: 2026-01-01
|
|
220
196
|
---
|
|
221
|
-
```
|
|
222
197
|
|
|
223
|
-
|
|
198
|
+
## 来源
|
|
224
199
|
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
sources: [raw/sources/节奏/情绪节奏.md]
|
|
230
|
-
弧线类型: V形
|
|
231
|
-
适用场景: 重生复仇、破镜重圆、亲情催泪
|
|
232
|
-
---
|
|
233
|
-
```
|
|
200
|
+
| 字段 | 值 |
|
|
201
|
+
|------|----|
|
|
202
|
+
| 来源文件 | raw/sources/骨架/实体.json |
|
|
203
|
+
| 生成时间 | 2026-01-01 12:00:00 |
|
|
234
204
|
|
|
235
|
-
|
|
205
|
+
## 摘要
|
|
236
206
|
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
type: 高潮点
|
|
240
|
-
title: 小高潮分布
|
|
241
|
-
sources: [raw/sources/节奏/情绪节奏.md]
|
|
242
|
-
高潮类型: 小高潮
|
|
243
|
-
---
|
|
207
|
+
用中文概括该来源文件的结构、数量和需要人工关注的问题。
|
|
244
208
|
```
|
|
245
209
|
|
|
246
|
-
### 爽点 类型
|
|
247
|
-
|
|
248
|
-
```yaml
|
|
249
210
|
---
|
|
250
|
-
type: 爽点
|
|
251
|
-
title: 第5章爽点
|
|
252
|
-
sources: [raw/sources/节奏/细纲_005.md]
|
|
253
|
-
爽点类型: 打脸
|
|
254
|
-
所属章节: 第5章
|
|
255
|
-
---
|
|
256
|
-
```
|
|
257
211
|
|
|
258
|
-
|
|
212
|
+
## 禁止行为
|
|
259
213
|
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
章尾类型: 突然揭示
|
|
267
|
-
所属章节: 第5章
|
|
268
|
-
---
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
### 伏笔 类型
|
|
272
|
-
|
|
273
|
-
```yaml
|
|
274
|
-
---
|
|
275
|
-
type: 伏笔
|
|
276
|
-
title: S001
|
|
277
|
-
sources: [raw/sources/节奏/伏笔表.md]
|
|
278
|
-
伏笔ID: S001
|
|
279
|
-
伏笔类型: 物件型
|
|
280
|
-
埋设章节: 第1章
|
|
281
|
-
回收章节: 第30章
|
|
282
|
-
状态: 已回收
|
|
283
|
-
---
|
|
284
|
-
```
|
|
285
|
-
|
|
286
|
-
### 章节细纲 类型
|
|
214
|
+
1. 禁止创建上表之外的 type 或目录。
|
|
215
|
+
2. 禁止手工创建/修改故事对象页;对象页只由 `schemaingest` 写入。
|
|
216
|
+
3. 禁止用标题、文件名或路径代替 ID 填 link 字段。
|
|
217
|
+
4. 禁止生成“无”“待补充”这类占位页。
|
|
218
|
+
5. 禁止跳过来源摘要;每个被 ingest 的源文件都应有对应的 `来源` 页。
|
|
219
|
+
6. 禁止产生孤立页面或无出站链接页面。
|
|
287
220
|
|
|
288
|
-
```yaml
|
|
289
|
-
---
|
|
290
|
-
type: 章节细纲
|
|
291
|
-
title: 第5章
|
|
292
|
-
sources: [raw/sources/节奏/细纲_005.md]
|
|
293
|
-
章号: 5
|
|
294
|
-
字数目标: 3000
|
|
295
|
-
视角: 第三人称
|
|
296
221
|
---
|
|
297
|
-
```
|
|
298
|
-
|
|
299
|
-
### 支线交织 类型
|
|
300
222
|
|
|
301
|
-
|
|
302
|
-
---
|
|
303
|
-
type: 支线交织
|
|
304
|
-
title: 交织点1
|
|
305
|
-
sources: [raw/sources/节奏/主线大纲.md]
|
|
306
|
-
交织点: 交织点1
|
|
307
|
-
涉及章节: 第5-8章
|
|
308
|
-
与主线关系: 支线推动主线发展
|
|
309
|
-
---
|
|
310
|
-
```
|
|
223
|
+
## 2.0 阶段门禁与同步
|
|
311
224
|
|
|
312
|
-
|
|
225
|
+
- `10-scale` 不同步 wiki、不跑 lint:它只有数字,没有页面。
|
|
226
|
+
- `20-macro` 默认不跑 lint:此时还没有人物/势力/地点页面。
|
|
227
|
+
- `30-cast` 是第一次正式同步点;同步时必须带 `20-macro` 闭包,否则人物页链接的势力/地点会 broken-link。
|
|
228
|
+
- `40-rhythm` 同步 `20-macro + 30-cast + 40-rhythm` 闭包后才跑 schema/link lint。
|
|
229
|
+
- semantic lint 只在 `40-rhythm` PASSED 后开启,避免把“还没写到”误判成矛盾。
|
|
230
|
+
- `schema.json` 的全局 `minimums` 保持为空;阶段最低页数由插件按 `stage_minimums` 检查。
|
|
313
231
|
|
|
314
|
-
|
|
315
|
-
---
|
|
316
|
-
type: 场景
|
|
317
|
-
title: 第1章-场景1
|
|
318
|
-
sources: [raw/sources/节奏/细纲_001.md]
|
|
319
|
-
所属章节: 第1章
|
|
320
|
-
场景序号: 1
|
|
321
|
-
场景名称: 百乐门后台
|
|
322
|
-
场景类型: 引入
|
|
323
|
-
---
|
|
324
|
-
```
|
|
232
|
+
关系类型 `kind` 不设枚举;每条关系独立成页,页面正文的“语义验证点”交给 llm_wiki 语义检查。
|