Skip to content

v0.1.27 — 折叠压缩比口径修正(并按历史重算)

Latest

Choose a tag to compare

@ScreamingMaggot ScreamingMaggot released this 30 Sep 08:01
· 17 commits to master since this release

症状

面板「最近一次折叠」的百分比失真。真机读数:659%、917%、382400%。

根因:分子分母来自不同折

shrink = transcriptBytes / shadowedBytes
         └─ 累计转录(foldText 全长)   └─ 本折遮蔽字节

首次折叠时二者同源(累计=本折),所以看着正常;增量折叠上分子含历史全部转录、分母只算本折 ⇒ 结构性大于 1,且折得越多越离谱。这不是"折叠没收益",是混合口径。同源问题还有两处 console 输出。

修法

  • 抽出纯函数 foldShrinkOf():本折口径 = 本次新增转录 ÷ 本次被转写的新原料;缺增量数据的旧记录回退旧算式,字段恒为数值
  • 三处消费方(fold-attempt 日志 / fold-committed 日志 / last-fold 落盘)全部改走它;记录自带 foldShrinkScope 说明口径
  • transcriptBytes(累计转录长度)原样保留 —— 它本身没错,只是不该当收益指标
  • 面板改为显示本折的 incrementalRawBytes → appendedBytes B (占比%),旧记录缺字段时自动回退

按历史重算

重算 12 个文件,跳过 11 个(v1.10.25 之前的记录无增量字段,按设计不动)

session-de4959d2   6.5863 (659%)     → 0.6230 (1.61×)
session-5fe3512e   9.1685 (917%)     → 0.3464 (2.89×)
session-ffab17e9   3824.05 (382400%) → 0.9000 (1.11×)
session-8e692134   0.1004            → 0.1434 (6.97×)
session-bbfd2f6a   0.1998            → 0.0973 (10.28×)

每个文件先备份(.bak-<stamp>-before-shrinkfix),旧值另存 shrinkLegacy,不做无痕覆盖。

正确读数(真机会话 5fe3512e 五笔,可对外引用)

第 1 折 465,068 →  57,099 B   7.84×      第 4 折 197,939 →  37,186 B   5.32×
第 2 折 648,362 → 114,123 B   5.68×      第 5 折   4,946 →   3,162 B   1.56×
第 3 折 293,978 →  80,954 B   3.63×      合计  1,610,293 → 292,524 B   5.50×

验收

tests/fold-ratio.test.mjs 11 条断言全绿(含用真机读数当基准、两笔天文数字的回归、分母缺失回退、以及一条"本折口径 ≠ 累计除本折"的反回归断言)。同仓另三套仍全绿:当前轮保护 7、漂移 #11 18、toolfold 单行契约 16。

⚠️ 需重启 dsh web 生效(插件与面板都在内存里)。