前言¶
DeepSeek Harness(DSH)跑在本机,对话按 token 计费。默认 Web 界面里,你往往只能等到账单周期结束才知道总花费,很难对应到「哪一轮、哪一段长会话」最耗钱;上下文变长时,也缺少和每一轮回复绑在一起的占用提示。社区插件 dsh-turn-cost(维护者 xinshang777,分类:客户端)在每轮 assistant 回复旁,把时间戳扩展为「上下文百分比 · 本轮估算金额 · 原时间戳」,并按 DeepSeek 官方峰谷价目表做本地估算。下面介绍它做什么、怎么装、怎么用,以及适用边界。
这是什么¶
一句话:把「这一轮花了多少钱」变成回复时间戳旁的具体数字(如 ¥0.0123),并在金额前显示该轮结束时的上下文占用(如 28%),点击百分比可走 DSH 官方 command 触发 /compact。
- 目录页:skillhub.cn/plugins/xinshang777/dsh-turn-cost
- 源码与文档:github.com/xinshang777/dsh-turn-cost
- 当前版本:0.1.1(MIT)
- 宿主:已安装
@deepseek-ai/dsh,能跑起dsh web;Node.js ≥ 18
插件只展示、不拦截花费;数值是 token × 价目表的估算,不与官方账单对账。数据与账本均在本机,插件自身不发起外部请求。
核心功能¶
单轮费用¶
订阅 DSH 运行时产出的 usage 事件,经 lib/pricing.mjs 按事件时间判定峰谷,写入本地账本 ~/.dsh/dsh-turn-cost/turns.json,前端 assets/client.js 挂在原生时间戳同一节点上。默认只对 DeepSeek 系(provider 或模型名含 deepseek)计价;其他模型显示为 ¥0.0000,除非在配置里打开 priceUnknownProviders。
上下文占用与压缩¶
在金额前显示该轮结束时的上下文占用百分比(showContext 默认 true)。点击百分比数字,插件走官方 command 路径触发 /compact,等价于手动输入该命令;默认超时 120 秒(compactTimeoutMs)。
历史会话回填¶
启用 backfill(默认 true)时,利用 DSH 的 sessionPersistence 回填历史会话,切回旧会话时之前的轮次也可显示金额,峰谷仍按各轮事件发生时间计算。
显隐规则(对齐 DSH)¶
金额与原生时间戳共享同一套显隐规则:时间线最后一轮常显;其余轮次需鼠标移到该轮上才显示。这是刻意对齐 DSH 上游交互,不是缺陷。
安装与启用¶
前置条件¶
- Node.js ≥ 18
- pnpm(
dsh plugin的剩余参数会原样转发给 pnpm;缺则先npm i -g pnpm) - 已安装 DSH 且
dsh web可用 - 若主要用 DeepSeek 系模型,默认可直接看到非零金额
推荐:GitHub 直装¶
在终端执行:
dsh plugin --profile web add github:xinshang777/dsh-turn-cost
安装成功后,插件会登记进 profile 的 dsh.profile.bundles,无需手动改 bundle 配置。新装或卸载后须完整重启 dsh web;若浏览器里看不到金额,可先硬刷新(Ctrl + F5)。
三十秒验证¶
打开 dsh web,随便问一句。回复下方时间戳旁出现 ¥0.xxxx 即表示生效(最后一轮常显,其余轮 hover 可见)。
若仍无金额,依次检查:~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 是否含 dsh-turn-cost;是否完整重启过 dsh web;该轮是否为 DeepSeek 系模型。
本地开发、Download ZIP 等方式见仓库 README;改 profile 配置后需重启 dsh web;仅改 assets/client.js 时硬刷新即可。
典型用法¶
- 看费用:装完重启并刷新页面,正常对话即可;最后一轮金额常显,历史轮次 hover 查看。
- 压缩上下文:点击百分比(如
28%),等待/compact完成(默认最长 120 秒);若无效,先确认该会话手动敲/compact是否正常。 - (可选)调显示与账本:编辑
~/.dsh/profiles/web/cordis.patch.yml,在dsh-turn-cost的config:下调整。注意 profile 层config为整体替换,只写字段则其余回落插件默认值;改完需重启dsh web。
常用配置示例(字段含义见仓库 README 配置表):
# ~/.dsh/profiles/web/cordis.patch.yml 片段示意
dsh-turn-cost:
config:
showContext: true
priceUnknownProviders: false
backfill: true
ttlDays: 30
若希望所有轮次金额常显,可自行注入 CSS(代价是该轮所有操作按钮也会常显,与 DSH 默认不一致):
[data-actions-reveal=hover]:has([data-dsh-turn-cost]) .xzv4MW_actions { opacity: 1 }
适用场景与注意¶
适合谁¶
- 按量/按月计费,想看清哪一轮、哪段会话最烧钱
- 长会话,需要每轮旁的上下文占用提示
- 关心提问是否落在峰谷时段(按官方峰谷价估算)
- 常忘手动
/compact,希望点百分比即可压缩
不适合谁¶
- 包月订阅且完全不关心单轮开销
- 主要用非 DeepSeek 模型且不愿打开
priceUnknownProviders(默认不计价) - 需要预算封顶、拦截或精确对账官方账单——应使用服务商后台报表,本插件仅作趋势与异常参考
安全与权限¶
DSH 插件以当前 dsh 进程权限运行。安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,确认行为符合你的环境策略。账本与配置均在 ~/.dsh/ 下,卸载可用:
dsh plugin --profile web remove dsh-turn-cost
可选删除数据目录 ~/.dsh/dsh-turn-cost/。
已知限制¶
价目表为静态复制(README 说明复制自 dsh-whale-widget@0.3.15),官方调价后需手动更新 lib/pricing.mjs;节假日谷价表需按年维护。与 dsh-per-turn-isolation 等同开时,压缩后百分比语义变化属正常。
结尾¶
dsh-turn-cost 把 DSH Web 里每轮对话的估算费用和上下文占用拉到时间戳旁,并支持点击百分比触发 /compact,适合在本机 DSH 上细粒度观察 token 开销。社区插件目录独立于 DeepSeek / 幻方,并非官方应用商店。
- 目录页:https://www.skillhub.cn/plugins/xinshang777/dsh-turn-cost
- GitHub:https://github.com/xinshang777/dsh-turn-cost