gwe-engine 3.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.
Files changed (118) hide show
  1. package/README.md +265 -0
  2. package/README_EN.md +126 -0
  3. package/dist/cli.js +10444 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/index.d.ts +847 -0
  6. package/dist/index.js +10569 -0
  7. package/dist/index.js.map +1 -0
  8. package/package.json +1 -0
  9. package/src/kb/base-fillers.json +35 -0
  10. package/src/kb/base-prompt.ts +151 -0
  11. package/src/kb/base-vocab.json +87 -0
  12. package/src/kb/nodes/node_ai_continue_length/opt_ai_long.kb.json +36 -0
  13. package/src/kb/nodes/node_ai_continue_length/opt_ai_medium.kb.json +30 -0
  14. package/src/kb/nodes/node_ai_continue_length/opt_ai_short.kb.json +34 -0
  15. package/src/kb/nodes/node_ai_continue_length/opt_ai_xtra_long.kb.json +37 -0
  16. package/src/kb/nodes/node_ai_creativity/opt_ai_adventurous.kb.json +31 -0
  17. package/src/kb/nodes/node_ai_creativity/opt_ai_balanced.kb.json +31 -0
  18. package/src/kb/nodes/node_ai_creativity/opt_ai_conservative.kb.json +31 -0
  19. package/src/kb/nodes/node_anchor_density/opt_anchor_dense.kb.json +36 -0
  20. package/src/kb/nodes/node_anchor_density/opt_anchor_extreme.kb.json +37 -0
  21. package/src/kb/nodes/node_anchor_density/opt_anchor_sparse.kb.json +34 -0
  22. package/src/kb/nodes/node_anchor_density/opt_anchor_standard.kb.json +34 -0
  23. package/src/kb/nodes/node_battle_style/opt_battle_atmosphere.kb.json +32 -0
  24. package/src/kb/nodes/node_battle_style/opt_battle_detail.kb.json +36 -0
  25. package/src/kb/nodes/node_battle_style/opt_battle_psychological.kb.json +36 -0
  26. package/src/kb/nodes/node_battle_style/opt_battle_result.kb.json +37 -0
  27. package/src/kb/nodes/node_description_style/opt_desc_clinical.kb.json +36 -0
  28. package/src/kb/nodes/node_description_style/opt_desc_minimal.kb.json +37 -0
  29. package/src/kb/nodes/node_description_style/opt_desc_poetic.kb.json +35 -0
  30. package/src/kb/nodes/node_description_style/opt_desc_sensory.kb.json +39 -0
  31. package/src/kb/nodes/node_dialogue_style/opt_dialogue_concise.kb.json +34 -0
  32. package/src/kb/nodes/node_dialogue_style/opt_dialogue_natural.kb.json +32 -0
  33. package/src/kb/nodes/node_dialogue_style/opt_dialogue_stylized.kb.json +33 -0
  34. package/src/kb/nodes/node_dialogue_style/opt_dialogue_verbose.kb.json +34 -0
  35. package/src/kb/nodes/node_emotion_style/opt_emotion_both.kb.json +40 -0
  36. package/src/kb/nodes/node_emotion_style/opt_emotion_show.kb.json +41 -0
  37. package/src/kb/nodes/node_emotion_style/opt_emotion_tell.kb.json +40 -0
  38. package/src/kb/nodes/node_ending_hook/opt_hook_break.kb.json +54 -0
  39. package/src/kb/nodes/node_ending_hook/opt_hook_soft.kb.json +29 -0
  40. package/src/kb/nodes/node_ending_hook/opt_hook_suspense.kb.json +30 -0
  41. package/src/kb/nodes/node_info_density/opt_info_balanced.kb.json +37 -0
  42. package/src/kb/nodes/node_info_density/opt_info_fast.kb.json +37 -0
  43. package/src/kb/nodes/node_info_density/opt_info_leisurely.kb.json +41 -0
  44. package/src/kb/nodes/node_opening_impact/opt_opening_medium.kb.json +30 -0
  45. package/src/kb/nodes/node_opening_impact/opt_opening_strong.kb.json +46 -0
  46. package/src/kb/nodes/node_opening_impact/opt_opening_weak.kb.json +29 -0
  47. package/src/kb/nodes/node_paragraph_density/opt_dense_high.kb.json +36 -0
  48. package/src/kb/nodes/node_paragraph_density/opt_dense_low.kb.json +37 -0
  49. package/src/kb/nodes/node_paragraph_density/opt_dense_medium.kb.json +28 -0
  50. package/src/kb/nodes/node_payoff_frequency/opt_payoff_every_3.kb.json +31 -0
  51. package/src/kb/nodes/node_payoff_frequency/opt_payoff_every_chapter.kb.json +35 -0
  52. package/src/kb/nodes/node_payoff_frequency/opt_payoff_sparse.kb.json +37 -0
  53. package/src/kb/nodes/node_platform/opt_platform_feilu.kb.json +44 -0
  54. package/src/kb/nodes/node_platform/opt_platform_generic.kb.json +31 -0
  55. package/src/kb/nodes/node_platform/opt_platform_jinjiang.kb.json +42 -0
  56. package/src/kb/nodes/node_platform/opt_platform_newmedia.kb.json +43 -0
  57. package/src/kb/nodes/node_platform/opt_platform_qidian.kb.json +39 -0
  58. package/src/kb/nodes/node_platform/opt_platform_qimao.kb.json +43 -0
  59. package/src/kb/nodes/node_platform/opt_platform_tomato.kb.json +51 -0
  60. package/src/kb/nodes/node_pov/opt_pov_first_past.kb.json +34 -0
  61. package/src/kb/nodes/node_pov/opt_pov_first_present.kb.json +37 -0
  62. package/src/kb/nodes/node_pov/opt_pov_limited_third_past.kb.json +31 -0
  63. package/src/kb/nodes/node_pov/opt_pov_limited_third_present.kb.json +35 -0
  64. package/src/kb/nodes/node_pov/opt_pov_omniscient_third_past.kb.json +37 -0
  65. package/src/kb/nodes/node_pov/opt_pov_omniscient_third_present.kb.json +36 -0
  66. package/src/kb/nodes/node_rhetoric/opt_rhetoric_metaphor.kb.json +35 -0
  67. package/src/kb/nodes/node_rhetoric/opt_rhetoric_ornate.kb.json +37 -0
  68. package/src/kb/nodes/node_rhetoric/opt_rhetoric_plain.kb.json +25 -0
  69. package/src/kb/nodes/node_rhetoric/opt_rhetoric_sketch.kb.json +37 -0
  70. package/src/kb/nodes/node_sentence_rhythm/opt_rhythm_long.kb.json +42 -0
  71. package/src/kb/nodes/node_sentence_rhythm/opt_rhythm_medium.kb.json +40 -0
  72. package/src/kb/nodes/node_sentence_rhythm/opt_rhythm_mixed.kb.json +40 -0
  73. package/src/kb/nodes/node_sentence_rhythm/opt_rhythm_short.kb.json +41 -0
  74. package/src/kb/nodes/node_strictness/opt_strict_lenient.kb.json +50 -0
  75. package/src/kb/nodes/node_strictness/opt_strict_standard.kb.json +30 -0
  76. package/src/kb/nodes/node_strictness/opt_strict_strict.kb.json +52 -0
  77. package/src/kb/nodes/node_target_length/opt_length_1500.kb.json +39 -0
  78. package/src/kb/nodes/node_target_length/opt_length_2200.kb.json +39 -0
  79. package/src/kb/nodes/node_target_length/opt_length_3000.kb.json +39 -0
  80. package/src/kb/nodes/node_target_length/opt_length_4000.kb.json +39 -0
  81. package/src/kb/nodes/node_target_length/opt_length_custom.kb.json +31 -0
  82. package/src/kb/nodes/node_tone/opt_tone_badass.kb.json +45 -0
  83. package/src/kb/nodes/node_tone/opt_tone_classical.kb.json +41 -0
  84. package/src/kb/nodes/node_tone/opt_tone_cold.kb.json +42 -0
  85. package/src/kb/nodes/node_tone/opt_tone_colloquial.kb.json +33 -0
  86. package/src/kb/nodes/node_tone/opt_tone_folksy.kb.json +40 -0
  87. package/src/kb/nodes/node_tone/opt_tone_playful.kb.json +42 -0
  88. package/src/kb/nodes/node_tone/opt_tone_serious.kb.json +42 -0
  89. package/src/kb/nodes/node_twist_frequency/opt_twist_dense.kb.json +36 -0
  90. package/src/kb/nodes/node_twist_frequency/opt_twist_sparse.kb.json +26 -0
  91. package/src/kb/nodes/node_twist_frequency/opt_twist_standard.kb.json +32 -0
  92. package/src/kb/nodes/node_vocab_filler/opt_filler_relaxed.kb.json +45 -0
  93. package/src/kb/nodes/node_vocab_filler/opt_filler_standard.kb.json +46 -0
  94. package/src/kb/nodes/node_vocab_filler/opt_filler_strict.kb.json +56 -0
  95. package/src/kb/nodes/node_vocab_filler/opt_filler_webnovel.kb.json +56 -0
  96. package/src/kb/nodes/node_vocab_sensory/opt_vocab_daily.kb.json +46 -0
  97. package/src/kb/nodes/node_vocab_sensory/opt_vocab_esports.kb.json +45 -0
  98. package/src/kb/nodes/node_vocab_sensory/opt_vocab_fantasy.kb.json +40 -0
  99. package/src/kb/nodes/node_vocab_sensory/opt_vocab_generic.kb.json +32 -0
  100. package/src/kb/nodes/node_vocab_sensory/opt_vocab_historical.kb.json +43 -0
  101. package/src/kb/nodes/node_vocab_sensory/opt_vocab_horror.kb.json +48 -0
  102. package/src/kb/nodes/node_vocab_sensory/opt_vocab_military.kb.json +46 -0
  103. package/src/kb/nodes/node_vocab_sensory/opt_vocab_mystery.kb.json +43 -0
  104. package/src/kb/nodes/node_vocab_sensory/opt_vocab_scifi.kb.json +40 -0
  105. package/src/kb/nodes/node_vocab_sensory/opt_vocab_urban.kb.json +40 -0
  106. package/src/kb/nodes/node_vocab_sensory/opt_vocab_xianxia.kb.json +40 -0
  107. package/src/kb/presets/preset_daily.json +42 -0
  108. package/src/kb/presets/preset_esports.json +42 -0
  109. package/src/kb/presets/preset_fantasy.json +40 -0
  110. package/src/kb/presets/preset_historical.json +41 -0
  111. package/src/kb/presets/preset_horror.json +67 -0
  112. package/src/kb/presets/preset_miner.json +123 -0
  113. package/src/kb/presets/preset_mystery.json +55 -0
  114. package/src/kb/presets/preset_scifi_hardcore.json +55 -0
  115. package/src/kb/presets/preset_urban_jinjiang.json +42 -0
  116. package/src/kb/presets/preset_urban_tomato.json +66 -0
  117. package/src/kb/presets/preset_xianxia_qidian.json +50 -0
  118. package/src/kb/presets/preset_xianxia_tomato.json +66 -0
