@waterwx/dsh-novel-forge 2.1.2-alpha → 2.1.2
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/README.md +278 -368
- package/lib/client.js +19568 -21381
- package/lib/index.js +4850 -4002
- package/lib/types/action-guard.d.ts +61 -0
- package/lib/types/ai-scan.d.ts +66 -12
- package/lib/types/assets.d.ts +7 -9
- package/lib/types/assistant.d.ts +25 -0
- package/lib/types/author-assets.d.ts +1 -3
- package/lib/types/bookshelf.d.ts +13 -3
- package/lib/types/client/api.d.ts +49 -29
- package/lib/types/client/chip-prefs.d.ts +36 -0
- package/lib/types/client/docx.d.ts +2 -2
- package/lib/types/client/llmLive.d.ts +12 -14
- package/lib/types/client/locales.d.ts +12 -67
- package/lib/types/client/mount.d.ts +0 -2
- package/lib/types/client/panel/AdaptModeView.d.ts +1 -1
- package/lib/types/client/panel/AiTag.d.ts +1 -0
- package/lib/types/client/panel/AssetsTab.d.ts +1 -1
- package/lib/types/client/panel/AssistantTab.d.ts +4 -1
- package/lib/types/client/panel/AuthorAssetsView.d.ts +1 -1
- package/lib/types/client/panel/AuthorHome.d.ts +12 -12
- package/lib/types/client/panel/CmdPalette.d.ts +12 -0
- package/lib/types/client/panel/CreateBookView.d.ts +1 -1
- package/lib/types/client/panel/GlobalAssetLibraryView.d.ts +1 -1
- package/lib/types/client/panel/ImportModal.d.ts +1 -1
- package/lib/types/client/panel/LiveFeedLog.d.ts +8 -0
- package/lib/types/client/panel/ModelManager.d.ts +2 -2
- package/lib/types/client/panel/NovelPanel.d.ts +7 -2
- package/lib/types/client/panel/PageHeader.d.ts +18 -0
- package/lib/types/client/panel/ProgressConsole.d.ts +1 -1
- package/lib/types/client/panel/PromptSlotsView.d.ts +11 -0
- package/lib/types/client/panel/ReaderView.d.ts +1 -1
- package/lib/types/client/panel/RunPanel.d.ts +1 -1
- package/lib/types/client/panel/SettingsView.d.ts +13 -10
- package/lib/types/client/panel/ShelfView.d.ts +11 -2
- package/lib/types/client/panel/SubPage.d.ts +27 -0
- package/lib/types/client/panel/TensionView.d.ts +18 -0
- package/lib/types/client/panel/TimelineView.d.ts +18 -0
- package/lib/types/client/panel/WorldTab.d.ts +1 -1
- package/lib/types/client/panel/helpers.d.ts +5 -3
- package/lib/types/client/panel/market-radar-state.d.ts +56 -0
- package/lib/types/client/panel/outline-markdown.d.ts +112 -0
- package/lib/types/client/panel/status-badge.d.ts +13 -0
- package/lib/types/client/panel/storage-parse.d.ts +46 -0
- package/lib/types/client/panel/toast.d.ts +2 -0
- package/lib/types/client/panel/usePersistentState.d.ts +17 -0
- package/lib/types/client/panel/views.d.ts +21 -35
- package/lib/types/client/run-status.d.ts +21 -0
- package/lib/types/client/sidebar-entry.d.ts +0 -2
- package/lib/types/digest-parse.d.ts +29 -0
- package/lib/types/docx-core.d.ts +16 -0
- package/lib/types/docx.d.ts +2 -3
- package/lib/types/engine.d.ts +122 -103
- package/lib/types/home.d.ts +11 -0
- package/lib/types/index.d.ts +21 -13
- package/lib/types/llm-live.d.ts +62 -36
- package/lib/types/llm-retry.d.ts +38 -0
- package/lib/types/market-radar-scan.d.ts +0 -1
- package/lib/types/market-radar-sources.d.ts +1 -1
- package/lib/types/migrate-output.d.ts +25 -0
- package/lib/types/model-capability.d.ts +119 -0
- package/lib/types/model-request.d.ts +36 -0
- package/lib/types/output-budget.d.ts +86 -0
- package/lib/types/plotline-align.d.ts +35 -0
- package/lib/types/prompt-slots.d.ts +57 -0
- package/lib/types/prompting.d.ts +2 -27
- package/lib/types/protocol.d.ts +479 -595
- package/lib/types/revision.d.ts +76 -0
- package/lib/types/routes.d.ts +9 -3
- package/lib/types/run-selection.d.ts +51 -0
- package/lib/types/run.d.ts +31 -0
- package/lib/types/settings-persist.d.ts +59 -0
- package/lib/types/snapshots.d.ts +46 -0
- package/lib/types/stage-contract.d.ts +58 -0
- package/lib/types/stream-fallback.d.ts +60 -0
- package/lib/types/strip-headings.d.ts +33 -0
- package/lib/types/tension.d.ts +53 -0
- package/lib/types/timeline.d.ts +37 -0
- package/package.json +41 -28
- package/assets/styles/arcane-thick-3d.webp +0 -0
- package/assets/styles/chinese-ink.webp +0 -0
- package/assets/styles/clay-stopmotion-3d.webp +0 -0
- package/assets/styles/dark-ghibli.webp +0 -0
- package/assets/styles/dark-gothic-3d.webp +0 -0
- package/assets/styles/film-photo.webp +0 -0
- package/assets/styles/guofeng-heavy.webp +0 -0
- package/assets/styles/guoman-2d-gufeng.webp +0 -0
- package/assets/styles/guoman-3d-tianyuan.webp +0 -0
- package/assets/styles/guoman-3d-xuanhuan.webp +0 -0
- package/assets/styles/horror-game-3d.webp +0 -0
- package/assets/styles/hyperreal-3d.webp +0 -0
- package/assets/styles/japan-cel-dark.webp +0 -0
- package/assets/styles/korean-webtoon.webp +0 -0
- package/assets/styles/low-cyberpunk-3d.webp +0 -0
- package/assets/styles/nextgen-cg.webp +0 -0
- package/assets/styles/noir-film.webp +0 -0
- package/assets/styles/openworld-survival.webp +0 -0
- package/assets/styles/paper-cut-3d.webp +0 -0
- package/assets/styles/pixar-adult-3d.webp +0 -0
- package/assets/styles/pop-marvel-2d.webp +0 -0
- package/assets/styles/sandiao-qban.webp +0 -0
- package/assets/styles/shinkai-anime.webp +0 -0
- package/assets/styles/tactical-stealth.webp +0 -0
- package/assets/styles/urban-lightreal-3d.webp +0 -0
- package/assets/styles/vaporwave-3d.webp +0 -0
- package/assets/styles/vhs90.webp +0 -0
- package/lib/types/client/panel/BookshelfBar.d.ts +0 -11
- package/lib/types/client/panel/FlowGuide.d.ts +0 -22
- package/lib/types/client/panel/MangaRoleLibrary.d.ts +0 -20
- package/lib/types/client/panel/MangaWorkspace.d.ts +0 -12
- package/lib/types/client/panel/ModelPicker.d.ts +0 -11
- package/lib/types/client/panel/ProgressHomeView.d.ts +0 -5
- package/lib/types/client/panel/PropLibrary.d.ts +0 -8
- package/lib/types/client/panel/SceneLibrary.d.ts +0 -16
- package/lib/types/client/panel/StoryboardTab.d.ts +0 -19
- package/lib/types/client/panel/StyleCard.d.ts +0 -8
- package/lib/types/client/panel/StyleGallery.d.ts +0 -1
- package/lib/types/comic-presets.d.ts +0 -12
- package/lib/types/manga-genre-rules.d.ts +0 -22
- package/lib/types/prompt-utils.d.ts +0 -35
- package/lib/types/review-policy.d.ts +0 -97
- package/lib/types/shot-language.d.ts +0 -46
- package/lib/types/src/ai-scan.d.ts +0 -36
- package/lib/types/src/assets.d.ts +0 -37
- package/lib/types/src/assistant.d.ts +0 -45
- package/lib/types/src/author-assets.d.ts +0 -25
- package/lib/types/src/bookshelf.d.ts +0 -42
- package/lib/types/src/client/api.d.ts +0 -234
- package/lib/types/src/client/docx.d.ts +0 -15
- package/lib/types/src/client/index.d.ts +0 -14
- package/lib/types/src/client/locales.d.ts +0 -212
- package/lib/types/src/client/mount.d.ts +0 -9
- package/lib/types/src/client/panel/AdaptModeView.d.ts +0 -5
- package/lib/types/src/client/panel/AssetsTab.d.ts +0 -12
- package/lib/types/src/client/panel/AssistantTab.d.ts +0 -7
- package/lib/types/src/client/panel/AuthorAssetsView.d.ts +0 -4
- package/lib/types/src/client/panel/AuthorHome.d.ts +0 -32
- package/lib/types/src/client/panel/BookshelfBar.d.ts +0 -11
- package/lib/types/src/client/panel/CreateBookView.d.ts +0 -9
- package/lib/types/src/client/panel/FlowGuide.d.ts +0 -22
- package/lib/types/src/client/panel/GlobalAssetLibraryView.d.ts +0 -4
- package/lib/types/src/client/panel/ImportModal.d.ts +0 -7
- package/lib/types/src/client/panel/MangaRoleLibrary.d.ts +0 -20
- package/lib/types/src/client/panel/MangaWorkspace.d.ts +0 -12
- package/lib/types/src/client/panel/ModelManager.d.ts +0 -14
- package/lib/types/src/client/panel/NovelPanel.d.ts +0 -13
- package/lib/types/src/client/panel/ProgressConsole.d.ts +0 -17
- package/lib/types/src/client/panel/ProgressHomeView.d.ts +0 -5
- package/lib/types/src/client/panel/PropLibrary.d.ts +0 -8
- package/lib/types/src/client/panel/ReaderView.d.ts +0 -8
- package/lib/types/src/client/panel/ReasoningSection.d.ts +0 -10
- package/lib/types/src/client/panel/RunPanel.d.ts +0 -5
- package/lib/types/src/client/panel/SceneLibrary.d.ts +0 -16
- package/lib/types/src/client/panel/SettingsView.d.ts +0 -16
- package/lib/types/src/client/panel/ShelfView.d.ts +0 -15
- package/lib/types/src/client/panel/StoryboardTab.d.ts +0 -19
- package/lib/types/src/client/panel/StyleCard.d.ts +0 -8
- package/lib/types/src/client/panel/StyleGallery.d.ts +0 -1
- package/lib/types/src/client/panel/WorldTab.d.ts +0 -10
- package/lib/types/src/client/panel/controller.d.ts +0 -19
- package/lib/types/src/client/panel/helpers.d.ts +0 -18
- package/lib/types/src/client/panel/views.d.ts +0 -77
- package/lib/types/src/client/sidebar-entry.d.ts +0 -13
- package/lib/types/src/client/text.d.ts +0 -9
- package/lib/types/src/comic-presets.d.ts +0 -12
- package/lib/types/src/docx.d.ts +0 -19
- package/lib/types/src/engine.d.ts +0 -402
- package/lib/types/src/index.d.ts +0 -79
- package/lib/types/src/manga-genre-rules.d.ts +0 -22
- package/lib/types/src/novel-context.d.ts +0 -80
- package/lib/types/src/prompt-utils.d.ts +0 -35
- package/lib/types/src/protocol.d.ts +0 -2176
- package/lib/types/src/review-policy.d.ts +0 -97
- package/lib/types/src/routes.d.ts +0 -29
- package/lib/types/src/run.d.ts +0 -32
- package/lib/types/src/shot-language.d.ts +0 -46
- package/lib/types/src/story-beat-language.d.ts +0 -35
- package/lib/types/src/style-library.d.ts +0 -33
- package/lib/types/story-beat-language.d.ts +0 -35
- package/lib/types/style-library.d.ts +0 -33
- package/src/ai-scan.ts +0 -179
- package/src/assets.ts +0 -1774
- package/src/assistant.ts +0 -915
- package/src/author-assets.ts +0 -147
- package/src/bookshelf.ts +0 -167
- package/src/client/api.ts +0 -716
- package/src/client/css-modules.d.ts +0 -8
- package/src/client/docx.ts +0 -69
- package/src/client/index.ts +0 -34
- package/src/client/llmLive.ts +0 -101
- package/src/client/locales.ts +0 -418
- package/src/client/mount.tsx +0 -97
- package/src/client/mount.tsx._new +0 -97
- package/src/client/mount.tsx._nf +0 -97
- package/src/client/mount.tsx._tmp +0 -97
- package/src/client/panel/AdaptModeView.tsx +0 -535
- package/src/client/panel/AssetsTab.tsx +0 -458
- package/src/client/panel/AssistantTab.tsx +0 -339
- package/src/client/panel/AuthorAssetsView.tsx +0 -208
- package/src/client/panel/AuthorHome.tsx +0 -234
- package/src/client/panel/BookAnalysisView.tsx +0 -60
- package/src/client/panel/BookshelfBar.tsx +0 -170
- package/src/client/panel/CreateBookView.tsx +0 -371
- package/src/client/panel/DirectorView.tsx +0 -200
- package/src/client/panel/FlowGuide.tsx +0 -84
- package/src/client/panel/GlobalAssetLibraryView.tsx +0 -172
- package/src/client/panel/IdeaInspirationView.tsx +0 -71
- package/src/client/panel/ImportModal.tsx +0 -303
- package/src/client/panel/KnowledgeBaseView.tsx +0 -73
- package/src/client/panel/LiveFeedLog.tsx +0 -76
- package/src/client/panel/MangaRoleLibrary.tsx +0 -1002
- package/src/client/panel/MangaWorkspace.tsx +0 -715
- package/src/client/panel/MarketRadarView.tsx +0 -374
- package/src/client/panel/ModelManager.tsx +0 -205
- package/src/client/panel/NovelPanel.tsx +0 -4721
- package/src/client/panel/ProgressConsole.tsx +0 -63
- package/src/client/panel/ProgressHomeView.tsx +0 -87
- package/src/client/panel/PropLibrary.tsx +0 -175
- package/src/client/panel/ReaderView.tsx +0 -306
- package/src/client/panel/ReasoningSection.tsx +0 -31
- package/src/client/panel/RunPanel.tsx +0 -204
- package/src/client/panel/SceneLibrary.tsx +0 -453
- package/src/client/panel/SettingsView.tsx +0 -289
- package/src/client/panel/ShelfView.tsx +0 -242
- package/src/client/panel/StoryboardTab.tsx +0 -472
- package/src/client/panel/StyleCard.tsx +0 -90
- package/src/client/panel/StyleGallery.tsx +0 -58
- package/src/client/panel/WorldTab.tsx +0 -202
- package/src/client/panel/controller.ts +0 -45
- package/src/client/panel/helpers.ts +0 -67
- package/src/client/panel/panel.module.css +0 -4359
- package/src/client/panel/views.tsx +0 -314
- package/src/client/sidebar-entry.ts +0 -122
- package/src/client/text.ts +0 -28
- package/src/comic-presets.ts +0 -67
- package/src/docx.ts +0 -83
- package/src/engine.ts +0 -5636
- package/src/global-assets.ts +0 -59
- package/src/index.ts +0 -346
- package/src/llm-live.ts +0 -68
- package/src/manga-genre-rules.ts +0 -87
- package/src/market-radar-scan.ts +0 -41
- package/src/market-radar-sources.ts +0 -173
- package/src/novel-context.ts +0 -287
- package/src/prompt-utils.ts +0 -73
- package/src/prompting.ts +0 -159
- package/src/protocol.ts +0 -2565
- package/src/review-policy.ts +0 -161
- package/src/routes.ts +0 -3939
- package/src/run.ts +0 -338
- package/src/shot-language.ts +0 -181
- package/src/story-beat-language.ts +0 -130
- package/src/style-library.ts +0 -84
package/src/prompting.ts
DELETED
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 官方提示模板注册表(对齐上游 officialTemplates.ts 的轻量版)。
|
|
3
|
-
*
|
|
4
|
-
* 目标:把高频提示词从内联字符串升级为「可定位、可版本化、可诊断缺组」的资产,
|
|
5
|
-
* 同时保留 writeSystemPrompt 的现有大段上下文注入(道藏/世界观/大纲/资产/伏笔/剧情线),
|
|
6
|
-
* 只在其基础上补充「官方渲染骨架」的必达/禁止/自查块。
|
|
7
|
-
*/
|
|
8
|
-
|
|
9
|
-
export interface OfficialTemplate {
|
|
10
|
-
id: string
|
|
11
|
-
version: string
|
|
12
|
-
/** 需要的 slot 变量(跨层注入点)。 */
|
|
13
|
-
slots: string[]
|
|
14
|
-
/** 需要的上下文分组(缺组时可诊断)。 */
|
|
15
|
-
contextGroups: string[]
|
|
16
|
-
/** system 提示模板(可用 {{slot.*}} 占位,运行时替换)。 */
|
|
17
|
-
system: string[]
|
|
18
|
-
/** human 提示模板(可用 {{context.*}} / {{input.*}} 占位)。 */
|
|
19
|
-
human: string[]
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/** 章节写作官方模板(system 侧骨架)。 */
|
|
23
|
-
const CHAPTER_WRITER_SYSTEM = [
|
|
24
|
-
'你是中文长篇网络小说写作助手。',
|
|
25
|
-
'你的任务是根据当前章节任务,生成可直接阅读的正文,而不是提纲或解释。',
|
|
26
|
-
'',
|
|
27
|
-
'【叙事视角】{{slot.writer.pov}}',
|
|
28
|
-
'',
|
|
29
|
-
'【任务边界】只输出章节正文,不输出标题、提纲、解释或任何额外文本。',
|
|
30
|
-
'',
|
|
31
|
-
'【核心约束】',
|
|
32
|
-
'0. 以本章任务、人物状态、伏笔指令和连续性上下文为准,避免提前揭示未来答案或写到后续章节事件。',
|
|
33
|
-
'1. 必须推进新的剧情动作,本章必须发生实质变化(局面、关系、信息、风险、决策至少一项)。',
|
|
34
|
-
'2. 不得写成总结、复盘、解释性段落为主的章节,正文必须以「正在发生」的内容为主。',
|
|
35
|
-
'3. 不得引入新的核心角色、世界规则或与上下文冲突的重大设定。',
|
|
36
|
-
'',
|
|
37
|
-
'【结构要求】',
|
|
38
|
-
'1. 开头必须迅速进入当前情境,不得长时间铺垫背景或复述上一章。',
|
|
39
|
-
'2. 中段必须出现推进、变化或对抗,不能平铺直叙维持同一状态。',
|
|
40
|
-
'3. 本章至少出现一次明确的「状态变化」(信息反转、局面升级、关系变化、风险上升或计划转向)。',
|
|
41
|
-
'4. {{slot.writer.endingHookPreference}}',
|
|
42
|
-
'',
|
|
43
|
-
'【篇幅要求】',
|
|
44
|
-
'本章目标长度:约 {{input.targetWordCount}} 字;可接受区间:{{input.minWordCount}}-{{input.maxWordCount}} 字。',
|
|
45
|
-
'篇幅不够时必须继续推进新的有效情节、冲突、对话和动作,而不是草率收尾。',
|
|
46
|
-
'禁止靠重复回顾、空泛心理独白、无信息量描写硬凑字数。',
|
|
47
|
-
'',
|
|
48
|
-
'【连续性约束】',
|
|
49
|
-
'1. 章节开头必须与 recent_chapters 明显区分,禁止复用相同开场模式。',
|
|
50
|
-
'2. 允许短回调,但不得大段复述已发生事件,不得复制上下文原句。',
|
|
51
|
-
'3. 必须延续当前人物状态与局面,不得让角色行为失去动机或连续性。',
|
|
52
|
-
'',
|
|
53
|
-
'【表达要求】',
|
|
54
|
-
'1. {{slot.writer.tonePreference}}',
|
|
55
|
-
'2. 优先使用具体动作、对话与可感知细节推进,而不是抽象概述。',
|
|
56
|
-
'3. {{slot.writer.antiAiRules}}',
|
|
57
|
-
'4. 对话应服务推进或冲突,不得成为填充内容。',
|
|
58
|
-
'',
|
|
59
|
-
'【输出前自查】',
|
|
60
|
-
'在生成正文前,先内部确认:读者回报、关键转折和章末净变化是否可见,旧钩子责任是否回应,',
|
|
61
|
-
'结尾钩子是否成立,义务合约是否兑现,人物硬事实是否违背。确认通过后再开始输出,不需要在正文中输出核查结果。',
|
|
62
|
-
].join('\n')
|
|
63
|
-
|
|
64
|
-
/** 章节写作官方模板(human 侧骨架,用于标注任务上下文分组)。 */
|
|
65
|
-
const CHAPTER_WRITER_HUMAN = [
|
|
66
|
-
'小说:{{input.novelTitle}}',
|
|
67
|
-
'章节:第 {{input.chapterOrder}} 章 {{input.chapterTitle}}',
|
|
68
|
-
'',
|
|
69
|
-
'【书级合约】{{context.book_contract}}',
|
|
70
|
-
'【章节任务】{{context.chapter_mission}}',
|
|
71
|
-
'【读者体验合同】{{context.reader_experience}}',
|
|
72
|
-
'【人物硬事实】{{context.character_hard_facts}}',
|
|
73
|
-
'【本章义务合约】{{context.obligation_contract}}',
|
|
74
|
-
'【卷级窗口】{{context.volume_window}}',
|
|
75
|
-
'【出场角色子集】{{context.participant_subset}}',
|
|
76
|
-
'【当前局面】{{context.local_state}}',
|
|
77
|
-
'【风格合约】{{context.style_contract}}',
|
|
78
|
-
'【额外写法约束】{{slot.writer.customConstraints}}',
|
|
79
|
-
'',
|
|
80
|
-
'只输出章节正文。',
|
|
81
|
-
].join('\n')
|
|
82
|
-
|
|
83
|
-
export const OFFICIAL_TEMPLATES: Record<string, OfficialTemplate> = {
|
|
84
|
-
'novel.chapter.writer': {
|
|
85
|
-
id: 'novel.chapter.writer',
|
|
86
|
-
version: 'v1',
|
|
87
|
-
slots: [
|
|
88
|
-
'writer.pov',
|
|
89
|
-
'writer.tonePreference',
|
|
90
|
-
'writer.antiAiRules',
|
|
91
|
-
'writer.antiCliché',
|
|
92
|
-
'writer.endingHookPreference',
|
|
93
|
-
'writer.wordCountHint',
|
|
94
|
-
'writer.customConstraints',
|
|
95
|
-
],
|
|
96
|
-
contextGroups: [
|
|
97
|
-
'book_contract',
|
|
98
|
-
'chapter_mission',
|
|
99
|
-
'reader_experience',
|
|
100
|
-
'character_hard_facts',
|
|
101
|
-
'obligation_contract',
|
|
102
|
-
'volume_window',
|
|
103
|
-
'participant_subset',
|
|
104
|
-
'local_state',
|
|
105
|
-
'style_contract',
|
|
106
|
-
],
|
|
107
|
-
system: [CHAPTER_WRITER_SYSTEM],
|
|
108
|
-
human: [CHAPTER_WRITER_HUMAN],
|
|
109
|
-
},
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
export function getOfficialPromptTemplate(id: string): OfficialTemplate | null {
|
|
113
|
-
return OFFICIAL_TEMPLATES[id] ?? null
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
export function getOfficialPromptTemplateVersion(id: string): string | null {
|
|
117
|
-
return OFFICIAL_TEMPLATES[id]?.version ?? null
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/** 轻量稳定哈希(与上游 sha1 对齐精神:内容变化→版本变化)。 */
|
|
121
|
-
export function hashPromptTemplate(id: string): string {
|
|
122
|
-
const t = OFFICIAL_TEMPLATES[id]
|
|
123
|
-
if (t === undefined) return ''
|
|
124
|
-
const body = t.system.join('\n') + '\n' + t.human.join('\n')
|
|
125
|
-
let h = 5381
|
|
126
|
-
for (let i = 0; i < body.length; i++) h = ((h << 5) + h + body.charCodeAt(i)) >>> 0
|
|
127
|
-
return h.toString(16).padStart(8, '0')
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
export function getRequiredTemplateContextGroups(id: string): string[] {
|
|
131
|
-
return OFFICIAL_TEMPLATES[id]?.contextGroups ?? []
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
/** 把官方 writer 骨架渲染成可附加到现有系统提示词末尾的约束/自查块。 */
|
|
135
|
-
export function renderOfficialChapterWriterSkeleton(meta: {
|
|
136
|
-
targetChars: number
|
|
137
|
-
minChars: number
|
|
138
|
-
maxChars: number
|
|
139
|
-
pov?: string
|
|
140
|
-
tonePreference?: string
|
|
141
|
-
endingHookPreference?: string
|
|
142
|
-
antiAiRules?: string
|
|
143
|
-
}): string {
|
|
144
|
-
const pov = meta.pov ?? '第三人称有限视角,严格跟随主角所见所知。'
|
|
145
|
-
const tone = meta.tonePreference ?? '文风贴合本书设定,用具体细节与动作推进。'
|
|
146
|
-
const hook = meta.endingHookPreference ?? '章末留一个明确的钩子(新信息、新风险或未闭合的选择)。'
|
|
147
|
-
const antiAi = meta.antiAiRules ?? ''
|
|
148
|
-
return [
|
|
149
|
-
'==================== 官方生成骨架(必达 / 禁止 / 输出前自查) ====================',
|
|
150
|
-
'【叙事视角】' + pov,
|
|
151
|
-
'【本章必达】本章必须发生实质变化(局面、关系、信息、风险、决策至少一项);开头迅速进入情境,禁止复述上一章。',
|
|
152
|
-
'【禁止事项】不得写总结/复盘/解释性段落为主;不得引入新的核心角色或与上下文冲突的设定;不得为空凑字数。',
|
|
153
|
-
'【篇幅】目标 ' + meta.targetChars + ' 字,区间 ' + meta.minChars + '-' + meta.maxChars + ' 字;不够就继续推进有效情节,禁止草草收尾。',
|
|
154
|
-
'【结尾】' + hook,
|
|
155
|
-
'【表达】优先用具体动作、对话与可感知细节推进;' + tone,
|
|
156
|
-
'【反 AI】' + antiAi,
|
|
157
|
-
'【输出前自查】先确认:读者回报、关键转折、章末净变化是否可见,旧钩子责任是否回应,人物硬事实是否违背;确认通过后再输出,正文中不要输出核查结果。',
|
|
158
|
-
].join('\n')
|
|
159
|
-
}
|