Repository navigation
Releases: dthcle/ST-WorldBook-Opt
Release list
v0.5.5 · 修正预览准确度:真实发送流水线空文本预览
- 修正预览准确度:dry-run 预览会跳过发送拦截器与
SETTINGS_READY后处理、不执行系统消息合并,世界书粘滞/冷却的判断也不同,导致实际命中很高的请求被报成大量假差异。现在预览改回真实发送流水线,在浏览器→酒馆的最终 fetch 边界截断模型请求。 - 预览强制空文本:不读取、不清空、不修改你的输入框(有内容时提示你先清空),正常情况不新增用户消息,因此无需事后删除。若空消息设置或插件追加了消息,界面会给出撤回按钮。
- 移除会误报假差异的 dry-run 预览,以及点了会报错的「当前草稿」选项。
- BASE 固定为上次成功响应的真实请求 N−1;预览与模拟永不替换它。正常发送后可查看「最近两次真实请求差异」。
- 明确区分输入前缀与实际缓存命中率:命中率仍须看提供商 cached tokens;截断点在浏览器→酒馆的 JSON,不含酒馆后端与提供商改写。
更新后强制刷新,确认 v0.5.5。请先手动清空输入框再点预览:预览走真实发送流水线并在最终 fetch 边界截断,模型请求不会发出,正常情况也不会新增用户消息。世界书粘滞/冷却、系统合并与发送拦截器都会真实执行;实际缓存命中率仍须看提供商 cached tokens。
v0.5.4 · 修正真实 N−1→N 对比基准
- 修正缓存排查语义:BASE 固定为上次真实请求 N−1;下一次预览基于当前聊天(含上一轮模型回复),不是重放旧一轮。模拟从不覆盖真实 BASE。
- 移除「将本次模拟设为基准」与「重放上次用户内容」;没有真实请求记录时明确无法做 N−1→N 对比,不用模拟冒充。
- 增加「查看最近两次真实请求差异」:正常发送 N 后直接读 N−1→N 两次最终 fetch 记录,不额外发请求,仅滚动保留最近两次。
- 保留默认空文本预览(不读取输入框);增加当前草稿只读预览(临时副本中加文本),不清空草稿、不保存/删除消息、不调用模型。草稿斜杠命令与附件拒绝,用户 regex/宏及发送前处理未完全复现,明确近似。
- 区分真实发送记录、下一次近似预览与实际缓存命中率:字符共同前缀不是 cached tokens,实际命中仍需提供商 usage。
- 全套 361 项测试通过,覆盖重复预览不改 BASE、草稿只读、真实请求对、响应乱序、清除后的迟到响应与安全恢复;浏览器 mock 验证 N−1→N 草稿预览和真实记录对,不冒充实机验收。
更新后强制刷新,确认 v0.5.4。预览固定上次真实 N−1 为 BASE;可选只读草稿包含下一次文本。若需要最终发送前处理后的可靠差异,正常发送 N 后查看最近两次真实记录,无额外请求。实际缓存命中率需提供商 usage/cached tokens;dry-run 是近似,宏/插件仍可能有副作用。
v0.5.3 · 不动输入框的空文本模拟与菜单对齐
- 请求差异入口改用酒馆原生
Generate('normal', {}, true),dryRun必须为第三个参数;不会使用会追加用户消息的普通发送预览,也不退回普通发送。 - 默认空文本(不动输入框):不读取/清空草稿、不执行草稿命令或上传待发送附件、不追加空用户消息、不调用模型,无需事后删除。
- 每次正常真实请求成功响应后覆盖最近一次记录与关联用户历史快照;支持重放上次用户内容,排除后来模型回复。续写/swipe/工具链等非普通或非用户末条请求不冒充可重放发送。
- 无真实记录也可将一次结果保存为模拟基准,修改设置后再对比,无需为建立基准额外调用模型。
- dry-run 在所有 awaited
GENERATE_AFTER_DATA监听器完成后读取快照,不冒充最终 fetch;明确提示普通发送拦截器、SETTINGS_READY、系统合并及世界书粘附/冷却的差异。 - 聊天消息、元数据与公开提示词在组装时使用临时副本并恢复;保持原消息对象身份。宏/插件私有状态及异步副作用无法完全回滚,界面/说明中明确警告。
- 模拟模型/外部/写入 fetch 防护覆盖超时和销毁后的迟到请求,直到原流程结束;不支持的接口只报错,不偷偷发送。
- 魔法棒按钮使用酒馆原生 div 菜单结构,移除固定14px字号和额外缩进;随主题字号/间距对齐。图标改为
fa-arrows-left-right-to-line(两条竖线之间左右箭头),保留键盘可用性。 - 顺手修复标题拖动捕获「关闭」按钮指针导致点击失效的问题;新增 111 项模拟、3 项菜单、3 项拖动回归,全套共 354 项通过(测试文件逐个执行)。
更新扩展后强制刷新酒馆,确认版本 v0.5.3。默认空文本模拟不动输入框。模拟是 dry-run 组装快照,不保证与最终 API 正文一致;宏和第三方插件仍可能产生副作用。354 项测试通过,真实手机/酒馆请继续验收。
v0.5.2 · 手机浮窗可拖动与缩放
- 修复手机上请求输入差异面板只显示顶部一条:改为把浮窗绑定到实际可见视口(把 visualViewport 的 height/width/offsetTop 同步为 CSS 变量),不再依赖布局视口的
inset:0;窄屏下窗口高度占可见高度的大部分。 - 新增浮窗可拖动(拖标题栏)与缩放(右下角把手),并始终夹紧在当前视口内,标题栏不会被拖出屏幕。
- 面板改为“标题栏 + 可滚动正文”结构,长差异更好翻。
- 魔法棒按钮改名:去掉“(不发出请求)”,现在就叫 请求输入差异。
- 新增
window-layout.js(几何计算)与window-drag.js(拖动/缩放),并补 7 项几何回归测试;含模拟手机视口下的可见尺寸断言。 - 拖动/缩放只改变窗口位置与大小,不改变记录或聊天数据。
更新后强制刷新酒馆;手机上拖标题栏移动、右下角调整大小。
v0.5.1 · 兼容 UUID 世界书条目 ID
- 修复世界书生成方案时报 UID“必须是非负安全整数”:兼容旧式整数 UID 和 UUID 字符串 UID。
- 原条目对象键、UID 原拼写及类型、正文和未选择项保持不变;不会将 UUID 转数字或重新编号。
- 无效 UID、重复 UUID(含大小写变体)仍拒绝;对象键与 UID 不一致仍保守跳过。
- 新增10项 UUID 回归:绿灯/蓝灯独立验证、四个 UUID 与整数混合、选择性应用、大小写保留、备份/保存/恢复等。
- 标准测试 runner 218项通过,另外13组文本差异纯函数检查通过。此补丁不改变请求捕获逻辑或优化规则。
与绿灯/蓝灯切换无关,无需重新编号或切回绿灯。更新后强制刷新再生成方案。
v0.5.0 · 最终发送边界捕获修复
修复根因,不只是改显示
- 不在 SETTINGS_READY 内提前克隆,改在 ST 调用 fetch 的 JSON 发送边界观察:第三方晚注册的合并/去标记处理已结束。
- 预览模型请求直接截断不转发;超时/销毁保留拦截直到生成流程结束,迟到请求不会误发送。
- 只有实际POST且酒馆后端成功响应才建立基线;魔法棒与设置入口共享runtime。
- 撤回核验聊天身份、数组、消息引用和正文签名,并使用可持久化删除接口,防止误删新消息/另一聊天。
- 行对齐使用分段patience与有预算Myers,保留重复相同行;删除/新增口径明确,不把对齐展示当唯一真值。
- 原文仅本地核验:首差7202、31删883增,与Git四种算法的删增结果一致;用户原文未上传。
验证与限制
标准Node测试runner 208项通过,另13组差异检查通过;浏览器内存回归6条临时→2条最终,无额外模型传输。不是你的实际酒馆验收。
只支持可信标准浏览器Chat Completion fetch通道;仍有组装/宏/保存聊天副作用,不能回滚任意插件状态或控制其他网络通道。更新后强制刷新并正常发送一次建立基线。
撤回旧版推断:中间TH_SQUASH_WI不能据此称已发给模型或缓存杀手;922行及“近一半假差异”不是可靠统计结论。
v0.4.3 · patience diff 对齐 + 差异区段汇总
对齐算法修正
- 行对齐改用 patience diff(唯一行锚点 + 最长递增子序列 + 分段递归),替换原先的固定前瞻贪心扫描。
- 用两份真实提示词快照(8237 行 / 9089 行)验证:贪心算法报告 1892 行变化,patience 报告 922 行 —— 近一半是错位产生的假差异。
- 大块新增内容不再与少量旧行强行配成“修改”,而是显示为删除 + 新增。
差异区段汇总
- 字段标题显示“共 N 行,变化 M 行,K 个区段”,并列出各段的前后行号与改/删/增数量,可直接定位。
- 例如两份快照的真实结论:第 1–7201 行完全相同(127,290 字符),差异集中在 21 个区段,最大一段是末尾新增的两个剧情块(旧 11 行 → 新 781 行)。
188 项测试通过。更新后请强制刷新酒馆页面。
v0.4.2 · 逐行请求差异
逐行差异
- 请求差异改为逐行对比:每个变化字段渲染成
−(上次)/+(本次)的统一差异,并高亮行内改动的字符。 - 修复“一处不同就整段变红”:以前只用共同前缀/后缀切一个连续区间,只要开头附近的标记变了,整个 10 万字符的块都会被标成不同。现在会精确指出变了几行(例如 9 行里只有 5 行变化)。
- 字段标题显示“共 N 行,变化 M 行”,并提供“显示未变化的行”开关查看上下文。
- 超大或行数过多的字段退回并排视图,并说明未逐行对比的原因。
- 修正行差异的样式问题(类名被当成正文渲染、行内 pre 继承面板滚动条)。
关于 §§TH_SQUASH_WI:<id>:…§§
这是第三方脚本 压缩相邻消息(仓库 deepsleep-claw/SleepTavernHome,src/酒馆助手/压缩相邻消息/squash.ts)包裹世界书抽取内容的标记;<id> 由脚本内部 nextId() 生成,因此正文没变它也可能变。现在它只会让那一行显示为差异,不再淹没整段正文。
186 项测试通过。更新后请强制刷新酒馆页面。
v0.4.1 · 修复“还没有打开角色聊天”与缺少基线时的崩溃
修复
- 从魔法棒打开却提示“还没有打开角色聊天”:
getContext()返回的是当前聊天快照,之前只在扩展加载时读了一次,因此一直停留在“页面刚打开、还没有聊天”的状态。现在每次操作都重新读取,打开聊天后即可正常捕获。 - 还没有真实请求基线时对比崩溃(
Cannot read properties of null (reading 'messages')):现在会明确提示,并改为列出本次捕获到的内容;先正常发送一次消息建立基线后即可看到差异。 - 对比逻辑抽出为
buildComparison(),并新增针对上述两个问题的回归测试。
176 项测试通过;窄容器与宿主样式回归验证通过。更新后请强制刷新酒馆页面。
v0.4.0 · 精确捕获 + 移动端与折叠菜单修复
请求输入差异改为精确捕获
- 改用与酒馆“提示词查看器”相同的机制:真的跑一遍酒馆组装流程,在
CHAT_COMPLETION_SETTINGS_READY(fetch之前)拦下提示词,并同步stopGeneration()取消请求。 - 请求不会离开浏览器,不产生 API 费用。
- 因为流水线真的执行,结果包含世界书绿灯激活、压缩系统消息、提示词模板、酒馆与第三方宏、其他改提示词的插件。
- 移除原先的 dry-run 近似模拟及其全局
fetch/XHR补丁。 - 新增“撤回该消息”:仅当捕获写入的用户消息仍是最后一条时才允许删除。
界面修复
- 修复移动端点开后弹层跑到顶部、下半截看不到的问题:遮罩自身滚动,面板改用
margin:auto安全居中,并适配安全区域。 - 扩展设置入口改为酒馆原生
inline-drawer可折叠抽屉,样式与其他扩展一致。
172 项测试通过;宿主 40px 按钮样式与窄容器回归验证通过。更新后请强制刷新酒馆页面。
已知限制
- 提示词后处理在酒馆后端执行,浏览器看不到,因此捕获的不是提供商最终收到的报文。
- 字符前缀不是 token 数量,也不是真实 API 缓存命中率。