前言¶
在 DeepSeek Harness(DSH)里跑长会话、多轮工具调用时,token 消耗很快,但界面默认不会把「这一轮大概多少钱、整场会话累计多少」摆在眼前。要自己对照官方价目、区分峰谷时段、再按缓存命中/未命中/输出拆桶估算,既费事也容易算错。
dsh-cost-meter 是社区维护的 DSH 插件,在输入框正下方挂一枚常驻小胶囊,用 DeepSeek 官方峰谷价目和会话日志里的真实 usage 做估算,分别展示「本次回答」和「本会话消耗」,并可展开逐轮明细。下面介绍它的能力、安装方式与使用注意。
这是什么¶
- 名称:dsh-cost-meter(npm 包名
@local/dsh-cost-meter,版本 1.0.0) - 维护者:Lopncod
- 分类:模型推理(社区目录 SkillHub 归类)
- 仓库:github.com/Lopncod/dsh-cost-meter
- 定位:给 DSH Web / 桌面端用的花费计插件;金额按官方 DeepSeek 高峰/空闲费率估算,不是账单原文。
DSH 生态主张「一切皆插件」;SkillHub 等社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系。安装前请自行查看源码与 MIT 许可证,插件在当前 DSH 进程权限下运行。
界面显示什么¶
胶囊一行大致类似:
本会话消耗 ¥1.23 · 本次回答 ¥0.087 空闲价 · 2h15m 后转高峰
含义如下:
- 本次回答:最近一次已完成轮次(turn)的估算费用;轮次结束时刷新并闪一下提示。
- 本会话消耗:当前会话累计估算,含正在进行中的那一轮。
- 峰谷提示:当前按空闲价还是高峰价计价,以及距离下一档切换的提示(在
peakMode: "auto"时)。
点击胶囊可展开逐轮明细:每轮金额、token 四桶(缓存命中读 / 未命中读 / 缓存写 / 输出)、当轮生效单价、高峰/空闲标记、轮内步数。若账本里有多条会话,还会列出本机已记账的全部会话与总计。
计价口径¶
插件按 DeepSeek 官方价目(人民币 / 百万 token)与峰谷计价规则估算。内置表(Flash / Pro)如下:
| 计费桶 | 含义 | Flash 空闲 / 高峰 | Pro 空闲 / 高峰 |
|---|---|---|---|
| 缓存命中读 | 复用前缀缓存的输入 | 0.02 / 0.04 | 0.15 / 0.30 |
| 未命中读 | 未命中缓存的输入 | 1 / 2 | 4.5 / 9 |
| 缓存写 | 写入缓存的输入(按未命中价计) | 1 / 2 | 4.5 / 9 |
| 输出 | 补全(含推理 token) | 4 / 8 | 13.5 / 27 |
- 高峰时段:北京时间周一至周五 09:00–12:00、14:00–18:00;其余时段(含周末与中国法定节假日全天)按空闲价。
- 显示金额为估算值;真实扣费以 DeepSeek 侧余额为准。
token 数据来源¶
四桶来自会话日志里 assistant/message 事件携带的真实 usage,不做 token 估算:
inputTokens对应未缓存桶,与cacheReadTokens、cacheWriteTokens互斥,三者相加才是 prompt 总量(与 DSH@deepseek-ai/dsh-token-meter的tokenUsageprojection 一致)。reasoningTokens属于outputTokens子集,不单独再计费。- 同一
(turn, step)的重复结算替换而非累加;llm/retry-started才重开替换槽,避免重试把一轮算两遍。
安装与启用¶
用 DSH 的 Plugin Manager 安装 bundle。任选其一:
本地目录或克隆后的仓库路径:
plugin_manager action: install_bundle target: <本目录绝对路径或本仓库>
直接指向 GitHub:
plugin_manager action: install_bundle target: github:Lopncod/dsh-cost-meter
安装后需要重启 DSH。README 说明:宿主半在启动时 import ESM 模块,运行中改文件或重新启用 bundle 不会重新加载。
可选配置¶
配置文件路径:$DSH_HOME/.dsh-cost.json(Windows 默认 C:\Users\<你>\.dsh\.dsh-cost.json)。保存后自动生效,无需重启。
{
"peakMode": "auto",
"defaultModel": "deepseek-flash",
"rates": {
"my-proxy-flash": { "hit": 0.01, "miss": 0.5, "out": 2 }
}
}
| 字段 | 说明 |
|---|---|
peakMode |
"auto"(默认,按北京时间判峰谷)/ "always"(全按高峰价)/ "never"(全按空闲价) |
defaultModel |
request/header 缺失时用来选价目表的模型名 |
rates |
自定义单价,键为模型 id 子串(最长匹配优先);值 {hit, miss, out} 为元/百万 token;写单个数字表示峰谷同价;键 _default 改兜底价 |
账本文件:$DSH_HOME/.dsh-cost-ledger.json(逐会话逐轮记录)。删除它只影响历史展示,后续事件会重新累积。
只读 HTTP 接口¶
宿主半通过 ctx.webServer 提供只读路由(DSH 浏览器鉴权栅栏只套在 /api,这些路由不受影响):
| 路由 | 用途 |
|---|---|
GET /dsh-cost/state?sessionId=<id> |
当前会话 + 全部会话汇总 + 峰谷状态;sessionId 不在账本时回退最近有记录的会话,并带 fallback: true |
GET /dsh-cost/rates |
生效的内置 / 自定义价目表 |
GET /dsh-cost/debug |
最近 12 次 /state 请求的完整 URL,便于排查页面是否在轮询、用的哪个 id |
同源脚本也可直接请求上述路径。
适用场景与已知限制¶
适合:在 DSH 里日常写智能体、调长会话,需要一眼看到「这一轮 / 整场」人民币估算,并愿意按官方峰谷与四桶规则理解数字的开发者。
限制(来自 README):
- 只统计插件启用之后的轮次;启用前跑过的旧会话没有历史。
- 子代理会话按各自
sessionId单独记账,不计入父会话那一行;总计会一起算。 - fork / resume 出来的会话只累计本进程内新发生的事件,被复制的历史前缀不重复计费。
开发侧可用 npm test 跑 18 项测试(峰谷边界、价目表最长匹配、替换语义、账本 JSON 往返等)。
结尾¶
dsh-cost-meter 把「本次回答 / 本会话」花费和峰谷状态收到 Composer 下方一枚胶囊里,计价基于官方价目与会话真实 usage,并支持自定义费率与本地账本。社区目录页:skillhub.cn/plugins/Lopncod/dsh-cost-meter;源码与完整说明:github.com/Lopncod/dsh-cost-meter。