Skip to content

v11

Choose a tag to compare

@NeonMedusa NeonMedusa released this 05 Oct 07:44
· 6 commits to main since this release
feat(usage): 上下文占用/缓存命中改为纯服务端真实值 + 每轮实时刷新

背景:此前启动显示 chars/4 估算(~ 前缀,低估中文约 18%),且只在回合
结束时更新一次;用户关心 90% 自动压缩窗口的判定准确性。

## 显示层去估算(数据源 = 服务端最后一次真实回传)
- seedUsageFromDb:加载/切换会话时读最后一条带 usage 的 assistant 行
  (db.lastUsageRow 小查询),直接应用 input/cached/output 原样(无估算)
- 新会话/无数据:归零显示(0%),切换会话时先归零(不残留上一会话值)
- 删除状态栏 "~" 前缀与 "缓存 — 暂无数据" 占位;无数据时显示 "缓存 0%"
- refreshEstimatedUsage 删除(无生产调用点)

## 每轮请求实时刷新(不再等回合结束)
- 新增 usage_update 流事件:worker 每轮请求成功即推真实 usage
- 主线程收到即刷新 last_usage/context_usage(生成过程中状态栏持续更新)
- finalizeStream 不再用累计值覆盖(多轮求和会虚高),保留最后一轮真实值

## 压缩决策:每轮刷新锚点(精度提升,机制不变)
- 锚点从"回合开始设一次"改为"每轮请求成功后刷新":
  此刻 job.history 即刚发出的请求前缀,anchor = {len, 真实 input}
- 估算 = 上一轮真实值 + 仅本轮新增(误差从整回合增量压缩到单轮增量)
- 结构原因:服务端只在处理请求时计数,本轮回复/工具结果天然滞后一轮,
  该段只能估算(锚点机制必要;纯 chars/4 的全量估算误差 167k 会超过余量)

## 测试(198 pass)
- 更新:新会话归零、播种原样显示、显示与锚点解耦、缓存 0% 分支
- 新增:每轮刷新后锚点=全历史时估算=真实值本身;追加后仅加单轮增量