dsh-balance
一个独立的 DeepSeek Harness Web 插件,在左侧栏底部显示 DeepSeek 官方 API 余额,并在对话输入区和设置页显示 Harness 已记录的 Token 用量与估算费用。
安装
dsh plugin 只是把参数转发给 profile 目录里的 pnpm,所以本地目录和 Git 仓库都能装。
从 GitHub 安装:
cd /path/to/deepseek-harness
pnpm dsh plugin --profile web add github:HFUT-zhengjiahao/dsh-balance
或用本地克隆:
cd /path/to/deepseek-harness
pnpm dsh plugin --profile web add /path/to/dsh-balance
仓库里不含任何 API Key:余额查询走 Harness 已保存的 DEEPSEEK_API_KEY 凭据。
然后重启 Web 服务。Host 与浏览器两半都是在 Web 服务启动时读取的,因此改动任一半后都需要重启 dsh web——只刷新页面不够,设置段落的值也只在注册时解析一次。
行为
Host 使用 Harness 已保存的
DEEPSEEK_API_KEY调用官方GET /user/balance。浏览器只收到币种、余额、可用状态和更新时间,不会收到 API Key。
首次加载和手动刷新立即查询,后台每 60 秒刷新一次,页面重新获得焦点时也会刷新。
支持 CNY、USD 等
balance_infos币种;CNY 优先显示,其余币种显示在下方。收起侧栏时不占用 56px 图标栏,展开侧栏后显示完整余额卡,避免与进程控制按钮争夺空间。
接口暂时不可用时保留上一次成功值,并显示“数据过期”。
对话输入区显示当前对话累计 Token、费用和使用的模型;费用只读取
assistant/chunk/assistant/message已记录的 usage,最终消息会替换同一步的流式样本,不重复计费。设置页的“用量与价格”支持今天、7 天、30 天和自定义日期范围,按模型查看用量,并查看每个已产生用量的会话。
费用按人民币展示。费率保存的就是官方价格表上的人民币价(CNY / 1M tokens),不经过汇率折算;设置页仍可切换成美元,届时按“1 USD = ¥”汇率把人民币价折算过去。
设置页的“价格”可以单独调整每个模型的缓存命中/未命中输入/输出费率,并用“恢复官方默认”回到内置的官方费率。官方来源为 https://api-docs.deepseek.com/quick_start/pricing/。
内置费率核验于 2026-09-13,对应 2026-09-10 12:00(北京时间)生效的 Flash 系列调价:
模型 缓存命中 未命中输入 输出 deepseek-flash(DeepSeek-V4.1-Flash)¥0.02 / ¥0.04 ¥1 / ¥2 ¥4 / ¥8 deepseek-v4-pro(DeepSeek-V4-Pro-0813)¥0.15 / ¥0.30 ¥4.5 / ¥9 ¥13.5 / ¥27 高峰时段为 UTC 周一至周五 01:00–04:00 与 06:00–10:00,其余时间为空闲时段,高峰价是空闲价的两倍。
deepseek-v4-flash、deepseek-v4-flash-vision-exp与内测模型deepseek-v4.1-flash-expires-on-0910已不在官方价格表内(前两者已退役、请求由 V4.1-Flash 承接,内测模型 2026-09-10 到期)。这些模型名不再单独定价,仍出现在历史会话里的旧用量会显示为“未定价”,不计入合计费用;旧版配置留下的这些行会在读取时被忽略。插件没有工具、模型 schema、system prompt、prompt section 或自定义 session event,不会增加模型 token;
dsh-balance/usage只是 Harness session projection 的读侧统计。已落盘但当前不在内存里的会话按
sessionProjectionCache.coldSnapshot(header, inheritedEventCount, events)读取:日志由插件自己通过sessionPersistence.open(id, 'read')读出来,因为该缓存服务不访问持久层。单个会话日志读取失败只会被单独列出(界面显示“日志读取失败”),不会让整段时间范围的汇总失败。
价格表维护
官方调价后需要同时改两处,它们必须一致:
index.js的DEFAULT_PRICE_SETTINGS.models(Host 实际计价用的表,以及设置页“恢复官方默认”的基准)。client.js的DEFAULT_MODELS(“恢复官方默认”写回用户设置时用的表)。
同时把 PRICING_CHECKED_AT 与设置页里 pricingCheckedAt 的兜底日期改成核验当天。
内置表只覆盖官方价格表上现役的模型路由;只要 models 里查不到某条路由,Host 就会退回内置表,因此旧配置里遗留的历史行不会让现役模型算成 0 元。反过来,未列入内置表的第三方模型需要在设置页里手填费率,否则会显示“未定价”。
settings.yaml 里的 dsh-balance.models 只存用户覆盖项:它为空对象时就是在使用内置的官方表,currency 与 usdToCny 仍按正常设置读写。这样官方再次调价时,只要更新上面两张表并重启,存量配置会自动跟上,不需要用户重新保存一次价格;在设置页点“保存价格”或“恢复官方默认”则会把当前费率固化进这个字段。已退役的路由(RETIRED_MODEL_ROUTES)即使被写进这个字段也不会生效。
版本
0.3.1:修复设置页“用量与价格”读取失败——coldSnapshot是按(header, inheritedEventCount, events)三参数调用的,旧代码只传了 session id,于是SessionLogOffset收到undefined并抛错(界面显示SessionLogOffset must be a non-negative safe integer, got undefined),所有区间汇总都会失败。现在插件自己用sessionPersistence.open(id, 'read')读出完整日志再交给缓存。0.3.0:价格表改用官方人民币价,基准路由从deepseek-v4-flash更正为现役的deepseek-flash(这正是此前用量显示“未定价”、费用算不出来的原因);deepseek-v4-pro由旧美元价更新为官方人民币价;三个已退役模型名不再定价;默认展示货币改为人民币。Host 计价多了一层内置表兜底。0.2.0:加入 Token 用量与费用估算、设置页“用量与价格”。0.1.0:侧栏余额卡片。
移除
pnpm dsh plugin --profile web remove dsh-balance
No comments yet. Be the first to write one.