前言¶
DSH 用久了,一次「继续」到底烧了多少钱,很容易失去感知。上下文一长,单轮的 token 量和花费就很难心算;dsh 本身有 token 用量面板,但要展开、要手算、还要自己记住今天是峰时还是谷时。维护者 inzia005 的 dsh-turn-cost 插件就是来做这件事的。
这是什么¶
dsh-turn-cost 是一个客户端 DSH 插件,维护者为 inzia005,当前版本 0.1.0,许可证 MIT。它在每条回复下面显示一行,内容为本轮花费、token 数、峰谷价,例如:
¥0.093 · 942k tok · 峰
鼠标悬停能看到明细,包含本轮 token、未命中输入、缓存命中率、输出、峰谷价、模型名,例如:
本轮 942k tok · 输入 4.9k · 缓存命中 931k(99%) · 输出 5.8k · 峰时价 · deepseek-flash
它解决的问题是「单轮成本不可见」:不需要展开用量面板,也不需要手算。
核心功能¶
下面介绍插件的记账口径,这是理解显示数字的关键。
- 计价为人民币、每百万 token,价格来源于 DeepSeek 官方定价页 https://api-docs.deepseek.com/zh-cn/quick_start/pricing。
- 显示分为一行摘要和悬停明细,明细里的分项都能对应到上面的价目表。
| 项 | 谷时 | 峰时 |
|---|---|---|
| 缓存命中输入 | ¥0.02 | ¥0.04 |
| 未命中输入 | ¥1 | ¥2 |
| 输出 | ¥4 | ¥8 |
- 峰时 = 北京时间「周一至周五 09:00–12:00、14:00–18:00」,其余时间(含周末)按谷时。
- 缓存写入(
cacheWriteTokens)按未命中输入价计,官方价目里没有单独的缓存写入档。 reasoningTokens是outputTokens的一部分,不重复累加。- 模型名带
pro的按 Flash 的 3 倍计价。 - 内置的节假日判断只按周末简化,没有内置法定节假日表:遇到法定节假日会按工作日峰谷规则算,比实际略高一点。
安装与启用¶
README 给出的安装命令如下。第一条从 GitHub 安装,第二条从本地目录安装:
# 从 GitHub
dsh plugin --profile desktop add github:<你的用户名>/dsh-turn-cost
# 或本地目录
dsh plugin --profile desktop add /绝对路径/dsh-turn-cost
安装完成后需要重启桌面端,因为宿主半边要重新加载插件。
典型用法¶
装好并重启后,插件无需额外配置。对话过程中每条回复下方自动出现一行成本信息,鼠标悬停即可看到明细。安装完成后没有可写的配置文件,也没有手动命令需要执行。
工作原理¶
插件分两半。
- 宿主半边
lib/index.js:订阅session/event,把每个(会话, 轮次)的assistant/messageusage 累加起来(缓存读、未命中输入、缓存写、输出分开记),按轮次结束时间判断峰谷并换算成人民币,通过GET /dsh-turn-cost/turn.json?turn=&seq=暴露查询接口。用seq做首选键,避免两个会话恰好有同一轮次号时串账。 - 浏览器半边
lib/client.js:往conversation.chat.turnTail槽位注册一个组件,每条回复下方渲染那一行字,数据全部来自上面的接口,不在浏览器里重复算价。
适用场景与注意¶
适合希望在对话流里直接看到单轮成本、而不是反复展开用量面板的开发者。需要注意几点:
- 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证(MIT)。
- 只统计插件加载之后发生的轮次,不回填历史对话。
- 记录在内存里,进程重启就清空。
- 判断峰谷用本机时钟换算 +8 小时的北京时间,不校验系统时区是否正确。
- 隐私上只读 dsh 自己的会话事件里的 usage 数字,全部计算在本地,不联网、不上传、不写文件;路由只在本机 web server 上监听,不对外暴露。
结尾¶
dsh-turn-cost 的价值在于把单轮成本压缩成扫一眼就能读的一行,省掉展开面板和手算的步骤。目录页:https://www.skillhub.cn/plugins/inzia005/dsh-turn-cost,源码:https://github.com/inzia005/dsh-turn-cost。