服务端 MVU 与卡脚本、SQLite 增量存档、历史按需读取,以及正文和状态一起回退。
这是面向 DSH Tavern 的存储与服务端执行插件。保留酒馆界面,把聊天、会话事件和 MVU 变量历史交给 SQLite 管理;计算类脚本由服务端执行,浏览器保留界面职责。
下载最新版 · 一键安装 · 原档继续使用 · 详细安装说明 · 更新日志
| 特点 | 为你解决什么问题 |
|---|---|
| 服务端 MVU 与卡脚本执行 | MVU 结算、卡脚本 VM / ESM 与 Helper 计算在服务端执行,减少对浏览器作为执行端的依赖;Windows 桌面版采用 Worker 适配,Linux CLI 保留原进程内执行路径。 |
| SQLite 增量存档 | 聊天头字段、消息楼层分开存储,局部更新只处理变化部分,避免为了追加或修改一楼反复重写全部历史。会话事件由 SQLite 事务与 WAL 管理。 |
| 历史按需读取 | 消息窗口、指定楼层、结算检查点按范围读取;显示、后台配置与场景各取所需字段,不为取少量信息先复制整档。 |
| MVU 变量历史瘦身 | 正文与变量归档使用同库、同连接事务;旧变量树先归档再退出热状态,近期楼层保留热窗口,查看旧楼按楼层和 swipe 补回并复用缓存。 |
| 真正的物理尾部回退 | 不是隐藏气泡:截断被撤销的事件尾部,回拨运行轮次和写句柄,重建内存投影并清理对应派生状态。 |
| 错误提示与失败轮次干净清理 | 失败轮有明确提示和清理入口。清理时恢复到该轮开始前的正文、变量与进度,并清掉对应的事件和运行状态;只处理当前最新失败轮,保留此前成功内容。 |
| 前后台同步恢复 | 同步受影响会话的状态、队列与任务基线,隔离旧任务、旧租约和迟到写入,避免撤销内容被重新写回。 |
| 原档保留,独立分叉继续玩 | 原档保持只读;用户主动创建新的聊天与原生会话身份,在 SQLite 新分叉中继续,源档及源链接保留。 |
| 一键安装,也能安全卸载 | Windows 解压后运行菜单,Linux 复制一条命令,默认自动识别酒馆。卸载按现场完整注释区块撤除本包注入(半截区块、归属不明、双源一律明确拒绝),保留原档与 SQLite 数据库,不把数据库档转回 JSON。 |
- 少写:头字段与楼层分别更新,只提交最终变化部分,减少无意义的全档比较和序列化。
- 少读、少复制:按消费者需要投影数据,旧楼变量补数走有界缓存;不是把上下文砍短来换速度。
- 变量与正文一起提交:同库同事务,归档失败整笔回滚,避免正文已经保存、变量却没跟上的半态。
- 回退到一致状态:同时处理本档剧情、变量、进度与被撤销轮的运行数据;资源库原件和独立手工编辑不跟着剧情回退撤销。
以上是已实现的机制,不是“所有场景快几倍”的性能保证;冷读、新 revision 或显式全量读取仍可能处理较多历史,页面体验以实际环境为准。
当前版本 0.4.10:适配酒馆上游 main 537e878(Tavern 2.6.0,运行时 revision 8296b5b1 / sequence599;兼容 0.4.9 基线 91963734 安装)。 目标适配版本以对应 Releases 更新说明为准;其他未适配版本可能运行报错,请更新到标注的酒馆版本或自行适配插件。安装检查通过不代表运行期功能兼容。
已有兼容酒馆即可使用,主命令无需填写版本或目录。
- 从 Releases 下载
-win.zip,解压到酒馆目录内。 - 从托盘完全退出酒馆,进入解压出的插件文件夹,双击 run-install.cmd,选择安装。
- 完成后重新启动酒馆。
更新、卸载、只读检查都在同一个菜单中;使用最新版安装器处理旧代。独立桌面包未额外安装 Node 时,安装器可复用它自带的运行时。
0.3.0 也为“先装 DSH Desktop,再装酒馆”的形态提供适配:仍是同一套安装器,用 -TavernHome 与 -DesktopApp 指明 home 和宿主安装根目录;维护需 PATH 或既有工具缓存中的 Node,建议 Node.js 24。菜单与进度实时显示,启动器不会因日志缺失重复执行。此形态已做源码及隔离验证,实机启动/页面仍待使用者确认;预检与安装用法。
curl -fsSL https://github.com/huajiao1998/dsh-tavern-sqlite-v2/releases/latest/download/install.sh | sh -s -- install默认从 DSH_TAVERN_CLI_HOME、DSH_HOME、当前工作目录和 ~/.dsh-tavern 的已有 profile 自动识别酒馆。找到唯一实例就直接继续,只有没找到或多个实例才提示人工选择;不是正常安装必须手填路径,也不是全盘搜索任意自定义目录。
非默认位置可从酒馆 home 工作目录执行;systemd 启动参数准备、多实例选择及离线用法放在详细安装说明,不混进主命令。
DSH_TAVERN_SQLITE_CACHE_MAX_MB(默认64MiB)和DSH_TAVERN_SQLITE_MAX_CACHED_CHATS(默认8)控制完整态及timeline行缓存的软预算和档数。任一设为0时关闭这些读缓存与投影缓存;非法值回落默认。单个超大档可以独占一个缓存槽,以保留长历史档的热读收益,因此软预算不是整个进程的RSS硬上限;完整态、投影和行缓存分别记账,连接行缓存不会同时保留多个超预算档。连接关闭、删档或dispose释放对应行缓存。
本store写入仍按实际写集精确失效;另一连接提交后,通过SQLite的data_version清理本档旧读取状态,避免新revision配旧timeline。使用多个store或连接读取同档时也遵守此规则。
- 安装后打开旧存档,以只读方式查看。
- 由用户点击面板中的数据库分叉动作,生成新的 chatId 和原生 sessionId。
- 在 SQLite 新分叉中继续对话和回退,原档不被自动迁移或覆盖。
人物卡、世界书资源库原件和独立用户配置不因为剧情回退撤销。
Linux 一键卸载:
curl -fsSL https://github.com/huajiao1998/dsh-tavern-sqlite-v2/releases/latest/download/install.sh | sh -s -- uninstallWindows 使用新包菜单的卸载/更新功能。卸载保留原档与 SQLite 数据库,不把数据库档偷偷转回 JSON,也不代表原版可直接游玩插件的新分叉档。
现行卸载口径:按现场完整注释区块撤除本包注入(依据 BEGIN/END 与 owner/id 归属),保留块外用户与作者修改,写入失败恢复本次快照;半截区块、归属不明或双源装配一律明确拒绝,不从历史官方源码覆盖、不删除酒馆目录与存档数据库。不承诺“坏旧包/半装残留”自动兜底:这类现场会被拒绝并给出处理提示,不做猜测性清理(旧 residual 兜底分支当前未接入维护入口)。
程序依赖已随包提供,完整性与恢复材料随发行包一起交付;不用为四个解析器另补 npm 依赖。
- 当前版本 0.4.10:适配酒馆上游 main
537e878(Tavern 2.6.0,运行时 revision8296b5b1/ sequence599;兼容 0.4.9 基线91963734安装);面向 DSH Tavern 2.6.0 作者契约、DSH / boot 0.1.5-rc.2;适配范围以对应 Release 为准。Linux / WSL2 定位目录、一次命中全部必需接缝后直接注入和复制插件,不做隔离预演、文件一致性、宿主版本/解析/VM或原启动参数检查;原运行恢复、原停止保持,不改原unit/argv/cwd/env。Windows/macOS保留各自维护流程。不要求源码匹配runtime manifest或冻结作者树;原代码现场只加一层注释,块外用户修改保留。标准维护保留用户其他配置,仅管理本包确切启动行,用户显式配置冲突仍零写拒绝;同包重接可补齐确切缺失入口。标准目录维护不调用包管理器装卸本包。详见安装说明。 - Windows 支持桌面版及原生 Windows CLI;隔离装配与维护证据不代替实际宿主、页面及玩法验收。
- V1 / V2 不可在同一实例共装,V2 是服务端计算版本线。
- UI 脚本仍保留浏览器职责;不承诺所有 DOM 脚本、所有卡或所有 SillyTavern API 都兼容。
- 这是对作者存储与执行链的修改版,升级作者程序需要核适配;未知布局不无条件覆盖。
- 自动化、源码检查与基础健康不替代现场页面、连续回退或 Linux 实机全链验收。
- 卡脚本执行不是安全沙箱:服务端 MVU / 卡脚本在 Node
node:vm上下文内执行(Linux / macOS / Windows CLI 走本进程内路径;Windows 桌面版因打包宿主缺少进程内 vm ESM 能力而改由 Worker 承载,见lib/mvu/vm-capability.js)。vm 只提供超时、钩子预算与调用窗口校验等“跑飞防护”(lib/sandbox-policy.js),不构成对不可信代码的安全隔离:realm 逃逸属已知路径(按已知路径收口,不宣称完全阻断);脚本可见的宿主能力已收为显式 bridge,不再直接暴露裸宿主对象引用,但仍与宿主同进程、同用户权限。请只运行你信任的人物卡与脚本。 - 公开导出(
package.json的exports,56 项)的兼容与退役策略见 PUBLIC-API-COMPATIBILITY.md:默认保留、标注 deprecated 只做注记不改运行时行为、移除需大版本与外部证据;例外是为安全或宿主兼容保留的垫片(仅针对已确认缺陷保留合同面,不删除导出)。旧保留 API 已有本地定向验证,但无跨仓消费者证据,因此不据此删除任何导出。
node scripts/build-release.mjs --out ./dist --repository huajiao1998/dsh-tavern-sqlite-v2生成完整 TGZ、Windows ZIP、固定版本安装 SH 与摘要文件,不自动发布或操作服务。构建、安装参数及报错日志位置详见安装说明。
构建输出的 dist/install.sh 才是公开发布使用的安装入口(固定版本 URL/SHA,Release 资产与公网根副本同源);源码树 install.sh 与 deploy/install.sh 是本地 wrapper(只读当前 package.json 与 deploy/bootstrap.mjs,不固定版本/地址,可离线装卸),包内二入口由同一渲染器生成(带具体版本,URL/SHA 保持占位,避免内嵌本次 tgz 摘要自引用)。
基于 DSH Tavern 适配,保留原来源声明与 GNU AGPL v3 许可。本项目是独立修改版,不是上游官方发行;随包官方恢复字节的许可及对应源码入口也保留。