npm.io
1.0.1 • Published yesterday

@shallbay/dsh-token-stats

Licence
MIT
Version
1.0.1
Deps
0
Size
72 kB
Vulns
0
Weekly
0

@shallbay/dsh-token-stats — Harness 整体 Token 用量看板插件

双面插件

  • 宿主半:汇总全部会话的 billed token 用量(未缓存输入 / 缓存读取 / 缓存写入 / 输出), 按高峰/低谷给出预估费用,在 dsh web 上提供页面与实时数据接口。
  • 客户端半:在 Web 侧边栏底部(设置上方)注册 "Token 用量" 入口,点击新标签页打开看板。

数据源(v2,事件驱动)

不再每次刷新扫描全部会话日志。主数据源是 dsh-token-meter 消费的同一条 session/event 事件流:用量记录按 session:turn:step 增量 upsert (last-wins,与 token-meter 的 addReplacing 折叠语义一致),刷新时零扫描。

冷历史(不再重放的会话)只播种一次:优先从持久化 rollup 文件 ($DSH_HOME/token-stats-rollup.json)恢复(重启秒载),否则一次性扫描日志; 此后仅对 mtime/size 变化的文件做 stat-only 增量重解析。

路由

路径 说明
GET /token-stats 看板页面(数据注入 window.__DSH_DATA__,每 60 秒自动轮询刷新,保留手动刷新按钮)
GET /api/token-stats/refresh 增量同步(stat-only + 重解析变更文件)+ 读内存 store → JSON
GET /api/token-stats/data 读内存 store → JSON(1 秒内命中缓存)

看板页面的数据源优先级:/api/token-stats/refresh(插件)→ /api/refresh(独立 exe)→ token-usage.json(本地文件)。

安装(消费者)

要求:dsh web 已部署、本机可用 pnpm(dsh plugin 命令依赖)。

dsh plugin --profile web add @shallbay/dsh-token-stats

该命令会:

  1. pnpm 安装本包到 profile 的 node_modules;
  2. 因包内声明了 dsh.bundle.patch,自动把包名加入 profile 的 dsh.profile.bundles 启用层(无需手动添加启用行)。

随后重启 dsh web 服务(bundle 在启动时加载)并 Ctrl+F5 刷新页面: 侧边栏底部(设置上方)出现 "Token 用量" 入口,/token-stats 看板可访问。

从旧版(@deepseek-ai/dsh-token-stats)升级:先执行 dsh plugin --profile web remove @deepseek-ai/dsh-token-stats (或删除旧的手工 junction 与 cordis.patch.yml 启用行),再执行上面的安装命令, 避免新旧两个同名入口同时存在。

更新看板页

页面本体为 lib/dashboard.html(静态 HTML 字符串注入宿主),改完保存即生效, 无需重启;发布新版本时记得同步 npm version patch 并重新发布。

卸载

dsh plugin --profile web remove @shallbay/dsh-token-stats

该命令自动从 dependencies、bundles 与 node_modules 移除本包;随后重启 dsh web 生效。

Keywords