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
@@ -0,0 +1,42 @@
1
+ {
2
+ "preset_id": "preset_urban_jinjiang",
3
+ "preset_name": "都市言情·晋江V3.1追读版",
4
+ "preset_description": "晋江言情V3.1追读版:3秒停留心动/社死开头+情感反咬+暧昧钩子。情感细腻有张力,但开篇直接进场景,不铺垫。",
5
+ "based_on": null,
6
+ "selections": {
7
+ "node_sentence_rhythm": "opt_rhythm_mixed",
8
+ "node_paragraph_density": "opt_dense_medium",
9
+ "node_dialogue_style": "opt_dialogue_natural",
10
+ "node_description_style": "opt_desc_poetic",
11
+ "node_battle_style": "opt_battle_psychological",
12
+ "node_emotion_style": "opt_emotion_both",
13
+ "node_tone": "opt_tone_playful",
14
+ "node_platform": "opt_platform_jinjiang",
15
+ "node_info_density": "opt_info_balanced",
16
+ "node_payoff_frequency": "opt_payoff_every_3",
17
+ "node_pov": "opt_pov_limited_third_past",
18
+ "node_rhetoric": "opt_rhetoric_metaphor",
19
+ "node_vocab_sensory": "opt_vocab_urban",
20
+ "node_vocab_filler": "opt_filler_standard",
21
+ "node_target_length": "opt_length_3000",
22
+ "node_anchor_density": "opt_anchor_dense",
23
+ "node_strictness": "opt_strict_standard",
24
+ "node_ai_creativity": "opt_ai_balanced",
25
+ "node_ai_continue_length": "opt_ai_medium",
26
+ "node_opening_impact": "opt_opening_strong",
27
+ "node_twist_frequency": "opt_twist_standard",
28
+ "node_ending_hook": "opt_hook_break"
29
+ },
30
+ "extra_prompt": "晋江现言V3.1追读版:第一句直接心动/尴尬/对峙/重逢瞬间(「离婚协议签完,她发现自己怀孕了。」「电梯里,她靠在他肩上睡着了,他是她三年没说话的前男友。」),禁止「XX年,在XX城市」式背景开头。前300字:男女主同框/互动+第一个张力点(心动/尴尬/对峙/误会)。每400-500字一次情感反咬:以为他不在乎→他记得她所有喜好/以为是误会→他是故意的/以为他喜欢别人→是在保护她。暧昧通过微动作和潜台词展现,不直写「她心动了」,用身体细节表现(耳尖红/手指攥紧裙角/心跳漏拍/呼吸顿了半秒/不敢看他眼睛)。章末暧昧/误会/秘密/吃醋钩子,最后一句≤15字,往往是一个未说出口的动作或一句话。对话有潜台词,人物说话留半句,眼神和动作比话多。禁止工业糖精,禁止48个AI套路反应词。",
31
+ "extra_constraints": [
32
+ "第一句直接心动/尴尬/对峙/重逢瞬间,0背景铺垫",
33
+ "前300字男女主同框/互动+第一个张力点",
34
+ "每400-500字一次情感反咬/关系反转",
35
+ "暧昧通过微动作/眼神/潜台词展现,不直说",
36
+ "章末暧昧/误会/吃醋钩子,最后一句≤15字",
37
+ "情绪落到身体:耳尖红/手指攥紧/心跳漏拍/呼吸顿/不敢对视",
38
+ "禁止开篇大段城市/人物背景介绍",
39
+ "禁止工业糖精,禁止48个AI套路反应词"
40
+ ],
41
+ "tags": ["都市", "言情", "晋江", "V3.1追读"]
42
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "preset_id": "preset_urban_tomato",
3
+ "preset_name": "都市异能·番茄V3.1追读版",
4
+ "preset_description": "番茄都市爽文V3.1追读版(赘婿/战神/神医/神豪):3秒停留开头+冲突直接砸脸+密集打脸反咬+断裂钩子。开局即冲突,三章内第一个打脸。",
5
+ "based_on": null,
6
+ "selections": {
7
+ "node_sentence_rhythm": "opt_rhythm_short",
8
+ "node_paragraph_density": "opt_dense_high",
9
+ "node_dialogue_style": "opt_dialogue_concise",
10
+ "node_description_style": "opt_desc_minimal",
11
+ "node_battle_style": "opt_battle_result",
12
+ "node_emotion_style": "opt_emotion_show",
13
+ "node_tone": "opt_tone_badass",
14
+ "node_platform": "opt_platform_tomato",
15
+ "node_info_density": "opt_info_fast",
16
+ "node_payoff_frequency": "opt_payoff_every_chapter",
17
+ "node_pov": "opt_pov_limited_third_past",
18
+ "node_rhetoric": "opt_rhetoric_plain",
19
+ "node_vocab_sensory": "opt_vocab_urban",
20
+ "node_vocab_filler": "opt_filler_standard",
21
+ "node_target_length": "opt_length_2200",
22
+ "node_anchor_density": "opt_anchor_standard",
23
+ "node_strictness": "opt_strict_lenient",
24
+ "node_ai_creativity": "opt_ai_adventurous",
25
+ "node_ai_continue_length": "opt_ai_medium",
26
+ "node_opening_impact": "opt_opening_strong",
27
+ "node_twist_frequency": "opt_twist_dense",
28
+ "node_ending_hook": "opt_hook_break"
29
+ },
30
+ "extra_vocab": {
31
+ "add": {
32
+ "bodyParts": ["太阳穴", "指节", "后槽牙", "拳头", "掌心", "虎口"],
33
+ "sensoryVerbs": ["拳头攥紧", "指节发白", "太阳穴跳", "后槽牙咬紧", "血往头上冲", "胃里翻涌"],
34
+ "actionVerbs": ["扇", "砸", "拍桌", "踹门", "挂断", "撕", "甩", "冷笑", "打脸", "碾压", "跪", "滚"],
35
+ "environmentSignals": ["手机响", "门被推开", "玻璃碎", "车停", "电梯叮", "高跟鞋声", "酒杯碎"]
36
+ }
37
+ },
38
+ "extra_prompt": "番茄都市爽文V3.1追读版(赘婿/战神/神医/神豪通用):\n\n【开头】第一句≤20字直接冲突砸脸。都市文最强开头:「离婚协议签完第三分钟,电话响了。」「经理把辞退信甩在他脸上。」「丈母娘把一碗汤泼在他身上。」前300字必须:羞辱/冲突爆发→主角身体在场(攥拳/咬牙/面无表情)→金手指/反转信号出现。禁止介绍主角身份/背景/工作,直接进羞辱现场。\n\n【反咬】每250-350字一次反咬:反派羞辱→主角冷笑→亮出身份/能力→反派被打脸→更大的反派/更大的危机出现。打脸要直接,不墨迹。电话一响/门一开/人一到,直接打脸。\n\n【钩子】章末断裂钩子:刚打完脸→电话响了/门被推开/来了个更厉害的人/发现一个更大的秘密。最后一句≤15字短句落点。\n\n【对话】对话要生活化、要带情绪。反派说话嚣张跋扈,主角说话简短有力。一句「你确定?」「你再说一遍?」「你会后悔的。」比长篇大论有效。\n\n【身体】情绪落到肉身:指节攥白/后槽牙咬紧/太阳穴跳/拳头捏碎杯子/血往头上冲但面无表情。禁止48个AI套路反应词。",
39
+ "extra_constraints": [
40
+ "第一句直接冲突/羞辱现场,0铺垫",
41
+ "前300字必须出现冲突+主角在场+反转信号",
42
+ "三章内第一个打脸爽点",
43
+ "每250-350字一次反咬/打脸/身份揭露",
44
+ "主角话少反派话多,打脸直接不墨迹",
45
+ "章末断裂钩子,最后一句≤15字",
46
+ "禁止开篇介绍主角身份/背景/工作经历",
47
+ "禁止48个AI套路反应词"
48
+ ],
49
+ "examples": [
50
+ {
51
+ "text": "「叶辰,你被开除了!」\n\n经理把辞退信甩在桌上,满脸鄙夷:「一个实习生也敢顶撞王少?你知道王少是谁吗?」\n\n叶辰没说话。指腹被辞退信边缘划了一道血口,血珠滴在办公桌上,很快被白纸吸成深色。\n\n他不是这个世界的人。\n\n三天前穿越过来,脑子里多了个东西。\n\n【神级选择系统已激活】\n\n【选项一:低头道歉,获得十万块】\n\n【选项二:当场辞职,打脸王少,获得神级投资天赋!】\n\n叶辰笑了。\n\n他拿起辞退信,撕成两半,再撕,碎纸片扔进垃圾桶。「不用你辞,老子不干了。」\n\n经理愣住了。\n\n门就在这时被推开。",
52
+ "note": "都市V3.1开头示范:第一句直接冲突(被开除)→第二句羞辱+主角身体反应(指腹划出血)→第三句金手指(系统激活)→反咬(撕辞职信打脸经理)→钩子(门被推开)"
53
+ }
54
+ ],
55
+ "extra_rules": [
56
+ {
57
+ "id": "no_identity_intro",
58
+ "name": "禁止身份介绍",
59
+ "description": "开篇前500字禁止用「他叫XX,今年XX岁,是个XX」格式介绍主角",
60
+ "severity": "warning",
61
+ "pattern": "^(他叫|我叫|他是|我是|.*今年\\d+岁)",
62
+ "injectToPrompt": true
63
+ }
64
+ ],
65
+ "tags": ["都市", "异能", "番茄", "赘婿", "战神", "爽文", "V3.1追读"]
66
+ }
@@ -0,0 +1,50 @@
1
+ {
2
+ "preset_id": "preset_xianxia_qidian",
3
+ "preset_name": "玄幻修仙·起点V3.1追读版",
4
+ "preset_description": "起点仙侠V3.1追读版:3秒停留冲突开头+升级反咬+悬念钩子。世界观宏大有长线伏笔,但开篇直接进事件不铺垫。",
5
+ "based_on": null,
6
+ "selections": {
7
+ "node_sentence_rhythm": "opt_rhythm_mixed",
8
+ "node_paragraph_density": "opt_dense_medium",
9
+ "node_dialogue_style": "opt_dialogue_natural",
10
+ "node_description_style": "opt_desc_sensory",
11
+ "node_battle_style": "opt_battle_detail",
12
+ "node_emotion_style": "opt_emotion_show",
13
+ "node_tone": "opt_tone_classical",
14
+ "node_platform": "opt_platform_qidian",
15
+ "node_info_density": "opt_info_balanced",
16
+ "node_payoff_frequency": "opt_payoff_every_3",
17
+ "node_pov": "opt_pov_limited_third_past",
18
+ "node_rhetoric": "opt_rhetoric_metaphor",
19
+ "node_vocab_sensory": "opt_vocab_xianxia",
20
+ "node_vocab_filler": "opt_filler_webnovel",
21
+ "node_target_length": "opt_length_3000",
22
+ "node_anchor_density": "opt_anchor_dense",
23
+ "node_strictness": "opt_strict_standard",
24
+ "node_ai_creativity": "opt_ai_balanced",
25
+ "node_ai_continue_length": "opt_ai_medium",
26
+ "node_opening_impact": "opt_opening_strong",
27
+ "node_twist_frequency": "opt_twist_standard",
28
+ "node_ending_hook": "opt_hook_break"
29
+ },
30
+ "extra_vocab": {
31
+ "add": {
32
+ "worldTerms": ["灵力", "灵气", "丹田", "筑基", "金丹", "元婴", "化神", "渡劫", "飞升", "法宝", "法器", "飞剑", "符箓", "阵法", "灵石", "灵脉", "宗门", "长老", "弟子", "师兄", "师姐", "洞府", "秘境", "天劫", "心魔", "悟道", "闭关", "突破", "瓶颈", "修为", "境界", "剑道", "法术", "神通", "仙界", "魔界", "妖族", "魔族", "修士", "散修", "魔修", "剑修", "丹修", "器修"],
33
+ "bodyParts": ["丹田", "经脉", "灵根", "神识", "元神", "剑意", "灵力", "真气", "眉心", "虎口"],
34
+ "sensoryVerbs": ["灵力涌动", "剑气逼人", "威压如山", "丹火灼", "灵气灌体", "神识扫过", "血脉偾张", "经脉鼓胀", "眉心发烫"]
35
+ }
36
+ },
37
+ "extra_prompt": "起点仙侠V3.1追读版:第一句直接动作/危机/冲突现场(「测试灵根那天,他的灵根碎了。」「被逐出师门的第三年,他在凡间卖符。」「剑刺入心口的瞬间,他看见了自己的前世。」),禁止「在XX大陆上,修仙者……」式世界观开头。前300字:冲突/危机出现→主角身体在场→一个异常/金手指信号。世界观和修炼等级通过事件和对话自然展现,开篇不灌输。每400-500字一次反咬:以为废灵根→是万古唯一/以为被逐→是师尊保护/以为死了→突破/以为赢了→是陷阱。长线伏笔埋在细节里(一句不经意的话/一个物件/一个表情),章末留悬念/新地图/新危机钩子。战斗注重气势和剑意,不是堆砌招式名。情绪落到肉身:丹田发热/剑气刺骨/经脉鼓胀/威压如山脊背发沉/眉心发烫。禁止48个AI套路反应词(包括「心中一凛/眉头一皱/冷哼一声/瞳孔骤缩/嘴角微扬」等起点老套词),用具体生理反应替代。",
38
+ "extra_constraints": [
39
+ "第一句直接动作/危机/冲突,0世界观铺垫",
40
+ "前300字出现冲突+身体反应+异常/金手指",
41
+ "每400-500字一次反咬/升级/危机",
42
+ "世界观/等级通过事件自然展现,开篇不灌输",
43
+ "章末悬念/新地图/新危机钩子,最后一句≤15字",
44
+ "战斗重气势剑意,不堆砌招式名",
45
+ "情绪落到肉身:丹田/经脉/眉心/脊背/虎口",
46
+ "禁止开篇「在XX大陆上」式世界观开头",
47
+ "禁止48个AI套路反应词(含心中一凛/眉头一皱/冷哼一声等老套词)"
48
+ ],
49
+ "tags": ["玄幻", "修仙", "起点", "V3.1追读"]
50
+ }
@@ -0,0 +1,66 @@
1
+ {
2
+ "preset_id": "preset_xianxia_tomato",
3
+ "preset_name": "玄幻修仙·番茄V3.1追读版",
4
+ "preset_description": "番茄小说修仙爽文V3.1极致追读版:3秒停留开头+越级冲突直接砸脸+密集打脸反咬+断裂钩子。主角强势不憋屈,金手指早出现,三章内第一个打脸。",
5
+ "based_on": null,
6
+ "selections": {
7
+ "node_sentence_rhythm": "opt_rhythm_short",
8
+ "node_paragraph_density": "opt_dense_high",
9
+ "node_dialogue_style": "opt_dialogue_concise",
10
+ "node_description_style": "opt_desc_sensory",
11
+ "node_battle_style": "opt_battle_atmosphere",
12
+ "node_emotion_style": "opt_emotion_show",
13
+ "node_tone": "opt_tone_badass",
14
+ "node_platform": "opt_platform_tomato",
15
+ "node_info_density": "opt_info_fast",
16
+ "node_payoff_frequency": "opt_payoff_every_chapter",
17
+ "node_pov": "opt_pov_limited_third_past",
18
+ "node_rhetoric": "opt_rhetoric_plain",
19
+ "node_vocab_sensory": "opt_vocab_xianxia",
20
+ "node_vocab_filler": "opt_filler_webnovel",
21
+ "node_target_length": "opt_length_2200",
22
+ "node_anchor_density": "opt_anchor_dense",
23
+ "node_strictness": "opt_strict_lenient",
24
+ "node_ai_creativity": "opt_ai_adventurous",
25
+ "node_ai_continue_length": "opt_ai_medium",
26
+ "node_opening_impact": "opt_opening_strong",
27
+ "node_twist_frequency": "opt_twist_dense",
28
+ "node_ending_hook": "opt_hook_break"
29
+ },
30
+ "extra_vocab": {
31
+ "add": {
32
+ "bodyParts": ["丹田", "经脉", "灵根", "神识", "元神", "剑意", "灵力", "真气"],
33
+ "sensoryVerbs": ["灵力涌动", "剑气逼人", "威压如山", "丹火灼", "灵气灌体", "神识扫过", "血脉偾张"],
34
+ "actionVerbs": ["拔剑", "斩出", "祭出", "掐诀", "修炼", "突破", "越级", "打脸", "碾压", "灭杀", "臣服", "跪拜"],
35
+ "environmentSignals": ["灵气暴动", "剑气纵横", "丹香四溢", "雷鸣电闪", "金光爆射", "威压降临", "虚空碎裂"]
36
+ }
37
+ },
38
+ "extra_prompt": "番茄修仙爽文V3.1极致追读版:\n\n【开头】第一句≤20字直接动作/冲突/结果,0铺垫。修仙文最强开头是直接写结果:「外门弟子林凡,一刀斩了内门大师兄。」「天才退婚当天,他觉醒了万古唯一剑体。」前300字必须:越级冲突爆发→主角身体在场→金手指/异常出现。禁止写主角怎么拜师/怎么修炼/宗门介绍,直接进冲突现场。\n\n【反咬】每250-350字一次反咬:反派嚣张→主角冷笑→亮出金手指→反派被打脸→更大的反派出现。打脸节奏要快,不拖泥带水。禁止长篇说教,禁止解释功法原理,直接写效果(一拳轰飞/跪地求饶/全场震惊)。\n\n【钩子】章末必须是断裂钩子:主角刚突破/刚打完脸/刚拿到宝物→更大的危机/更强的敌人/新的秘密出现。最后一句≤15字短句落点,禁止「了。」收尾。\n\n【主角】主角强势,不憋屈,被嘲讽立刻打脸,不隐忍不圣母。该杀就杀,该抢就抢。对话简短有力,反派话多主角话少。\n\n【身体】情绪落到肉身:丹田发热/剑气刺骨/灵力灌体经脉鼓胀/威压如山脊背发沉。禁止48个AI套路反应词。",
39
+ "extra_constraints": [
40
+ "第一句直接动作/越级冲突结果,0铺垫",
41
+ "前300字必须出现冲突+金手指/异常",
42
+ "三章内第一个打脸爽点",
43
+ "每250-350字一次反咬/打脸/反转",
44
+ "主角强势不憋屈,被嘲讽立刻打脸",
45
+ "章末断裂钩子,最后一句≤15字",
46
+ "禁止长篇功法/等级介绍,通过战斗自然展现",
47
+ "禁止48个AI套路反应词,情绪落到肉身"
48
+ ],
49
+ "examples": [
50
+ {
51
+ "text": "外门弟子林凡,一刀斩了内门大师兄。\n\n血溅在演武场的青石上,围观的弟子全傻了。林凡握刀的手在抖,不是因为害怕,是因为这具身体里的灵魂,三秒前还不是他。\n\n【万古剑体激活中...10%...50%...100%】\n\n他低头,看见自己掌心一道金色剑纹在发亮。\n\n「你...你敢杀大师兄?」执法长老脸色铁青,「按宗规——」\n\n「按什么宗规?」林凡抬眼,刀指长老,「他要抢我未婚妻的时候,宗规在哪?」",
52
+ "note": "修仙V3.1开头示范:第一句直接写越级杀人结果→第二句现场反应+身体(手抖)→第三句金手指激活(系统)"
53
+ }
54
+ ],
55
+ "extra_rules": [
56
+ {
57
+ "id": "no_cultivation_exposition",
58
+ "name": "禁止等级灌输",
59
+ "description": "开篇前1000字禁止大段介绍修炼等级/宗门排名/世界格局,通过战斗和对话自然展现",
60
+ "severity": "warning",
61
+ "pattern": "^(练气|筑基|金丹|元婴|化神).{0,20}(期|境|界|层)",
62
+ "injectToPrompt": true
63
+ }
64
+ ],
65
+ "tags": ["玄幻", "修仙", "番茄", "爽文", "V3.1追读"]
66
+ }