dsh-token-usage:为 DSH 增加 LLM API 调用用量统计面板

前言

做 DSH 相关开发时,模型调用本身通常不是最难看的部分,难的是调用发生后如何快速核对:哪次调用来自哪个会话、用了哪个模型、状态码是什么、各 Token 桶数量是多少、金额大概是多少、失败时错误信息在哪里。

下面介绍一个插件:@wycto/dsh-token-usage。它记录 DeepSeek Harness 中所有 LLM API 调用(模型请求),并提供单窗口全屏统计面板。本文以 npm 包 name @wycto/dsh-token-usage 指代该插件;仓库与 README 中使用 dsh-token-usage 名称。

这是什么

@wycto/dsh-token-usage 是一个 DSH 插件,用于把 DSH 中的模型调用记录整理成可查询的统计面板。

已核实资料中的基本信息如下:

  • 维护者:wycto
  • npm 包 name:@wycto/dsh-token-usage
  • package.json version:0.1.14
  • license:MIT
  • peerDependencies@deepseek-ai/dsh *
  • 源码仓库:https://github.com/wycto/dsh-token-usage

它的定位不是重新拦截模型请求,也不替代 DSH 的调用链路,而是读取 DSH 会话日志,把已有的调用信息整理成统计、筛选、排序和导出能力。

核心功能

入口与全屏面板

安装启用后,DSH 侧边栏底部会出现蓝色渐变大按钮“Token 用量”。点击后打开全屏统计面板。

查询与筛选

面板支持按条件查询调用记录:

  • 起止时间使用 datetime-local,可精确到秒。
  • 默认不限制时间,显示全部记录。
  • 筛选条件暂存在 localStorage,下次打开可恢复上次条件。
  • 点击【重置】可清空全部条件。
  • 提供商 / 模型下拉去重合并现有配置与历史记录。
  • 支持会话 ID / 模型提供商 / 模型 / 状态 / 推理强度下拉筛选。

明细表与排序

明细表提供逐条调用记录。README 中说明明细表全部 15 列可点击表头排序,排序维度包括:

  • 时间
  • 会话 ID
  • 提供商
  • 模型
  • 输入
  • 缓存
  • 命中 %
  • 输出
  • 推理
  • 总额
  • 金额
  • 金额(¥)
  • 强度
  • 状态
  • 耗时

默认按时间倒序,最新记录在前。

会话 ID 快捷筛选

明细表中显示会话 ID。点击任意会话 ID,即可按该会话筛选后续记录。

状态码与详情弹窗

状态列会展示调用状态。对于存在状态码的调用,可显示 HTTP 状态码,例如 200400401429500 等。

状态下方可打开详情弹窗,查看更完整的调用信息,包括:

  • 会话 ID
  • 错误信息
  • 错误码
  • 各 Token 桶
  • 金额
  • 耗时
  • Turn / Step 相关信息

分组统计

面板支持按以下维度分组统计:

  • provider
  • model
  • status
  • effort

分组统计项包括调用数、各 Token、命中率、金额、耗时等。

CSV 导出

支持按当前筛选条件导出全字段 CSV 明细,便于在本地继续处理。

金额显示

金额以双币显示:

  • USD
  • 人民币

README 说明金额基于官方人民币刊例和汇率换算,默认汇率为 7.2,可通过 settings.yaml 中的 token-usage.usdCnyRate 覆盖。

该插件支持 DeepSeek-V4 峰谷两档。金额仍属于估算,不是精确账单。

安装与启用

npm 包安装

已核实资料给出的安装命令为:

dsh plugin --profile <profile名> add @wycto/dsh-token-usage

执行该命令后,安装到指定 profile。

重启 DSH

安装后需要重启 DSH:

dsh --profile <profile名>

打开面板

重启完成后,在 DSH 侧边栏底部点击蓝色“Token 用量”按钮,即可打开全屏统计面板。

典型用法

按时间范围查询

打开面板后,可以使用起止 datetime-local 精确到秒过滤调用记录。

