@cloud411716/fancy-webnovel 1.0.46 → 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 +369 -0
- package/cordis.patch.yml +4 -13
- 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 +26 -38
- package/lib/atomic-write.js +109 -0
- package/lib/chapter-order.js +100 -0
- package/lib/chinese-num.js +111 -0
- package/lib/confirmation.js +80 -0
- package/lib/db-init.js +123 -0
- package/lib/deployed-state.js +141 -0
- package/lib/direction-labels.js +265 -0
- package/lib/error-codes.js +104 -0
- package/lib/infra.js +594 -0
- package/lib/llm-wiki.js +109 -0
- 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 +305 -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 +62 -5
- package/plugins/fancy-analyze/analyze-definitions.md +519 -0
- package/plugins/fancy-analyze/command-input.js +65 -0
- package/plugins/fancy-analyze/index.js +2024 -0
- package/plugins/fancy-analyze/ingest-coverage.js +107 -0
- package/plugins/fancy-analyze/schema-analyze.md +627 -0
- package/plugins/fancy-analyze/schema-write.md +178 -0
- package/plugins/fancy-analyze/scripts/append-summary-chapter.js +612 -0
- package/plugins/fancy-analyze/scripts/split_source.js +292 -0
- package/plugins/fancy-analyze/summary-progress.js +495 -0
- package/plugins/fancy-analyze/templates.js +1179 -0
- package/plugins/fancy-bootstrap/index.js +313 -0
- package/plugins/fancy-bootstrap/scripts/init.js +177 -0
- package/plugins/fancy-bootstrap/scripts/path-utils.js +21 -0
- package/plugins/fancy-bootstrap/templates.js +71 -0
- 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-core.js +1118 -0
- package/plugins/fancy-import/import-driver.js +604 -0
- package/plugins/fancy-import/index.js +738 -0
- package/plugins/fancy-import/prompts/01-import-prompt.md +131 -0
- package/plugins/fancy-import/templates.js +58 -0
- 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 +708 -0
- 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 +667 -0
- package/plugins/fancy-scan/scripts/scrapers/fanqie-rank-scraper.js +923 -0
- package/plugins/fancy-scan/scripts/scrapers/jjwxc-rank-scraper.js +469 -0
- package/plugins/fancy-scan/scripts/scrapers/qimao-rank-scraper.js +629 -0
- 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 +694 -0
- 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/deploy-manifest.js +239 -0
- package/plugins/fancy-story-builder/deslop-driver.js +821 -0
- package/plugins/fancy-story-builder/flesh-output.js +168 -0
- package/plugins/fancy-story-builder/index.js +6861 -0
- package/plugins/fancy-story-builder/patch-driver.js +390 -0
- package/plugins/fancy-story-builder/prompts/01-skeleton-prompt.md +563 -0
- package/plugins/fancy-story-builder/prompts/02-flesh-prompt.md +602 -0
- package/plugins/fancy-story-builder/prompts/03-rhythm-prompt.md +539 -0
- package/plugins/fancy-story-builder/prompts/04-writing-prompt.md +225 -0
- package/plugins/fancy-story-builder/prompts/05-deslop-prompt.md +96 -0
- package/plugins/fancy-story-builder/purpose-template.md +83 -0
- package/plugins/fancy-story-builder/references/formulas-rhythm.json +302 -0
- package/plugins/fancy-story-builder/references/formulas-skeleton.json +402 -0
- package/plugins/fancy-story-builder/references/genre-profiles.json +3514 -0
- package/plugins/fancy-story-builder/references/glossary.md +594 -0
- package/plugins/fancy-story-builder/references/index.md +581 -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 +181 -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 +243 -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 +185 -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 +187 -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 +209 -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 +160 -0
- package/plugins/fancy-story-builder/rhythm-output.js +140 -0
- package/plugins/fancy-story-builder/schema-setting.json +1100 -0
- package/plugins/fancy-story-builder/schema-setting.md +232 -0
- package/plugins/fancy-story-builder/scripts/ai-patterns.js +619 -0
- package/plugins/fancy-story-builder/scripts/brief-validate.js +164 -0
- package/plugins/fancy-story-builder/scripts/check-guide-compliance.js +289 -0
- package/plugins/fancy-story-builder/scripts/content-quality.js +416 -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 +1312 -0
- package/plugins/fancy-story-builder/scripts/formula-engine.js +112 -0
- package/plugins/fancy-story-builder/scripts/graph-utils.js +1484 -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/reference-log.js +110 -0
- package/plugins/fancy-story-builder/scripts/rhythm-validate.js +1312 -0
- package/plugins/fancy-story-builder/scripts/schema-pages.js +2668 -0
- package/plugins/fancy-story-builder/scripts/semantic-lint.js +381 -0
- package/plugins/fancy-story-builder/scripts/skeleton-quota.js +145 -0
- package/plugins/fancy-story-builder/scripts/skeleton-validate.js +1973 -0
- package/plugins/fancy-story-builder/scripts/stage-batches.js +1405 -0
- package/plugins/fancy-story-builder/scripts/stage-contract.js +429 -0
- package/plugins/fancy-story-builder/scripts/story-artifacts.js +933 -0
- package/plugins/fancy-story-builder/scripts/upstream-query.js +198 -0
- 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/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/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 +427 -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 +168 -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 +184 -0
- 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 +131 -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 +85 -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 +103 -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 +68 -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 +142 -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 +292 -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 +266 -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 +336 -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 +308 -0
- package/plugins/fancy-story-builder/templates.js +1446 -0
- package/plugins/fancy-story-builder/wiki-references.js +540 -0
- package/plugins/fancy-story-builder/writing-driver.js +1388 -0
- package/plugins/fancy-topic/index.js +1057 -0
- 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 +317 -0
- package/plugins/fancy-topic/templates.js +476 -0
- package/plugins/fancy-topic/tool-deploy.js +200 -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,274 @@
|
|
|
1
|
+
# 对话设计
|
|
2
|
+
|
|
3
|
+
> 写作阶段第 4 份。写对话场景时加载。先看场景路由,再选模式,再查质量。
|
|
4
|
+
> 本文件不定义数据结构、不写验证逻辑。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 一、决策路由
|
|
9
|
+
|
|
10
|
+
| 你的对话场景是 | 用这种模式 |
|
|
11
|
+
|---|---|
|
|
12
|
+
| 主角碾压/打脸 | §3 压制模式 |
|
|
13
|
+
| 主角亮底牌/反转 | §3 反转模式 |
|
|
14
|
+
| 关系破裂/心死 | §3 心死模式 |
|
|
15
|
+
| 日常互动/立人设 | 让其他人物参与冲突,不要主角独白 |
|
|
16
|
+
| 群众震惊/弹幕 | §7 弹幕模式 |
|
|
17
|
+
| 信息展示/世界观 | §6 信息展示 |
|
|
18
|
+
| 情绪拉扯/虐心 | §5 情绪推动 |
|
|
19
|
+
|
|
20
|
+
### 1.1 场景类型 → 规则子集
|
|
21
|
+
|
|
22
|
+
| 场景类型 | 用哪几条规则 | 不用哪几条 |
|
|
23
|
+
|---|---|---|
|
|
24
|
+
| 单人对峙 | 权力博弈 + 潜台词 + 情绪推动 | 弹幕 |
|
|
25
|
+
| 多人对峙 | 权力博弈多人变体 + 议程 | 单对单的"话短=掌控"规则 |
|
|
26
|
+
| 群像场景 | 语言差异化 + 多人变体 | 单对单压制/心死模式 |
|
|
27
|
+
| 日常互动 | 语言差异化 + 日常模式 | 权力博弈/弹幕 |
|
|
28
|
+
| 信息展示 | 信息嵌入 + 反科普嘴 | 情绪推动 |
|
|
29
|
+
| 高潮兑现 | 压制/反转模式 + 弹幕四层 + 豁免篇幅上限 | 对话 40% 上限 |
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 二、对话核心规则
|
|
34
|
+
|
|
35
|
+
每句对话必须承载以下至少一项,否则删除:
|
|
36
|
+
|
|
37
|
+
1. **推进剧情**:透露新信息、推动事件发展
|
|
38
|
+
2. **增加期待感**:暗示即将发生的事、制造悬念
|
|
39
|
+
3. **展示人设**:通过语言风格传递角色性格
|
|
40
|
+
|
|
41
|
+
且在情绪场景里,每句还要回应上一句对方的情绪状态(承接/偏转/升级/退缩)。对话是两个人的情绪在碰,不是轮流播报信息。只推进剧情、句间无情绪承接 = 机械对话。
|
|
42
|
+
|
|
43
|
+
(注:快节奏战斗、多人信息展示场景可放宽为"每轮回应情绪",不必逐句。)
|
|
44
|
+
|
|
45
|
+
### 绝对禁止
|
|
46
|
+
|
|
47
|
+
| 禁止 | 理由 |
|
|
48
|
+
|---|---|
|
|
49
|
+
| 配角无脑夸主角 | 假 |
|
|
50
|
+
| 互相解释读者已知信息 | 水字数 |
|
|
51
|
+
| 大段说明文式对话 | 闷 |
|
|
52
|
+
| 所有角色说话方式一样 | 模糊 |
|
|
53
|
+
| 对话说服人物 | 现实中没人被几句话说服,用突发状况代替 |
|
|
54
|
+
| 角色当"科普嘴" | 设定/原理/前因后果不能靠角色整段讲解 |
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## 三、权力博弈对话
|
|
59
|
+
|
|
60
|
+
### 3.1 规则
|
|
61
|
+
|
|
62
|
+
对话长度 = 权力地位。掌控者话短且冷静,被动者话多且情绪化。
|
|
63
|
+
|
|
64
|
+
### 3.2 压制模式
|
|
65
|
+
|
|
66
|
+
结构:对方长篇大论(三到五行)→ 主角一字回应。
|
|
67
|
+
|
|
68
|
+
### 3.3 反转模式
|
|
69
|
+
|
|
70
|
+
结构:对方嚣张(两到三行)→ 主角亮底牌(一行事实)→ 对方沉默。
|
|
71
|
+
|
|
72
|
+
### 3.4 心死模式
|
|
73
|
+
|
|
74
|
+
结构:对话越回越短,从辩解到沉默到"随意"。
|
|
75
|
+
|
|
76
|
+
### 3.5 多人场景变体
|
|
77
|
+
|
|
78
|
+
三人以上时:
|
|
79
|
+
- 掌控者可能不止一人(双主导),话短规则需分别标注
|
|
80
|
+
- 群像场景用"功能分配"代替"话短规则":信息提供者/情绪放大器/冲突制造者,每人一个功能
|
|
81
|
+
- 掌控者故意话多(伪装/拖延/设套)时,用"话多但信息密度高"替代"话短"
|
|
82
|
+
- 被动者沉默抵抗时,用"不说话+动作/表情"代替"话多"
|
|
83
|
+
|
|
84
|
+
### 3.6 操作指令
|
|
85
|
+
|
|
86
|
+
- 掌控者/主角亮底牌时:对话短,不加动作描写
|
|
87
|
+
- 被压制方:对话长,可加动作描写(攥拳/咬唇/站起来)
|
|
88
|
+
- 两人对话时:短句方 = 权力上位,长句方 = 权力下位
|
|
89
|
+
- 心死模式可打破"话短=上位":心死者话少但不是掌控者,是"退出博弈"
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## 四、潜台词与议程
|
|
94
|
+
|
|
95
|
+
### 4.1 潜台词规则
|
|
96
|
+
|
|
97
|
+
- 角色真实动机不能浅显地写在台词里
|
|
98
|
+
- 现实中人说话都给自己找借口,角色也一样
|
|
99
|
+
- 每句对白同时设计:角色的动机(可能角色自己都没意识到)和角色的借口
|
|
100
|
+
|
|
101
|
+
(例外:谈判/审讯/辩论等"直接摊牌"场景,可直写动机,此时张力来自"摊牌后果"而非"藏"。)
|
|
102
|
+
|
|
103
|
+
### 4.2 对话议程
|
|
104
|
+
|
|
105
|
+
- 每个角色进入对话时有自己的议程:想从这场对话中得到什么
|
|
106
|
+
- 两个角色的议程碰撞才是张力来源
|
|
107
|
+
- 双方议程一致(同立场)= 复述,失去意义
|
|
108
|
+
|
|
109
|
+
### 4.3 语气三要素
|
|
110
|
+
|
|
111
|
+
关系 × 场合 × 目的 = 语气
|
|
112
|
+
|
|
113
|
+
| 场合 | 特点 | 适合内容 |
|
|
114
|
+
|---|---|---|
|
|
115
|
+
| 私人(单对单) | 深入、感情流露透彻 | 内心剖白、密谋、表白 |
|
|
116
|
+
| 公众 | 需考虑体面,措辞收敛 | 需要冲击力时可打破(如当众翻脸) |
|
|
117
|
+
| 熟人(朋友/同门) | 深度介于两者之间 | 轻松互动和信息交换 |
|
|
118
|
+
|
|
119
|
+
私密的话在公众场合说才有冲击力。对话中不能完全表达的内容,通过动作、神态、环境补充。
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## 五、情绪推动对话
|
|
124
|
+
|
|
125
|
+
### 5.1 强情绪对话
|
|
126
|
+
|
|
127
|
+
- 命令式+否定式最能激发读者情绪:"我说的还不够清楚吗?"
|
|
128
|
+
- 最强话术:打着为你好的幌子,句句不离关心,但句句都是嫌弃、指责、厌恶
|
|
129
|
+
- 直接否定比含蓄暗示更伤人
|
|
130
|
+
|
|
131
|
+
### 5.2 情绪连续性
|
|
132
|
+
|
|
133
|
+
角色情绪是连续的、循序渐进的。从生气到高兴:生气 → 不那么生气 → 不生气 → 高兴,每次转变需对应事件触发。不能跳步。
|
|
134
|
+
|
|
135
|
+
### 5.3 情绪四步法
|
|
136
|
+
|
|
137
|
+
1. 遇到事件(失衡状态)
|
|
138
|
+
2. 情绪反应(外在表现:动作、表情、语言)
|
|
139
|
+
3. 内心思考(即使没思考也要写出"没有思考",表达鲁莽)
|
|
140
|
+
4. 采取行动(基于前三步结果回应)
|
|
141
|
+
|
|
142
|
+
### 5.4 冲突递进五级 + 人设适配
|
|
143
|
+
|
|
144
|
+
五级:委婉拒绝 → 友好人道 → 命令否定 → PUA 式 → 直接侮辱。
|
|
145
|
+
|
|
146
|
+
不是所有角色都从第 1 级起步:
|
|
147
|
+
- 高傲型直接第 3 级
|
|
148
|
+
- 市井型直接第 5 级
|
|
149
|
+
- 智谋型全程第 1 级但每句下套
|
|
150
|
+
- 人设决定起步级和跳级规则,不机械线性
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## 六、信息展示与弹幕
|
|
155
|
+
|
|
156
|
+
### 6.1 信息展示
|
|
157
|
+
|
|
158
|
+
- 大量信息通过对话展示会啰嗦,部分信息转化为情节、心理描写、旁白、环境、动作
|
|
159
|
+
- 用角色的语气和立场包裹信息,不机械陈述设定
|
|
160
|
+
- 设定用到哪个带出哪点,不需讲全前因后果
|
|
161
|
+
- **角色不当"科普嘴"**:设定/原理不能靠角色整段讲解。拆成角色在压力下挤出的半句话 + 身体反应 + 留白
|
|
162
|
+
|
|
163
|
+
### 6.2 信息拉扯
|
|
164
|
+
|
|
165
|
+
上行和下行交替,情绪像拉锯不断拉升期待。
|
|
166
|
+
|
|
167
|
+
### 6.3 弹幕模式
|
|
168
|
+
|
|
169
|
+
三大核心作用:剧情推进(透露主角不知道的信息)、增加期待感(悬念、猜测)、情绪渲染(群众震惊传染读者)。锦上添花,不代替主线。
|
|
170
|
+
|
|
171
|
+
**四层递进**:
|
|
172
|
+
1. 普通人震惊(卧槽好厉害)
|
|
173
|
+
2. 专业人士分析(这个手法……)
|
|
174
|
+
3. 特殊身份者反应(某大佬动容)
|
|
175
|
+
4. 情感升华(某种意义上的认同/悔恨)
|
|
176
|
+
|
|
177
|
+
**密度控制**:
|
|
178
|
+
- 每章最多一组弹幕(四层)
|
|
179
|
+
- 弹幕总量不超过本章字数的百分之十几
|
|
180
|
+
- 连续几章不用弹幕,避免读者疲劳
|
|
181
|
+
- 弹幕只在关键爽点/燃点/泪点前后集中使用
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 七、人物语言差异化
|
|
186
|
+
|
|
187
|
+
每个角色要有自己的说话方式。遮住角色名能区分是谁在说话。
|
|
188
|
+
|
|
189
|
+
| 维度 | 操作 |
|
|
190
|
+
|---|---|
|
|
191
|
+
| 口癖和惯用语 | 给每个主要角色一个标志性用词 |
|
|
192
|
+
| 说话节奏 | 长篇大论 vs 短句连击 |
|
|
193
|
+
| 信息偏好 | 技术型带专业术语,江湖人带切口 |
|
|
194
|
+
| 立场固定 | 某角色永远从某个角度发言(悲观派/乐观派/务实派) |
|
|
195
|
+
| 身份影响措辞 | 老者/少年/贵族/市井,身份不同则措辞、自称、敬谦词不同 |
|
|
196
|
+
| 性格影响语气 | 智谋型话里有话;鲁莽型想到什么说什么;冷静型措辞精确 |
|
|
197
|
+
| 进度影响态度 | 初见/熟悉/对立/亲密,关系阶段不同则语气与信息量不同 |
|
|
198
|
+
|
|
199
|
+
**与人物档案对接**:角色.json 的 `language_profile` 7 维字段,写对话时直接从这里取。未填的先补档案。
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## 八、以梗填充对话
|
|
204
|
+
|
|
205
|
+
### 8.1 梗式 vs 普通
|
|
206
|
+
|
|
207
|
+
- 普通:"兄弟别灰心,你一步步走到今天我是看着你过来的,这点挫折对于你来说算什么事儿?"
|
|
208
|
+
- 梗式:"兄弟别灰心,我相信你总有人头落地,落地人头,头落地上……卧槽那句话怎么说的来着?兄弟你懂我意思是吧……"
|
|
209
|
+
|
|
210
|
+
### 8.2 声线让位(高压场景例外)
|
|
211
|
+
|
|
212
|
+
高压/生死/悲痛/严肃 beat 里,搞笑担当与轻快配角的玩笑、口头梗、插科打诨一律收敛。声线让位于当前情绪基调,用短、冷、带情绪重量的反应替代;梗只在安全或喘息 beat 放。
|
|
213
|
+
|
|
214
|
+
**自检**:这句玩笑放进当前基调会不会让读者出戏?会就删/改。
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## 九、篇幅控制与节奏
|
|
219
|
+
|
|
220
|
+
### 9.1 篇幅
|
|
221
|
+
|
|
222
|
+
- 单次对话不超过全节(500-1000 字)的四成。**高潮兑现章豁免**,可到六到八成(打脸/揭底/对峙)
|
|
223
|
+
- 对话过多:读者已知信息用叙事一句话概括;能用突发状况替代的直接替换
|
|
224
|
+
- 对话过少:能用其他人物对话讲的东西,不要让主角旁白平铺直叙
|
|
225
|
+
|
|
226
|
+
### 9.2 节奏
|
|
227
|
+
|
|
228
|
+
- 不删表现人物性格的语气助词来"精简"
|
|
229
|
+
- 对话段落间穿插动作、环境、心理调节节奏
|
|
230
|
+
- 紧张段落对话短促,舒缓段落可长
|
|
231
|
+
- 关键信息放对话开头或结尾,中间用于拉扯情绪
|
|
232
|
+
- 动作和表情在关键转折处使用效果最好,不需每句都配
|
|
233
|
+
- 连续多轮对话后需要"换气",插入环境描写或角色心理
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## 十、对话自查
|
|
238
|
+
|
|
239
|
+
写完后自问:
|
|
240
|
+
- 是否存在大量信息都必须用对话展示?
|
|
241
|
+
- 对话是否是问答式的一问一答?
|
|
242
|
+
- 是否习惯依赖对话推动剧情或人物变化?
|
|
243
|
+
- 场景类型 → 规则子集已按 §1.1 选?
|
|
244
|
+
- 权力博弈:掌控者话短 / 被压制方话长?多人场景用了变体?
|
|
245
|
+
- 潜台词与议程:每个角色有议程?真实动机不在台词中(摊牌场景例外)?
|
|
246
|
+
- 人物差异化:遮住角色名能区分是谁在说话?语言档案 7 维已从人物档案取?
|
|
247
|
+
- 弹幕:四层递进?每章不超过一组?总量不超一成多?连续几章未用?
|
|
248
|
+
- 对话推动剧情:每段对话结束时剧情是否往前推了一步?
|
|
249
|
+
- 篇幅:单次对话不超过全节四成(高潮兑现章豁免)?
|
|
250
|
+
- 高压场景已做声线让位?
|
|
251
|
+
- 没有"科普嘴"?
|
|
252
|
+
|
|
253
|
+
**注**:这是写作时的自问,不是脚本验证。
|
|
254
|
+
|
|
255
|
+
---
|
|
256
|
+
|
|
257
|
+
## 十一、与其他文件的关系
|
|
258
|
+
|
|
259
|
+
| 本文件输出 | 落到哪个文件 | 由哪个脚本验证 |
|
|
260
|
+
|---|---|---|
|
|
261
|
+
| 对话内容 | 每章正文 | `writing-validate.js` 的 `FORBIDDEN_WORD`(对话中的 AI 口吻会被拦) |
|
|
262
|
+
| 语言档案的用法 | `角色.json` 的 `characters[].language_profile` | 无(写作时读,不写回) |
|
|
263
|
+
|
|
264
|
+
**不输出到**:
|
|
265
|
+
- 对话的具体内容不单独建 JSON 字段,直接在正文中
|
|
266
|
+
- 弹幕的密度不建字段,写作时按方法论控制
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## 十二、版本记录
|
|
271
|
+
|
|
272
|
+
| 版本 | 变更 |
|
|
273
|
+
|---|---|
|
|
274
|
+
| v1.0 | 从原 04-04 精简。删除检查清单(改为"自查"节的方法论陈述);保留权力博弈/潜台词/场景路由/语言差异化/弹幕;新增"与其他文件的关系"节 |
|