dsh-token-stats — Token 用量统计插件
统计 DeepSeek Harness (DSH) 各模型 / 日期 / 会话的 token 用量与费用估算(USD/CNY),
入口在 设置面板 → 📊 Token 统计 页签。安装为 DSH 外部插件,随 DSH 启动自动加载,无需手动运行。
功能
- 📊 原生设置页(跟随 DSH 主题深浅色、中英双语)
- 📈 按天 / 周 / 月趋势折线图(纯 SVG,零第三方依赖)
- 💰 内置单价表(DeepSeek / GPT / Claude / Gemini / Qwen 等)估算 USD/CNY 费用
- 🔁 启动时自动回溯全部历史会话日志,统计跨重启保留
- ⚡ 高性能:会话标题批量读取 + 内存缓存(TTL 5 分钟)、summary 单次遍历、单价/费用记忆化
- 📤 CSV / JSON 导出,支持按模型、会话筛选
界面演示
安装
以 DSH profile 外部依赖方式安装:
- 克隆 / 复制本仓库到本地目录,如
D:\dev\dsh-token-stats - 修改 DSH profile 清单(
~/.dsh/profiles/web/package.json):
{
"dependencies": {
"dsh-token-stats": "file:D:/dev/dsh-token-stats"
},
"dsh": {
"profile": {
"bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-token-stats"]
}
}
}
cd ~/.dsh/profiles/web && pnpm install- 重启 DSH web,打开 设置面板 → 📊 Token 统计。
> cordis.patch.yml 声明 bundle 层挂载点,插件随启动自动加载。
工作原理
- 权威数据 = DSH 持久化会话日志:
assistant/message事件携带真实usage
(输入 / 输出 / 缓存读 / 缓存写 / 推理 token),request/header事件携带 provider/model - 启动时一次性回溯(
sessionQuery,有界并发)重建内存聚合索引 llm/stream瀑布流捕获流式 usage 用于实时累计(仅展示,不入库)- adapter 未上报 usage 时用
tokenMeter.estimateMessage估算并标记estimated
HTTP API(/token-stats/api)
| op | 用途 |
|---|---|
summary |
今日 / 本周 / 本月 / 累计聚合 |
query |
按天/周/月粒度序列 + 按模型/会话聚合(可筛选 model、sessionId、from、to) |
models |
内置单价表(USD/1M tokens)+ 汇率 |
sessions |
会话列表(id + 标题) |
export |
CSV / JSON 导出(format=csv\|json,可带 model / sessionId 筛选) |
开发与测试
node --check index.js # 服务端半
node --check client.js # 浏览器端半
node test-plugin.js # 独立 mock 测试:正确性 + 性能基准
.\sync-deploy.ps1 # 把源码同步进 DSH profile(之后重启 DSH web 生效)
性能
作者机器实测(14 会话 / 10k 条记录):
| 接口 | 优化前 | 优化后 |
|---|---|---|
sessions |
~1700ms(N 次串行 readTitle) |
~12ms(一次批量 readTitleSnapshots + 缓存) |
summary |
~110ms(4 次全量 filter) | <1ms(单次遍历) |
query |
~10ms | 10k 记录下 ~18ms(费用记忆化) |
License
MIT © 2026 quansheng