Skip to main content
B

dsh-token-heatmap-wyz

beiluoqu/dsh-token-heatmap-wyz

dsh web 的 Token 用量热力图:固定近 26 周(周日起始对齐)按天着色、GitHub 风格、深色/浅色自适应;今日/本周/本月/累计四个总量 chip 点击即把明细表锁定到对应时段,可再点选单日;明细按 provider/model 拆分(输入/输出/缓存读/缓存写/占比)。数据全部来自本机会话日志,增量聚合 + 磁盘缓存。

Install

dsh plugin --profile web add github:beiluoqu/dsh-token-heatmap-wyz

README

dsh-token-heatmap-wyz

DeepSeek Harness(dsh web)插件:Token 用量热力图 + 按模型的 token 用量明细

  • 热力图:近 26 周按天着色(GitHub 风格,深色/浅色主题自适应,窄屏横向滚动),格点为对数刻度。
  • 总量:今日 / 本周 / 本月 / 累计 四个总量 chip,点击即把明细表锁定到对应时段(再点一次取消)。
  • 明细:热力图下方是按 provider/model 归属的 token 用量表(输入 / 输出 / 缓存读 / 缓存写 / 合计 / 占比 + 占比条)。
  • 点选热力图中的某一天或任一总量 chip,明细表切换到该范围;点「全部」恢复当前视图的窗口聚合。
  • 数据完全来自本机:聚合所有会话的事件日志(assistant/messagedata.usageassistant/chunk 的 usage 样本),增量折叠 + 磁盘缓存,稳态开销 O(新增事件)。

使用

安装到 web profile(本地目录):

dsh plugin --profile web add <本目录路径>
# 例如:
dsh plugin --profile web add C:\path\to\dsh-token-heatmap

或发布到 npm 后:

dsh plugin --profile web add dsh-token-heatmap-wyz

重启 dsh web 后,打开 设置 → Token 热力图 即可看到面板;API 端点:

GET http://127.0.0.1:<port>/api/dsh-token-heatmap-wyz/usage

返回 {ok, days:[{date, inputTokens, outputTokens, cacheReadTokens, cacheWriteTokens, tokens, models:[...]}], models:[...], total:{...}, updatedAt},仅允许回环地址访问(peer-socket fence)。

更新

重新运行安装命令会取到最新发布版本(npm 安装路径):

dsh plugin --profile web add dsh-token-heatmap-wyz

卸载

dsh plugin --profile web remove dsh-token-heatmap-wyz

结构

文件说明
lib/index.jsHost 入口:注册 /api/dsh-token-heatmap-wyz/usage 精确路由,增量聚合 live + persisted 会话
lib/usage.js纯聚合逻辑(无依赖,可单测):样本替换语义、per-day/per-model 分桶
client/client.jsClient 入口:设置页 section 注册 + 热力图/明细表 UI(纯 JS,无构建)
cordis.patch.ymlprofile bundle 挂载声明

聚合语义参考 Ychris12138/dsh-usage-stats(MIT,同一事件模型的成熟实现)与官方 dsh-token-metertokenUsage 投影:同一 (turn, step) 的重复样本会替换而非累加早期样本。

实现约束(Dsh Plugin 生态约定)

  • 纯 JS,无 JSX/TypeScript;React 一律 React.createElement
  • Services:Host 用 ctx.get()/inject: 声明(webServersessionssessionPersistence);Client 注入 slotslocale,通过 settings.section 插槽注册面板。
  • 不写业务持久化到 plugin 目录;统计缓存在 ~/.dsh/storages/dsh-token-heatmap-wyz-cache.json(与 dsh-usage-stats 相同约定)。

开发

无构建步骤,测试仅依赖 Node(≥ 20),不需要 dsh 运行时:

npm test
  • test/cache-prune.mjs:缓存裁剪端到端测试(自包含,使用临时 DSH_HOME);
  • test/render-smoke.cjs:渲染冒烟测试(以 fake React 驱动组件并检查元素树);
  • test/harness-client.cjs:客户端 bundle 装配 + 纯函数单测(需要本机已全局安装 dsh CLI,以解析其中的 react)。

Related plugins