DSH 插件:dsh-turn-cost —— 在输入框下方与对话尾部显示人民币花费

DSH 的界面通常显示 token 统计(如“71 步·257 tok/s”),但缺少“花费”这一项。dsh-turn-cost 通过注册一个只读的会话投影,读取 usage 事件,按价格表换算成人民币,在输入框下方和每轮回复尾部显示金额。

是什么

这是一个 DSH 客户端插件。它不修改 DSH 源码或样式,通过注入 turnCost 会话投影,从事件流中提取 token 消耗,结合价格配置计算金额。

核心功能

  1. 输入框下方统计药丸
    在 DSH 原有的统计药丸中追加一个,显示累计花费。
    文本形如:本轮 ¥0.42 · 本对话 ¥3.17。
    悬停可查看详细的四个 token 桶数据。

  2. 每轮回复尾部徽章
    在每个回合的动作条(与复制、点赞按钮同排)显示该轮花费。
    文本形如:本轮 ¥0.42。

  3. 峰谷计价支持
    读取账本配置中的 peakEnabled、peakWindows 等字段,支持按 UTC 时段区分峰谷价格。

  4. 内置兜底计价表
    当无法读取 dsh-cost-meter 账本时,使用代码中硬编码的 DeepSeek deepseek-flash 档位作为兜底。

安装与启用

前提:Node.js ≥ 18,本地已安装 DSH。

  1. 克隆仓库
    git clone https://github.com/CHIP-PHILO-GH/dsh-turn-cost
    cd dsh-turn-cost
  1. 放置插件
    将该目录作为插件放入 DSH 的 profile 插件目录,例如:
    $env:DSH_HOME\profiles\node_modules\dsh-turn-cost
    (未设置 DSH_HOME 时默认为 ~/.dsh)

  2. 加载与重启
    插件通过 cordis.patch.yml 自动注册 loader。安装后重启 dsh web 即可生效。

    重启后宿主端会打印一行自检日志:

    [dsh-turn-cost] 已加载,计价:¥ 小数 4 位,汇率 7.2

配置项

插件没有独立的配置文件。它读取 DSH 的 dsh-cost-meter 账本配置。

配置路径:
<DSH_HOME>\storages\cost-meter\ledger.json

需要读取的字段(其余忽略):

键 类型 缺省值 说明
symbol string ¥ 金额前缀
decimals number 4 显示小数位
exchangeRate number 7.2 美元到人民币汇率
peakEnabled boolean false 峰谷计价开关(必须严格等于 true 才生效)
peakEffectiveAt string 无 峰谷生效时刻,交给 Date.parse 解析
peakWindows array [] 峰时段窗口,单位是 UTC 小时
prices.models object {} 模型 id → 单价记录
prices.default object 兜底单价 模型未登记时使用

单价记录的字段:
- cacheHit:缓存命中价(缓存读取与写入均使用)
- cacheMiss:未命中输入价
- output:输出价
- offPeak / peak:可选,非峰/峰时段档位

注意:配置在插件加载时读取一次。修改账本后必须重启 dsh web 才能生效。

计价依据

计算公式(单位:美元 / 1M tokens):

美元成本 = (未缓存输入 × cacheMiss + 输出 × output + (缓存读取 + 缓存写入) × cacheHit) / 1,000,000
人民币   = 美元成本 × exchangeRate

当 ledger.json 不存在、读不了或格式不对时,插件不会报错,而是使用内置兜底表(对应 DeepSeek 官方 deepseek-flash 档):
- 缓存命中(含读写):0.0028
- 未命中输入:0.14
- 输出:0.28

适用场景与注意

  • 估算而非账单:显示值是估算,价格依赖账本。如果账本价格与实际合同价不同,显示值可能不一致。
  • 只统计四个桶:只统计 usage 的四个 token 桶,其他计费项不计入。
  • 缓存写入按命中价:与 dsh-cost-meter 对齐,缓存写入使用 cacheHit 价格。
  • 插件权限:插件以当前 DSH 进程权限运行,安装前建议检查源码与许可证。

总结

dsh-turn-cost 通过简单的投影和 DOM 注入,解决了 DSH 缺少成本统计的痛点。它支持峰谷计价,并提供内置兜底,适合需要精细化控制单轮对话成本的 DSH 用户。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