@shallbay/dsh-token-stats
@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
该命令会:
- pnpm 安装本包到 profile 的 node_modules;
- 因包内声明了
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 生效。