CHIP-PHILO-GH/dsh-turn-cost ↗★ 0
dsh-turn-cost
在输入框和对话尾部显示本轮消耗金额 适合需要实时监控Token消耗、支持峰谷计价和自定义汇率的用户。
同名包的其他仓库
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:CHIP-PHILO-GH/dsh-turn-cost说明文档
阅读完整 README ↗配置项
本插件没有自己的配置文件。 价格口径直接沿用 dsh-cost-meter 的账本配置:
\storages\cost-meter\ledger.json → 顶层 "config" 字段
`` 取环境变量 DSH_HOME,未设置时取 ~/.dsh。
这个文件不存在、读不了或格式不对时,插件不会报错,而是整份退回内置兜底配置(见「计价依据」)。
config 里被读取的字段一共这些,其余字段一律忽略:
| 键 | 类型 | 缺省 | 说明 |
|---|---|---|---|
symbol | string | ¥ | 金额前缀。空串或非字符串时用 ¥ |
decimals | number | 4 | 显示小数位。先向下取整,再夹到 0–10 |
exchangeRate | number | 7.2 | 美元 → 人民币汇率。非正数或非数字时用 7.2 |
peakEnabled | boolean | false | 峰谷计价开关。必须严格等于 true 才启用(字符串 "true" 不算) |
peakEffectiveAt | string | 无 | 峰谷档生效时刻,交给 Date.parse 解析。该时刻之前的调用一律按基础价 |
peakWindows | array | [] | 峰时段窗口,单位是 UTC 小时,见下 |
prices.models | object | {} | 模型 id → 单价记录 |
prices.default | object | 兜底单价 | 模型没登记时用它 |
单价记录(prices.models. 与 prices.default)的字段:
| 键 | 说明 |
|---|---|
cacheHit | 缓存命中价(缓存读取与缓存写入都用它) |
cacheMiss | 未命中输入价 |
output | 输出价 |
offPeak | 可选。非峰时段档位,字段同上;缺失时退回基础价 |
peak | 可选。峰时段档位,字段同上;缺失时退回基础价 |
三条归一化规则:单位一律是美元 / 1M tokens;记录里缺哪个字段,就用兜底单价里的同名字段补;
offPeak / peak 里缺的字段再用该记录自身的基础价补。
peakWindows 的每一项是 { start, end },单位是 UTC 小时(0–23):
start end:跨零点环绕,命中[start, 24) ∪ [0, end);- 某项的
start/end不是有限数字 → 该项被忽略。
peakEnabled 为 true 时还有一条容易踩的规则:peakEffectiveAt 必须是能解析成时间的字符串。
- 有效:该时刻之前的调用一律按基础价;之后落在窗口内用
peak档,其余用offPeak档; - 无效或缺失:落在窗口内仍然用
peak档,但窗口外一律用基础价——offPeak档不会被用到 (代码只在「调用时刻 ≥ 生效时刻」时才取offPeak)。
判定用的是调用发生的时刻(事件自带时间戳,缺失时退回当前时刻),不是「现在」。
⚠️ 配置在插件加载时读一次。改完账本要重启
dsh web才生效。
有账本配置时
只要 ledger.json 读得到,用的就是账本里的价格表、汇率、小数位与峰谷规则;
内置那份兜底表只在读不到的时候整份顶上(模型级单价缺失时退回 prices.default,default 也缺失时退回兜底单价)。