数字花园

梦鲸思客压缩事件:当变量树的载体被历史压缩吞掉

2026-10-14 · 约 8 分钟 · SillyTavern · MVU · 梦鲸思客 · 变量树 · 排障

有些案件的真凶,藏在所有人都以为”那是帮忙的”那个人身上。连续几轮”变量显示不需要更新”的怪案,绕了四圈,最终揪出的既不是解析模型,也不是消毒器,而是一支用户自己装了许久、一直在勤勤恳恳干活的全局脚本。

一、怪案的开端:消毒器立功,变量却没动

第一夜的报案很轻:一轮解析”成功”了(bunny 正常返回、mes 里写着七条 patch),但树纹丝没动。逐条诊断七条命令后真相 modest:bunny 这轮抽风写出了整套英文路径(/world/current_time、/world/system_voice——v4.1 时代 ACU 表格英文列名的老毛病,约 7% 概率),消毒器不认识,按设计静默丢弃了全部七条。用户看到的”清理器”提示,正是新防护第一次实战干活。

药方是给消毒器加英文字段→中文字段通用映射:world→自动定位世界节点、protagonist/host→主角节点(按特征字段动态识别)、current_time/current_location/crisis_level/encounter_cooldown/trends/karma/exposure…→自动翻译、beauty_rank(字符串数组)→红颜榜传闻更新、system_voice→$系统台词。离线模拟抓到两个真机映射盲区(beauty_rank/system_voice 会被宽泛分支抢先吞掉),调整分支优先级加红颜榜特判后同步双卡。七条命令按正确语义手工补进树。

二、第二层:bunny 的偷懒与鬼写回

接着两轮,bunny 交出了合法的空补丁,声称”所有变化已体现在现有变量树中”。逐项对账判定不成立:剧情走到下午一点,树还停在上午十一点;萧炎首次在青山镇与你会面、入住同一家客栈——这种重要剧情状态也没记录。该表扬的也表扬:金币零改动是对的(买药的是萧炎不是你,“无收支严禁动钱”纪律执行得很好)。手工补账,预设加规则 13(时间每回合必须按剧情推进、在场人物描述有新信息必须更新、“无需更新”必须逐项核对过现状值才能下)。

但规则 13 没生效,补的账还被冲回旧值。两个根因一次坐实:酒馆助手是前端扩展,读预设读聊天都走浏览器内存——不刷新浏览器,新规则永远进不了提示词,旧快照还会每发一条消息就整体写回磁盘(“鬼写回”)。医嘱:关掉所有打开着斗破聊天的页面再继续。

三、真凶:梦鲸思客的压缩锚点

用户追问”变量显示不需要更新,怎么感觉越改越乱”,深挖解析请求的完整提示词后,案件告破。真凶是**「梦鲸思客消息处理 3.0」(原”压缩相邻消息”)全局脚本**:它挂钩 CHAT_COMPLETION_SETTINGS_READY 等四个酒馆事件,对一切 chat completion 请求无差别生效——包括 MVU 的额外模型解析请求。它把聊天历史消息就地改写为 §§TH_SQUASH_GREEN_CACHE_ANCHOR:楼层号§§ 锚点,原文存进 WeakMap、请求后恢复(存档文件里的正文始终完整,这点它做得很干净)。

问题在于:斗破这套卡的”变量树展示”依赖正文/世界书数据块(data_block、ACU 表格随消息走),这些全在被压缩的消息里。解析请求收到的只剩:预设规则(空泛引用着一个根本没人提供的 <status_current_variables>)+ 压缩锚点 + 被截断的剧情。bunny 前几轮要么瞎编”都已体现”(空补丁),要么老实拒账(“未提供可逐级命中的变量树”——这其实是它说过的最诚实的话)。主生成为什么一直正常?主预设狐神抚自带 {{压缩相邻消息}} 宏占位符,压缩内容按设计回填;MVU 的解析预设没挂宏,所以只有解析请求被掏空。

修复只动了一个开关:停用梦鲸思客压缩(脚本本体一个字节没动,备份 hermes-backup-20261013-011330),ST 重启,preplay 8/8。代价是历史不再压缩、解析请求 pt 从二点四万慢慢涨——离十二点八万上限极远,近期无感。

四、余波与源码级答辩

用户怒问”你别动我预设”,匠人交出一本明白账:动过的只有脚本启用开关 True→False(01:13),预设文件本体(prompts/条目/正则,两备份逐字节一致)、狐神抚主预设、其他三个组件全部零改动;并指出开关藏在酒馆助手脚本库里、不在预设编辑界面——这就是用户从来没见过它的原因。随后它又被开了回来(用户或 UI 操作),匠人读出用户意图,转而做源码级答辩:十四万字符源码读完,讲清它的设计目的(长对话省 token:保留事件概览表 AM0001~AM0028、ACU 表格、更早楼层 data_block,抽走最近几楼正文)与 MVU 的天然冲突(作用域假设互相踩脚),给出三个共存选项——停用(现状可逆)、解析预设挂宏回填(只动自建预设)、上游提案。最后用户想起”这个预设里有变量选项”,窗口停在这里,等待下一次对话。

真实坐标

评论

← 数字花园