dsh-billing-chip:DSH Web 右下角实时计费牌

前言

在 DeepSeek Harness(DSH)里跑长对话或工具链时,每一轮都会产生 token 与费用。DSH 会把 usage 写进会话日志,但落盘通常有 1–5 分钟延迟,单靠日志很难在「这一轮还在输出」时看到钱涨到了哪。若只等结算后再看账单,对控制单次轮次成本、对比峰谷时段并不方便。

下面介绍社区插件 dsh-billing-chip(维护者 EuphonXD,GitHub:EuphonXD/dsh-billing-chip)。它在 DSH Web 界面右下角挂一块纯文字计费牌:当前模型、本轮花费、今日累计、账户余额、峰/谷状态;特色是订阅模型输出流,按字符折算 token 做本轮实时估算,结算后再并排「实际 · 预估」。

这是什么

dsh-billing-chip 是 DSH 的客户端类插件(npm 包名 dsh-billing-chip,当前资料中的版本为 0.2.0,MIT 许可证)。没有头像和动画,只显示数字;窄条布局,尽量不挡操作区。

插件读两类数据并合并展示:

数据源 内容 延迟
会话日志 $DSH_HOME/sessions/<workspace>/<session-id>/session.v4.jsonl.zstd 已结算 usage、模型、turn 边界、今日汇总 1–5 分钟
进程内 assistant 流(sessionController.follow + assistantStream) 思考/正文增量,用于实时估钱 即时

若未安装对应 cordis 服务,流式订阅会退回只读日志,实时预估能力会减弱。

实时估算怎么工作

算法与桌宠计费板同源(仓库内 bridge.mjs 的 estAdd / estEmit 思路):

  1. 跟随当前活跃会话的 assistant 流,收集 reasoning-delta / text-delta 每一段文字(思考内容也计入)。
  2. 字符折算输出 token:汉字 0.6 token/字,其他字符 0.3 token/字。
  3. 输出侧取 max(本轮已结算 output, 字符估算);真实 usage 到了以真实值为准。
  4. 输入侧用本轮已结算的 cacheRead + uncachedInput;尚未结算时,退回上一次请求的量级(每步重发全量上下文,量级接近)。
  5. 按 DeepSeek 官方价(峰/谷)算金额,每来一段增量就重算。

README 中给出的实测(deepseek-flash,约 600 字散文):流式期间约 ¥0.0126,结算后实际 ¥0.0126,误差 0%。多 step 轮次(中间调工具)在同一 turn 内累加字符,不会因工具调用打断。

峰/谷规则(北京时间):工作日 09:00–12:00、14:00–18:00 为高峰(价格翻倍);周末与法定节假日全天按谷时价。节假日表在 src/index.js 顶部,每年需维护。

牌子上显示什么

典型一行布局如下:

deepseek-flash      峰
本轮 ¥0.0421
今日 ¥2.57  余额 ¥118.00
  • 本轮:进行中为粉色 ≈ ¥(流式预估);turn/end 后换成本轮实际花费;预估与实际差 ≥3% 时显示 ¥实际 · ≈¥预估,接近则只显示实际;刚结算时金色闪 2.4 秒。
  • 今日:当天所有会话的花费与 token(跨 workspace、跨 session;子代理会话 usage 也在日志里,会算进今日)。
  • 余额:调用 GET https://api.deepseek.com/user/balance,显示 CNY 可用余额。每轮结束、缓存超过 60 秒、保存 Key 或右键「刷新余额」时会拉取;失败不覆盖上一次成功值。

交互:拖动(位置存 localStorage 并同步后端)、双击折叠、右键菜单(刷新余额、输入 API Key、折叠/展开、重置位置、隐藏)。未填 Key 时单击牌子也会弹出 Key 输入框。

安装与启用

插件以当前 dsh web 所在 profile 的 Node 进程权限运行;实时流是进程内数据,必须装在会话所在的那台 dsh 实例的 profile 里。安装前建议自行查看源码与 LICENSE。需要 Node ≥ 22.13(使用 zlib.zstdDecompressSync)。资料说明目前在 DeepSeek Harness 0.2 的 Web profile 上验证过。