例如,只查看某一天内某一时段的调用。如果不想继续保留筛选条件,可以点【重置】清空全部条件,回到显示全部记录的状态。

按会话 ID 查询

在明细表中看到某个会话 ID 后,直接点击该会话 ID,即可按该会话筛选。

适合在排查一次完整会话中的多次模型调用时使用。

按表头排序

点击明细表任意列表头可切换升降序。

默认按时间倒序。也可以按模型、状态、金额、耗时等列重新排序,用来快速找出消耗较高或失败较多的记录。

本地开发体验

本地开发时,可以按 README 示例把插件文件接入 DSH web 构建。

先准备文件:

  1. lib/index.jsclient/index.js 放入 src/
  2. cordis.patch.yml 中插入插件行。README 示例中 name / id 使用带 scope 的包名 @wycto/dsh-token-usage
  3. 执行构建命令:
pnpm dsh web --patch ./dsh-token-usage/cordis.patch.yml

配置汇率与定价

可以在 settings.yamltoken-usage 下配置汇率、定价页、自动获取间隔和手动价格覆盖。

已核实资料列出的配置项包括:

token-usage:
  usdCnyRate: 7.2
  pricingUrl: ''
  pricingFetchIntervalHours: 24
  pricing: {}

其中:

  • usdCnyRate:USD 与人民币之间的汇率,README 示例默认值为 7.2
  • pricingUrl:定价页地址。
  • pricingFetchIntervalHours:自动获取定价的间隔,单位为小时,README 示例默认值为 24
  • pricing:手动覆盖或新增价格条目。README 示例中支持按模型配置,并支持 DeepSeek-V4 的 peak 峰谷时段。

修改 settings.yaml 后,按 DSH 实际加载机制重启或重新加载后生效。

数据来源与边界

数据来源

该插件只读取 DSH 会话日志,不侵入模型调用链路。

README 说明它会从 DSH 会话事件中提取每次模型调用的信息,并整理为面板中的明细、状态、Token、金额、耗时等字段。

金额是估算值

金额显示为估算值。插件内置常见模型单价表,未知模型使用 fallback 单价。

如果官方价格变动,README 说明插件会每天自动从官网获取最新定价;获取失败时回退内置默认值。也可以通过 settings.yaml 手动覆盖。

失败调用可能没有 Token 记录

失败调用,尤其是没有 assistant/message 的调用,可能不产生 Token 记录。

此时状态列反映 turn 结局,用于判断这次调用最终是完成、错误、中止等状态。

OCX 网关下的 Token 显示

本机为 OCX 网关时,usage 字段可能缺失。此时 Token 数可能显示为 0

记录重建

插件中的记录为本地内存索引。进程重启后,会从 DSH 会话日志重新构建。

密钥展示

apikey 永不落明文,仅展示掩码。插件不复制密钥。

适用场景与注意

适合以下场景:

  • 需要查看 DSH 中某次会话的模型调用明细。
  • 需要按模型、提供商、状态、推理强度分组观察调用分布。
  • 需要排查 400401429500 等状态码及错误信息。
  • 需要导出 CSV 做本地二次分析。
  • 需要查看 USD 与人民币双币金额估算。

使用前需要注意:

  • 插件会随当前 DSH 进程权限运行。安装前应检查源码、许可证和依赖关系。
  • 金额为估算值,不适合作为精确财务依据。
  • 失败调用可能没有 Token 记录。
  • OCX 网关下部分 Token 字段可能显示为 0
  • 插件只读取 DSH 会话日志,不改变模型调用链路。

结尾

@wycto/dsh-token-usage 的价值在于把 DSH 中原本分散在会话日志里的 LLM API 调用信息,整理成一个可查询、可筛选、可排序、可导出的本地统计面板。它适合用来查看模型消耗、排查调用状态,以及按会话或模型维度做本地分析。

已核实资料未包含目录页 URL,本文只给出源码仓库地址:

  • GitHub:https://github.com/wycto/dsh-token-usage
羽毛球分组比赛记分
小程序二维码

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

小夜