稳定性决定种子范围,切点 C 决定向上还是向下
规则(主人定):每次梦境不稳定时给一个随机种子;种子的取值范围由层级特性与稳定性决定;用切点 C 把范围切成两段,决定向上还是向下。
26 层从 Z 到 A:
Z Y X W V U T S R Q P O N M L K J I H G F E D C B A
1 2 3 4 5 6 7 … 26
T 是第 7 层,芈巫明确说跳过,所以引擎不会往 T 掉(当前版本按连续序位算,T 只作为经过层)。
不稳定的层,种子范围更大 —— 范围本身就是不稳定度的度量。
| 层 | 名称 | 稳定性 | 种子范围 | 切点 C | 向上概率 | 单次最大跨度 | 为什么 |
|---|---|---|---|---|---|---|---|
| W | 连线层 | 较高 | [0,20) |
15 | 75% | 1 层 | 最接近现实,清醒度高,容易自己走回来 |
| H | 半梦层 | 较高 | [0,20) |
14 | 70% | 1 层 | 同上,但触感更容易把现实漏进来 |
| Z | 安全层 | 高 | [0,20) |
14 | 70% | 1 层 | 安全范畴内可主动切出,跌不深 |
| Y | 鲜明层 | 中等 | [0,45) |
25 | 56% | 1 层 | 感官过载会盖住判断,跌下去就找不回切点 |
| X | 危险层 | 低 | [0,80) |
30 | 38% | 2 层 | 东西改不动,越挣扎越沉,一步能跨两层 |
| D | 更深(V→A) | 极低 | [0,120) |
25 | 21% | 3 层 | 未曝光,几乎没有向上的着力点 |
种子范围不是固定的,不稳定度越高范围越大(最多放大到 1.8 倍),同时切点下移(最多下移一半)—— 否则放大范围等于只放大「向下」。
R_实际 = R × (1 + 0.8 × 不稳定度)
C_实际 = C × (1 − 0.5 × 不稳定度)
实测(X 层,不稳定度 0.45):
R = 80 × 1.36 = 109 C = 30 × 0.775 = 23
抽到种子 75 → 75 ≥ 23 → 向下
一次不稳定只给一个种子,方向和幅度都从它算,避免两次随机互相打折。
向下时:跨度 = 1 + floor((种子 − C) / (跨度单位))
单位 = (R − C) / 该层最大跨度
X 层(R=80, C=30, 最大跨 2 层):种子 32–48 → 跌 1 层到 W;56 以上 → 一次跌 2 层到 V。
这是整套机制能不能用的关键。一开始我用字符启发式(重复 n-gram、标点密度、异常字符),实测完全抓不到:
温度 1.95 下崩出来的句子是「东墙一根冷白灯管战栗起着亮,右手摸到门自禁已的半开会冲过一小阵刺膝」——
不重复、标点正常、全是汉字,启发式判 0.0 分。
原因是高温崩溃属于语义错乱(词与词硬拼),不是形式异常。
现在改成 LLM 连贯度判定(temperature 0,只回一个小数),启发式只做兜底:
不稳定度 = max(1 − 连贯度, 启发式得分 × 0.6)
不稳定度 ≥ 0.30 → 触发跌落判定
实测判定结果:
| 段 | 层 | 连贯度 | 不稳定度 | 触发 |
|---|---|---|---|---|
| 1 | D | 0.1 | 0.90 | 种子 82/206,C=14 → 向下 ×2 → B 层 |
| 2 | B | 0.4 | 0.60 | 种子 68/178,C=18 → 向下 ×1 → A 层 |
| 3 | A | 0.1 | 0.90 | 最后一段,不再判定 |
这场梦从 D 层起,跌到 A 层(第 26 层),两次跌落全部入库。
X 层正常跑时三段都在 X 层停住,一次没触发 —— 因为连贯度都在 0.9 以上(不稳定度 < 0.30)。
这是设计意图:梦稳定就不该乱掉层。跌落只在梦真的开始散的时候发生。
每次跌落落一条 dream_drop 记录:第几段、当时在哪层、不稳定度、种子、该层范围、切点、方向、幅度、掉到哪层。
可以反查任何一场梦的跌落史,也可以复现:同一个主种子 + 同一批文字,掉落路径完全一致。