从 npm 安装

dsh plugin --profile web add dsh-billing-chip

跟踪 GitHub 最新提交

dsh plugin --profile web add github:EuphonXD/dsh-billing-chip

两种装法都会把包放进 profile 的 node_modules,但仍需手动把 dsh-billing-chip 加入 profile 的 dsh.profile.bundles,然后 pnpm install(如需要)并重启 dsh web。dsh plugin add 不会自动改 bundles。

推荐 profile 片段示例:

{
  "dependencies": {
    "dsh-billing-chip": "..."
  },
  "dsh": {
    "profile": {
      "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-billing-chip"]
    }
  }
}

插件自带 cordis.patch.yml,作为 bundle 加载时会自动 insert。若不想改 bundles,可在 profile 的 cordis.patch.yml 中 insert id: dsh-billing-chip。

本地 link 开发时:

dsh plugin --profile web add link:/path/to/dsh-billing-chip

同样要手动写入 bundles 并重启。

验证

重启后可用同源请求检查状态($DSH_URL 为你的 DSH Web 地址):

curl -s "$DSH_URL/api/dsh-billing-chip/state" -H "Origin: $DSH_URL"

仓库还提供 scripts/find-dsh.mjs 与 scripts/enable-in-profile.mjs(见 README 与 SETUP-AI.md),供定位 DSH 与写入 profile 时使用。

配置与 API Key

在 cordis.yml 或 profile patch 中可选配置:

- id: dsh-billing-chip
  name: 'dsh-billing-chip'
  config:
    apiKey: ''
    defaultModel: deepseek-flash
    settingsPath: ''
    allowRemote: false
    priceOverrides:
      deepseek-flash:
        hit: [0.02, 0.04]
        miss: [1, 2]
        out: [4, 8]

API Key 优先级(高到低):右键保存到 $DSH_HOME/dsh-billing-chip/settings.json(权限 0600)→ config 里的 apiKey → 环境变量 DEEPSEEK_API_KEY。接口只回显掩码,不返回明文。

同源 HTTP 路由(供 Web client):GET /api/dsh-billing-chip/state、POST /api/dsh-billing-chip/key、POST /api/dsh-billing-chip/refresh、POST /api/dsh-billing-chip/ui。默认 allowRemote: false,仅本机或 Origin 与 Host 一致的浏览器请求可通过。

适用场景与限制

适合:在 DSH Web 里长时间对话、需要一眼看到本轮是否在涨钱、今日累计与 DeepSeek 账户余额,并在结算后对比估准不准的开发者。

注意:

  • 只认 DeepSeek 官方价;其他 provider 时 token 数仍来自日志/流,金额需自行配 priceOverrides。
  • 结果是估算,非官方账单;缓存判定与四舍五入可能有细微差别。
  • 实时估算对长英文/代码块可能比中文偏差略大(0.3 系数对英文单词偏高),极端长单轮可能有百分级偏差。
  • 插件只读会话日志,除带 Key 的余额查询外无额外外联与埋点;DSH 登录与端口暴露取决于你的部署方式。

DSH 生态强调「一切皆插件」;社区目录 skillhub.cn 上的 dsh-billing-chip 页 与 GitHub 仓库由社区维护,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-billing-chip 把「等日志落盘才知道本轮花了多少」变成「输出流上边写边看 ≈¥」,并在 turn 结束后用实际 usage 校正。若你在 Web profile 里日常用 DSH,可按上文命令安装、写入 bundles 并重启,再用右键或 config 配好 Key 即可在右下角看到计费牌。

  • 目录页:https://www.skillhub.cn/plugins/EuphonXD/dsh-billing-chip
  • 源码与完整说明:https://github.com/EuphonXD/dsh-billing-chip
羽毛球分组比赛记分
小程序二维码

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

Xiaoye