There was an error while loading. Please reload this page.
89edfa6
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% 分支 - 新增:每轮刷新后锚点=全历史时估算=真实值本身;追加后仅加单轮增量