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