dsh-token-total 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +5 -4
  2. package/lib/client.js +566 -159
  3. package/lib/index.js +355 -54
  4. package/lib/types/client/ContextUsageEntry.d.ts +22 -0
  5. package/lib/types/client/context-meter-core.d.ts +26 -0
  6. package/lib/types/client/context-takeover.d.ts +4 -0
  7. package/lib/types/client/locales.d.ts +1 -1
  8. package/lib/types/client/session-usage-core.d.ts +9 -0
  9. package/lib/types/client/use-session-usage.d.ts +2 -18
  10. package/lib/types/collector.d.ts +27 -12
  11. package/lib/types/context-types.d.ts +23 -2
  12. package/lib/types/model-names.d.ts +6 -0
  13. package/lib/types/query.d.ts +8 -0
  14. package/lib/types/session-usage.d.ts +8 -9
  15. package/lib/types/store.d.ts +32 -0
  16. package/lib/types/wire.d.ts +30 -1
  17. package/package.json +1 -1
  18. package/src/client/ContextUsageEntry.module.css +20 -0
  19. package/src/client/ContextUsageEntry.tsx +89 -0
  20. package/src/client/StatsLineEnhanced.tsx +17 -35
  21. package/src/client/TokenTotalPanel.module.css +72 -5
  22. package/src/client/TokenTotalPanel.tsx +204 -56
  23. package/src/client/context-meter-core.ts +54 -0
  24. package/src/client/context-takeover.ts +35 -0
  25. package/src/client/index.tsx +21 -3
  26. package/src/client/locales.ts +4 -0
  27. package/src/client/session-usage-core.ts +54 -0
  28. package/src/client/use-session-usage.ts +45 -98
  29. package/src/collector.ts +138 -67
  30. package/src/context-types.ts +17 -2
  31. package/src/index.ts +29 -0
  32. package/src/model-names.ts +34 -0
  33. package/src/query.ts +84 -13
  34. package/src/routes.ts +20 -2
  35. package/src/session-usage.ts +50 -38
  36. package/src/store.ts +136 -0
  37. package/src/wire.ts +24 -1
package/README.md CHANGED
@@ -19,7 +19,7 @@ DSH(DeepSeek Harness)Web 插件:**Token 用量统计看板** + **单会话
19
19
 
20
20
  - **快捷筛选**:今日 / 近 3 天 / 近 7 天 / 近 1 月 / 近 3 月 / 自定义(起止日期)。
21
21
  - **一行六个卡片**:总 Tokens、输入 Tokens、输出 Tokens、缓存 Tokens、缓存命中率、请求数量。
22
- Token 数量用 **K / M / B** 紧凑单位显示主值,下方一行给出精确数字。
22
+ Token 数量用 **K / M / B** 紧凑单位显示主值,下方一行给出精确数字。「请求数量」在本时间段出现过失败调用时,下方会多一行「失败 N · 占比」,没有失败则保持单行显示。
23
23
  - **活跃热力图**:GitHub 风格,格子颜色深浅表示当天 token 消耗的多少;图例「较少 → 较多」五档。
24
24
  - 右上角保留 **刷新**(只重取聚合结果),不再提供重建统计按钮。
25
25
 
@@ -63,10 +63,11 @@ dsh plugin --profile <profile> add "file:D:\work\dsh-token-total"
63
63
 
64
64
  ## 数据来源与统计口径
65
65
 
66
- - **事件来源**:`sessionPersistence` 的会话日志(`assistant/message` 的 `usage`)。插件订阅 `session/event` 实时增量累加,同时一次性回扫已有历史会话;`llm/retry-started` 会清空当前 `(turn, step)` 槽位,所以重试不会漏计也不会重复计。
66
+ - **事件来源**:`sessionPersistence` 的会话日志。兼容 `assistant/message` 的顶层 `usage`,也读取消息及失败 `assistant/attempt` 的原始流式用量;同一次请求以最后一份用量为准,修正值按差额更新。插件订阅 `session/event` 实时增量累加,同时一次性回扫已有历史会话;`llm/retry-started` 会清空当前 `(turn, step)` 槽位,因此失败尝试和后续重试分别计入,不重复累加同一次请求的多份报告。
67
67
  - **本地持久化**:聚合结果写入 storage-domain 的 `token_total_history` 域(`$DSH_HOME/storages/` 下),纯本地、无外部依赖。回扫游标按会话记录已消费的事件序号,重启后从断点继续。
68
- - **单会话统计**:不走聚合存储(那里没有会话维度),而是按需读该会话及其所有子孙会话的日志重放求和,结果短暂缓存,并在该会话树任一成员产生新事件时精确失效。
68
+ - **单会话统计**:不走聚合存储(那里没有会话维度),而是按需重放该会话及全部子孙会话的自有日志;已加载会话优先使用实时事件快照,避免持久化缓冲造成漏算。结果缓存 4 秒,任意会话的新事件都会使缓存失效,包含此前尚未发现的子会话。前端从首次读取起每 4 秒刷新,显示时使用原生实时主会话用量、主会话压缩调用用量与子树用量之和,胶囊与弹窗共用同一口径;切换会话时立即清除旧会话读数。读取失败不会把部分子树当作成功结果覆盖已有读数。
69
69
  - **缓存命中率** = 缓存命中 token ÷ 输入 token 总量(命中 + 未命中)。
70
+ - **失败数量**:以宿主记录的 `assistant/attempt` 事件为准。宿主只有在流以错误结束、或调用在提交任何内容之前被取消时才写 `assistant/attempt`,其余调用一律写 `assistant/message`,两者恰好划分全部调用,所以该事件就是「一次失败的 provider 调用」的精确边界(`interrupted: true` 但已有内容的 `assistant/message` 不计为失败)。失败数是请求数的子集,不额外计入请求;失败调用若在流中断前已上报用量,token 仍按用量计入、不会丢失。该计数晚于日 / 小时两份游标引入,因此老版本升级后会额外做一次只写失败数的增量回扫(`failuresReady` 标记完成,不重复累加 token)。
70
71
 
71
72
  ## HTTP 接口
72
73
 
@@ -100,7 +101,7 @@ pnpm install
100
101
  pnpm run build # tsc 声明 + 宿主/浏览器两个 bundle
101
102
  pnpm run typecheck # 宿主半区
102
103
  pnpm run typecheck:client
103
- pnpm test # 模型显示名称聚合、趋势、底部偏好回归测试
104
+ pnpm test # 模型/供应商聚合、会话树、重试用量、底部展示与刷新回归测试
104
105
  ```
105
106
 
106
107
  产物:`lib/index.js`(宿主,ESM)、`lib/client.js`(浏览器,CJS 包装进 `__ModuleLoader__.load`)、`lib/types/**/*.d.ts`。CSS Modules 在构建时被内联成 `<style data-plugin-css>` 注入,因此 Web 外壳不需要 CSS 管线。