DSH Hub
dsh-usage-statistics-panel cover

HaoyueQin/dsh-usage-statistics-panel

dsh-usage-statistics-panel

UIWeb UI27 GitHub stars· updated 2026-10-19

DSH web plugin: per-day token usage statistics with a GitHub-style activity heatmap, cache hit-rate curve and per-model breakdown

Install

npx @deepseek-ai/dsh plugin --profile <name> add dsh-usage-statistics-panel@latest

Restart `dsh web` after install. Bundle APIs can change during the developer preview.

README badge

dsh-usage-statistics-panel DSH Hub badge
[![DSH Hub](https://dshhub.dev/badge/dsh-usage-statistics-panel.svg)](https://dshhub.dev/plugins/dsh-usage-statistics-panel)

Paste this into your README. The star count updates with every catalog sync.

From the README

Excerpt from HaoyueQin/dsh-usage-statistics-panel, cleaned of badges and images.

DSH Usage Statistics Panel

English | 中文

DSH web 插件的用量统计面板:按天 / 按小时的 Token 趋势、GitHub 风格活跃热力图、缓存命中率曲线、按模型与按供应商两种用量拆分(环形占比图 + 明细列表),作为插件页中本插件的独立页面,并在左侧栏提供独立入口。

所有图表均为手绘 SVG,不依赖图表库;配色是固定的 rank 色板(--dsw-chart-1..10 给模型前 10 名、--dsw-provider-1..5 给供应商前 5 名,其余归入灰色 "Other" 桶),暗色主题下整体提亮,随 DSH 主题自适应。

预览

功能

  • 时间范围:今日、最近 3 / 7 / 14 / 30 / 90 天,或自定义起止日期;今日与最近 3 天按小时汇总,其余按天
  • 汇总卡片:Token 用量(K/M/B 紧凑主值,下方带 tokens 单位的精确值)、会话数量(完成的 turn)、请求数量、活跃天数、平均缓存命中率(附缓存命中绝对量)、最常用模型
  • 52 周活跃热力图:每日 token 用量的 GitHub 风格色阶,悬停查看当天明细;数据窗口固定为一年,列数随可用宽度自适应(窄窗口显示较少周数),图表始终左右撑满
  • Token 趋势:堆叠柱状图叠加平滑的缓存命中率曲线(Catmull-Rom 样条),今日 / 最近 3 天按小时分桶、其余按天,悬停查看各模型拆分;宽度随容器自适应,始终左右撑满
  • 模型用量:环形占比图 + 明细列表,前 10 名模型分色,其余折叠为可展开的 "Other" 明细;圆环直径随可用宽度在 200–280px 间自适应,并与右侧清单垂直居中
  • 供应商用量:同一结构上移一层——前 5 名供应商分色(独立色板),其余归入灰色 "Other";悬停任一侧联动另一侧,圆环悬停显示该供应商的全部模型用量;每行可展开该供应商的模型明细,"Other" 展开被折叠的供应商、其下再展开各自的模型(展开不影响圆环尺寸)
  • 底部信息栏增强:面板底部可开启"精确缓存命中率"(会话底部信息栏的缓存命中率以两位小数显示,如 85.25%)、"会话 Token 明细"(底部信息栏显示总 Token、输入、输入(命中缓存)、输入(未命中缓存)与输出 Token,替代默认的"输入/输出"两项)与"流式吞吐速度"(输出过程中速度读数随每个增量实时刷新为估算值,某一步结束后回到会话累计的精确值;估算以 DeepSeek 公布的字符密度为先验,再用本会话已结算步骤的实测字符/Token 比率校准,读数取最近 2 秒内实际观测到的 Token 增量并做平滑(单帧抖动不会传导到显示),UI 迟发的积压不会被计入,一步中途静默时保持最后一次读数而不是回落到会话平均值);开关位于"使用统计"面板底部,三个开关同款样式,切换即时生效
  • 历史回扫:首次启用时枚举并回放既有会话日志;对挂载后才首次观测到的活跃会话,其挂载前的历史会在下一次启动时按事件序号边界回放补全,从安装日起尽量还原历史用量
  • 本地持久化:数据写入 $DSH_HOME/storages/usage_history.json(storage-domain),纯本地、无外部依赖

安装

dsh plugin --profile <name> add dsh-usage-statistics-panel@latest

装完硬刷新浏览器(Cmd/Ctrl+Shift+R):client 半的改动 DSH 会热加载,无需重启;仅 host 半(采集/存储/路由)更新时需要重启 DSH。

插件挂载后有两个入口:左侧栏 新会话 下方的 使用统计 行(一眼可达),或在 插件 页里进入 已安装 → usage-statistics-panel 的详情页(卡片与详情页的标题、描述、图标取自本包的 locale/*.json 与 icon.svg,随界面语言在简体 / 繁体 / 英文之间切换;完整包名仍在该详情页以代码行列出)。两处渲染的是同一个面板;独立面板左上角有返回按钮,点击即回到进入它之前的界面(会话、插件页或其它面板)。

兼容性:本插件支持 DeepSeek Harness >= 0.1.7-rc.1;开发依赖对齐宿主 0.1.7-rc.2,并已在正式版 0.2.0-rc.2、预发布 0.2.1-alpha.2 与 0.2.1-rc.2 三个隔离实例上实测(面板出数、围栏四种路径)。V3 / V4 会话日志兼容由单测覆盖(V4 自 0.2.0-rc.2 起就是发布格式,assistant/message.data.usage 等采集点字段两版一致),历史回扫双路径(0.1.2-rc.1 的 list+inspect 与 0.1.3-alpha.* 起的 list+open+分页 read+close)保留。

/usage/api 的信任围栏也按宿主代际取源:0.2.1-alpha.2 起官方把显式授权移到 webStartup、删除 webRuntime,并新增「接受监听端自身 bind 地址」;此前 webRuntime.trustedHosts(含绑定时采样的局域网地址)才是官方围栏接入的那一份。插件按 webRuntime → webStartup 的顺序读,并始终把 webServer.host 当作可接受的 bind 字面量(未指定地址拼写除外),两代都与官方同语义放行/拒绝。

已知差异:官方那两个统计条目会跟随「性能与用量显示」偏好(紧凑档只留速度 / 只留缓存命中),本插件的遮蔽条目不跟随,始终渲染详细读数。该偏好的数据源在 ui-chat 私有的 config form 里,跨插件直读属于易碎耦合,故这里选择不实现——两代宿主上行为一致,并非 0.2.1-alpha.2 引入的差异。

底部信息栏那一行按宿主容器自适应:0.1.6-alpha.2 起宿主把它放进与上下文占用环并排的 flex 行里(居中、间距、顶距与侧边距都由该容器负责),0.1.6-alpha.1 及以前它仍自持内容宽度、左右侧边距与 4px 顶距——同一份构建在两种宿主上都对齐。

peer 依赖中的 @deepseek-ai/* 只表达能力下界(>=0.1.7-rc.1 是插件用到的最早接口面),并全部标记为 optional。按 semver 的预发布规则,该范围只匹配同一 tuple 的预发布版——0.1.7-rc.2 判为满足,而下一个预发布行(0.1.8-rc.1)仍判不满足——所以实际支持的宿主版本以本段说明为准,不依赖 npm 的 peer 校验。

旧宿主用户:0.1.6-alpha.2 及更早的 DeepSeek Harness 请安装本插件 0.3.0 及之前的版本。宿主在 0.1.7 线把 @deepseek-ai/dsh-client-ui-primitives 的图标导出整体改为字重命名(*Outline16 → *OutlineRegular / *Medium),两代导出名无交集:旧名在 0.1.7+ 上解析为 undefined,会让底部信息栏渲染失败——一份构建无法同时服务两代。

数据来源

…

Related plugins