vacum972/dsh-usage-billing:输入框下的会话级用量与计费胶囊

前言

DSH 的 Web 界面在输入框(Composer)下方本来只有轮次、上下文长度这类指标,看不到这一轮会话花了多少钱、账号余额还剩多少。平台侧的「用量信息」统计的是近 30 天、全部会话和 API Key 的汇总,用来核对扣费还行,用来回答「我现在这次对话用了多少钱」并不直接。

下面介绍 vacum972 维护的 @vacum972/dsh-usage-billing。它把这个缺口补上了:在输入框下方常驻一枚胶囊,显示本会话的消费量、剩余余额、API 请求次数、Tokens 与当前时段的官方价目。

这是什么

vacum972/dsh-usage-billing 是一个客户端分类的 DSH Web 插件,维护者 vacum972,许可证 MIT,当前版本 0.1.3,要求 DSH >=0.2.1-rc.5 <0.3.0-0。定位一句话:在会话过程中实时呈现本会话的用量与成本,而不是事后翻平台账单。

核心功能

下面按仓库 README 里已写明的能力依次说明。

  1. 本会话用量胶囊:胶囊常驻在输入框下方、宿主自带轮次/上下文指标右侧,点开是详情弹窗,展示消费金额、剩余金额、API 请求次数、Tokens 总计、平均成本、高峰/空闲时段消费拆分,以及当前时段生效的官方价目。
  2. 按官方峰谷价目逐次请求计价:每次模型请求按它发生时刻的时段(高峰/空闲)计价,切换时段不重算历史请求。高峰价与空闲价遵循 DeepSeek 官方规则:空闲价是高峰价的一半。
  3. 价目自动校准:Host 定期拉取 DeepSeek 官方价目文档并解析模型价格;抓取失败时回退到上次成功价目,并在弹窗提示,随后每 2 分钟自动重试,成功即恢复。
  4. 法定节假日日历:自动获取中国法定节假日,使高峰/空闲判断与官方一致——周末和法定节假日全天为空闲。
  5. 剩余金额:读取当前登录账号的充值余额与赠送余额之和,打开弹窗即刷新、之后每 60 秒更新,也可手动重试。
  6. 不干扰输入:胶囊与弹窗样式对齐宿主 composer 的统计控件,布局紧凑,不遮挡输入框。

时段与价目

尖峰时段按 DeepSeek 官方价目页的规则定义:北京时间周一至周五(不含中国法定节假日)的 09:00–12:00、14:00–18:00 为高峰;其余时间(含周末、法定节假日全天)为空闲,空闲价等于高峰价的一半。

出厂价目(README 记录为 2026-11-04 抓取,单位是元 / 百万 tokens):

模型 输入(缓存命中) 输入(缓存未命中) 输出
deepseek-flash 0.04 高峰 / 0.02 空闲 2 高峰 / 1 空闲 8 高峰 / 4 空闲
deepseek-v4-pro 0.30 高峰 / 0.15 空闲 9.0 高峰 / 4.5 空闲 27.0 高峰 / 13.5 空闲

正常情况下每 30 分钟拉取一次官方价目 Markdown 与节假日日历,失败后每 2 分钟重试,成功即恢复,提示条悬停可看到失败时间与原因。

安装与启用

需要 DSH >=0.2.1-rc.5。方式 A 是 npm 一键安装(推荐),用 web profile:

dsh plugin --profile web add @vacum972/dsh-usage-billing

安装后重启 dsh web(或刷新页面加载客户端包),输入框下方就会出现胶囊。

方式 B 是从 GitHub 源码安装,同样走 web profile:

dsh plugin --profile web add github:vacum972/dsh-usage-billing

Desktop 需要注意:desktop profile 由 Electron 应用独占,普通 npm 版 dsh CLI 会拒绝管理它。在 Desktop 上要么通过 DSH 内的插件中心安装 @vacum972/dsh-usage-billing,要么用 Desktop 自带的 CLI 以本地路径安装,命令形如:

dsh plugin --profile desktop add link:<本仓库路径>

配置

配置挂在插件行的 config 上,出厂值见 cordis.patch.yml。在 profile 的 cordis.patch.yml 追加同 id 的行即可覆盖;补丁会整体替换 config,所以想保留的键都要写全。完整出厂配置如下:

