miaoxingyunduo/dsh-session-cost ↗★ 0

@local/dsh-session-cost

Per-conversation token and money accounting: session_cost / list_session_costs tools, the /cost command, and a composer cost pill

Package
@local/dsh-session-cost
Compatibility
Unverified
Harness peer range
*
Version
0.1.0
Last updated
Oct 12, 2026

Install

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:miaoxingyunduo/dsh-session-cost

配置字段

在界面里填单价(推荐):插件页 → 已安装 → @local/dsh-session-cost → 任一行 → 配置。 那一页的「模型单价」是一张可编辑表格,每个模型一行,直接输入数字即可:

模型(
/)   未命中   命中缓存   缓存写入   输出
deepseek-official/deepseek-flash   2     0.04              8    ×
deepseek-official/deepseek-v4-pro  9     0.3              27    ×
[+ 添加模型]   留空的「命中缓存 / 缓存写入」= 与未命中同价

模型   未命中   命中缓存   缓存写入   输出
DeepSeek-V4.1-Flash   ¥2   ¥0.04   ¥2   ¥8      ← 只读预览(跟随 currency)
DeepSeek-V4-Pro       ¥9   ¥0.3    ¥9   ¥27

▸ 高级:直接编辑 rates JSON
  • 未命中、输出必填;命中缓存 / 缓存写入留空 = 与未命中同价(DeepSeek 的缓存写入不单独计费);
  • **「+ 添加模型」**加一行,每行的 × 删掉该行(至少留一行);
  • 表格只改这四列,同一模型上的其它字段会被保留(label、offPeakMultiplier、 inputOffPeak 等),不会因为你在界面上改了一个价就把高级设置悄悄删掉;
  • 模型名必须写成 /,可以直接复制下面只读预览里的键名;
  • 下面是只读预览:按当前 currency 标注单位,把每个模型的四个单价列全,一眼能看出 「我填的价会不会被这么算」;
  • 最下面的**「高级」**是可折叠的 rates JSON 原文——要写表格没有暴露的字段 (inputOffPeak 之类)时用它;两处是同一个值的两个视角,改哪边都会同步另一边的表格;
  • 保存前会校验:缺 input/output、值不是数字、模型名没有 /、模型名重复,都会拒绝保存 并指出是哪一行哪个字段——因为 Host 挂载时会拒绝这种表,那会让整个读数不显示, 所以宁可在这里拦住。

字段清单(表格没覆盖的部分用「高级」直接写):

字段默认含义
ratesDeepSeek 官方价(见下)JSON:`"
/"→ 每 100 万 token 的单价,**单位与currency` 一致**
currency{"symbol":"¥","code":"CNY","perUsd":1}展示货币;perUsd 是 1 美元兑多少该货币
offPeakMultiplier0.5非高峰价 = 高峰价 × 该系数,只对「峰谷价」的模型生效(见 peakPricing)
offPeakTimezoneUTC判断高峰时段的 IANA 时区
offPeakHolidays空 = 用内置清单中国法定节假日(YYYY-MM-DD,逗号分隔),这些日期全天按非高峰价
dshHome空空 = $DSH_HOME,再退回 ~/.dsh

单价表每个条目可用的字段:

字段必填含义
input✅未命中缓存的输入价
output✅输出价
cacheRead命中缓存的输入价;缺省 = input
cacheWrite缓存写入价;缺省 = input(DeepSeek 不单独计费)
label界面/报告里显示的名字,如 DeepSeek-V4.1-Flash
peakPricing该模型是否有高峰/非高峰两档价;不填时按键名判断:含 deepseek 才是 true,其余一律 false(固定价)
offPeakMultiplier该模型自己的非高峰系数,覆盖全局值;只对 peakPricing: true 的模型生效
inputOffPeak / cacheReadOffPeak / cacheWriteOffPeak / outputOffPeak直接写死非高峰价,覆盖系数;同样只对峰谷价模型生效

峰谷价只属于 DeepSeek。这是实测踩到的第二个坑:插件原来把非高峰折扣套在了每一条已配置 单价的路由上,于是本机真实存在的 our-free-model/mimo-v2.6-flash-free(只有一个固定价)被算成 半价,面板还理直气壮地写着「非高峰 ×0.5」——那个模型根本没有低谷时段。现在的规则是:

  • 键名含 deepseek 的路由 → 峰谷价(deepseek-official/*、deepseek-account/*);
  • 其它一切路由 → 固定价,全天按表里的价格,面板显示「固定价」;
  • 想覆盖就在该条目写 peakPricing: true(比如 DeepSeek 模型走了别的 provider 名, 或某个转售商也分时计价)或 peakPricing: false(比如 DeepSeek 模型被按平价转售)。

实测(本机全部会话日志 + 已装配置):修复前 our-free-model/mimo-v2.6-flash-free 合计 ¥0.945,修复后 ¥1.8907,正好差一倍;同一份数据里三条 DeepSeek 路由金额 一分不变(¥48.9713 / ¥10.5830 / ¥0.523)——也就是这次修正没有动到本来就正确的部分。

默认表按 DeepSeek 官方定价 的高峰价 填写,单位是人民币元 / 百万 token——因为 DeepSeek 账号本身以人民币计费、余额也按人民币变动。 非高峰由 offPeakMultiplier: 0.5 折半(官方非高峰价为高峰价的一半):

{
  "deepseek-official/deepseek-flash": { "label": "DeepSeek-V4.1-Flash", "input": 2, "cacheRead": 0.04, "output": 8 },
  "deepseek-official/deepseek-v4-pro": { "label": "DeepSeek-V4-Pro", "input": 9, "cacheRead": 0.3, "output": 27 }
}

为什么默认是人民币,而不是美元:这是实测踩到的坑。DeepSeek 的官方文档同时给出美元价 (Flash 高峰 $0.3 / $0.006 / $1.2)。早期版本照抄美元价、currency 写 $,于是同一个 会话显示 $1.1262,而平台余额实际扣了 ¥9.06——看起来像"统计少了一个数量级",其实是 币种错了,而且因为不能拿中美汇率当 1 用,误差正好是汇率倍数。把单价表和 currency 都 换成账号自己的人民币口径后,同一个会话算出 ¥4.9610,与平台对得上。

如果你的账号是美元计费(或你想看美元),把 rates 换成美元价、currency 换成 {"symbol":"$","code":"USD","perUsd":1} 即可——两处必须同时改,只改一个就会差一个汇率。

高峰时段(官方脚注):周一至周五 01:00–04:00 与 06:00–10:00 UTC, 不含中国法定节假日——节假日全天按非高峰。窗口是规则,节假日是日历,所以后者是 offPeakHolidays 数据:内置 2026 年清单,每年 11 月国务院公布次年安排后需要更新 (不更新只会把工作日节假日按高峰算,即偏高,不会偏低)。留空就用内置清单,填了就完全替换。

这个窗口只对峰谷价的模型生效(键名含 deepseek,或显式 peakPricing: true); 固定价模型不看时间,也就不会因为节假日/时段变化而算错。offPeakHolidays 与 offPeakTimezone 只在前者身上起作用。

价格会变,请以官方页面为准自行更新。