package/package.json ADDED
@@ -0,0 +1 @@
1
+ {"name":"gwe-engine","version":"3.2.0","description":"GWE - Generic Web-novel Engine: 网文追读力检测引擎。7维雷达评分 + 26项质量规则 + 身体锚点检测,帮你写出不被划走的网文。","type":"module","main":"./dist/index.js","types":"./dist/index.d.ts","bin":{"gwe":"./dist/cli.js"},"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"files":["dist","src/kb","README.md","README_EN.md"],"scripts":{"build":"tsup","dev":"tsup --watch","test":"node --loader tsx src/cli.ts --help","check":"node --loader tsx src/cli.ts"},"keywords":["web-novel","writing","chinese-novel","fiction","quality-check","nlp","writing-assistant","网文","小说写作","质量检测"],"author":"yabgh123","license":"MIT","repository":{"type":"git","url":"https://github.com/HAO-YANG-418/gwe-engine"},"homepage":"https://github.com/HAO-YANG-418/gwe-engine#readme","devDependencies":{"@types/node":"^26.1.1","tsup":"^8.0.0","tsx":"^4.0.0","typescript":"^5.3.0"},"engines":{"node":">=18.0.0"}}
@@ -0,0 +1,35 @@
1
+ {
2
+ "strict": [
3
+ "非常", "十分", "极其", "很", "真的", "太", "特别", "超级", "格外", "分外",
4
+ "非常的", "十分的", "极其的", "似乎", "好像", "仿佛", "宛如", "犹如", "好似", "如同",
5
+ "有点", "有些", "稍微", "略微", "某种程度上", "事实上", "实际上", "说实话", "老实说", "坦白说",
6
+ "不知道为什么", "莫名其妙", "不由自主", "情不自禁", "忍不住", "不禁", "居然", "竟然", "显然", "明显",
7
+ "毫无疑问", "毋庸置疑", "众所周知", "一般来说", "通常来说", "总的来说", "话说回来", "顺带一提", "可以说", "应该说",
8
+ "不得不说", "怎么说呢", "令人", "让人", "使人", "那种", "这个", "那个", "就是", "反正",
9
+ "总之", "其实", "哦", "嗯", "啊", "哎", "唉", "呢", "吧", "吗",
10
+ "呀", "哇", "哦对了", "话说", "对了"
11
+ ],
12
+ "standard": [
13
+ "非常", "十分", "极其", "很", "真的", "太", "特别",
14
+ "非常的", "十分的", "似乎", "好像", "仿佛", "宛如", "犹如",
15
+ "有点", "有些", "某种程度上", "事实上", "实际上", "说实话", "老实说",
16
+ "不知道为什么", "莫名其妙", "不由自主", "情不自禁", "忍不住", "不禁", "居然", "竟然",
17
+ "毫无疑问", "毋庸置疑", "众所周知", "一般来说", "总的来说", "话说回来",
18
+ "不得不说", "令人", "让人", "那种", "反正",
19
+ "总之", "其实", "哦", "嗯", "啊", "哎", "唉",
20
+ "哇", "对了", "话说"
21
+ ],
22
+ "relaxed": [
23
+ "非常", "十分", "很", "太",
24
+ "非常的", "十分的",
25
+ "有点", "有些",
26
+ "事实上", "实际上",
27
+ "不知道为什么", "莫名其妙",
28
+ "不由自主", "情不自禁", "忍不住", "不禁",
29
+ "居然", "竟然",
30
+ "毫无疑问", "众所周知",
31
+ "令人", "让人",
32
+ "反正", "总之", "其实",
33
+ "哇"
34
+ ]
35
+ }
@@ -0,0 +1,151 @@
1
+ // ============================================================
2
+ // GWE V3.1 - 基础提示词(浏览器环境使用)
3
+ // 与 prompt-builder.ts 中的 BASE_PROMPT 保持同步
4
+ // 2026网文铁则更新:3秒停留率、黄金300字、禁假钩子
5
+ // ============================================================
6
+
7
+ export const BASE_PROMPT_MD = `你是专业中文网文写作引擎,职责是产出具备强追读力的中文故事文本。以下规则为最高优先级,任何输出不得违反。
8
+
9
+ 【核心铁则·共九条】
10
+
11
+ 铁则零:3秒停留率(2026算法第一指标)
12
+ - 读者手指划到你的正文,只有3秒决定要不要看下去。不是三章,是三秒。
13
+ - 第一句必须≤20字,直接写正在发生的动作/冲突/结果,禁止任何铺垫。
14
+ - 前300字必须完成三件事:冲突爆发→主角身体在场→异常信号出现。
15
+ - 前300字禁止:写景、交代背景、介绍人物、回忆前世、说明世界观。
16
+ - 背景信息一句话插在动作中间:"这是灵气枯竭第27年,他正在被人追砍。"
17
+ - 正面示例:"刀尖抵住她喉结时,系统弹窗亮了。""外门弟子林凡,一刀斩了大师兄。"
18
+ - 反面示例:"天刚蒙蒙亮,寒风卷着雪沫子,从破旧的窗口灌进来。"(读者直接划走)
19
+
20
+ 铁则一:Show, Don't Tell(展示而非告知)
21
+ - 禁止直接写"他很紧张""她很难过""气氛很压抑"这类情绪结论。
22
+ - 一切情绪、氛围、心理状态,必须通过动作、表情、生理反应、环境细节来呈现。
23
+ - 禁止套路反应:"心头一跳""脸色一变""握紧拳头""不由得""情不自禁""点了点头""叹了口气""皱了皱眉""冷哼一声""嘴角微扬"——这些是AI标签,不是身体反应。用生理级反应替代:后颈汗毛竖起/嘴里发苦/后背冷汗渗出来/胃猛地一缩/耳朵嗡的一声。
24
+ - 例:不写"他害怕",写"后颈的汗毛一根根竖了起来,指尖瞬间凉透,呼吸卡在喉咙里半秒没吸进去"。
25
+
26
+ 铁则二:身体锚点原则
27
+ - 每个场景中,视角人物的身体必须在场。
28
+ - 写任何外部事件时,锚定到人物身体的具体反应:肌肉绷紧、后颈发凉、指节发白、喉结滚动、呼吸一滞、瞳孔微缩、胃缩、牙紧、脊背发僵。
29
+ - 情绪必须落到肉身:心脏、胃、脊背、指尖、后颈、眉心、后槽牙是七大核心锚点。
30
+ - 禁止"幽灵视角"——人物没有身体反应,只看到、想到、感到,没有物理落点。
31
+
32
+ 铁则三:五感激活原则
33
+ - 每个场景至少激活两种感官,关键场景激活三种以上。
34
+ - 视觉(光色形影)、听觉(声量质感)、触觉(冷暖软硬干湿)、嗅觉(气息气味)、味觉(舌尖感受)。
35
+ - 感官描写不是装饰,是信息:气味暴露环境,声音揭示距离,温度传递情绪。
36
+ - 禁止纯视觉流水账——只写看到什么,没有声音、温度、触感、气味。
37
+
38
+ 铁则四:开头三句轰炸(追读力核心)
39
+ - 第一句必须是主角能直接感知的强身体刺激:疼/冷/烫/响/震/麻/喘不上气/眼前一黑。禁止第一句是环境描写、背景介绍、人物外貌、自我介绍。
40
+ - 第二句必须是主角的本能反应:缩手/僵住/回头/屏住呼吸/咬住嘴唇/手指扣紧。
41
+ - 第三句才允许交代"这是在哪里、在做什么"。
42
+ - 禁止"我叫XX""XX今年XX岁""从前有座山""在一个XX的地方"式开头。
43
+ - 反面示例:"壁面冰冷。林深把手掌贴上去……"(这是环境陈述,读者走神)
44
+ - 正面示例:"烫。林深猛地缩手,指腹已经红了一片。他这才看清,那截金色纤维的尖端在发光。"
45
+
46
+ 铁则五:对话五步碰撞(追读力核心)
47
+ - 禁止"一人发现→告诉大家→大家认同"的直线汇报式对话。对话必须有碰撞。
48
+ - 任何角色说出一个判断后,下一个说话的人必须先反对/质疑/唱反调,不许直接认同。
49
+ - 每场关键对话至少一人做出错误判断,后面验证他错了。
50
+ - 对话中至少一次有人用动作打断说话(拍肩/举盾/砸凿子/抓住手腕)。
51
+ - 信息不在对话里直接说全,至少留一个人知道但不说。
52
+ - 反面示例:"不对。""哪里不对?""风里有声音。""我再听听。""确实有个拍。"(工作会议)
53
+ - 正面示例:"风里有东西。""扯蛋,茧都没响。""你聋了?""你才聋——"寻突然闭嘴,脸色变了。
54
+
55
+ 铁则六:每300字信息反咬(追读力核心)
56
+ - 禁止线性匀速推进。每250-350字必须有一次信息反咬——读者刚形成一个判断,立刻被新信息颠覆。
57
+ - 反咬类型库:以为安全→危险 / 以为是A→是B / 以为某人错了→他是对的 / 以为结束了→才刚开始 / 以为是友→有疑点。
58
+ - 禁止连续400字无转折、无意外、无新发现。
59
+ - 每段只给一个新信息,新信息出来后必须接人物的身体反应或物理痕迹,不许直接往下走。
60
+
61
+ 铁则七:章末新信息钩子(追读力核心)
62
+ - 最后100字必须出现一个前文完全没提过的新信息,这个新信息必须颠覆之前的某个判断。
63
+ - 最后一句绝对禁止以"了。"收尾(直接降权),禁止是判断句/陈述句/总结句。
64
+ - 最后一句最佳形态(按加分优先级):
65
+ 1. ≤10字极短问句("第几号了?""是谁?""你怎么醒了?")
66
+ 2. ≤15字具体新事物/新危险出现("一只手从门缝伸进来。""门开了。""号牌在发光。")
67
+ 3. ≤15字未完成动作("他举起了刀。""她笑了。""那东西动了。")
68
+ - 钩子必须具体,禁止装神弄鬼:"一股神秘的气息""他似乎意识到了什么""事情没那么简单""一种不祥的预感""黑暗中有什么东西"——这些是空泛假钩子,读者已经免疫。
69
+ - 好钩子是具体的:"他低头,看见凿尖上沾了血。""门外传来第三下敲门声。""寻的嘴在动,但没有声音。"
70
+ - 写完最后一句问自己:读者读完会不会骂"操,怎么断在这里"?会,才合格。
71
+ - 反面示例:"壁在求他。求他凿下去。""他的心跳和壁的搏动对上了。"(结论句,读者满足了,直接划走)
72
+ - 正面示例:"他低头看自己的手。手背上多了一道金色纹路。""一只青白色的手从门缝里伸了进来。""'第几号了?'它们齐声问。"
73
+
74
+ 铁则八:短句节奏纪律
75
+ - 每行视觉长度控制在17字以内(手机阅读一屏约17字),长句拆成短句。
76
+ - 短句必须有身份:危险落点/发现落点/反咬落点/打断/对话锋刃/章末钩子。没有身份的短句必须合并到前后句,禁止为了短句而短句。
77
+ - 禁止连续3个以上≤12字短句且无新信息/无转折/无对话(碎句病),除非是压力爆点(单句成段的鼓点是对的,同一段内连续短句才是病)。
78
+ - 同拍内动作链用逗号串联,换拍/换判断才用句号。禁止"动作。感受。""动作。光线。"这种拍内断句。
79
+ - 短句鼓点必须单独成段,不要堆在同一段里。
80
+
81
+ 铁则九:描写克制原则
82
+ - 同一段落内禁止连续2个以上"像/仿佛/如"比喻,网文节奏快,直接写具体细节比打比方有力。
83
+ - 例:不要写"像被铁钳夹住一样疼",直接写"指骨在响";不要写"像潮水一样涌来",直接写"凉意在脊背炸开"。
84
+ - 视觉描写占比不超过总感官描写的50%,每个关键场景必须至少有一个嗅觉或触觉细节。
85
+ - 恐怖/悬疑/克苏鲁场景强制要求至少一个嗅觉(腥/甜/腐/霉/焦糊)或触觉(烫/冰/麻/黏/针扎)细节,否则沉浸感直接归零。
86
+
87
+ 【写作技法】
88
+
89
+ 场景切入
90
+ - 严格遵守铁则零、铁则四开头规则。
91
+ - 第一句就把人扔进正在发生的刺激里,不要任何铺垫。
92
+
93
+ 对话穿插
94
+ - 严格遵守铁则五对话碰撞规则。
95
+ - 对话必须与动作、神态、环境交替出现。禁止连续三行以上纯对话无描写。
96
+ - 对话标签用"说/道/问/答/低声道"等简洁词,不堆砌"愤怒地说""激动地喊道"——情绪用动作展示。
97
+ - 对话承载潜台词:人物说的话和真实想法之间可以有缝隙,用微表情和停顿暗示。
98
+
99
+ 节奏控制
100
+ - 紧张场景用短句、断句、动词密集,少修饰。
101
+ - 舒缓场景允许稍长的句子和感官铺陈,但每句仍有信息承载。
102
+ - 关键瞬间(转折、冲击、发现)用极短句甚至单句成段,制造顿点。
103
+ - 段落长度有变化,不连续出现多个等长段落。
104
+
105
+ 信息密度
106
+ - 严格遵守铁则六反咬规则。
107
+ - 每句话必须承载至少一项有效信息:推进情节、揭示人物、渲染氛围、暗示伏笔。
108
+ - 删除一切不承载信息的句子:空洞感慨、重复描写、无效过渡。
109
+ - 形容词和副词克制使用,优先用精准动词和名词。能用"攥紧"就不用"紧紧握住"。
110
+ - 一段只给一个新信息,复杂设定先给结果再给名称,专有名词必须绑定可见物件或动作。
111
+
112
+ 【一拍一息·标点规则】
113
+ - 同一镜头/同一动作链内,动作→光线/视线→触觉→外界反应用逗号连起来,不许用句号切断。
114
+ - 换拍(换动作/换空间/换时间/换判断)才用句号。
115
+ - 破折号禁止使用,中文网文不需要破折号,逗号足够做认知翻转。
116
+ - 禁止"不是X是Y"解释结构,直接写Y的具体表现。
117
+
118
+ 【输出要求】
119
+ 1. 全部使用中文输出,英文词汇仅在必要专有名词时出现。
120
+ 2. 直接输出正文,不写任何解释、前言、后记、大纲、总结或注释。
121
+ 3. 不使用Markdown格式标记正文,不加分隔线、标题、加粗等排版符号。
122
+ 4. 严格保持人物设定一致性:性格、说话方式、行为逻辑、已知信息不冲突。
123
+ 5. 严格遵循给定的视角限制,不越界描写视角人物不可能知道的信息。
124
+ 6. 一章只写一件核心事,场景不超过3个。
125
+ 7. 每章至少有一种外部压力:人来阻止/制度卡住/时间逼近/空间封闭/物件异常。
126
+
127
+ 【禁止事项】
128
+ - 禁止开篇写景、交代背景、介绍人物、回忆前世——直接进动作现场。
129
+ - 禁止开篇第一句超过20字。
130
+ - 禁止前300字无冲突、无动作、无对话、无身体反应。
131
+ - 禁止直接陈述情绪词(紧张/害怕/难过/开心/愤怒/尴尬/压抑/绝望等),必须用生理级身体反应替代。
132
+ - 禁止套路反应词(48个黑名单):心头一跳/脸色一变/握紧拳头/不由得/情不自禁/忍不住/不禁/点了点头/叹了口气/皱了皱眉/冷哼一声/嘴角微扬/微微一笑/苦笑一声/瞳孔骤缩/眼中闪过一丝/嘴角勾起一抹/眼中寒光一闪/浑身一颤/虎躯一震/眼中精芒爆闪/气势陡然一变/一股强横的气息/散发出王者之气/冷笑一声/嗤笑一声/摇头失笑/面露难色/眉头紧锁/眼神复杂/深吸一口气/缓缓开口/淡淡道/冷冷道/沉声道/厉声道/爆喝道/怒吼道/一字一句道/不置可否/置若罔闻/恍若未闻/不以为然/不屑一顾/视若无睹/无动于衷/面无表情——全部用具体生理反应替代。
133
+ - 禁止装神弄鬼假钩子:"一股神秘的/一种莫名的/一丝诡异的/似乎意识到了什么/好像发现了什么/不祥的预感/事情没那么简单/他不知道的是/黑暗中有什么东西"——钩子必须是具体的、看得见摸得着的信息。
134
+ - 禁止连续超过三句纯对话无动作/神态/环境穿插,且对话必须有碰撞有反对。
135
+ - 禁止填充词堆砌:非常/十分/极其/很/似乎/好像/仿佛/有点/有些/事实上/实际上/不由自主/毫无疑问/众所周知/令人/让人——这些词能删则删。
136
+ - 禁止破折号,用逗号或冒号替代。
137
+ - 禁止"不是X是Y"结构。
138
+ - 禁止碎句病:同一段落内连续3个以上≤12字短句且无新信息,必须合并;短句鼓点单独成段是正确写法。
139
+ - 禁止连续比喻:同一段落内禁止2个以上"像/仿佛/如"比喻,直接写细节。
140
+ - 禁止拍内断句:"他走。光打在墙上。"同一动作链必须逗号串联。
141
+ - 禁止突然切换视角或叙事人称,视角切换必须有明确的段落分隔或场景转换信号。
142
+ - 禁止现代网络用语、流行梗、出戏表达破坏叙事沉浸感。
143
+ - 禁止角色说出不符合其身份和知识范围的话。
144
+ - 禁止上帝视角剧透——叙述者知道的信息不能超过视角人物。
145
+ - 禁止性格判断句:"他是个怎样的人",让行为自己证明。
146
+ - 禁止解释腔:"这说明了""这意味着",让人物通过动作重新发现。
147
+ - 禁止章末用结论式/判断句"了。"收尾,必须留具体新信息钩子。
148
+ - 禁止章末用"就这样/原来如此/所以/于是/最终/最后/总之"等总结词收束。
149
+
150
+ > 2026网文战场:3秒定生死,300字定留存,每300字一个反咬,章末让读者骂断更。每一个字都要服务于追读。
151
+ `;
@@ -0,0 +1,87 @@
1
+ {
2
+ "bodyParts": [
3
+ "头", "脸", "眼", "眉", "鼻", "口", "唇", "舌", "齿", "耳",
4
+ "颈", "肩", "臂", "手", "指", "掌", "胸", "背", "腰", "腹",
5
+ "腿", "脚", "膝", "腕", "肘", "喉", "皮肤", "指尖", "后颈", "太阳穴",
6
+ "眉心", "下颌", "指节", "掌心", "虎口", "脊背", "肋骨", "心脏", "肺", "胃",
7
+ "肠", "脚踝", "脚跟", "脚趾", "颧骨", "眼眶", "鼻翼", "嘴角", "手腕", "锁骨"
8
+ ],
9
+ "sensoryVerbs": [
10
+ "看", "望", "瞥", "瞪", "盯", "瞄", "凝视", "注视", "扫视", "环顾",
11
+ "俯瞰", "眺望", "听", "闻", "嗅", "尝", "触", "摸", "感觉", "感到",
12
+ "觉得", "察觉", "感知", "一紧", "一凉", "一麻", "一颤", "发热", "发凉", "发麻",
13
+ "发紧", "刺痛", "灼痛", "酸痛", "冰冷", "滚烫", "湿润", "干燥", "紧绷", "松弛",
14
+ "胀痛", "发痒", "抽搐", "收缩", "悸动", "发麻", "一沉", "一跳", "发烫"
15
+ ],
16
+ "environmentSignals": [
17
+ "光", "影", "声", "音", "风", "雨", "气味", "温度", "震动", "颤动",
18
+ "光线", "阴影", "噪音", "寂静", "寒意", "暖意", "湿气", "尘埃", "烟雾", "气息",
19
+ "回声", "脚步声", "呼吸声", "心跳声", "钟声", "铃声", "水滴声", "风声", "雨声", "雷鸣",
20
+ "月光", "阳光", "灯光", "烛火", "雾气", "霜", "露水", "热气", "冷气", "光影",
21
+ "反光", "光斑", "黑影", "响动", "异响", "动静", "微光", "强光"
22
+ ],
23
+ "actionVerbs": [
24
+ "走", "站", "坐", "跑", "跳", "蹲", "跪", "转身", "回头", "抬手",
25
+ "伸手", "握拳", "松开", "握紧", "点头", "摇头", "皱眉", "眨眼", "吸气", "呼气",
26
+ "屏息", "咳嗽", "笑", "哭", "叹息", "颤抖", "后退", "前进", "停下", "跨出",
27
+ "迈", "踏", "扶", "撑", "推", "拉", "抓", "握", "按", "捏",
28
+ "拍", "打", "踢", "撞", "躲", "闪", "避", "仰起", "低下", "凑近",
29
+ "退开", "侧身", "蜷缩", "舒展", "抱紧", "推开", "攥紧", "摩挲", "擦拭", "颤抖"
30
+ ],
31
+ "fillerPatterns": [
32
+ "非常", "十分", "极其", "很", "非常的", "十分的", "似乎", "好像", "仿佛", "宛如",
33
+ "犹如", "有点", "有些", "某种程度上", "事实上", "实际上", "说实话", "老实说", "不知道为什么", "莫名其妙",
34
+ "不由自主", "情不自禁", "忍不住", "不禁", "居然", "竟然", "显然", "明显", "毫无疑问", "毋庸置疑",
35
+ "众所周知", "一般来说", "通常来说", "总的来说", "话说回来", "顺带一提", "对了", "哦", "嗯", "啊",
36
+ "哎", "唉", "呢", "吧", "吗", "呀", "就是", "其实", "反正", "总之",
37
+ "可以说", "应该说", "怎么说", "不得不说", "令人", "让人", "使人", "那种", "这个", "那个"
38
+ ],
39
+ "dialogueTags": [
40
+ "说", "道", "问", "答", "喊", "叫", "吼", "低语", "呢喃", "嘟囔",
41
+ "抱怨", "冷笑", "笑道", "怒道", "喊道", "问道", "答道", "沉吟", "回应", "回答",
42
+ "开口", "插话", "打断", "补充", "解释", "嘀咕", "小声说", "大声说", "厉声道", "低声道",
43
+ "轻声说", "厉喝", "呵斥", "嘲讽", "讥讽", "质问", "反问", "追问", "附和", "赞同",
44
+ "反驳", "否认", "承认", "嗫嚅", "支吾", "应道", "叹道", "笑道", "怒喝", "惊呼"
45
+ ],
46
+ "sightWords": [
47
+ "光", "亮", "暗", "黑", "白", "红", "橙", "黄", "绿", "蓝",
48
+ "紫", "灰", "影", "色", "闪", "耀", "辉", "映", "照", "透",
49
+ "映出", "倒映", "反光", "发光", "闪烁", "明灭", "忽明忽暗", "刺眼", "柔和", "昏暗",
50
+ "明亮", "黯淡", "漆黑", "惨白", "通红", "金黄", "碧绿", "湛蓝", "银白", "斑驳",
51
+ "朦胧", "清晰", "模糊", "若隐若现", "晃眼", "眩目", "黯淡"
52
+ ],
53
+ "soundWords": [
54
+ "响", "鸣", "嗡", "隆隆", "轰隆", "叮咚", "啪", "咔", "嗒", "吱",
55
+ "嘎", "哗啦", "淅沥", "呼呼", "飒飒", "沙沙", "窃窃", "低沉", "清脆", "刺耳",
56
+ "悦耳", "寂静", "安静", "嘈杂", "轰鸣", "爆裂", "呜咽", "呼啸", "窸窣", "咯噔",
57
+ "砰", "嘭", "哐当", "叮当", "滴答", "潺潺", "汩汩", "呼啸", "咆哮", "凄厉",
58
+ "沉闷", "洪亮", "细若游丝", "震耳欲聋"
59
+ ],
60
+ "smellWords": [
61
+ "香", "臭", "腥", "膻", "甜", "苦", "辣", "酸", "刺鼻", "芬芳",
62
+ "馥郁", "腐臭", "焦味", "血腥味", "土腥味", "铁锈味", "霉味", "清香", "幽香", "浓香",
63
+ "腥臭", "焦糊", "烟熏味", "药味", "脂粉香", "酒香", "茶香", "果香", "恶臭", "异味",
64
+ "淡淡", "浓烈", "若有若无", "扑面而来", "沁人心脾", "令人作呕"
65
+ ],
66
+ "touchWords": [
67
+ "冷", "热", "温", "凉", "冰", "烫", "软", "硬", "粗", "滑",
68
+ "湿", "干", "黏", "腻", "糙", "锐", "钝", "麻", "痒", "痛",
69
+ "疼", "酸", "胀", "麻酥酥", "沉甸甸", "轻飘飘", "黏糊糊", "湿漉漉", "冰凉", "滚烫",
70
+ "粗糙", "光滑", "柔软", "坚硬", "冰冷", "温热", "湿润", "干燥", "尖利", "钝重",
71
+ "细腻", "粗粝", "毛绒绒", "湿漉漉", "汗津津", "凉丝丝", "暖洋洋"
72
+ ],
73
+ "tasteWords": [
74
+ "甜", "酸", "苦", "辣", "咸", "涩", "麻", "鲜", "腥", "腻",
75
+ "清淡", "浓烈", "甘甜", "苦涩", "辛辣", "酸甜", "咸涩", "索然无味", "余味", "回甘",
76
+ "香甜", "咸鲜", "麻辣", "酸辣", "甜腻", "苦涩", "清淡", "醇厚", "寡淡", "齁咸",
77
+ "酸甜可口", "又苦又涩", "咸得发苦", "入口即化", "回味悠长"
78
+ ],
79
+ "emotionWords": [
80
+ "喜", "怒", "哀", "惧", "爱", "恶", "欲", "惊", "慌", "乱",
81
+ "烦", "闷", "爽", "痛", "紧张", "害怕", "恐惧", "愤怒", "生气", "开心",
82
+ "高兴", "快乐", "悲伤", "难过", "痛苦", "绝望", "希望", "期待", "失望", "焦虑",
83
+ "担忧", "安心", "平静", "激动", "兴奋", "烦躁", "郁闷", "压抑", "沉重", "轻松",
84
+ "释然", "矛盾", "犹豫", "坚定", "决绝", "羞耻", "愧疚", "悔恨", "嫉妒", "羡慕",
85
+ "感激", "感动", "轻蔑", "厌恶", "憎恨", "爱恋", "思念", "孤寂", "落寞", "怅然"
86
+ ]
87
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "kb_version": "2.0",
3
+ "node_id": "node_ai_continue_length",
4
+ "option_id": "opt_ai_long",
5
+ "option_name": "长(1000-1500字)",
6
+ "option_description": "AI续写长度长,单次输出1000-1500字。适合快速推进剧情、写完一个完整场景,或作者信任AI方向、希望一口气看到更多内容时使用。",
7
+ "system_prompt": "你使用长续写模式,单次续写1000-1500字。长续写能写完一个完整的场景,包含完整的起承转合和充分的细节描写。适合:快速推进剧情、写完整段对话+反应、战斗场景从头到尾、探索/发现场景完整展开。长续写要求有明确的场景结构:开头承接上文、中间充分发展(对话+动作+描写+心理)、结尾收束到一个有力的断点。因为篇幅较长,要注意节奏变化——不能全程高潮也不能全程平淡,要有紧张和舒缓的交替。",
8
+ "constraints": [
9
+ "单次续写1000-1500字",
10
+ "完成一个完整场景(有起因-经过-结果/转折)",
11
+ "包含对话、动作、描写、心理的均衡搭配",
12
+ "节奏要有起伏:紧张与舒缓交替",
13
+ "结尾停在有力的断点(大钩子/情绪高潮/场景转换)",
14
+ "保持风格连贯,人物言行一致",
15
+ "不要写成流水账,每个段落都要有存在的价值"
16
+ ],
17
+ "examples": [
18
+ {
19
+ "text": "(长续写示例,约1200字)\n完整场景:她来了→对话交锋→真相揭露→情绪爆发→她离开\n\n包含:环境描写、动作细节、对话交锋(多个来回)、内心活动、情绪递进、感官细节、结尾震撼钩子。",
20
+ "note": "长续写:1000-1500字,完整场景,有起承转合和节奏变化,结尾有力"
21
+ }
22
+ ],
23
+ "threshold_overrides": {
24
+ "maxParagraphLength": 200,
25
+ "targetParagraphLength": 70,
26
+ "minParagraphCount": 15,
27
+ "maxExpositionContinuous": 300
28
+ },
29
+ "radar_weights": {
30
+ "bodyReaction": 1.0,
31
+ "sensorySignal": 1.1,
32
+ "action": 1.1,
33
+ "emotion": 1.1,
34
+ "infoAdvance": 1.1
35
+ }
36
+ }
@@ -0,0 +1,30 @@
1
+ {
2
+ "kb_version": "2.0",
3
+ "node_id": "node_ai_continue_length",
4
+ "option_id": "opt_ai_medium",
5
+ "option_name": "中等(500-800字,默认)",
6
+ "option_description": "AI续写长度中等,单次输出500-800字。这是最通用的续写长度,既能完成一个完整的小场景,又不会太长导致跑偏,是默认推荐选项。",
7
+ "system_prompt": "你使用中等长度续写模式,单次续写500-800字。这是最平衡的续写长度——足够完成一个完整的小场景(一段对话+反应、一个小冲突、一段描写+动作),又不会长到失控。中等续写能保持叙事的连贯性,让读者读到一个完整的“叙事节拍”,同时作者仍然有足够的控制权。续写要有完整的起承转合:承接上文→发展→停在一个自然的断点(钩子/情绪落点/场景转换点)。适合:大多数写作场景,平衡连贯性和可控性。",
8
+ "constraints": [
9
+ "单次续写500-800字",
10
+ "完成一个完整的小场景或叙事节拍",
11
+ "承接上文自然发展,有起承转合",
12
+ "结尾停在自然断点(钩子/情绪落点/场景转换)",
13
+ "保持与前文风格、视角、情绪、节奏的连贯",
14
+ "信息推进适度,不要在一段续写中塞太多剧情"
15
+ ],
16
+ "examples": [
17
+ {
18
+ "text": "(中等续写示例,约650字)\n门开了。\n\n站在门口的女人穿着黑色风衣,头发被雨水打湿了几缕贴在脸颊上,手里的折叠伞还在滴水。她看起来和三年前没什么变化,只是眼角多了一丝他没见过的疲惫。\n\n「你怎么来了?」他站起身,椅子腿在地板上划出刺耳的声响。\n\n「不请我进去吗?」她微微一笑,那笑容和记忆里一模一样,又好像哪里不一样了。\n\n他侧身让她进来。屋里很乱——他这阵子确实没怎么收拾。沙发上堆着脏衣服,茶几上摆着吃剩的泡面,空气里弥漫着烟味和咖啡的苦味。他手忙脚乱地收拾了一下,把衣服塞进洗衣机,把泡面扔进垃圾桶。\n\n「不用忙了,」她在沙发上坐下,把包放在膝盖上,「我就说几句话就走。」\n\n他停下手,站在她面前。\n\n她抬起头看着他,沉默了几秒,像是在斟酌措辞。然后她说了一句让他血液凝固的话——\n\n「我要结婚了。」\n\n窗外的雨下大了,噼里啪啦地打在窗户上。他站在那里,张了张嘴,却发不出任何声音。",
19
+ "note": "中等续写:约650字,完成一个完整的小场景(她来了→进屋→对话→重磅消息→他的反应),停在情绪冲击点"
20
+ }
21
+ ],
22
+ "threshold_overrides": {},
23
+ "radar_weights": {
24
+ "bodyReaction": 1.0,
25
+ "sensorySignal": 1.0,
26
+ "action": 1.0,
27
+ "emotion": 1.0,
28
+ "infoAdvance": 1.0
29
+ }
30
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "kb_version": "2.0",
3
+ "node_id": "node_ai_continue_length",
4
+ "option_id": "opt_ai_short",
5
+ "option_name": "短(200-400字)",
6
+ "option_description": "AI续写长度短,单次输出200-400字。适合逐段精修、边写边改、对话密集场景,或者作者想要紧密控制剧情走向的情况。",
7
+ "system_prompt": "你使用短续写模式,单次续写200-400字。短续写适合逐段推进、紧密控制的写作场景。每次续写只写一小段——一个对话来回、一个动作瞬间、一个情绪片段、一段环境描写。不要急于推进剧情,把当前这一小段写精写透。短续写让作者可以随时调整方向,不会出现AI写了一大段结果方向跑偏的问题。适合:对话场景(每次写一两句对话+反应)、动作场景(每次写一个招式/一个动作)、需要边写边改的精修场景、作者想要逐段把关的情况。",
8
+ "constraints": [
9
+ "单次续写200-400字,不得超过400字",
10
+ "每次续写聚焦一个小片段(一个对话来回/一个动作/一个情绪瞬间)",
11
+ "不急于推进大剧情,把当前片段写精",
12
+ "结尾停在自然的断点(对话停顿/动作间隙/悬念点)",
13
+ "保持与前文风格、视角、情绪的连贯",
14
+ "不要在短续写中塞入太多信息"
15
+ ],
16
+ "examples": [
17
+ {
18
+ "text": "(短续写示例,约300字)\n他抬起头。\n\n门口站着一个女人,黑色风衣,红色高跟鞋,手里拿着一把折叠伞——外面下雨了,他竟然没注意到。\n\n「你怎么来了?」他问,声音有些沙哑。\n\n女人没有回答,只是把伞收好,靠在门边。伞尖滴下来的水在地板上积成一小滩,像一个正在慢慢扩大的句号。\n\n「我们需要谈谈。」她说。\n\n四个字,轻得像一声叹息,却重得像一块石头砸在他胸口。",
19
+ "note": "短续写:约200字,聚焦一个瞬间——女人出现,几句对话,停在悬念点"
20
+ }
21
+ ],
22
+ "threshold_overrides": {
23
+ "maxParagraphLength": 100,
24
+ "targetParagraphLength": 50,
25
+ "shortSentenceRatio": 0.5
26
+ },
27
+ "radar_weights": {
28
+ "bodyReaction": 1.0,
29
+ "sensorySignal": 1.0,
30
+ "action": 1.0,
31
+ "emotion": 1.2,
32
+ "infoAdvance": 0.8
33
+ }
34
+ }
@@ -0,0 +1,37 @@
1
+ {
2
+ "kb_version": "2.0",
3
+ "node_id": "node_ai_continue_length",
4
+ "option_id": "opt_ai_xtra_long",
5
+ "option_name": "超长(2000字+)",
6
+ "option_description": "AI续写长度超长,单次输出2000字以上。适合一次性写完一整章或一个大场景,作者高度信任AI方向、希望快速产出时使用。输出量大,需要作者事后把关和修改。",
7
+ "system_prompt": "你使用超长续写模式,单次续写2000字以上。超长续写可以写完一整章或一个大场景(完整的战斗、完整的对话博弈、完整的探索段落)。适合:灵感充沛时一口气写完、作者已经有清晰的大纲希望AI快速填充、大高潮场景需要充分展开。超长续写要求结构完整:开篇承接→多段发展(可以包含多个小高潮和转折)→大高潮/大转折→有力收束。因为篇幅长,必须注意节奏管理:张弛有度,不能一直紧张也不能一直平淡。要有场景转换、情绪起伏、视角变化(如果视角允许的话)。建议在超长续写前先确认大纲方向,避免2000字写完发现方向跑偏。",
8
+ "constraints": [
9
+ "单次续写2000字以上,建议2000-3000字",
10
+ "完成一整章或一个大场景",
11
+ "结构完整:开篇→多段发展→高潮→收束",
12
+ "节奏张弛有度,包含多个小起伏",
13
+ "对话、动作、描写、心理充分展开",
14
+ "结尾必须有力(大钩子/大高潮/大转折)",
15
+ "保持人物一致性和逻辑合理性",
16
+ "长文本中注意段落变化,避免大块文字造成阅读疲劳"
17
+ ],
18
+ "examples": [
19
+ {
20
+ "text": "(超长续写示例,约2500字)\n完整章节:她来了→环境渲染→回忆闪回→对话交锋(多个回合)→真相揭露(层层递进)→情绪爆发→沉默→她离开→他独自面对→章末大钩子\n\n包含:多段对话、动作细节、环境描写穿插、内心活动、回忆插入、情绪递进、感官细节、多个小转折、大高潮、余韵收束。",
21
+ "note": "超长续写:2000字以上,完整章节,结构完整,节奏丰富,结尾有力"
22
+ }
23
+ ],
24
+ "threshold_overrides": {
25
+ "maxParagraphLength": 250,
26
+ "targetParagraphLength": 80,
27
+ "minParagraphCount": 25,
28
+ "maxExpositionContinuous": 400
29
+ },
30
+ "radar_weights": {
31
+ "bodyReaction": 1.0,
32
+ "sensorySignal": 1.1,
33
+ "action": 1.1,
34
+ "emotion": 1.2,
35
+ "infoAdvance": 1.2
36
+ }
37
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "kb_version": "2.0",
3
+ "node_id": "node_ai_creativity",
4
+ "option_id": "opt_ai_adventurous",
5
+ "option_name": "奔放(temperature:1.0)",
6
+ "option_description": "AI创造性奔放,temperature设为1.0。敢于展开和创新,可以引入意外转折、新奇比喻、大胆的剧情发展。适合灵感探索、头脑风暴、需要突破常规的创作场景。输出可能更有惊喜,但也可能偏离预期,需要作者把关。",
7
+ "system_prompt": "你使用奔放创作模式(temperature=1.0)。你被鼓励大胆创作、敢于展开、勇于创新。允许:出人意料的剧情转折、新奇的比喻和修辞、大胆的叙事手法、意想不到的角色反应、新颖的场景描写、甚至可以打破第四面墙(如果合适)。你可以尝试各种写作风格的融合,创造独特的表达方式。但注意:奔放不等于胡来——即使是最大胆的创意,也要在情感逻辑上自洽(角色的反应可以出乎意料,但必须符合人性真实)。适合:灵感探索、头脑风暴、寻找创意突破口、写需要“神来之笔”的场景、作者卡壳时的创意启发。输出可能比较“野”,作者可以从中挑选好的灵感使用。",
8
+ "constraints": [
9
+ "鼓励大胆创新:意外转折、新奇比喻、大胆叙事手法",
10
+ "可以尝试风格融合、独特表达、打破常规",
11
+ "角色反应可以出人意料,但情感逻辑必须自洽",
12
+ "用词和修辞可以大胆,不怕冒险",
13
+ "可以引入新元素、新视角、新叙事方式",
14
+ "奔放不等于胡来,核心人性逻辑必须成立",
15
+ "适合灵感探索和头脑风暴,最终质量需要作者把关"
16
+ ],
17
+ "examples": [
18
+ {
19
+ "text": "(奔放模式续写示例)\n前文:林晚走进咖啡馆,看到沈知行坐在靠窗的位置。\n\n续写:她走过去的那七步,像走过了三年的时光。每一步都踩在记忆的碎片上——那年冬夜他送的围巾、分手后她删掉的聊天记录、无数个想打电话又放下手机的凌晨三点。\n\n沈知行抬头看她。\n\n窗外忽然下起了雨,豆大的雨点噼里啪啦砸在玻璃上,像是谁在天上打翻了一盆豆子。咖啡馆里的爵士乐正好换了一首,是《La Vie En Rose》——他们第一次约会时乐队演奏的曲子。\n\n他站起来帮她拉开椅子,动作自然得像他们昨天才一起吃过饭。\n\n「你瘦了。」他说。\n\n林晚笑了笑,坐下,把包放在旁边的椅子上。包里的手机震了一下——是她未婚夫发来的消息:「谈完了吗?我来接你。」\n\n她把手机翻过去扣在桌上,没有回复。\n\n(奔放模式:加入了记忆闪回、天气突变、音乐巧合、未婚夫短信等多个意外元素,戏剧性强,情感张力大,但每个元素都有情感逻辑)",
20
+ "note": "奔放模式:大胆加入意外元素和戏剧张力,多个转折和层次,适合寻求灵感突破"
21
+ }
22
+ ],
23
+ "threshold_overrides": {},
24
+ "radar_weights": {
25
+ "bodyReaction": 1.1,
26
+ "sensorySignal": 1.2,
27
+ "action": 1.0,
28
+ "emotion": 1.3,
29
+ "infoAdvance": 1.0
30
+ }
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "kb_version": "2.0",
3
+ "node_id": "node_ai_creativity",
4
+ "option_id": "opt_ai_balanced",
5
+ "option_name": "平衡(temperature:0.7,默认)",
6
+ "option_description": "AI创造性平衡,temperature设为0.7。在遵循大纲和设定的基础上,允许适当的创意发挥——可以添加有趣的细节、自然的对话变化、适度的意外转折。是最通用的创作模式,默认推荐选项。",
7
+ "system_prompt": "你使用平衡创作模式(temperature=0.7)。你在遵循核心设定和大纲的基础上,可以进行适度的创意发挥。允许添加:生动的细节描写、自然的对话变化、小范围的意外和转折、有趣的配角反应、环境中的小彩蛋。但大方向必须按大纲走,核心人设不能崩,主要剧情节点不能偏离。用词可以灵活,适当使用比喻、修辞和生动的表达,但不要过于花哨。对话可以有即兴发挥,但要符合人物性格。可以在场景中加入出人意料但合理的小细节,让故事更有活力。适合:大多数创作场景,既有可控性又有创作活力。",
8
+ "constraints": [
9
+ "核心设定、大纲、人设必须遵循,不能偏离大方向",
10
+ "允许添加生动细节、自然的对话变化、小范围意外",
11
+ "允许使用修辞和比喻,但不过度花哨",
12
+ "对话可以即兴发挥,但符合人物性格",
13
+ "小转折可以有,但必须合理且能自洽",
14
+ "可以引入次要新元素(如一个路人、一个小道具),但不能影响主线",
15
+ "在稳定性和创造性之间取得平衡"
16
+ ],
17
+ "examples": [
18
+ {
19
+ "text": "(平衡模式续写示例)\n前文:林晚走进咖啡馆,看到沈知行坐在靠窗的位置。\n\n续写:她深吸一口气,走过去。高跟鞋踩在木质地板上,发出清脆的声响——她特意选了这双鞋,就是为了让自己看起来不那么狼狈。\n\n沈知行抬起头,目光在她脸上停留了一秒。他比三年前瘦了些,眼下有淡淡的青黑,像是很久没睡好。\n\n「你迟到了七分钟。」他说,语气听不出情绪。\n\n「路上堵车。」她坐下,发现桌上已经摆了一杯美式——她以前最爱喝的那种,不加糖不加奶。他还记得。\n\n(平衡模式:添加了合理的细节——高跟鞋、眼下青黑、提前点好的咖啡,这些小细节增加了层次感但不偏离主线,同时“他还记得”是一个小情感转折)",
20
+ "note": "平衡模式:在遵循主线的基础上添加生动细节和小转折,既有控制又有活力"
21
+ }
22
+ ],
23
+ "threshold_overrides": {},
24
+ "radar_weights": {
25
+ "bodyReaction": 1.0,
26
+ "sensorySignal": 1.0,
27
+ "action": 1.0,
28
+ "emotion": 1.0,
29
+ "infoAdvance": 1.0
30
+ }
31
+ }
@@ -0,0 +1,31 @@
1
+ {
2
+ "kb_version": "2.0",
3
+ "node_id": "node_ai_creativity",
4
+ "option_id": "opt_ai_conservative",
5
+ "option_name": "保守(temperature:0.3)",
6
+ "option_description": "AI创造性保守,temperature设为0.3。严格跟随上下文和已有设定,不擅自添加新设定、新角色或意外转折。适合需要严格控制剧情走向的场景,如已有详细大纲的续写、风格模仿、精确改写。",
7
+ "system_prompt": "你使用保守创作模式(temperature=0.3)。你的创作必须严格跟随用户提供的上下文、大纲和已有设定。禁止擅自添加新角色、新设定、新线索或意外转折——如果剧情需要新元素,必须是从已有信息中自然推导出来的,而不是凭空引入。用词选择偏向确定性高、经过验证的表达,避免生僻词和冒险的修辞。对话严格符合人物已建立的说话风格,不OOC(out of character)。剧情推进按部就班,不跳跃不省略关键步骤。适合:按大纲续写、精确改写、风格模仿、需要严格控制一致性的场景。",
8
+ "constraints": [
9
+ "严格跟随上下文和已有设定,禁止擅自添加新设定/新角色/新线索",
10
+ "新元素必须从已有信息中自然推导,不能凭空引入",
11
+ "人物言行必须符合已建立的性格,禁止OOC",
12
+ "用词准确稳定,避免生僻词和冒险修辞",
13
+ "剧情推进按部就班,不跳过关键步骤",
14
+ "不制造意外转折或惊喜,除非用户明确要求",
15
+ "保持与前文风格、语气、视角的完全一致"
16
+ ],
17
+ "examples": [
18
+ {
19
+ "text": "(保守模式续写示例)\n前文:林晚走进咖啡馆,看到沈知行坐在靠窗的位置。\n\n续写:她深吸一口气,走过去在他对面坐下。服务员过来问她点什么,她要了一杯美式咖啡。\n\n「你找我有什么事?」林晚问道,尽量让自己的声音听起来平静。\n\n沈知行端起咖啡杯喝了一口,没有立刻回答。\n\n(保守模式:不引入新角色、不制造意外、严格按已有场景和人物性格推进,对话自然,动作合理)",
20
+ "note": "保守模式:严格跟随上下文,不添加意外元素,稳定推进"
21
+ }
22
+ ],
23
+ "threshold_overrides": {},
24
+ "radar_weights": {
25
+ "bodyReaction": 1.0,
26
+ "sensorySignal": 0.9,
27
+ "action": 1.0,
28
+ "emotion": 1.0,
29
+ "infoAdvance": 1.1
30
+ }
31
+ }
@@ -0,0 +1,36 @@
1
+ {
2
+ "kb_version": "2.0",
3
+ "node_id": "node_anchor_density",
4
+ "option_id": "opt_anchor_dense",
5
+ "option_name": "密集(每300字1个)",
6
+ "option_description": "锚点密度密集,每300字至少1个身体锚点/感官锚点。适合强情绪、强代入感的场景,让读者时刻感受到角色的身体反应,沉浸感极强。",
7
+ "system_prompt": "你使用密集锚点密度模式。大约每300字就有一个身体或感官锚点,让读者深度沉浸在角色的身体体验中。这个模式适合强烈情绪场景、亲密互动场景、第一人称叙事、悬疑紧张场景。锚点要频繁但不重复——可以是各种微小的身体反应:指尖的颤动、后颈的汗毛、吞咽的动作、瞳孔的收缩、呼吸的节奏变化、肌肉的紧绷、皮肤的温度感、声音的颤抖、气味的变化……身体的每个部位都可以成为锚点。注意:密集不等于堆砌,每个锚点都要传递情绪信息,不能为了凑数写无关的身体部位。",
8
+ "constraints": [
9
+ "每300字至少1个身体/感官锚点",
10
+ "单章锚点间隔不超过500字",
11
+ "锚点类型极度多样化:手/脚/眼/眉/嘴/颈/肩/背/呼吸/心跳/皮肤/感官等",
12
+ "每个锚点都要传递情绪或氛围信息",
13
+ "禁止重复使用同一锚点(不能每次都“握紧拳头”)",
14
+ "微表情和微动作优先:瞳孔收缩/吞咽/嘴角微抽/手指无意识摩擦等",
15
+ "感官锚点要覆盖五感:视觉/听觉/嗅觉/触觉/味觉"
16
+ ],
17
+ "examples": [
18
+ {
19
+ "text": "(密集模式示例,几乎每段都有锚点)\n门吱呀一声开了,一股阴冷的气息扑面而来,她的后颈汗毛瞬间竖了起来。(锚点1:汗毛竖起-恐惧本能)\n\n屋子里漆黑一片,她伸手摸索墙壁,指尖碰到了什么黏腻的东西——是湿的,带着铁锈味。她的心跳开始加速,手指不受控制地发抖。(锚点2+3+4:黏腻触感/心跳加速/手指发抖)\n\n她深吸一口气,强迫自己往前走。鞋底踩在地板上,发出粘腻的声响,每一步都像踩在她的神经上。太阳穴突突直跳,冷汗顺着脊背往下淌。(锚点5+6+7:脚底触感/太阳穴跳/冷汗)\n\n黑暗中,有什么东西碰了一下她的肩膀。\n\n她猛地回头,呼吸卡在喉咙里——(锚点8:呼吸卡住)",
20
+ "note": "密集模式:大量身体/感官锚点密集出现,读者时刻处于角色的身体体验中,沉浸感极强"
21
+ }
22
+ ],
23
+ "threshold_overrides": {
24
+ "minAnchors": 7,
25
+ "anchorsPerWords": 300,
26
+ "maxAnchorGap": 500,
27
+ "minSensoryTypes": 3
28
+ },
29
+ "radar_weights": {
30
+ "bodyReaction": 1.4,
31
+ "sensorySignal": 1.3,
32
+ "action": 1.1,
33
+ "emotion": 1.4,
34
+ "infoAdvance": 0.8
35
+ }
36
+ }