- id: usage-billing
  name: '@vacum972/dsh-usage-billing'
  config:
    currency: CNY
    timeZone: Asia/Shanghai
    peakWindows: ['09:00-12:00', '14:00-18:00']
    peakWeekdays: [1, 2, 3, 4, 5]
    holidays: []                 # 额外节假日;留空则只用自动抓取的日历
    autoRefresh: true
    refreshMinutes: 30
    priceUrl: 'https://api-docs.deepseek.com/zh-cn/quick_start/pricing.md'
    holidayUrl: 'https://timor.tech/api/holiday/year/{year}'
    default:                     # 未列出的模型使用这一行
      peak: { cacheRead: 0.04, cacheMiss: 2, cacheWrite: 0, output: 8 }
      idle: { cacheRead: 0.02, cacheMiss: 1, cacheWrite: 0, output: 4 }
    models:
      deepseek-flash:
        peak: { cacheRead: 0.04, cacheMiss: 2, cacheWrite: 0, output: 8 }
        idle: { cacheRead: 0.02, cacheMiss: 1, cacheWrite: 0, output: 4 }
      deepseek-v4-pro:
        peak: { cacheRead: 0.3, cacheMiss: 9.0, cacheWrite: 0, output: 27.0 }
        idle: { cacheRead: 0.15, cacheMiss: 4.5, cacheWrite: 0, output: 13.5 }

单价单位是 currency / 百万 tokens。DeepSeek 不单独计缓存写入费,所以 cacheWrite: 0。autoRefresh: false 可以完全关闭联网刷新,只使用配置里的价目和 holidays。切换其他时区或供应商时,改 timeZone、peakWindows、priceUrl、holidayUrl 即可。

计费口径与差异说明

请求次数方面:每次模型调用结束(assistant/message)或失败/被中止(assistant/attempt)都计一次。token 只采用供应商在会话日志里上报的 usage,同一尝试的最终样本会替换流式样本,llm/retry-started 之后的尝试重新计一次,与 DSH 内置 tokenUsage 投影口径一致。

成本方面:每次尝试的 token 先用该次请求日志时间对应的时段价目计价,再累加。单次成本按「输入×未命中单价+缓存读×命中单价+缓存写×写入单价+输出×输出单价」再除以 1,000,000 计算;同一尝试的样本被替换时按新样本重算该次成本。

这些数值是估算值,不包含 Search/Fetch 等独立 API 的按次费用、供应商调价窗口差、优惠等,实际扣费以 DeepSeek 账单为准。

插件与平台「用量信息」数值不同是预期行为:插件统计本会话,平台统计近 30 天、全部会话/API Key。README 给出了一个开发环境同刻对照:

口径 API 请求次数 Tokens 消费金额
插件(本会话) 299 78,677,354 ¥3.22(估算)
平台(近 30 天) 488 103,214,039 ¥6.21(账单)

同一时刻把本机所有会话投影里的 tokenUsage 相加得到 102,263,277,与平台 103,214,039 相差约 0.9%(平台数据有约 5 分钟延迟),说明 token 计数与平台同源,差异来自统计范围;请求次数与金额还包含其它会话/其它 Key、重试计次差异,以及插件不统计的 Search/Fetch 按次费用。弹窗底部提供了「查看平台用量 ↗」链接。

隐私与外部服务

插件不保存、不读取、不上传任何 API Key;剩余金额通过 DSH 已登录账号的账户服务读取,token 只在 Host 内部使用。运行时只访问两个公开地址:DeepSeek 官方价目文档与 timor.tech 节假日日历,可用 autoRefresh: false 完全关闭。没有遥测和第三方上报,会话用量全部在本地按会话日志计算。

适用场景与注意

适合需要在会话过程中即时看到本会话消耗、或按高峰/空闲时段核对成本的 DSH Web / Desktop 使用者。

有几点要留意。第一,插件代码以当前 dsh 进程的权限运行,安装前应检查源码与 MIT 许可证。第二,它使用了 DSH 客户端会话投影与账户 Remote 接口,属于较内部接口,DSH 升级后如出现兼容问题,可在仓库提 Issue。第三,它不统计 Search/Fetch 等独立 API 的按次费用,也不代表官方账单口径。第四,官方价目和节假日缓存会定期更新,离线或网络失败时会回退到上次成功数据。

小结

vacum972/dsh-usage-billing 把「本会话花了多少、还剩多少」直接放到输入框旁,按官方峰谷价目逐次请求计价,并用本会话日志而非平台汇总来算 token,属于思路清楚、实现克制的客户端插件。目录页在 https://www.skillhub.cn/plugins/vacum972/dsh-usage-billing ,源码和说明在 https://github.com/vacum972/dsh-usage-billing 。

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

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

小夜