feat: 自适应支线插入引擎(WIP:scoring/branching 抽取、挂点重定向、10 条支线 JSON、决策落库)

This commit is contained in:
Jayway Liu
2026-10-04 06:57:32 +08:00
parent 512651b973
commit ea9fa0fe56
37 changed files with 4311 additions and 817 deletions
+122 -29
View File
@@ -32,7 +32,7 @@
"id": "c1-d1a",
"type": "dialogue",
"speaker": "馆长",
"text": "我们不收藏器物。器物会腐烂,会碎,会被误读。我们收藏的是人怎么活过——一座城消亡前,城里的人吃什么、怕什么、爱什么、最后那几天在做什么。这些东西,仪器采不到,只有人能采集。所以我们需要的采集员,必须自己也是「活过的」。穿越要烧燃料,而燃料只有一种——你的真实人生。烧掉的记忆不会消失,它们会存在档案馆的展厅里,这是后话。",
"text": "我们不收藏器物。器物会腐烂,会碎,会被误读。我们收藏的是人怎么活过——一座城消亡前,城里的人吃什么、怕什么、爱什么、最后那几天在做什么。这些东西,仪器采不到,只有人能采集。所以我们需要的采集员,必须自己也是「活过的」。穿越要烧燃料。燃料这东西认两种:你讲出来的故事,和你在讲述点门前站过的那阵沉默——讲,是给;不说,把那阵沉默原样交给它,也是给。讲出来的记忆不会消失,它们会存在档案馆的展厅里,这是后话。",
"sprite": "curator",
"next": "c1-d1b"
},
@@ -72,7 +72,7 @@
"id": "c1-d3a",
"type": "dialogue",
"speaker": "馆长",
"text": "这扇叫离别之门。每个采集员的第一次穿越,都从它开始。它不开锁,不收凭证——它要一件祭品:一段真实的离别。",
"text": "这扇叫离别之门。每个采集员的第一次穿越,都从它开始。它不开锁,不收凭证——它认一次交托:一段真实的离别。讲出来是交托,把那阵沉默原样交给它,也是交托;不提交记忆,门也照样启动。",
"sprite": "curator",
"next": "c1-d3b"
},
@@ -90,7 +90,10 @@
"pointId": "C1-02",
"mechanism": "记忆钥匙",
"prompt": "请讲述一段你真实经历过的离别。可以是一个人、一个地方、一段关系、一个阶段。说什么、说多少、怎么说,都由你。沉默也是回答。",
"dimensions": ["attachment", "self_disclosure"],
"dimensions": [
"attachment",
"self_disclosure"
],
"followUp": {
"maxQuestions": 1,
"strategy": "Jev 六维缺失检测(五感/人物/时空/情绪),按幻境渲染价值取最高缺口,馆长口吻模板追问一句;「记不清了」为合法回答,馆长回应:记不清本身,档案馆也会收好。"
@@ -104,11 +107,36 @@
"olfactory_gustatory": "那天的空气里,有没有一种味道留到了现在?——不用准确,你记得的那一点就好。"
},
"variants": [
{ "signature": "温暖×永失", "variantId": "sealed_love_tomb", "label": "「爱被封存」墓室——门后是墓道尽头一方石室,四壁绘着双人同耕、同炊、同观星的壁画,色彩温暖如新。石室中央两座并排的陶棺,棺盖上落满花瓣状的朱砂。空气是静的,静得像有人刚刚还在这里说话。基调:珍重,不是悲伤——有人把最好的东西封存了起来。", "tint": "#d4a96a" },
{ "signature": "悲恸", "variantId": "war_graves", "label": "「战乱乱冢」——门后是荒野,低低的土丘一座挨一座,没有碑,只有削尖的木桩。风把灰白的纸钱碎屑贴在脚踝上,远处有乌鸦起落,天色是黄昏将尽的那种灰蓝。基调:来不及告别——所有话都没说出口,所有名字都没来得及刻上。", "tint": "#5a5a72" },
{ "signature": "释然", "variantId": "empty_post_station", "label": "「远行者的空驿」——门后是一座山间驿站,晨光,桌椅收拾得干干净净,灶膛里的灰还是温的,人已经走了。墙上挂着一件没带走的旧斗篷,桌上压着半张写了又划掉的字条。基调:告别已经完成——走得干净,留得体面,剩下的路各走各的。", "tint": "#7ba7a0" },
{ "signature": "怨怼", "variantId": "desecrated_niche", "label": "「被凿毁的合葬龛」——门后是崖壁上的佛龛式墓龛,本该并坐的两尊石像,其中一尊被凿去了面目,凿痕新鲜得刺眼。香烛还燃着,蜡泪流到龛外。基调:被亏欠——有人毁了约,而另一个人连讨说法的对象都没有。", "tint": "#8a4b4b" },
{ "signature": "沉默", "variantId": "generic_fog", "label": "【沉默档 · 门照常开启】门对所有人开,这是铁律。门后是朦胧的星光与风声,不对应任何一段具体记忆——它以另一种方式认得你。", "tint": "#4a4a56" }
{
"signature": "温暖×永失",
"variantId": "sealed_love_tomb",
"label": "「爱被封存」墓室——门后是墓道尽头一方石室,四壁绘着双人同耕、同炊、同观星的壁画,色彩温暖如新。石室中央两座并排的陶棺,棺盖上落满花瓣状的朱砂。空气是静的,静得像有人刚刚还在这里说话。基调:珍重,不是悲伤——有人把最好的东西封存了起来。",
"tint": "#d4a96a"
},
{
"signature": "悲恸",
"variantId": "war_graves",
"label": "「战乱乱冢」——门后是荒野,低低的土丘一座挨一座,没有碑,只有削尖的木桩。风把灰白的纸钱碎屑贴在脚踝上,远处有乌鸦起落,天色是黄昏将尽的那种灰蓝。基调:来不及告别——所有话都没说出口,所有名字都没来得及刻上。",
"tint": "#5a5a72"
},
{
"signature": "释然",
"variantId": "empty_post_station",
"label": "「远行者的空驿」——门后是一座山间驿站,晨光,桌椅收拾得干干净净,灶膛里的灰还是温的,人已经走了。墙上挂着一件没带走的旧斗篷,桌上压着半张写了又划掉的字条。基调:告别已经完成——走得干净,留得体面,剩下的路各走各的。",
"tint": "#7ba7a0"
},
{
"signature": "怨怼",
"variantId": "desecrated_niche",
"label": "「被凿毁的合葬龛」——门后是崖壁上的佛龛式墓龛,本该并坐的两尊石像,其中一尊被凿去了面目,凿痕新鲜得刺眼。香烛还燃着,蜡泪流到龛外。基调:被亏欠——有人毁了约,而另一个人连讨说法的对象都没有。",
"tint": "#8a4b4b"
},
{
"signature": "沉默",
"variantId": "generic_fog",
"label": "【沉默档 · 门照常开启】「留白的长廊」——门后是一条望不见头的长廊,两壁空无一物,像还没落笔的纸。风从走廊尽头吹来,带着很远的草香;走出去很远,身后的门还开着一条缝。基调:留白——没说出口的部分,也被好好收着。",
"tint": "#4a4a56"
}
],
"next": "c1-d4"
},
@@ -116,7 +144,7 @@
"id": "c1-d4",
"type": "dialogue",
"speaker": "馆长",
"text": "【若 c1_02_signature != silent:门开了。你看——它要的不是故事讲得好不好,是故事真不真。】【若 c1_02_signature = silent:门开了。沉默也是档案的一种质地——它认得站在它面前的人,不一定需要言语。】你的记忆已经收进档案馆展厅,编号 C-2049-壹。它现在是你的了:随时可以回看,永远不会被任何人看见,除非你亲手授权——展厅,以及往后路上任何由它生出的幻境,都只有你能进入。在旁人眼里,你只是安静地站了一会儿。",
"text": "【若 c1_02_signature != silent:门开了。你看——它要的不是故事讲得好不好,是人真不真。】【若 c1_02_signature = silent:门开了。沉默也是档案的一种质地——它认得站在它面前的人,不一定需要言语。】【若 c1_02_signature != silent:你的记忆已经收进档案馆展厅,编号 C-2049-壹。它现在是你的了:随时可以回看,永远不会被任何人看见,除非你亲手授权——展厅,以及往后路上任何由它生出的幻境,都只有你能进入。在旁人眼里,你只是安静地站了一会儿。】【若 c1_02_signature = silent:展厅为你留了一页空档,编号 C-2049-壹——此刻还没有字,哪天你想说了,它随时接着。展厅,以及往后路上任何由它生出的幻境,都只有你能进入。在旁人眼里,你只是安静地站了一会儿。】",
"sprite": "curator",
"next": "c1-d4a"
},
@@ -141,12 +169,30 @@
"type": "choice",
"pointId": "C1-03",
"prompt": "馆长:出发前我要问一个问题,这个问题没有标准答案,档案馆只是需要知道怎么给你派活——你为什么愿意去?",
"dimensions": ["values"],
"dimensions": [
"values"
],
"options": [
{ "id": "a_truth", "label": "「我想知道它发生了什么。」一座完整的城在你面前,不挖开看看,这辈子都不甘心。", "next": "c1-d4c" },
{ "id": "b_thrill", "label": "「听起来,这比坐在资料室里有意思多了。」说白了,谁不想真的走进自己研究的东西里去。", "next": "c1-d4c" },
{ "id": "c_escape", "label": "「最近的日子……换个地方待三十天,挺好。」现实里有些事情,正好可以放一放。", "next": "c1-d4c" },
{ "id": "d_trust", "label": "「有人希望我去。」这件事不完全是为自己做的。", "next": "c1-d4c" }
{
"id": "a_truth",
"label": "「我想知道它发生了什么。」一座完整的城在你面前,不挖开看看,这辈子都不甘心。",
"next": "c1-d4c"
},
{
"id": "b_thrill",
"label": "「听起来,这比坐在资料室里有意思多了。」说白了,谁不想真的走进自己研究的东西里去。",
"next": "c1-d4c"
},
{
"id": "c_escape",
"label": "「最近的日子……换个地方待三十天,挺好。」现实里有些事情,正好可以放一放。",
"next": "c1-d4c"
},
{
"id": "d_trust",
"label": "「有人希望我去。」这件事不完全是为自己做的。",
"next": "c1-d4c"
}
]
},
{
@@ -210,12 +256,31 @@
"type": "choice",
"pointId": "C1-04",
"prompt": "老鬼的提议悬在空气里,你接不接话?",
"dimensions": ["values", "conflict_style"],
"dimensions": [
"values",
"conflict_style"
],
"options": [
{ "id": "a_confront", "label": "「东西留在原地,才叫历史。带回来,就只是赃物。」(当着所有人,把话说死)", "next": "c1-04-ra" },
{ "id": "b_deflect", "label": "「鬼哥这话说的——先看有什么,再说带不带呗。」(打个哈哈,不接也不顶)", "next": "c1-04-rb" },
{ "id": "c_redirect", "label": "(不接话,转向沈铎)「队长,落点方案定了么?」(用正事把这个话题盖过去)", "next": "c1-04-rc" },
{ "id": "d_play_along", "label": "(笑)「行啊,回头鬼哥带我见识见识行情。」(顺着他说,看看他到底想干什么)", "next": "c1-04-rd" }
{
"id": "a_confront",
"label": "「东西留在原地,才叫历史。带回来,就只是赃物。」(当着所有人,把话说死)",
"next": "c1-04-ra"
},
{
"id": "b_deflect",
"label": "「鬼哥这话说的——先看有什么,再说带不带呗。」(打个哈哈,不接也不顶)",
"next": "c1-04-rb"
},
{
"id": "c_redirect",
"label": "(不接话,转向沈铎)「队长,落点方案定了么?」(用正事把这个话题盖过去)",
"next": "c1-04-rc"
},
{
"id": "d_play_along",
"label": "(笑)「行啊,回头鬼哥带我见识见识行情。」(顺着他说,看看他到底想干什么)",
"next": "c1-04-rd"
}
]
},
{
@@ -278,20 +343,38 @@
"id": "c1-05",
"type": "choice",
"pointId": "C1-05",
"prompt": "碑额拓片特写:上方是屋顶(宀),屋顶之下一个安坐的人形,膝前有衣袂垂落之态——宀下一个女子安坐的形象。这是什么字?它刻在碑额上,意味着这是什么碑?",
"dimensions": ["culture"],
"prompt": "碑额拓片特写:上方是屋顶(宀),屋顶之下一个安坐的人形,膝前有衣袂垂落之态——宀下一个女子安坐的形象。另有两条旁证:碑为圆首、无碑穿、无榫、下无龟趺座,不合墓碑规制;此碑出土于苍梧北门外官道旁,碑面朝城。这是什么字?它刻在碑额上,意味着这是什么碑?",
"dimensions": [
"culture"
],
"options": [
{ "id": "stele_guardian", "label": "「安」。室中有女,安坐不惊——这是镇城安民碑,碑额朝向即古城安门所在。", "next": "c1-05-ok" },
{ "id": "stele_tomb", "label": "「安」。安魂之意——这是墓碑,镇的是墓主的安宁。", "next": "c1-05-miss" },
{ "id": "stele_merit", "label": "「宁」。定鼎纪功——这是记功碑,记的是立碑人的功业。", "next": "c1-05-miss" },
{ "id": "stele_boundary", "label": "「定」。划定疆界——这是界碑,标的是城的四至。", "next": "c1-05-miss" }
{
"id": "stele_guardian",
"label": "「安」。室中有女,安坐不惊——这是镇城安民碑,碑额朝向即古城安门所在。",
"next": "c1-05-ok"
},
{
"id": "stele_tomb",
"label": "「安」。安魂之意——这是墓碑,镇的是墓主的安宁。",
"next": "c1-05-miss"
},
{
"id": "stele_merit",
"label": "「宁」。定鼎纪功——这是记功碑,记的是立碑人的功业。",
"next": "c1-05-miss"
},
{
"id": "stele_boundary",
"label": "「定」。划定疆界——这是界碑,标的是城的四至。",
"next": "c1-05-miss"
}
]
},
{
"id": "c1-05-ok",
"type": "dialogue",
"speaker": "沈铎",
"text": "(点头)碑额朝向安门,碑身镇的是城的安危。西北角那片宫墟,勘探七年没动过——如果苍梧人有「安放」什么的地方,就在那里。",
"text": "(点头)碑额朝向安门,碑形不合墓制、又立在城外官道旁——三条证据同向:碑身镇的是城的安危。西北角那片宫墟,勘探七年没动过——如果苍梧人有「安放」什么的地方,就在那里。",
"sprite": "shenduo",
"next": "c1-d6c"
},
@@ -364,10 +447,20 @@
"type": "choice",
"pointId": "C1-06",
"prompt": "穿越落点,选哪个?",
"dimensions": ["risk"],
"dimensions": [
"risk"
],
"options": [
{ "id": "a_safe", "label": "稳妥落点:城外驿站,走一天官道进城。", "next": "c1-cutscene" },
{ "id": "b_precise", "label": "精确落点:直接落在苍梧城内,西市。", "next": "c1-cutscene" }
{
"id": "a_safe",
"label": "稳妥落点:城外驿站,走一天官道进城。",
"next": "c1-cutscene"
},
{
"id": "b_precise",
"label": "精确落点:直接落在苍梧城内,西市。",
"next": "c1-cutscene"
}
]
},
{