dsh-llm-token-usage: Tracking Token Usage and Reference Costs in DSH

前言

在 DeepSeek Harness(DSH)里跑 Agent、多轮对话时,模型调用会不断累积:未缓存输入、缓存命中、输出各占多少,折合参考费用又是多少,往往要事后翻会话或自己记账。若部署环境不固定、也不绑定某一产品的本地数据库,就更难用「读私有库」的方式做统一统计。

下面介绍的 dsh-llm-token-usage(维护者 dgjin,分类:客户端)面向「运行本插件的 harness 自身」:数据来自 harness 官方的会话查询服务 ctx.sessionQuery,不解析任何私有文件,装在同一套 DSH 上即可统计当前实例的用量与参考费用,并在原生界面里给出仪表盘、斜杠命令与 Agent 工具。

这是什么

插件统计本 harness 进程内 LLM token 用量与参考费用。每条 assistant/message 事件自带 usage 与 provider/model,按天、按模型、按工作区、按会话的聚合是逐轮精确的。

与依赖某一客户端本地数据库的做法不同,它只调用 ctx.sessionQuery(listSessions → readSession → 逐条读取 usage),只读、不写会话数据。参考费用由本地价表换算;平台账户余额在可用时通过 ctx.deepseekAccount.getBalance() 展示真实值,未登录或查询失败时可回落到本地 balance.json 的估算口径。

  • 目录页:https://www.skillhub.cn/plugins/dgjin/dsh-llm-token-usage
  • 源码与文档:https://github.com/dgjin/dsh-llm-token-usage
  • 当前 package 版本:0.5.4(MIT,Node >= 22.5.0)

核心功能

入口一览

能力 入口
主面板仪表盘 左侧图标栏 Token 用量(与 Plugins、Schedules 并列)
文本报表 /token-usage
平台账户余额(真实值) 仪表盘 KPI、会话头部胶囊、状态栏、/token-balance
本会话花费 + 余额 会话标题栏右侧胶囊(悬停看明细)
状态栏精简显示 composer 下方:本会话 ¥… · …M tokens · 余 ¥…
价表查看 / 同步 /token-pricing、/token-pricing update;插件更新时可自动同步
Agent 按需取数 工具 llm_token_usage(支持 format: "html" 导出)
独立 HTML 仪表盘 面板「打开独立仪表盘 / 下载 HTML」,或 /token-usage-dashboard

仪表盘内容

主面板与设置 → LLM Token 用量 共用同一份组件,与导出 HTML 对齐:

  1. 6 张 KPI:合计 Tokens、参考费用、账户余额、模型调用(含未缓存输入与输出)、缓存命中率、轮次。
  2. 每日 Token 用量:缓存命中 / 未缓存输入 / 输出堆叠柱,带峰值与悬停明细。
  3. 每日参考费用:折线 + 渐变面积。
  4. 模型 / 工作区分布:横向比例条(合计、占比、费用)。
  5. 明细表:按天 / 模型 / 工作区 / 会话切换,表头排序,可导出 CSV(UTF-8 BOM)。
  6. 口径说明:价表版本、未配置单价的模型、余额与数据覆盖范围。

面板打开期间约每 60 秒静默刷新(页面隐藏时跳过);无调用记录时显示引导空态。点击模型或工作区分布某一行可筛选整个面板,自定义日期区间通过查询参数交给 Host 计算;余额与数据覆盖说明仍按全量口径,避免筛选后误读。

余额与计价

余额优先展示平台真实值(充值钱包 + 赠金钱包);估算口径为:期初余额(balance.json)减去自 as_of(北京时间 00:00)起的参考费用。账户查询带 60s 缓存与 4s 超时,失败不影响统计。

计价字段包括未缓存输入、缓存命中、缓存写入、输出;缓存命中率 = 命中 /(未缓存输入 + 命中)。价表默认复制到 ${DSH_HOME:-~/.dsh}/llm-token-usage/pricing.json,内置常用模型参考价,支持峰谷时段(北京时间工作日 9:00–12:00、14:00–18:00 为高峰)。未配置单价的模型只统计 token,费用列显示 —。

插件通过测试 tests/analytics-parity.mjs 与 harness 自身 tokenUsage 投影对账,文档中给出的冻结基准会话在主要字段上与 harness 账本一致(差异为 0)。

隐私与安全

正常使用全程本地、只读;面板数据路由仅接受本机回环直连。只有显式执行 /token-pricing update(或开启自动价表同步)才会从公开仓库拉取价表(HTTPS、校验、备份后写入)。可用环境变量 DSH_TOKEN_USAGE_NO_NET=1 或配置 autoUpdatePricing: false 关闭自动同步。

安装与启用

在 DSH 桌面端或 CLI 的插件管理里安装本包。资料中的安装方式如下:

# 打包后安装(将路径换成本地 tgz 的绝对路径)
dsh plugin --profile web add --workspace-root file:/绝对路径/dsh-llm-token-usage-0.5.4.tgz

# 上架 npm 后
dsh plugin --profile web add dsh-llm-token-usage

装完后重启一次 Harness,斜杠命令、工具与设置页入口才会生效。插件不裸导入 harness 包,链接安装与打包安装行为一致。

典型用法

斜杠命令

近 7 天按天汇总:

/token-usage

近 30 天按模型、全部历史按工作区或会话:

/token-usage 30 --by model
/token-usage all --by project
/token-usage all --by session
/token-usage --since 2026-09-01 --until 2026-09-15

估算余额(期初余额默认从今天起算):

/token-balance
/token-balance --set 100
/token-balance --set 100 --as-of 2026-09-01
/token-balance --clear

导出 HTML 仪表盘:

/token-usage-dashboard
/token-usage-dashboard --path ./dash.html

价表:

/token-pricing
/token-pricing update

也可直接让 Agent 回答「用了多少 token」「花了多少钱」「哪个模型最费」「缓存命中率多少」等,由 llm_token_usage 工具按需取数。

可选配置

插件行 config 均为可选,例如:pricingPath、autoUpdatePricing(默认 true)、pricingSyncIntervalMs(默认 86400000)、balancePath、templatePath、cacheTtlMs(默认 60000)、maxSessions(默认 200,超出按最新会话截断并在报表中标注)。

余额配置文件示例路径:${DSH_HOME:-~/.dsh}/llm-token-usage/balance.json:

{ "balance": 100.0, "as_of": "2026-11-01" }

适用场景与注意

适合谁:需要在 DSH Web 客户端侧长期观察本实例 token 与参考费用、对比模型与工作区、导出 CSV 或独立 HTML 报表,并在会话中实时看到本会话花费与余额的开发者或团队。

使用前请知悉:

  1. 插件以当前 dsh 进程权限运行,安装前应阅读源码与 MIT 许可证,确认行为符合你的安全策略。
  2. 参考费用依赖本地价表与模型配置,与平台账单可能存在差异;真实余额以平台 API 为准。
  3. 社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本介绍仅描述该插件在资料中声明的能力。

结尾

dsh-llm-token-usage 把 harness 官方会话查询里的 usage 聚合成可读的报表与原生仪表盘,并在状态栏、会话胶囊里补上本会话成本与余额,适合作为 DSH 部署上的本地只读用量面板。进一步了解可访问目录页 https://www.skillhub.cn/plugins/dgjin/dsh-llm-token-usage 与 GitHub 仓库 https://github.com/dgjin/dsh-llm-token-usage。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye