dsh-cost-pill
Verifieddsh-cost-pill · v1.0.2 · MIT · Web UI
DeepSeek account balance and per-session cost pill for DeepSeek Harness (dsh): official peak/off-peak pricing, per-model breakdown, no credentials stored.
Install
dsh plugin add dsh-cost-pill Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-cost
DeepSeek Harness 的账户余额及费用统计胶囊。它在会话输入框下方的官方统计行右侧新增一枚胶囊,集成三样信息:计费时段(高峰 / 低谷,用颜色区分)、账户余额、本次会话费用;点击展开可查看本次会话的详细费用统计——缓存命中输入、缓存未命中输入、输出三项金额,以及按模型拆分的花费。费用部分不需要任何凭据;余额部分需要一个 DeepSeek API key。
社区插件,与 DeepSeek 官方无隶属关系,也不由官方随包分发。
截图


功能
- 统计行最右侧的胶囊:以
order: 2注册到conversation.composer.dock,排在官方两颗统计胶囊(activity= 0、usage= 1)之后。时段显示为「高峰」或「低谷」,并用红 / 绿圆点区分。 - 明细弹窗:显示计费时段、账户余额、本次会话费用,以及按三项拆分的金额——缓存命中输入、缓存未命中输入(含缓存写入)、输出;宿主能按模型折算时,还会列出各模型的费用。
- 与官方一致的计费口径:内置 2026-09-10 降价与 pro→flash 路由。会话处于挂载状态时逐请求折算,跨越降价、路由切换或高峰边界的用量各自沿用当时的价目表,不会混用两套费率。
- 高峰 / 低谷判定:工作日
9:00–12:00、14:00–18:00为高峰;其余时间、周末与法定节假日全天为低谷(含调休成为工作日的周末)。内建的 2026 年法定节假日表可通过Config.holidays替换。 - 费率跟随官方调价:费率表内置于插件,随插件版本更新以跟随官方调价。
- 没有 API key 也能用:只用 DeepSeek 账户登录的用户照样能看到计费时段与会话费用,只是不显示余额。
- 不保存凭据:API key 通过 dsh 的凭据服务(credentials seam)解析,只在进程内使用,不写入磁盘。
- 中英双语:
cost-stats命名空间下 14 条词条,中文与英文各一套,随应用语言切换。 - 只读宿主路由:浏览器端只请求宿主的
/api/dsh-balance(每个会话步一次,另有 60 秒轮询),不访问任何第三方接口。 - 无本地状态:不持久化任何数据,卸载后无残留。
- 原生交互:弹窗定位与点击外部关闭复用官方
ui-primitives的useAnchoredPosition与useDismissOnOutsidePointer。
运行要求
- DeepSeek Harness(dsh)
>= 0.2.1-rc.2。 - 想看到账户余额,需要一个能被 dsh 凭据服务解析到的 DeepSeek API key(
DEEPSEEK_API_KEY,或经 dsh credentials 配置)。只有当凭据服务本身不可用时,插件才回退读DEEPSEEK_API_KEY环境变量;凭据服务存在但里面没有这个 key 时,不会去读环境变量。解析不到 key 时(例如只用 DeepSeek 账户登录、没配 API key),胶囊仍显示计费时段与会话费用,只是不显示余额。
安装
在插件市场搜索 dsh-cost 一键安装,或在终端执行:
dsh plugin --profile <profile> add dsh-cost-pill
也可以从 GitHub 源码安装:dsh plugin --profile <profile> add github:Arun1016/dsh-cost。
注意:npm 上的裸名
dsh-cost属于另一个无关项目;本插件发布在@arun_1016/作用域下,不会装错。
配置
- id: cost-stats
name: dsh-cost
config:
holidays: ['2026-01-01'] # 法定节假日全天按低谷计价
holidays 是本插件唯一的配置项。默认值为内建的 2026 年法定节假日表(来源:国办发明电〔2025〕7 号),日期采用北京本地日历的 YYYY-MM-DD 格式;跨年只需修改配置,不必改代码。
计费模型
价格单位为元 / 百万 token,表中每个数字都是高峰价——按官方规则,低谷恰好是高峰的一半。
| 项 | 规则 |
|---|---|
| Flash(2026-09-10 12:00 北京时间起) | 高峰 2 / 0.04 / 8,依次为未命中输入 / 缓存命中输入 / 输出 |
| Flash(降价前) | 3.0 / 0.1 / 9.0,同样三个口径 |
Pro(deepseek-v4-pro,2026-09-14 12:00 北京时间之前) |
9.0 / 0.3 / 27.0,同样三个口径 |
| 高峰时段 | 工作日 9:00–12:00、14:00–18:00 |
| 低谷(官方文档亦称空闲时段) | 其余时间;周末与法定节假日全天,包括调休成为工作日的那个周末 |
| 判定所用时钟 | 运行 dsh 那台机器的本地时钟——官方时段以北京时间为准,因此在非北京时区的主机上读数不精确 |
| pro→flash 路由 | 2026-09-14 12:00(北京时间)起按 Flash 计价 |
inputTokens |
指未命中输入;缓存写入也按未命中价计费 |
| reasoning | 属于输出子集,不另计 |
隐私
- 无遥测、无统计、不访问第三方接口。
- 唯一的外部请求是
https://api.deepseek.com/user/balance,用你的 key 认证,超时时间 15 秒。 - 浏览器端只读取宿主的
/api/dsh-balance(每个会话步一次,另有 60 秒轮询),自身不访问任何第三方接口。 - 本插件不把 key 写入磁盘;余额只在内存中缓存。
已知限制
- 会话挂载时,宿主按请求逐一折算,跨越降价、路由切换或高峰边界的用量各自保留当时价目;未挂载的会话由宿主按当下 Flash 价目对聚合用量一次性计价,且不带估算标记;浏览器端自己的兜底估算同样使用当下价目,中文标
(估)、英文标(est)。 - 各段读数都是条件渲染:没有余额时只隐藏余额段;费用恰好为
¥0.00时隐藏费用段;宿主路由缺失或报错时,整颗胶囊静默消失,没有占位也没有错误提示,失败后不再按步重试,只保留 60 秒轮询。 - 金额一律以
¥前缀显示,不随接口返回的账户币种变化。余额固定 2 位小数;费用为 2 位小数,低于¥0.01时改用 4 位。 - 逐模型明细只在宿主能按模型折算时出现;模型名会归一化(例如
deepseek-v4-flash与deepseek-v4-flash-vision-exp都显示为deepseek-flash)。 - 余额失败是静默的:未配置 key、key 无效、网络错误、15 秒超时,都会返回
200且不含balance_infos字段,而这个空结果同样会被缓存 30 秒。 - 余额缓存是进程级、跨会话共享的,只有换了 key 才失效,因此刚充值后最多滞后 30 秒才会反映出来。
- 插件不认识的模型 id 一律按 Flash 价目计价。
- 按请求累加,与账户账单之间可能存在分位舍入差。
- 事件里缺少 model source 或 usage 时,跳过计价。
- 弹窗没有高度上限,也不与官方胶囊共享互斥开合状态,可能和另一个弹窗同时开着。
- 内建节假日表只覆盖 2026 年。
开发
源码在 src/(宿主端 index.ts,浏览器端 client/)。它沿用官方 dsh monorepo 工具链构建:tsconfig.*.json 与 tsdown.config.ts 通过相对路径引用 monorepo(../../../tsconfig.base.json、../../client/tsdown.client.ts),因此构建时需要把这个包放回那棵目录树,仓库本身无法独立构建。
发布包含 lib/ 与 cordis.patch.yml,以及 package.json、两份 README 与 LICENSE(后几项 npm 总会带上)。
许可证
MIT,见 LICENSE。