dsh-session-cost: Add balance and session cost readings to DSH Web GUI

前言

如果你在用 DeepSeek Harness (DSH) 的 Web GUI 跑会话,应该遇到过这个问题:会话统计行能告诉你用了多少 token,但折成人民币是多少、账户还剩多少余额,界面上没有。要弄清楚只能切去 platform.deepseek.com/usage 查账单,而官方账单本身还有几分钟的结算延迟,长会话跑到一半想估算成本并不方便。

DSH 的理念是「一切皆插件」,这类读数正好可以做成一个 dock 条目。下面介绍的 ljcscp/dsh-session-cost 做的就是这件事:把 DeepSeek 账户余额和当前会话的估算花费直接显示在 Web GUI 里。

这是什么

ljcscp/dsh-session-cost 是一个面向 DSH Web GUI 的插件,MIT 许可证,当前版本 0.1.0。它在 composer dock 的会话统计行下方显示一行读数:

本会话 ¥0.90 · 余额 ¥30.82

悬停可以查看明细:输入 / 缓存读 / 输出 token、会话所用模型、定价来源,以及余额构成(granted + topped up)。

核心功能

账户余额:查询官方 GET /user/balance 接口。API key 保留在 host 端,每次刷新时通过 DSH credentials seam 解析,不会下发到浏览器。

会话花费:token 用量 × 官方 DeepSeek 价格。价格每 6 小时自动从官方定价页抓取一次,价格变动不需要更新插件。

峰谷定价:自动应用 2026-08-17 上线的峰谷时段——北京时间 09:00-12:00 / 14:00-18:00 为峰时,谷时半价。插件按当前北京时间所处的小时套用对应价格档。

按模型计价:从最新 assistant 消息的 provenance 读取会话实际使用的模型(deepseek-v4-flash / deepseek-v4-pro),按各自的价格档计费。

计费公式与官方规则一致(扣减费用 = token 消耗量 × 模型单价):

spend = uncachedInput × inputPerMillion
      + cacheRead × cacheReadPerMillion
      + output × outputPerMillion        (per 1M tokens)

缓存写入按未缓存输入价计费,因为 DeepSeek 只报告 hit/miss 两类用量桶。

安装与启用

前置条件有两条:

1、DeepSeek Harness 0.1.0-rc.5 或更新版本(web profile);
2、通过 DSH credentials seam 存储的 DeepSeek API key(DEEPSEEK_API_KEY,由 web Models 页面写入)。

安装支持三种方式,任选其一。

从 git URL(不需要 npm 账号):

dsh plugin --profile web add https://github.com/ljcscp/dsh-session-cost

从 npm:

dsh plugin --profile web add @ljcscp/dsh-session-cost

从本地检出(开发用):

git clone https://github.com/ljcscp/dsh-session-cost.git
dsh plugin --profile web add link:$(pwd)/dsh-session-cost

安装后重启 dsh web 并刷新页面,读数就会出现在 composer dock 中会话统计行下方。默认零配置,开箱即用。

可选配置

默认零配置。如果需要调整行为,可以在组合配置里加一段:

- insert:
    - id: session-cost
      name: '@ljcscp/dsh-session-cost'
      config:
        refreshMs: 60000
        pricingRefreshHours: 6
        apiKeyEnv: DEEPSEEK_API_KEY
        baseURL: https://api.deepseek.com

各配置项的含义:

配置项 类型 默认值 说明
refreshMs number 60000 余额缓存生命周期(ms),失败后 10 秒重试
pricingRefreshHours number 6 官方定价页刷新间隔(小时)
apiKeyEnv string DEEPSEEK_API_KEY 存储 DeepSeek API key 的凭据引用
baseURL string https://api.deepseek.com 接口基址,插件会在其后拼接 /user/balance
trustedHosts string[] [] 在信任围栏之外提供服务的非回环主机

工作方式

插件分成两端:

Host 端src/index.ts)注册一个受信 webserver 路由 /session-cost,提供余额快照(缓存 refreshMs)和生效定价快照(按 pricingRefreshHours 解析官方定价页,峰谷时段生效后按当前北京时间小时套用)。API key 始终不离开 host。

浏览器端src/client/)是一个 conversation.composer.dock 条目,读取 tokenUsage projection,从最新 assistant 消息的 provenance 检测会话模型,套用生效价格档并渲染读数,每分钟刷新一次。

适用场景与注意

适合这几类使用者:

  • 在 DSH Web GUI 里跑长会话,想随时掌握成本的人;
  • 同时使用 deepseek-v4-flash 和 deepseek-v4-pro,想确认每次实际按哪个价格档计费的人;
  • 希望峰谷定价、官方调价自动生效,不想手动维护价格表的人。

使用前有几点需要知道:

  • 读数是按官方价格计算的估算值;platform.deepseek.com/usage 上的官方账单有几分钟结算延迟,两边数字可能短暂对不上。
  • trustedHosts(默认 [])用于配置在信任围栏之外提供服务的非回环主机,默认部署不需要动它。
  • 插件以当前 dsh 进程的权限运行,安装前建议先检查源码与许可证。本项目为 MIT;浏览器打包构建预设(shared/)改编自 dsh-balance-meter(BSD-3-Clause),后者改编自 deepseek-harness(MIT)。
  • 如果要本地开发或从源码构建:Node 引擎要求 ^22.19.0 || >=24.0.0,包管理器为 pnpm@11.7.0

经过上面的步骤,插件就能在 composer dock 里持续给出余额与会话花费读数,不需要再切出去查账单。

结尾

dsh-session-cost 解决的是一个小而具体的问题:让成本信息直接出现在你会话的界面上,余额走官方接口,价格跟官方定价页自动同步,峰谷时段和模型档位自动套用。

项目地址:

社区目录是独立站点,与 DeepSeek / 幻方没有官方从属关系,仅作索引使用。

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

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

Xiaoye