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.
- package/README.md +265 -0
- package/README_EN.md +126 -0
- package/dist/cli.js +10444 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +847 -0
- package/dist/index.js +10569 -0
- package/dist/index.js.map +1 -0
- package/package.json +1 -0
- package/src/kb/base-fillers.json +35 -0
- package/src/kb/base-prompt.ts +151 -0
- package/src/kb/base-vocab.json +87 -0
- package/src/kb/nodes/node_ai_continue_length/opt_ai_long.kb.json +36 -0
- package/src/kb/nodes/node_ai_continue_length/opt_ai_medium.kb.json +30 -0
- package/src/kb/nodes/node_ai_continue_length/opt_ai_short.kb.json +34 -0
- package/src/kb/nodes/node_ai_continue_length/opt_ai_xtra_long.kb.json +37 -0
- package/src/kb/nodes/node_ai_creativity/opt_ai_adventurous.kb.json +31 -0
- package/src/kb/nodes/node_ai_creativity/opt_ai_balanced.kb.json +31 -0
- package/src/kb/nodes/node_ai_creativity/opt_ai_conservative.kb.json +31 -0
- package/src/kb/nodes/node_anchor_density/opt_anchor_dense.kb.json +36 -0
- package/src/kb/nodes/node_anchor_density/opt_anchor_extreme.kb.json +37 -0
- package/src/kb/nodes/node_anchor_density/opt_anchor_sparse.kb.json +34 -0
- package/src/kb/nodes/node_anchor_density/opt_anchor_standard.kb.json +34 -0
- package/src/kb/nodes/node_battle_style/opt_battle_atmosphere.kb.json +32 -0
- package/src/kb/nodes/node_battle_style/opt_battle_detail.kb.json +36 -0
- package/src/kb/nodes/node_battle_style/opt_battle_psychological.kb.json +36 -0
- package/src/kb/nodes/node_battle_style/opt_battle_result.kb.json +37 -0
- package/src/kb/nodes/node_description_style/opt_desc_clinical.kb.json +36 -0
- package/src/kb/nodes/node_description_style/opt_desc_minimal.kb.json +37 -0
- package/src/kb/nodes/node_description_style/opt_desc_poetic.kb.json +35 -0
- package/src/kb/nodes/node_description_style/opt_desc_sensory.kb.json +39 -0
- package/src/kb/nodes/node_dialogue_style/opt_dialogue_concise.kb.json +34 -0
- package/src/kb/nodes/node_dialogue_style/opt_dialogue_natural.kb.json +32 -0
- package/src/kb/nodes/node_dialogue_style/opt_dialogue_stylized.kb.json +33 -0
- package/src/kb/nodes/node_dialogue_style/opt_dialogue_verbose.kb.json +34 -0
- package/src/kb/nodes/node_emotion_style/opt_emotion_both.kb.json +40 -0
- package/src/kb/nodes/node_emotion_style/opt_emotion_show.kb.json +41 -0
- package/src/kb/nodes/node_emotion_style/opt_emotion_tell.kb.json +40 -0
- package/src/kb/nodes/node_ending_hook/opt_hook_break.kb.json +54 -0
- package/src/kb/nodes/node_ending_hook/opt_hook_soft.kb.json +29 -0
- package/src/kb/nodes/node_ending_hook/opt_hook_suspense.kb.json +30 -0
- package/src/kb/nodes/node_info_density/opt_info_balanced.kb.json +37 -0
- package/src/kb/nodes/node_info_density/opt_info_fast.kb.json +37 -0
- package/src/kb/nodes/node_info_density/opt_info_leisurely.kb.json +41 -0
- package/src/kb/nodes/node_opening_impact/opt_opening_medium.kb.json +30 -0
- package/src/kb/nodes/node_opening_impact/opt_opening_strong.kb.json +46 -0
- package/src/kb/nodes/node_opening_impact/opt_opening_weak.kb.json +29 -0
- package/src/kb/nodes/node_paragraph_density/opt_dense_high.kb.json +36 -0
- package/src/kb/nodes/node_paragraph_density/opt_dense_low.kb.json +37 -0
- package/src/kb/nodes/node_paragraph_density/opt_dense_medium.kb.json +28 -0
- package/src/kb/nodes/node_payoff_frequency/opt_payoff_every_3.kb.json +31 -0
- package/src/kb/nodes/node_payoff_frequency/opt_payoff_every_chapter.kb.json +35 -0
- package/src/kb/nodes/node_payoff_frequency/opt_payoff_sparse.kb.json +37 -0
- package/src/kb/nodes/node_platform/opt_platform_feilu.kb.json +44 -0
- package/src/kb/nodes/node_platform/opt_platform_generic.kb.json +31 -0
- package/src/kb/nodes/node_platform/opt_platform_jinjiang.kb.json +42 -0
- package/src/kb/nodes/node_platform/opt_platform_newmedia.kb.json +43 -0
- package/src/kb/nodes/node_platform/opt_platform_qidian.kb.json +39 -0
- package/src/kb/nodes/node_platform/opt_platform_qimao.kb.json +43 -0
- package/src/kb/nodes/node_platform/opt_platform_tomato.kb.json +51 -0
- package/src/kb/nodes/node_pov/opt_pov_first_past.kb.json +34 -0
- package/src/kb/nodes/node_pov/opt_pov_first_present.kb.json +37 -0
- package/src/kb/nodes/node_pov/opt_pov_limited_third_past.kb.json +31 -0
- package/src/kb/nodes/node_pov/opt_pov_limited_third_present.kb.json +35 -0
- package/src/kb/nodes/node_pov/opt_pov_omniscient_third_past.kb.json +37 -0
- package/src/kb/nodes/node_pov/opt_pov_omniscient_third_present.kb.json +36 -0
- package/src/kb/nodes/node_rhetoric/opt_rhetoric_metaphor.kb.json +35 -0
- package/src/kb/nodes/node_rhetoric/opt_rhetoric_ornate.kb.json +37 -0
- package/src/kb/nodes/node_rhetoric/opt_rhetoric_plain.kb.json +25 -0
- package/src/kb/nodes/node_rhetoric/opt_rhetoric_sketch.kb.json +37 -0
- package/src/kb/nodes/node_sentence_rhythm/opt_rhythm_long.kb.json +42 -0
- package/src/kb/nodes/node_sentence_rhythm/opt_rhythm_medium.kb.json +40 -0
- package/src/kb/nodes/node_sentence_rhythm/opt_rhythm_mixed.kb.json +40 -0
- package/src/kb/nodes/node_sentence_rhythm/opt_rhythm_short.kb.json +41 -0
- package/src/kb/nodes/node_strictness/opt_strict_lenient.kb.json +50 -0
- package/src/kb/nodes/node_strictness/opt_strict_standard.kb.json +30 -0
- package/src/kb/nodes/node_strictness/opt_strict_strict.kb.json +52 -0
- package/src/kb/nodes/node_target_length/opt_length_1500.kb.json +39 -0
- package/src/kb/nodes/node_target_length/opt_length_2200.kb.json +39 -0
- package/src/kb/nodes/node_target_length/opt_length_3000.kb.json +39 -0
- package/src/kb/nodes/node_target_length/opt_length_4000.kb.json +39 -0
- package/src/kb/nodes/node_target_length/opt_length_custom.kb.json +31 -0
- package/src/kb/nodes/node_tone/opt_tone_badass.kb.json +45 -0
- package/src/kb/nodes/node_tone/opt_tone_classical.kb.json +41 -0
- package/src/kb/nodes/node_tone/opt_tone_cold.kb.json +42 -0
- package/src/kb/nodes/node_tone/opt_tone_colloquial.kb.json +33 -0
- package/src/kb/nodes/node_tone/opt_tone_folksy.kb.json +40 -0
- package/src/kb/nodes/node_tone/opt_tone_playful.kb.json +42 -0
- package/src/kb/nodes/node_tone/opt_tone_serious.kb.json +42 -0
- package/src/kb/nodes/node_twist_frequency/opt_twist_dense.kb.json +36 -0
- package/src/kb/nodes/node_twist_frequency/opt_twist_sparse.kb.json +26 -0
- package/src/kb/nodes/node_twist_frequency/opt_twist_standard.kb.json +32 -0
- package/src/kb/nodes/node_vocab_filler/opt_filler_relaxed.kb.json +45 -0
- package/src/kb/nodes/node_vocab_filler/opt_filler_standard.kb.json +46 -0
- package/src/kb/nodes/node_vocab_filler/opt_filler_strict.kb.json +56 -0
- package/src/kb/nodes/node_vocab_filler/opt_filler_webnovel.kb.json +56 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_daily.kb.json +46 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_esports.kb.json +45 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_fantasy.kb.json +40 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_generic.kb.json +32 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_historical.kb.json +43 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_horror.kb.json +48 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_military.kb.json +46 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_mystery.kb.json +43 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_scifi.kb.json +40 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_urban.kb.json +40 -0
- package/src/kb/nodes/node_vocab_sensory/opt_vocab_xianxia.kb.json +40 -0
- package/src/kb/presets/preset_daily.json +42 -0
- package/src/kb/presets/preset_esports.json +42 -0
- package/src/kb/presets/preset_fantasy.json +40 -0
- package/src/kb/presets/preset_historical.json +41 -0
- package/src/kb/presets/preset_horror.json +67 -0
- package/src/kb/presets/preset_miner.json +123 -0
- package/src/kb/presets/preset_mystery.json +55 -0
- package/src/kb/presets/preset_scifi_hardcore.json +55 -0
- package/src/kb/presets/preset_urban_jinjiang.json +42 -0
- package/src/kb/presets/preset_urban_tomato.json +66 -0
- package/src/kb/presets/preset_xianxia_qidian.json +50 -0
- package/src/kb/presets/preset_xianxia_tomato.json +66 -0
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_anchor_density",
|
|
4
|
+
"option_id": "opt_anchor_extreme",
|
|
5
|
+
"option_name": "极高(每200字1个)",
|
|
6
|
+
"option_description": "锚点密度极高,每200字至少1个身体锚点/感官锚点。适合极度紧张/恐怖/亲密/沉浸式场景,读者几乎通过角色的身体来“呼吸”。不建议整章使用,适合关键场景切换。",
|
|
7
|
+
"system_prompt": "你使用极高锚点密度模式。大约每200字就有一个身体或感官锚点,读者几乎完全通过角色的身体来感知故事。这个模式适合极端场景:恐怖场景的极致恐惧、激情场景的极致亲密、战斗场景的极致紧张、创伤场景的极致痛苦。锚点要密集到读者能感受到角色的每一个生理反应——脉搏的跳动、肌肉的抽搐、汗水的滑落、呼吸的停顿、视野的模糊、声音的失真。注意:极高密度容易让读者疲劳,建议只在关键场景临时切换,常规叙事用标准或密集模式。",
|
|
8
|
+
"constraints": [
|
|
9
|
+
"每200字至少1个身体/感官锚点",
|
|
10
|
+
"单章锚点间隔不超过300字",
|
|
11
|
+
"锚点覆盖身体各部位和五感,极度多样化",
|
|
12
|
+
"可以使用更细微的生理反应:脉搏/瞳孔/汗毛孔/肌肉痉挛/耳鸣/视野变化等",
|
|
13
|
+
"每个锚点精准传递当前情绪状态",
|
|
14
|
+
"适合短时间高强度场景,不建议整章使用",
|
|
15
|
+
"身体反应要有层次递进(越来越紧张/越来越恐惧/越来越兴奋)"
|
|
16
|
+
],
|
|
17
|
+
"examples": [
|
|
18
|
+
{
|
|
19
|
+
"text": "(极高模式示例——恐怖场景,约每100-200字一个锚点)\n那个声音就在她身后。\n\n她的脚趾在鞋里蜷曲起来,指甲掐进掌心,疼,但她不敢动。(锚点1+2+3:脚趾蜷曲/掐掌心/痛感)\n\n呼吸。她告诉自己要呼吸。可肺像被一只冰冷的手攥住了,空气怎么也吸不进来,胸口剧烈起伏却吸不到氧气。(锚点4+5:呼吸受阻/胸口起伏)\n\n有什么东西在她后颈上吹气。冰冷的,带着腐朽的甜味。她的头皮开始发麻,冷汗从额头上滑下来,流进眼睛里,涩得慌,但她不敢眨眼。(锚点6+7+8+9:颈后触感/头皮发麻/冷汗流进眼睛/不敢眨眼)\n\n然后,一只手搭上了她的肩膀。\n\n那只手冰冷刺骨,湿滑黏腻,像是刚从水里捞出来的。她的牙齿开始打颤,膝盖一软,整个人瘫倒在地——(锚点10+11+12:冰冷触感/牙齿打颤/膝盖发软)",
|
|
20
|
+
"note": "极高模式:几乎每句都有身体反应,极度沉浸式的身体体验,适合极端情绪场景"
|
|
21
|
+
}
|
|
22
|
+
],
|
|
23
|
+
"threshold_overrides": {
|
|
24
|
+
"minAnchors": 10,
|
|
25
|
+
"anchorsPerWords": 200,
|
|
26
|
+
"maxAnchorGap": 300,
|
|
27
|
+
"minSensoryTypes": 4,
|
|
28
|
+
"sightRatio": 0.4
|
|
29
|
+
},
|
|
30
|
+
"radar_weights": {
|
|
31
|
+
"bodyReaction": 1.7,
|
|
32
|
+
"sensorySignal": 1.5,
|
|
33
|
+
"action": 1.0,
|
|
34
|
+
"emotion": 1.6,
|
|
35
|
+
"infoAdvance": 0.6
|
|
36
|
+
}
|
|
37
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_anchor_density",
|
|
4
|
+
"option_id": "opt_anchor_sparse",
|
|
5
|
+
"option_name": "稀疏(每800字1个)",
|
|
6
|
+
"option_description": "锚点密度稀疏,每800字至少1个身体锚点/感官锚点。适合铺陈型、氛围型、文学性较强的作品,不频繁打断叙事节奏。",
|
|
7
|
+
"system_prompt": "你使用稀疏锚点密度模式。身体锚点和感官锚点(描写人物身体反应、感官体验的词句)大约每800字出现1个即可。这个模式下锚点是点缀而非刚需,让叙事更加流畅自然,不被频繁的“他握紧拳头”“她心跳加速”打断。锚点要用在关键时刻——情绪爆发点、重大转折点、紧张时刻,用一个精准的身体反应来强化感受,比频繁使用十三个普通锚点更有力。日常叙述和环境描写可以不带身体锚点,给读者呼吸空间。",
|
|
8
|
+
"constraints": [
|
|
9
|
+
"每800字至少1个身体/感官锚点",
|
|
10
|
+
"单章锚点间隔不超过1000字",
|
|
11
|
+
"锚点要用在关键时刻,不要随意插入",
|
|
12
|
+
"一个精准有力的锚点胜过三个泛泛的锚点",
|
|
13
|
+
"日常/环境描写段落可以不含锚点",
|
|
14
|
+
"锚点类型要多样,不要反复使用同一个动作(如反复“握紧拳头”)"
|
|
15
|
+
],
|
|
16
|
+
"examples": [
|
|
17
|
+
{
|
|
18
|
+
"text": "(稀疏模式示例,800字左右才出现一个锚点)\n暮色四合,远山如黛。江面上一叶扁舟缓缓漂过,渔翁坐在船头垂钓,纹丝不动,像是和这片山水融为了一体。岸边的芦苇随风摇曳,发出沙沙的声响,偶尔有水鸟扑棱着翅膀掠过水面。\n\n她站在江堤上,久久没有说话。风吹起她的长发和衣袂,远处的落日把半边天都烧成了橘红色,映在江面上,像一条燃烧的河流。\n\n……(中间继续环境描写和心理活动,约600字)……\n\n直到身后传来脚步声,她才蓦然回过神来,指尖不知何时已经冰凉。(锚点:指尖冰凉,暗示等待的紧张和时间的流逝)",
|
|
19
|
+
"note": "稀疏模式:大量环境和心理描写中,关键时刻一个精准锚点(指尖冰凉)画龙点睛"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"threshold_overrides": {
|
|
23
|
+
"minAnchors": 2,
|
|
24
|
+
"anchorsPerWords": 800,
|
|
25
|
+
"maxAnchorGap": 1200
|
|
26
|
+
},
|
|
27
|
+
"radar_weights": {
|
|
28
|
+
"bodyReaction": 0.7,
|
|
29
|
+
"sensorySignal": 1.2,
|
|
30
|
+
"action": 0.8,
|
|
31
|
+
"emotion": 1.0,
|
|
32
|
+
"infoAdvance": 1.0
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_anchor_density",
|
|
4
|
+
"option_id": "opt_anchor_standard",
|
|
5
|
+
"option_name": "标准(每500字1个,默认)",
|
|
6
|
+
"option_description": "锚点密度标准,每500字至少1个身体锚点/感官锚点。这是最平衡的设置,既保证文本有身体感和代入感,又不过度打断叙事,是默认推荐选项。",
|
|
7
|
+
"system_prompt": "你使用标准锚点密度模式。大约每500字出现一个身体锚点或感官锚点,让读者始终保持在角色的身体里,有代入感但不过度。锚点自然融入叙事,不要为了凑数而插入生硬的身体描写。可以是:手指的小动作、面部表情变化、心跳呼吸、感官体验(冷热/痛痒/声音/气味)、姿态变化等。锚点要服务于情绪和场景——紧张时手心出汗、难过时喉咙发紧、思考时皱眉、放松时肩膀松下来。让读者通过身体感受到角色的状态。",
|
|
8
|
+
"constraints": [
|
|
9
|
+
"每500字至少1个身体/感官锚点",
|
|
10
|
+
"单章锚点间隔不超过800字",
|
|
11
|
+
"锚点自然融入叙事,不生硬插入",
|
|
12
|
+
"锚点类型多样:手部/面部/身体姿态/感官体验/呼吸心跳等",
|
|
13
|
+
"锚点要与情绪/场景匹配(不是随便写个动作就行)",
|
|
14
|
+
"对话段落也要有适当的锚点穿插(动作标签)"
|
|
15
|
+
],
|
|
16
|
+
"examples": [
|
|
17
|
+
{
|
|
18
|
+
"text": "(标准模式示例,约每500字一个锚点)\n他推开门,咖啡的香气扑面而来。(感官锚点:嗅觉)\n\n咖啡馆里人不多,靠窗的位置坐着一个穿灰色风衣的女人,正低头看着手机。他走过去,在她对面坐下,手心微微有些出汗。(身体锚点:手心出汗-紧张)\n\n「你来了。」她抬起头,眼睛里有一种他读不懂的情绪。\n\n「嗯。」他清了清嗓子,(动作锚点:清嗓子-不安)「你说有事情要告诉我?」\n\n她沉默了几秒,端起咖啡杯喝了一口,杯沿碰到嘴唇的时候,他注意到她的手在轻轻发抖。(身体锚点:手发抖-她也很紧张)",
|
|
19
|
+
"note": "标准模式:约每200-500字一个锚点,自然融入对话和叙事"
|
|
20
|
+
}
|
|
21
|
+
],
|
|
22
|
+
"threshold_overrides": {
|
|
23
|
+
"minAnchors": 4,
|
|
24
|
+
"anchorsPerWords": 500,
|
|
25
|
+
"maxAnchorGap": 800
|
|
26
|
+
},
|
|
27
|
+
"radar_weights": {
|
|
28
|
+
"bodyReaction": 1.0,
|
|
29
|
+
"sensorySignal": 1.0,
|
|
30
|
+
"action": 1.0,
|
|
31
|
+
"emotion": 1.0,
|
|
32
|
+
"infoAdvance": 1.0
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_battle_style",
|
|
4
|
+
"option_id": "opt_battle_atmosphere",
|
|
5
|
+
"option_name": "重氛围渲染",
|
|
6
|
+
"option_description": "侧重战斗的感受、压迫感和紧张氛围(默认),动作与感官/心理交织,不追求招式细节而追求整体张力。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"maxSentenceLength": 45,
|
|
9
|
+
"shortSentenceRatio": 0.35
|
|
10
|
+
},
|
|
11
|
+
"radar_weights": {
|
|
12
|
+
"action": 1.2,
|
|
13
|
+
"sensorySignal": 1.3,
|
|
14
|
+
"emotion": 1.3,
|
|
15
|
+
"bodyReaction": 1.2
|
|
16
|
+
},
|
|
17
|
+
"system_prompt": "战斗描写注重氛围和感受,不逐招拆解。通过感官印象(风声、金属味、血的温度、压迫感)、身体反应(心跳加速、肌肉紧绷、肾上腺素)和环境变化(灯光闪烁、地面震动、碎片飞溅)来渲染战斗的紧张感。关键动作慢镜头特写,非关键动作一笔带过。节奏有张有弛,在暴烈的动作中穿插瞬间的寂静。",
|
|
18
|
+
"constraints": [
|
|
19
|
+
"战斗中必须有感官描写和身体感受",
|
|
20
|
+
"不逐招罗列,关键动作重点写,过渡动作简洁带过",
|
|
21
|
+
"战斗环境必须参与氛围营造",
|
|
22
|
+
"节奏要有张弛,不能全程紧绷"
|
|
23
|
+
],
|
|
24
|
+
"examples": [
|
|
25
|
+
{
|
|
26
|
+
"text": "刀砍下来的时候,他听见了风的声音。\n\n不是风——是刀劈开空气的尖啸。他本能地侧身,刀锋贴着肩膀过去,割破工服,皮肤上立刻泛起一道火辣辣的凉。然后是血,温热的,顺着胳膊往下流,滴在地上,和黑色的煤尘混在一起。\n\n对方的第二刀已经到了。\n\n他来不及想任何事。身体比脑子快——矿灯的光在刀刃上晃了一下,他抬臂去挡,金属相撞的瞬间,虎口震得发麻,铜碗从腰间脱落,在地上滚出很远,发出空旷的回响。\n\n黑暗里全是声音:呼吸声、金属声、血涌进耳朵里的轰鸣声。",
|
|
27
|
+
"note": "不写具体招式,通过感官(风的声音/血的温度/虎口发麻)和环境(铜碗滚动的回响)渲染战斗。"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"requires": [],
|
|
31
|
+
"conflicts": []
|
|
32
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_battle_style",
|
|
4
|
+
"option_id": "opt_battle_detail",
|
|
5
|
+
"option_name": "重细节拆招",
|
|
6
|
+
"option_description": "一招一式清晰拆解,动作细节精确到身体部位和武器轨迹。适合武侠、硬派格斗场景,画面感强。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"maxSentenceLength": 35,
|
|
9
|
+
"targetSentenceLength": 18,
|
|
10
|
+
"shortSentenceRatio": 0.5,
|
|
11
|
+
"maxParagraphLength": 100
|
|
12
|
+
},
|
|
13
|
+
"radar_weights": {
|
|
14
|
+
"action": 1.5,
|
|
15
|
+
"bodyReaction": 1.3,
|
|
16
|
+
"sensorySignal": 1.0,
|
|
17
|
+
"emotion": 0.9
|
|
18
|
+
},
|
|
19
|
+
"system_prompt": "战斗/动作描写注重招式拆解,每一个动作都要写清楚:身体哪个部位在动、从哪个方向来、用什么角度、对方如何应对。动作链条清晰,有因有果。使用精准的动作动词,不用模糊的「打过来」「躲开」,要写具体是怎么打、怎么躲。身体的受力感、重心变化、肌肉反应都要写到。",
|
|
20
|
+
"constraints": [
|
|
21
|
+
"每个攻防动作必须写清方向、部位、方式",
|
|
22
|
+
"动作链条有因果关系,不能跳跃",
|
|
23
|
+
"使用精准动作动词,不用模糊描述",
|
|
24
|
+
"每3-4个动作穿插一次身体感受(疼痛、麻木、重心失衡等)"
|
|
25
|
+
],
|
|
26
|
+
"examples": [
|
|
27
|
+
{
|
|
28
|
+
"text": "对方右拳直扑面门。\n\n他偏头闪开,拳风擦着左耳过去,带起一阵热风。同时左脚向前半步,右肘横击对方肋下。\n\n对手收拳回防,左臂下格挡开肘击。但他的肘是虚招——右膝已经顶向对方小腹。\n\n对手来不及回防,膝盖结结实实撞在腹肌上。对手闷哼一声,弓起身子。\n\n他顺势抓住对方衣领,右拳从下往上勾出。",
|
|
29
|
+
"note": "招式拆解清晰,每一步动作有方向有因果,身体感受穿插其中。"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"requires": [],
|
|
33
|
+
"conflicts": [
|
|
34
|
+
"opt_battle_result"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_battle_style",
|
|
4
|
+
"option_id": "opt_battle_psychological",
|
|
5
|
+
"option_name": "重心理博弈",
|
|
6
|
+
"option_description": "侧重对峙、算计和心理博弈,战斗是心理较量的外在表现。适合智斗、谈判式对峙、高手对决。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"maxSentenceLength": 50,
|
|
9
|
+
"shortSentenceRatio": 0.25,
|
|
10
|
+
"maxParagraphLength": 250,
|
|
11
|
+
"maxExpositionContinuous": 400
|
|
12
|
+
},
|
|
13
|
+
"radar_weights": {
|
|
14
|
+
"emotion": 1.4,
|
|
15
|
+
"infoAdvance": 1.2,
|
|
16
|
+
"action": 0.8,
|
|
17
|
+
"bodyReaction": 1.1
|
|
18
|
+
},
|
|
19
|
+
"system_prompt": "动作/战斗描写侧重心理博弈。对峙比打斗更重要:双方在出手前的观察、试探、算计、虚张声势、识破对方意图。动作是心理的外化——一个眼神、一个肌肉的微小紧绷、脚步的半寸移动,都比拳打脚踢更重要。真正的胜负在动手之前就已经决定。写沉默中的张力,写双方脑中的计算,写假动作背后的真实意图。",
|
|
20
|
+
"constraints": [
|
|
21
|
+
"对峙和心理描写占战斗篇幅的60%以上",
|
|
22
|
+
"每个动作之前必须有心理铺垫或判断",
|
|
23
|
+
"关注微表情、微动作和身体语言",
|
|
24
|
+
"胜负的关键是智慧/心理/信息差,而非蛮力"
|
|
25
|
+
],
|
|
26
|
+
"examples": [
|
|
27
|
+
{
|
|
28
|
+
"text": "两人相距五米,谁都没有先动。\n\n周敬言的右手垂在身侧,手指微微弯曲。林深注意到他食指的第二关节有一层薄茧——那是常年握枪扣扳机磨出来的。但他的枪在腰侧枪套里,扣盖没有打开。\n\n是虚张声势?还是在等他先动?\n\n林深的目光从对方的手移到眼睛。周敬言的瞳孔很稳,呼吸频率大约每分钟十二次——非常平静。一个真正要开枪的人,呼吸会不自觉地加快。\n\n所以他不会开枪。至少现在不会。\n\n林深向前迈了一步。\n\n他看见周敬言的左眉极轻微地跳了一下。",
|
|
29
|
+
"note": "对峙中心理博弈为主,观察细节、判断意图,动作只是心理的验证。"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"requires": [],
|
|
33
|
+
"conflicts": [
|
|
34
|
+
"opt_battle_result"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_battle_style",
|
|
4
|
+
"option_id": "opt_battle_result",
|
|
5
|
+
"option_name": "重结果快节奏",
|
|
6
|
+
"option_description": "战斗一笔带过,不写过程只写结果,快节奏推进。适合爽文、非重点战斗、或者主角实力碾压的场景。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"maxSentenceLength": 25,
|
|
9
|
+
"shortSentenceRatio": 0.6,
|
|
10
|
+
"maxParagraphLength": 60,
|
|
11
|
+
"targetParagraphLength": 30
|
|
12
|
+
},
|
|
13
|
+
"radar_weights": {
|
|
14
|
+
"action": 1.4,
|
|
15
|
+
"infoAdvance": 1.2,
|
|
16
|
+
"sensorySignal": 0.6,
|
|
17
|
+
"emotion": 0.7
|
|
18
|
+
},
|
|
19
|
+
"system_prompt": "战斗过程极简,不写具体招式和打斗细节,直接呈现结果和关键转折点。快进式叙事,三言两语解决战斗。重点写战斗开始前的压迫感和战斗结束后的结果状态,中间过程一笔带过。适合非关键战斗或者实力悬殊的碾压场景。",
|
|
20
|
+
"constraints": [
|
|
21
|
+
"战斗过程不超过300字",
|
|
22
|
+
"不拆解具体招式",
|
|
23
|
+
"重点写战斗前的张力和战斗后的结果",
|
|
24
|
+
"结果必须清晰(谁赢了、谁受伤了、获得了什么)"
|
|
25
|
+
],
|
|
26
|
+
"examples": [
|
|
27
|
+
{
|
|
28
|
+
"text": "四个人围了上来。\n\n他没说话。\n\n三分钟后。\n\n四个人全躺在了地上。\n\n他拍了拍袖子上的灰,弯腰捡起掉落的矿灯。灯没碎。\n\n继续往前走。",
|
|
29
|
+
"note": "过程完全省略,只写结果,节奏极快,爽感强。"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"requires": [],
|
|
33
|
+
"conflicts": [
|
|
34
|
+
"opt_battle_detail",
|
|
35
|
+
"opt_battle_psychological"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_description_style",
|
|
4
|
+
"option_id": "opt_desc_clinical",
|
|
5
|
+
"option_name": "临床写实",
|
|
6
|
+
"option_description": "客观冷静精确的描写方式,像医生观察病例、像警察记录现场。不带感情色彩,细节精确到数字和量化描述。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"minSensoryTypes": 2,
|
|
9
|
+
"sightRatio": 0.6
|
|
10
|
+
},
|
|
11
|
+
"radar_weights": {
|
|
12
|
+
"sensorySignal": 1.0,
|
|
13
|
+
"emotion": 0.5,
|
|
14
|
+
"infoAdvance": 1.3,
|
|
15
|
+
"action": 1.0
|
|
16
|
+
},
|
|
17
|
+
"system_prompt": "描写客观、冷静、精确,不带感情色彩。像写报告一样记录场景:精确的数字、准确的位置关系、可量化的物理属性。不写「恐怖」「美丽」「恶心」等主观评价词,只写可观察的事实。温度是多少度,距离是多少米,伤口多长多深,光线从几点钟方向来。冷感来自客观本身,而非形容词。",
|
|
18
|
+
"constraints": [
|
|
19
|
+
"禁止使用主观感情色彩词(恐怖、美丽、恶心等)",
|
|
20
|
+
"物理属性尽量精确量化(温度、距离、尺寸、时间)",
|
|
21
|
+
"描写顺序遵循空间逻辑(从整体到局部/从外到内)",
|
|
22
|
+
"不加入叙述者的情感评价"
|
|
23
|
+
],
|
|
24
|
+
"examples": [
|
|
25
|
+
{
|
|
26
|
+
"text": "尸体位于七号矿道岔口,距主巷入口47米。\n\n男性,年龄约45-50岁,身高172厘米,身着藏蓝色矿工服,头戴安全帽,头灯已碎裂。\n\n死亡时间初步判断为6-8小时前。体表无明显外伤,但右手食指指甲断裂,指缝中有矿渣残留。岩壁温度计显示当前壁温35.8度,低于正常值1.4度。\n\n死者面部朝向岔口深处,双目圆睁,右手向前伸出,呈抓取姿态。",
|
|
27
|
+
"note": "法医/刑侦式客观记录,不带感情,细节精确。"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"requires": [],
|
|
31
|
+
"conflicts": [
|
|
32
|
+
"opt_desc_sensory",
|
|
33
|
+
"opt_desc_poetic",
|
|
34
|
+
"opt_desc_minimal"
|
|
35
|
+
]
|
|
36
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_description_style",
|
|
4
|
+
"option_id": "opt_desc_minimal",
|
|
5
|
+
"option_name": "极简白描",
|
|
6
|
+
"option_description": "用最少的字勾勒画面,白描手法,不加修饰。留大量空白给读者想象,克制、冷峻、有力。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"minSensoryTypes": 1,
|
|
9
|
+
"sightRatio": 0.7,
|
|
10
|
+
"maxParagraphLength": 100
|
|
11
|
+
},
|
|
12
|
+
"radar_weights": {
|
|
13
|
+
"sensorySignal": 0.7,
|
|
14
|
+
"emotion": 0.8,
|
|
15
|
+
"action": 1.2,
|
|
16
|
+
"infoAdvance": 1.1
|
|
17
|
+
},
|
|
18
|
+
"system_prompt": "描写极简,白描为主。用最精准的名词和动词勾勒画面,不用形容词堆砌,不用比喻修饰。一个细节胜过十个修饰语。留白比写满更重要,让读者自己去填充画面。描写只提供最关键的视觉信息和必要的动作感知,其余一概省略。",
|
|
19
|
+
"constraints": [
|
|
20
|
+
"描写用词极简,能不用形容词就不用",
|
|
21
|
+
"每个场景描写不超过3个关键意象",
|
|
22
|
+
"禁止使用比喻、拟人等修辞进行修饰",
|
|
23
|
+
"不写感觉,只写事实(不写「恐怖的黑暗」,只写「灯灭了」)"
|
|
24
|
+
],
|
|
25
|
+
"examples": [
|
|
26
|
+
{
|
|
27
|
+
"text": "天黑了。\n\n灯灭了。\n\n巷道很长。\n\n水从顶板滴落。\n\n滴。\n\n滴。\n\n滴。\n\n他靠在壁上。\n\n手里攥着铜碗。\n\n壁是温的。",
|
|
28
|
+
"note": "极简白描,没有修饰,纯事实呈现,反而更有力量。"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"requires": [],
|
|
32
|
+
"conflicts": [
|
|
33
|
+
"opt_desc_sensory",
|
|
34
|
+
"opt_desc_poetic",
|
|
35
|
+
"opt_desc_clinical"
|
|
36
|
+
]
|
|
37
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_description_style",
|
|
4
|
+
"option_id": "opt_desc_poetic",
|
|
5
|
+
"option_name": "诗意描写",
|
|
6
|
+
"option_description": "意象优美,节奏舒缓,语言有诗的质感。善用比喻、通感和意象叠加,营造独特的审美氛围。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"minSensoryTypes": 3,
|
|
9
|
+
"sightRatio": 0.4,
|
|
10
|
+
"maxParagraphLength": 250
|
|
11
|
+
},
|
|
12
|
+
"radar_weights": {
|
|
13
|
+
"sensorySignal": 1.3,
|
|
14
|
+
"emotion": 1.4,
|
|
15
|
+
"action": 0.7
|
|
16
|
+
},
|
|
17
|
+
"system_prompt": "描写追求诗意美感。善用新鲜的比喻和意象,允许通感(声音有颜色、温度有形状),语言有节奏感和音乐性。意象要精准独特,避免陈词滥调。节奏舒缓,像散文诗一样铺展画面。情感不直说,通过意象传递。每一个意象都要承载情感重量。",
|
|
18
|
+
"constraints": [
|
|
19
|
+
"比喻和意象必须新鲜,禁止陈词滥调(心如刀割、泪如雨下等)",
|
|
20
|
+
"描写节奏舒缓,不急于推进动作",
|
|
21
|
+
"每个场景至少有一个核心意象贯穿",
|
|
22
|
+
"避免堆砌华丽辞藻,诗意来自精准而非华丽"
|
|
23
|
+
],
|
|
24
|
+
"examples": [
|
|
25
|
+
{
|
|
26
|
+
"text": "月光从天窗流下来,在石板地上铺成一片霜。\n\n她坐在那片霜里,像一株被遗忘在冬夜的植物。铜碗搁在膝上,碗沿的凹角盛着一小片月光,像盛着一碗凉透了的水。\n\n风从巷道尽头来,带着三千尺地底的呼吸。灯焰晃了晃,把她的影子投在墙上,拉成一道细长的、颤抖的线。",
|
|
27
|
+
"note": "月光如霜、如凉水,影子如颤抖的线——意象新鲜,节奏舒缓。"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"requires": [],
|
|
31
|
+
"conflicts": [
|
|
32
|
+
"opt_desc_minimal",
|
|
33
|
+
"opt_desc_clinical"
|
|
34
|
+
]
|
|
35
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_description_style",
|
|
4
|
+
"option_id": "opt_desc_sensory",
|
|
5
|
+
"option_name": "感官沉浸(推荐默认)",
|
|
6
|
+
"option_description": "五感全开的描写方式,视觉、听觉、嗅觉、触觉、味觉多通道并进,沉浸感极强,让读者身临其境。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"minSensoryTypes": 3,
|
|
9
|
+
"sightRatio": 0.45
|
|
10
|
+
},
|
|
11
|
+
"radar_weights": {
|
|
12
|
+
"sensorySignal": 1.5,
|
|
13
|
+
"bodyReaction": 1.3,
|
|
14
|
+
"emotion": 1.2,
|
|
15
|
+
"action": 1.0
|
|
16
|
+
},
|
|
17
|
+
"system_prompt": "感官描写的核心是'让读者用身体读'。不是告诉读者'这里很恐怖',而是让读者后颈发紧、手心出汗、闻到那个味道、感觉到那个温度。读者不是在看故事,是在故事里。\n\n【五感写作要点】\n\n1. 视觉(40%-45%):不要只写'有什么',要写'是什么样的'。\n- 光线:光源在哪?是强光还是弱光?什么颜色?照在什么东西上反光?阴影在哪?\n- 颜色:不要只写'红色',写'暗红''铁锈红''像凝固的血一样的红''被水泡得发乌的红'。\n- 动态:什么在动?怎么动?灰尘在光柱里浮着,水珠顺着岩壁往下爬,烟往上飘,影子在晃。静态画面是死的,有动态才活。\n- 视角:从角色的眼睛看出去,不是上帝视角。他先看到什么,后看到什么,什么被挡住了看不见,什么晃了他的眼。\n\n2. 听觉(20%):声音最能制造沉浸感和紧张感。\n- 不要只写'有声音',要写声音从哪来、多远、多大、什么质感。'滴答声'不够,'从黑暗深处传来的滴答声,间隔七秒,每一声都比上一声近一点'才有感觉。\n- 寂静也是声音。'通风管停了之后,耳朵里只剩自己的心跳声,咚咚的,像有人在里面敲鼓。' 对比之下的安静更可怕。\n- 声音的变化:声音变大了?变小了?变调了?刚才有的声音突然没了?声音的变化比声音本身更重要。\n- 不要用拟声词堆砌('哐当一声''轰隆巨响'),用角色的感知和反应写声音——'他耳朵嗡的一下,什么都听不见了'比'一声巨响'有力。\n\n3. 嗅觉/味觉(15%):嗅觉是最直接触发记忆和情绪的感官,但最容易被忽略。\n- 每个新场景至少有一个气味。矿道里是什么味?瓦斯是甜丝丝的像烂苹果,旧巷道有霉味和腐臭味,有人的地方有烟味和汗味。\n- 气味要有层次。不是只有'臭味',是'汗馊味混着烟味,还有一点从深处飘上来的、说不上来的甜腥味'。\n- 味觉不要滥用,但关键时刻很有效——嘴里的铁锈味(血)、苦味(恐惧时嘴里发苦)、铜味、铁锈味、灰尘的味道。\n\n4. 触觉(20%):触觉是锚定感的核心,让读者'踩在地上'。\n- 温度:空气是冷是热?壁面是温是凉?风吹在脸上是什么感觉?水是冰的还是温的?温度直接传递情绪。\n- 质感:手摸到的东西是什么触感?岩壁是粗糙的还是滑的?衣服是湿的还是干的?铜碗是凉的还是被手焐热了?\n- 身体感觉:呼吸的时候肺里是什么感觉?累的时候腿是什么感觉?紧张的时候后颈是什么感觉?疼是怎么个疼法——刺痛?钝痛?火辣辣的?\n- 不要写'很疼''很冷',写'冷风灌进领口,顺着脊梁往下窜,他打了个寒颤''手指冻得发麻,弯都弯不过来'。\n\n【技法原则】\n\n1. 感官融入动作:不要单独拎出来写'这里有XX味,声音是XX,温度是XX',要把感官写进动作里。'他扶着壁面往前走,岩壁冰凉粗糙,磨得手心发疼,空气里有股甜丝丝的味道,他知道那是瓦斯。'——感官跟着动作走,不生硬。\n\n2. 感官跟着情绪走:角色紧张的时候,听觉会变敏锐(能听见平时听不见的声音),视觉会变窄(只看得见眼前的东西);角色放松的时候,感官会散开;角色恐惧的时候,会闻到平时闻不到的味道。感官不是客观的,是被情绪过滤的。\n\n3. 选最有代表性的感官:不是每个场景都要五感全上,选2-3种最能传递当下氛围的。恐怖场景侧重听觉+触觉+嗅觉;抒情场景侧重视觉+触觉;动作场景侧重触觉+听觉。\n\n4. 感官要有变化:同一个场景里,感官重点要变。刚进一个地方先闻到味道,然后看到光线,然后听到声音,然后摸到什么。感官像镜头一样推近,读者跟着进去。\n\n5. 禁止陈词滥调:'一股寒气从脚底直冲天灵盖''倒吸一口凉气''空气中弥漫着恐怖的气息'——这些都是偷懒,要用具体的感官细节代替。",
|
|
18
|
+
"constraints": [
|
|
19
|
+
"每个场景至少激活3种感官类型,视觉占比不超过45%,必须有非视觉感官",
|
|
20
|
+
"触觉(温度/质感/身体感觉)是核心锚点,每个场景至少有1处触觉描写",
|
|
21
|
+
"感官描写必须融入动作或叙事,禁止像清单一样单独罗列'这里有X味,有Y声音,温度是Z'",
|
|
22
|
+
"描写要具体到质感——不写'红色'写具体是什么红,不写'声音响'写是什么样的声音从哪来",
|
|
23
|
+
"禁止陈词滥调(寒气冲天灵盖/倒吸一口凉气/弥漫着恐怖气息等)",
|
|
24
|
+
"每个新场景/地点出现时,必须有至少1个专属的气味或声音标记",
|
|
25
|
+
"感官要被角色情绪过滤——紧张时听觉放大,恐惧时闻到异味,不要客观中立地'摄像'",
|
|
26
|
+
"声音的变化比声音本身更重要——声音停了、变近了、变调了,都要写出来"
|
|
27
|
+
],
|
|
28
|
+
"examples": [
|
|
29
|
+
{
|
|
30
|
+
"text": "他扶着壁面慢慢往前走。\n\n岩壁是凉的,不是正常的凉,是那种从很深的地方渗上来的、带着点潮意的温凉,像摸在死人的皮肤上。水珠顺着岩壁往下渗,沾在他手背上,黏糊糊的。\n\n空气不对。\n\n平时这里只有灰尘和炸药残留的硝石味,今天多了一股甜味——很淡,不仔细闻根本察觉不到,像烂苹果,又像什么东西发酵了。他吸了吸鼻子,后颈的汗毛一下子竖起来。\n\n瓦斯。\n\n他停下来,关掉矿灯。\n\n黑暗瞬间压下来,浓得像浸在墨里。眼睛还没适应黑暗,耳朵先醒了——原来通风管的嗡鸣不知道什么时候停了,四周静得能听见自己的心跳,咚咚的,撞得肋骨疼。水滴声从很深的地方传上来,滴答,滴答,每一下间隔大概七秒,每一下都比上一声近一点。\n\n不对。水滴声不会越来越近。\n\n他屏住呼吸。\n\n除了水滴声,还有另一个声音。\n\n很轻。很慢。像是什么东西在爬,爪子刮过岩壁的声音,沙,沙,沙。\n\n在他身后。",
|
|
31
|
+
"note": "感官沉浸示范:触觉(岩壁温凉像死人皮肤/水珠黏糊糊)、嗅觉(甜丝丝的烂苹果味=瓦斯)、听觉(通风管停了/心跳声/滴答声间隔七秒/刮岩壁的沙沙声)、视觉(黑暗浓得像墨)四感交织。感官跟着情绪走——一开始没察觉味道,然后后颈汗毛竖起来;关了灯之后听觉瞬间放大;最后那个声音在身后,恐怖感拉满。没有一个词写'恐怖''害怕''紧张',但读者全程提着气。"
|
|
32
|
+
}
|
|
33
|
+
],
|
|
34
|
+
"requires": [],
|
|
35
|
+
"conflicts": [
|
|
36
|
+
"opt_desc_minimal",
|
|
37
|
+
"opt_desc_clinical"
|
|
38
|
+
]
|
|
39
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_dialogue_style",
|
|
4
|
+
"option_id": "opt_dialogue_concise",
|
|
5
|
+
"option_name": "简洁精炼",
|
|
6
|
+
"option_description": "对话极简,话少意多。适合硬汉、高冷角色、悬疑场景、矿工等沉默寡言的人物。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"maxDialogueContinuous": 3,
|
|
9
|
+
"maxDialogueTagRepeat": 1
|
|
10
|
+
},
|
|
11
|
+
"radar_weights": {
|
|
12
|
+
"emotion": 1.0,
|
|
13
|
+
"action": 1.2,
|
|
14
|
+
"infoAdvance": 1.1
|
|
15
|
+
},
|
|
16
|
+
"system_prompt": "简洁精炼对话的核心是'话少信息多'。人物不多话,但每句话都有分量。沉默本身就是对话。具体技法:\n\n1. 字数控制:单句对话不超过15字,极端情况可以1-3个字。能说两个字不说三个字,能用动作代替就不说话。回答常常是一个字、一个点头、一个眼神。\n\n2. 潜台词密度极高:每句话背后都有没说出口的东西。'走了。'可能是'我走了你别死'。'嗯。'可能是'我听到了我不同意但我懒得跟你争'。读者要从上下文和动作里读出来。\n\n3. 沉默的使用:不回答本身就是回答。停顿、犹豫、转移视线、转身就走——这些非语言反应比说话更有力。对话之间可以插入大段动作描写,制造沉默的重量感。\n\n4. 禁止解释性对话:角色不会把自己的意思解释清楚,不会说'我生气是因为你昨天骗了我'这种话。情绪要读者自己体会。\n\n5. 问答不对称:问三句答一句,答非所问,或者用问题回答问题。不配合对话本身就在塑造人物性格。\n\n6. 动作重于语言:当一个动作可以表达态度时,绝不用语言。放下茶杯的力度、走路的速度、看人的角度——这些都在说话。",
|
|
17
|
+
"constraints": [
|
|
18
|
+
"单句对话原则上不超过15字,多数对话在10字以内",
|
|
19
|
+
"连续对话不超过3句必须穿插动作/环境描写,且动作描写字数应多于对话字数",
|
|
20
|
+
"禁止解释性台词(角色把自己的情绪、动机、计划直接说出来)",
|
|
21
|
+
"对话标签'XX道/说'每千字不超过5次,绝大多数对话用动作引入或不标签",
|
|
22
|
+
"每段对话场景中至少有1次沉默/不回答/用动作代替回答",
|
|
23
|
+
"禁止使用感叹号超过对话总句数的10%,简洁角色不轻易激动外露",
|
|
24
|
+
"禁止出现'我觉得''我认为''你听我说'等啰嗦开场"
|
|
25
|
+
],
|
|
26
|
+
"examples": [
|
|
27
|
+
{
|
|
28
|
+
"text": "铜碗放在膝上,水已经凉了。他没喝。\n\n洞口的光暗了一度。\n\n「老李。」他说。\n\n没人应。\n\n他等了三秒,端起铜碗喝了一口。水锈味。\n\n「该你了。」\n\n阴影里动了一下。老李爬过来,动作很慢,右胳膊垂着,使不上劲。他接过铜碗的时候手指在抖。\n\n「壁温多少?」\n\n「35.8。」\n\n老李没说话。他知道这意味着什么。正常是32度。\n\n「还能走吗?」\n\n老李没回答,把铜碗递还给他,撑着壁面站起来。膝盖打了个弯,但他站住了。\n\n他把矿灯拧亮,光柱里浮尘一动不动。\n\n「走。」",
|
|
29
|
+
"note": "极简对话示范:整段200多字只有6句对话,每句不超过5字。'老李没说话''老李没回答'是沉默的用法。'35.8'一个数字包含全部信息,不需要解释这意味着什么。结尾'走'一个字,比'我们走吧''赶紧离开这里'有力一百倍。动作描写(胳膊垂着/手指抖/膝盖打弯/浮尘一动不动)承载了绝大多数信息。"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"requires": [],
|
|
33
|
+
"conflicts": []
|
|
34
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_dialogue_style",
|
|
4
|
+
"option_id": "opt_dialogue_natural",
|
|
5
|
+
"option_name": "自然口语化",
|
|
6
|
+
"option_description": "对话贴近真实口语(默认),有停顿、重复、语气词,像真人说话。自然流畅,不做作。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"maxDialogueContinuous": 4,
|
|
9
|
+
"maxDialogueTagRepeat": 2
|
|
10
|
+
},
|
|
11
|
+
"radar_weights": {
|
|
12
|
+
"emotion": 1.1,
|
|
13
|
+
"action": 0.9
|
|
14
|
+
},
|
|
15
|
+
"system_prompt": "自然口语化对话是默认对话风格,核心在于'像真人说话'。真人说话不会把意思说满,会有停顿、犹豫、打断、话里有话、答非所问。具体技法:\n\n1. 潜台词原则:人物说的话和真实想法之间永远有缝隙。表面聊天气,实际在试探;表面说没事,实际在生气;表面答应,实际在敷衍。用动作暗示真实态度(手指敲桌面=不耐烦,避开眼神=心虚,停顿太久=在撒谎)。\n\n2. 动作标签(beat)设计:不要每句话都用'XX说/道',用动作替代标签——递烟、倒茶、看窗外、挠头、沉默两秒。每3-4句对话之间必须插入一个动作或微表情,这个动作本身就在说话。\n\n3. 口语节奏:允许语气词(啊/呢/吧/嘛/嗯/哦)、省略主语、半截话、打断。熟人之间说话不完整,不需要把每个信息点都说清楚。\n\n4. 信息控制:对话是人物博弈,不是信息传递。角色不会主动把知道的全说出来,要通过追问、误解、回避、说漏嘴来推进。\n\n5. 角色差异化:教育程度高的人句子完整、逻辑清晰;底层劳动者句子短、粗话多、喜欢用比喻;老人爱啰嗦、爱说教;年轻人说话快、网络词多。",
|
|
16
|
+
"constraints": [
|
|
17
|
+
"连续对话不超过4句必须穿插动作/神态/环境描写",
|
|
18
|
+
"对话标签'XX道/说'每千字不超过8次,优先用动作替代标签",
|
|
19
|
+
"禁止出现文绉绉的书面化台词(如'吾辈岂是贪生怕死之辈'),除非角色设定明确要求",
|
|
20
|
+
"每段对话场景中至少有1处潜台词(人物说的话和动作暗示的真实态度不一致)",
|
|
21
|
+
"禁止对话中直接说出角色情绪(如'我很生气''你别害怕'),情绪用语气和动作表现",
|
|
22
|
+
"对话标签禁止连续重复同一个动词超过2次"
|
|
23
|
+
],
|
|
24
|
+
"examples": [
|
|
25
|
+
{
|
|
26
|
+
"text": "老周把烟头按灭在烟灰缸里,烟蒂已经堆了半缸。「来了?」\n\n「嗯。」陈默拉开椅子坐下,没看他。\n\n「喝什么?茶还是凉白开?」\n\n「随便。」\n\n老周倒了杯茶推过来,茶水太满,溢了一点在桌面上。他没擦。「东西拿到了?」\n\n陈默从外套内袋里掏出一个牛皮纸信封,放在桌上,没推过去。「你先看看。」\n\n老周没去碰信封。他盯着陈默的脸看了几秒,端起自己的茶杯喝了一口。「你脸色不好。」\n\n「昨晚没睡好。」\n\n「出什么事了?」\n\n「没事。」陈默终于抬眼看他,「你到底要不要?」\n\n老周沉默了两秒,把信封拿过去,没打开,直接塞进了抽屉。",
|
|
27
|
+
"note": "自然口语示范:用动作(按烟头/倒茶/盯着看/塞抽屉)替代对话标签,每句对话都短,潜台词丰富——陈默说'没事'但脸色不好明显有事,老周不拆信封直接塞抽屉表示信任,茶水溢了不擦说明心里有事。"
|
|
28
|
+
}
|
|
29
|
+
],
|
|
30
|
+
"requires": [],
|
|
31
|
+
"conflicts": []
|
|
32
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_dialogue_style",
|
|
4
|
+
"option_id": "opt_dialogue_stylized",
|
|
5
|
+
"option_name": "风格化",
|
|
6
|
+
"option_description": "对话有鲜明个人特色,方言/口头禅/行业黑话/特定句式。适合嘴炮角色、江湖人物、方言特色作品。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"maxDialogueContinuous": 4,
|
|
9
|
+
"maxDialogueTagRepeat": 2
|
|
10
|
+
},
|
|
11
|
+
"radar_weights": {
|
|
12
|
+
"emotion": 1.2,
|
|
13
|
+
"action": 0.9
|
|
14
|
+
},
|
|
15
|
+
"system_prompt": "风格化对话的核心是'每个角色一张嘴就能认出是谁'。通过语言模式塑造人物,让对话本身成为人物标签。具体技法:\n\n1. 口头禅设计:给重要角色1-2个标志性口头禅,不要太多(多了假)。口头禅要符合人物背景——老兵可能说'操',读书人说'有趣',小混混说'不是我说'。口头禅出现频率要自然,不是每句都带。\n\n2. 句式特征:有的人说话爱用反问,有的人爱用短句,有的人爱说半截话,有的人说话爱打比方。受过教育的人用复句,底层人用单句。军人说话短促有力,老太太说话爱绕弯子。\n\n3. 方言/黑话使用:方言词汇和行业黑话要'点到为止'——通过上下文让读者猜懂意思,不能每句都注释。比例控制在10%-15%,多了影响阅读流畅性。黑话本身就在塑造世界观(江湖切口、军事术语、职场黑话)。\n\n4. 语言的时代感:古风人物不能说'OK''搞定',现代人物不能说'鄙人''幸会'。语言要符合故事背景时代,但不要过度仿古导致晦涩。\n\n5. 情绪通过语言风格变化体现:人激动时句子变短、重复、口吃、口头禅增多;人冷静时句子变长、用词精准;人撒谎时停顿多、语气词多、解释过多。\n\n6. 禁止千人一腔:去掉角色名字,读者光看台词就知道是谁在说话。如果两个角色的台词互换不违和,说明风格化失败。",
|
|
16
|
+
"constraints": [
|
|
17
|
+
"主要角色每人至少有1个可辨识的语言特征(口头禅/句式/用词习惯)",
|
|
18
|
+
"方言/行业黑话占对话总字数比例不超过15%,必须通过上下文可理解",
|
|
19
|
+
"禁止不同角色的语言风格雷同——去掉名字和标签后仍能区分说话人",
|
|
20
|
+
"连续对话不超过4句必须穿插动作/神态描写",
|
|
21
|
+
"风格化不能牺牲信息传递——不能为了有特色而让读者看不懂在说什么",
|
|
22
|
+
"禁止出现与故事时代背景不符的词汇(古风文不能出现现代网络用语)",
|
|
23
|
+
"对话标签'XX道/说'每千字不超过8次"
|
|
24
|
+
],
|
|
25
|
+
"examples": [
|
|
26
|
+
{
|
|
27
|
+
"text": "王胖子把抹布往肩上一搭,凑过来压低嗓子:「林子,跟你说个事儿。」\n\n「说。」林远没抬头,继续擦枪。\n\n「昨晚老三带回来那姑娘,你瞧见没有?」王胖子眼睛发亮,伸出两根手指比划,「这么长的头发,这么白的脸,腰——」\n\n「说重点。」\n\n「嘿,你这人。」王胖子讪讪缩回手,在围裙上擦了擦,「我是说,那姑娘不像普通人。手上没有茧,指甲修得齐整,说话带南边口音。南边现在是什么地界?沦陷区。一个沦陷区的大姑娘,孤身跑到咱们这儿来,你说奇不奇?」\n\n林远终于抬起头看他:「你跟老三说了?」\n\n「我哪敢啊!」王胖子一拍大腿,「老三那驴脾气,我要敢质疑他带回来的人,他能拿酒瓶子砸我脑袋。我这不是先来跟你商量嘛。你是咱们这儿识字最多的——」\n\n「我去看看。」林远把枪组装好,咔嚓一声推弹上膛。\n\n王胖子愣了一下,连忙跟上:「哎哎,你别带枪啊!万一真是逃难的学生呢?你把人吓着——」\n\n「不吓。」林远把枪别在腰后,用衣服盖住,「吓着了就请她喝碗粥。」",
|
|
28
|
+
"note": "风格化对话示范:王胖子的市井油滑(手势比划/一拍大腿/'你这人''我哪敢啊''嘿')和林远的极简('说''说重点''不吓')形成鲜明对比。王胖子的语言特征:爱用破折号、爱打比方、爱卖关子、句子长、语气词多;林远的语言特征:单字/两字回答、从不多说一个字、句子都是命令式。去掉名字读者也能分清谁在说话。"
|
|
29
|
+
}
|
|
30
|
+
],
|
|
31
|
+
"requires": [],
|
|
32
|
+
"conflicts": []
|
|
33
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_dialogue_style",
|
|
4
|
+
"option_id": "opt_dialogue_verbose",
|
|
5
|
+
"option_name": "絮叨详尽",
|
|
6
|
+
"option_description": "话多,爱说长句,喜欢解释、回忆、东拉西扯。适合长辈、话痨角色、市井人物、说书人风格。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"maxDialogueContinuous": 5,
|
|
9
|
+
"maxDialogueTagRepeat": 3
|
|
10
|
+
},
|
|
11
|
+
"radar_weights": {
|
|
12
|
+
"emotion": 1.0,
|
|
13
|
+
"action": 0.8,
|
|
14
|
+
"infoAdvance": 0.9
|
|
15
|
+
},
|
|
16
|
+
"system_prompt": "絮叨详尽对话的核心是'话里有大量信息,但表面东拉西扯'。人物爱说、能说、说个不停,但废话里藏着关键信息、人物性格和世界观。具体技法:\n\n1. 长句与停顿:话多的人物说话可以一整段就是一大句,中间有插入语、回忆、题外话、补充说明。用省略号、破折号、'怎么说呢''你知道吧''我跟你说'做口语标记。\n\n2. 题外话与信息夹带:说着说着跑题(回忆往事/评价别人/扯家常),但跑的题里往往藏着关键信息(无意中透露秘密、暴露态度、暗示伏笔)。读者要从废话里淘金。\n\n3. 听者反应穿插:长对话中必须穿插听者的小动作(点头/抽烟/看表/喝茶/打断),不能整段都是一个人在说。每4-5句插入一次听者反应,用来调节节奏。\n\n4. 重复与强调:话多的人爱重复,爱用不同的话讲同一个意思,爱举例子,爱打比方。重复本身就在强调什么东西对这个人物重要。\n\n5. 口语标记:大量使用'哎''嗨''可不是嘛''你想啊''说实话''不瞒你说''说句不好听的'这类口语发语词。\n\n6. 不要让絮叨变成注水:每一段长对话都要有叙事功能——要么揭示人物性格,要么推进剧情,要么埋伏笔,要么烘托氛围。不能全是废话。",
|
|
17
|
+
"constraints": [
|
|
18
|
+
"单人连续说话不超过5句必须穿插听者反应(动作/打断/提问)",
|
|
19
|
+
"每段长对话(超过100字)必须承载至少1项有效信息(剧情/人物/伏笔),不能纯注水",
|
|
20
|
+
"对话标签'XX道/说'可以适当使用,但优先用动作(抽烟/叹气/摆手/点头)引入",
|
|
21
|
+
"口语发语词(哎/嗨/可不是嘛/你想啊)适度使用,每千字不超过15个",
|
|
22
|
+
"禁止出现大段连续独白超过300字无任何穿插描写",
|
|
23
|
+
"重复强调的内容必须是对人物有重要意义的事物,不能无意义重复",
|
|
24
|
+
"话多的人物说的话要符合其身份——老人忆当年、妇人东家长西家短、说书人绘声绘色"
|
|
25
|
+
],
|
|
26
|
+
"examples": [
|
|
27
|
+
{
|
|
28
|
+
"text": "老范把烟袋锅子在鞋底上磕了磕,烟灰落在雪地里,滋的一声灭了。「三十年前那场矿难,你小子还没出生呢,」他眯着眼看向巷道深处,昏暗的矿灯光打在他脸上,皱纹里全是黑灰,「那天也是这个时候,后半夜三点多,我跟你爹——哦,那时候你爹还没娶你娘呢,刚跟我学徒半年——我们俩在掌子面打眼。」\n\n他点了一锅新烟,火柴划了三次才着,手在抖。\n\n「风停了。」他说。\n\n林远没说话,等着。\n\n「井下的风是不会停的,你知道吧?通风管二十四小时转,风一停,就说明——」老范吸了一口烟,烟锅子在暗处一明一暗,「就说明该出事了。你爹当时年轻,反应快,一把拽住我就往避险洞跑。我们刚进去,身后就响了。那声音……怎么跟你形容呢,不是爆炸,是——是壁在叫。」\n\n他顿了顿,把烟袋别回腰上。\n\n「那天一共下去七十二个人,出来十一个。你爹背着我跑了三里地,自己的腿被落碴砸断了都没吭一声。」老范拍了拍林远的肩膀,手掌粗糙得像砂纸,「所以你小子有种,是骨子里带的。但我跟你说,今天这情况跟风停那天一模一样。你要下去,我不拦你。但你得记住——」\n\n他盯着林远的眼睛,矿灯照进去,瞳孔里是深的黑。\n\n「感觉不对,立刻跑。别逞英雄。你爹当年就是因为回去救人才断的腿。」",
|
|
29
|
+
"note": "絮叨对话示范:老范说话长、有题外话、有回忆、有重复、有口语标记(你知道吧/怎么跟你形容呢/我跟你说),但整段对话完成了三个功能:交代三十年前的矿难历史、塑造父亲形象和传承、警告林远今天危险。穿插了磕烟灰、点烟三次才着、手在抖、拍肩膀等动作,听者林远虽然话少但存在感强。"
|
|
30
|
+
}
|
|
31
|
+
],
|
|
32
|
+
"requires": [],
|
|
33
|
+
"conflicts": []
|
|
34
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"kb_version": "2.0",
|
|
3
|
+
"node_id": "node_emotion_style",
|
|
4
|
+
"option_id": "opt_emotion_both",
|
|
5
|
+
"option_name": "内外结合(推荐默认)",
|
|
6
|
+
"option_description": "外在身体反应+内心独白结合使用,Show和Tell互补。既有身体的含蓄留白,又有内心的直接袒露,层次最丰富,适合绝大多数题材。",
|
|
7
|
+
"threshold_overrides": {
|
|
8
|
+
"minAnchors": 6,
|
|
9
|
+
"anchorsPerWords": 350,
|
|
10
|
+
"maxAnchorGap": 500,
|
|
11
|
+
"maxExpositionContinuous": 250
|
|
12
|
+
},
|
|
13
|
+
"radar_weights": {
|
|
14
|
+
"bodyReaction": 1.4,
|
|
15
|
+
"emotion": 1.4,
|
|
16
|
+
"sensorySignal": 1.1,
|
|
17
|
+
"action": 1.0,
|
|
18
|
+
"infoAdvance": 1.0
|
|
19
|
+
},
|
|
20
|
+
"system_prompt": "内外结合是最灵活、最有层次的情感表达方式。核心原则:'外冷内热,外动内静,反差出张力'。读者既能看到角色的外在表现,又能听到他的内心声音,二者可以一致也可以矛盾——矛盾的时候最有戏。\n\n【内外搭配的四种模式】\n\n1. 外动+内静:外在动作很激烈/很忙碌,但内心反而空了、静了。比如听到噩耗,表面上在冷静地收拾东西、安排后事,心里什么都没想,一片空白。动作越熟练越冷静,越让人觉得疼。\n\n2. 外静+内动:表面上什么都没做,只是坐着抽烟/看着窗外/喝水,但心里已经翻江倒海、想了一万个念头。这是最常用的模式——表面越平静,内心戏越足,张力越大。\n\n3. 外此+内彼:外在表现和内心想法完全相反。嘴上笑着说'没事真的没事',心里在想'我快撑不住了';嘴上说'恭喜你啊',心里在滴血;脸上没表情,心里已经在盘算怎么杀人了。这种反差是戏剧张力的核心来源。\n\n4. 内外一致:情绪强烈到一定程度,内外终于统一了——不用再装了,不用忍了,手开始抖,眼泪掉下来,或者直接爆发。这种'破防'时刻要少用,一本书里关键的3-5个地方用就够了,用多了就不值钱了。用之前一定要有足够的铺垫(前面一直忍,一直装,读者知道他在忍),爆发的时候才有力。\n\n【技法原则】\n\n1. 先外后内:先写外在动作/对话/身体反应,再进内心。读者先看到'他做了什么',再知道'他在想什么',有个递进。不要一上来就掏心掏肺。\n\n2. 内心不宜过长:内心独白点到为止,不要写一大段。3-5句就够了,说最核心的那个念头,然后立刻切回外部。留白比说透好。\n\n3. 身体标记情绪转折:每次情绪变化、每次从内心切回外部、每次决定做出的时候,都要有一个具体的身体动作作为标记——掐灭烟头、站起来、把杯子放下、系上扣子、抬起头。动作就是情绪的句号。\n\n4. 关键情绪点用'三连':重要情绪时刻可以用'外在动作→内心念头→对话/行动'三连结构。比如:(外)他把烟掐灭在烟灰缸里,烟蒂已经堆了半缸。(内)不能说。说了也没用。(外/对)「我没事。」他说,「真的。」\n\n5. 不要重复:同一个情绪,外在内心里写一遍就够了,不要外在写了'他手在抖',内心又写'我好紧张我手在抖'。互相补充,不要重复。外在写看得见的,内心写看不见的。\n\n6. 读者视角:外在是别人能看到的,内心是只有读者能看到的。读者知道角色在装、在忍、在骗所有人,这种'上帝视角'的代入感是内外结合独有的魅力。\n\n7. 节奏配合:情绪积累阶段多用'外静内动',慢慢压;情绪转折点用一个有力的外在动作(摔东西/站起来/说一句话);爆发时刻内外统一,不要太多内心,直接写动作和对话。",
|
|
21
|
+
"constraints": [
|
|
22
|
+
"每个重要情绪场景必须同时有外在表现(动作/身体反应/对话)和内心活动,二者互相补充不重复",
|
|
23
|
+
"内外可以形成强烈反差,这是张力来源,但反差要合理,不能为了反差而反差",
|
|
24
|
+
"内心独白每次不超过5句,点到核心念头就切回外部,禁止大段心理描写超过300字",
|
|
25
|
+
"情绪转折点必须有具体的身体动作标记(掐烟/站起/放杯子/抬头等)",
|
|
26
|
+
"情绪'破防'/爆发时刻全书要克制使用,关键场景才用,用前必须有足够的压抑/伪装铺垫",
|
|
27
|
+
"先写外在再写内心,顺序不要乱(除非刻意设计的意识流)",
|
|
28
|
+
"每350字至少有1处身体锚点,每700字至少有1段内心独白",
|
|
29
|
+
"对话和内心可以矛盾(嘴上说A心里想B),但不要解释这个矛盾,让读者自己体会",
|
|
30
|
+
"禁止叙事者跳出来总结情绪('他心里五味杂陈''那一刻他百感交集'),用内外细节自己说话"
|
|
31
|
+
],
|
|
32
|
+
"examples": [
|
|
33
|
+
{
|
|
34
|
+
"text": "陈默把诊断书折好,放进口袋,扣子系上。动作很慢,很仔细,像在做一件很重要的事。\n\n不能告诉她们。\n\n这个念头一出来就定了,像钉子钉进木头里,没有任何犹豫。说了又怎么样呢?老婆会哭,女儿会没心思考试,除了多两个人跟着熬,什么用都没有。他这辈子没什么本事,好歹最后这一程,能让她们少难受一天是一天。\n\n他从烟盒里抖出最后一根烟。空了。他把烟盒捏成一团,准确地扔进墙角的废纸篓里。\n\n「知道了。」他对老周说。\n\n声音是稳的。他听见自己的声音,甚至觉得有点太稳了,像在说别人的事。老周看着他,嘴唇动了动,像是想说什么,最后也没说,只是拍了拍他的肩膀。那只手很重,在他肩膀上停了三秒。\n\n「有事说话。」老周说。\n\n「行。」\n\n老周走了。门吱呀一声关上,工棚里只剩他一个人。\n\n他在椅子上坐着,没动。窗外的风越来越大,铁皮顶被刮得哗哗响,像要被掀起来。桌上的半杯凉茶已经凉透了,他端起来喝了一口,茶水里浮着一点茶渍,苦的。\n\n四十七。他想。父亲走的时候也是四十七。\n\n他把茶杯放下,杯底磕在桌面上,发出'嗒'的一声轻响。\n\n该去接女儿放学了。",
|
|
35
|
+
"note": "内外结合示范:先写外在动作(折诊断书/系扣子/捏烟盒/扔烟盒/喝茶/放杯子),然后插入内心(不能告诉她们/四十七/父亲也是四十七),再写对话和外部环境。内外有反差——外在动作稳、声音稳,内心已经想到了死、想到了女儿、想到了父亲。最后一句'该去接女儿放学了'是情绪的落点,也是决定——生活还要继续,他要撑住。没有一个情绪词,但所有情绪都在。"
|
|
36
|
+
}
|
|
37
|
+
],
|
|
38
|
+
"requires": [],
|
|
39
|
+
"conflicts": []
|
|
40
|
+
}
|