2006spy
dsh-token-billing
DSH 实时 token 计费插件:官网人民币价直接计费、高峰/错峰自动切换、价格实时跟随官网、可视化自定义模型价格。Real-time token billing plugin for DeepSeek Harness (dsh web).
- Stars
- 0
- Language
- JavaScript
- Created
- Aug 15, 2026
- Updated
- Aug 15, 2026
Introduction
dsh-token-billing — DSH 实时 token 计费插件
为 DeepSeek Harness(dsh)Web 提供实时费用统计:按本次会话实际的 token 用量(输入 / 输出 / 缓存读 / 缓存写四个桶)乘以模型单价,换算成费用, 在输入框上方实时显示。流式生成期间用字符/4 启发式估算(标注「估」), 收到模型的精确 usage 后自动修正为精确值;被中断(abort)的估算步骤 不会落地计费。
v0.4 特性:
-
官网人民币价格直接计费:默认抓取 DeepSeek 官网中文页 (
¥标价,如 flash 平峰 0.02/1/2 元、高峰 0.10/3.0/9.0 元),无需汇率换算; 英文页(USD)兜底,可用「外币自动折算人民币」按汇率折算。 -
价格实时跟随官网:默认 1 小时自动检查并重抓官网价格表(后台周期定时器 + 缓存过期重抓 + 卡片手动刷新);高峰/错峰生效时刻到达后 1 分钟内自动切换, 无需重启。
-
DeepSeek 高峰/错峰计费(官方口径):高峰为北京时间 09:00-12:00 与 14:00-18:00,其余为空闲时段(半价);新价自北京时间 2026-08-17 00:00 生效。插件自动解析官网的窗口(北京时间)与时区,按请求发生时刻自动切换计价; 费用行实时显示当前「高峰 / 空闲」徽标。
-
可视化自定义模型价格:设置卡「基础」里用表格可视化添加/删除自定义模型与 价格(模型 ID + 输入/输出/缓存读/缓存写/币种),替代手写 JSON,实时生效。
-
多币种兜底:非人民币的外币价按汇率折算为目标货币;不同币种分别累计显示。
-
宿主端:
tokenBilling会话投影(重放事件流,可持久化、可回放) -
浏览器端:输入框上方费用行 + 「设置 → 插件 → Web UI 插件 → Token 计费」卡片
-
零构建依赖:手写 ESM 宿主 +
__ModuleLoader__客户端 bundle,与 modlens 同款立场
下载与安装
插件本体是一个标准 DSH(cordis)插件,源码在 GitHub 发布。要使用需自行下载, 然后以依赖方式装入你的 DSH web profile。
从 GitHub 拉取源码后,用本地链接方式装入 web profile:
- 下载 / clone 本仓库到本地目录(例如
D:\workshop\dsh-token-billing):git clone <本仓库地址> dsh-token-billing - 在
~/.dsh/profiles/web/package.json的dependencies增加本插件依赖:"dsh-token-billing": "link:<本仓库所在绝对路径>" - 在
~/.dsh/profiles/web/cordis.patch.yml增加:- insert: - id: token-billing name: dsh-token-billing - 在 profile 目录执行
pnpm install。 - 重启 dsh web(插件在启动时装载)。
也可将
dsh-token-billing发布为 npm 依赖后,直接以<包名>@<版本>装进dependencies再pnpm install。
本机开发快速装(与仓库同路径)
开发时直接链接源码目录(已装好可跳过):
~/.dsh/profiles/web/package.json→"dsh-token-billing": "link:D:/workshop/dsh-token-billing"~/.dsh/profiles/web/cordis.patch.yml→ 挂载行已就位;更新插件代码后只需重启。
配置
「设置 → 插件 → Web UI 插件 → Token 计费」卡片,保存即时生效(重建投影)。
基础
| 字段 | 默认 | 含义 |
|---|---|---|
| 启用实时计费 | 开 | 总开关 |
| 默认货币符号 | ¥ | 目标计费货币;官网人民币价直接使用,其他外币价按汇率折算 |
| 未知模型 · 输入/输出/缓存读/缓存写价 | 2 / 8 / 0.5 / 2 | 未覆盖模型的默认价(每 1M token) |
| 模型价格覆盖 | {} | 可视化编辑器:逐格填「模型 ID + 输入/输出/缓存读/缓存写/币种」,可增删行;也可直接写 JSON { "deepseek-chat": {"input":2,"output":8} };优先级最高,不参与高峰/错峰 |
价格来源
| 字段 | 默认 | 含义 |
|---|---|---|
| 价格来源 | DeepSeek 官网 | deepseek(中文页·人民币,自动抓取,英文页兜底)/ custom-json(自定义端点)/ builtin(仅内置表) |
| 自定义价格 URL | — | 返回 { "模型id": {"input":..,"output":..,"cacheRead":..,"cacheWrite":..} } 或 { "currency":"CNY", "models":{...} } |
| 自动刷新间隔 | 1h | 后台周期检查,价格表跟随官网实时更新 |
汇率折算
| 字段 | 默认 | 含义 |
|---|---|---|
| 外币自动折算人民币 | 开 | 抓取到外币价(如 $)时按汇率折算为目标货币 |
| 汇率(1 外币 = N 元) | 7.2 | 仅对外币价生效(官网人民币价直接使用) |
汇率相关字段从「价格来源」拆出独立成选项卡。
高峰/错峰(DeepSeek 官方计费)
| 字段 | 默认 | 含义 |
|---|---|---|
| 启用高峰/错峰 | 开 | 总开关(需抓取到官方高峰价表才生效) |
| 高峰窗口 | 跟随官网 | 官网自动解析为北京时间 09:00-12:00 与 14:00-18:00(Asia/Shanghai);留空自动跟随,自定义时覆盖 |
| 错峰折扣率 | 0.5 | 官方空闲 = 高峰 × 0.5 |
| 适用模型 | deepseek-* | glob,逗号分隔 |
| 窗口时区 | 跟随官网 | 默认 Asia/Shanghai(北京时间);自定义窗口时生效 |
| 忽略生效日期 | 关 | 官方峰谷价自北京时间 2026-08-17 00:00 生效;勾选后立即启用 |
状态(实时查看)
- 价格抓取状态:来源、最近更新时间、覆盖模型数、高峰/错峰窗口与生效时刻; 「立即刷新价格」按钮手动抓取并重建投影。
- 当前生效单价表:列出所有模型当前生效价(含高峰/错峰,按此刻计价), 切换模型/时段变化后实时刷新。
内置价格表(默认货币 ¥/1M,近似官方价,可覆盖):deepseek-chat、
deepseek-reasoner、deepseek-v4-flash、deepseek-v4-pro、glm-4v-flash
(免费)、glm-4v-plus、glm-4.5-flash、qwen-vl-plus、qwen3-vl-plus 等。
抓取到官网价后,DeepSeek 系模型自动改用官方人民币价(flash 高峰
0.10/3.0/9.0 元、空闲半价);其余模型走内置表/默认价。
显示
输入框上方一行(与 TPS 同款样式):
💸 ¥0.0302 · 12.3k in / 1.2k out · 本轮(估) ¥0.0011 · deepseek-v4-flash ¥4.5/M · 空闲
- 第一段:本会话累计费用(默认人民币;多币种时按币种分别显示)
- 中间:输入 / 输出 token 累计
- 第三段:当前一轮(turn)费用,进行中显示「(估)」,结算后自动变精确
- 当前模型段:
<模型id> <当前生效输出单价>/M,随模型切换实时更新(含高峰/错峰) - 尾部徽标:峰谷计费生效时显示当前是「高峰」还是「空闲」
- 悬停(title):按模型的费用明细(含币种)、价格来源、高峰窗口
计费口径
- 价格 = 每 1M token 单价;
费用 = 未缓存输入×in + 输出×out + 缓存读×read + 缓存写×write(除以 1M) - 精确 usage 到达前,输出按
ceil(字符/4)+4估算,输入按系统提示 + 工具 schema + 会话表面估算 assistant/message或usagechunk 携带精确用量时,该步立即换成精确值- 结算时刻(step/end)决定该步落在高峰还是空闲;用户覆盖的价格不参与高峰/错峰
- 非
completed结束(abort/error)的估算步骤自动退款,不计入总计 - 实时跟随官网:价格表默认每小时自动重抓(可配置);峰谷价在生效时刻到达后 1 分钟内自动切换,无需重启
验证
node tests/simulate.mjs # 91 项:计价/估算/多币种/退款/中英文官网解析/峰谷时段/生效切换/折算/序列化
node tests/schema-check.mjs # 视图 wire schema 校验(内置 + 官网高峰两场景)
真实联网端到端(抓官方页 → 解析 → 高峰/错峰计价)已实测通过。
文件
| 文件 | 说明 |
|---|---|
lib/index.js | 宿主端:注册投影 + settings 命名空间 + 价格抓取/缓存管理 + 刷新路由 |
lib/projection.js | 纯计费数学与投影状态机(零依赖,可独立测试) |
lib/prices.js | 价格源:DeepSeek 官方页解析 / 自定义 JSON / 缓存 / 币种符号映射 |
lib/client.js | 浏览器端:费用行 + 设置卡片(手写 __ModuleLoader__ bundle) |
cordis.patch.yml | bundle 层挂载行 |
tests/ | 验证脚本 + 官方页 fixture |
License
MIT