前言¶
在 DSH Web GUI 里,自带的 stats pills 会汇报 token 与上下文占用,但不会把用量换算成钱。开发者往往还要自己查价目表、猜缓存省了多少钱,以及判断当前是否处于 DeepSeek 等提供商的峰时计价窗口。新接入的提供商若在配置里尚未录入费率,页面上也缺少明确提示,容易把「未定价」误当成免费。
下面介绍社区插件 dsh-session-metrics(维护者 mrdhira,分类为客户端)。它在输入框下方增加一条指标条,并与点击后的详情面板配合,回答「这场对话花了多少钱」「缓存相对 miss 省了多少钱」「当前小时是 peak 还是 off-peak」,同时刻意不重复 stats pills 已有的 token 总量、缓存命中率、上下文占比、轮次、步数或 tok/s。
这是什么¶
dsh-session-metrics 是面向 DSH Web GUI 的会话 cost 与 billing 指标插件:基于 Host 与 stats pills 相同的 tokenUsage 投影做解释,而不是第二套账本。Fresh install 自带 deepseek-account、deepseek-official、netra-runtime 与 openrouter 的费率卡;OpenRouter 仅对目录里标记为免费的模型(含 :free 后缀等)提供零费率,付费模型无卡时显示 unpriced,表示缺卡而非安装失败。
安装后还会注册 Agent Skill session-metrics,可向智能体询问本场花费、某模型是否已定价,或如何为已观测到的 provider/model 补费率卡。
- 目录页:https://www.skillhub.cn/plugins/mrdhira/dsh-session-metrics
- 源码:https://github.com/mrdhira/dsh-session-metrics(MIT,当前 package 版本 1.1.0)
核心功能¶
指标条(strip)¶
位于 composer 下方,默认展示 cost、saved 以及峰谷状态(带本地时间);当会话使用的提供商不是配置的 primary 时显示 provider;可配置 per-session 预算及预警进度。芯片顺序与显隐可通过 display.chips 调整(peak、time、cost、saved、provider、budget)。
详情面板(detail)¶
点击指标条可查看:按 cache-hit / miss / write / output 拆分的费用、缓存节省与混合费率、费率窗口与倒计时(峰谷按提供商时区解析,含节假日;详情打开时约每分钟刷新一次)、逐步费用、多模型切换时的分模型费用,以及各数字对应的投影来源。
定价语义¶
- 无费率卡的模型显示 unpriced,与「费率全零的真正免费模型」区分;未定价的一对不会渲染成数字。
- 费率单位为 USD / 1M tokens(
display.currency可选USD或CNY)。模型使用flat或带offPeak的peak之一;提供商无billing.windows时不显示 peak 芯片。 - 若在
cordis.patch.yml中自定义providers:列表,会替换内置卡而非追加;需自行补全用到的 provider/model,否则 Seen, unpriced 会列出缺卡的观测对。
安装与启用¶
插件通过 profile link 安装,未发布到 npm;构建产物为 lib/**(由 pnpm install 触发的 prepare 生成,勿手改)。环境要求:可编辑的 DSH profile(如 ~/.dsh/profiles/desktop)、Node.js 22+ 与 pnpm。Bundle 自行声明 Loader,一般无需改 cordis.patch.yml。
方式 A:install.sh¶
git clone https://github.com/mrdhira/dsh-session-metrics.git ~/.dsh/plugins/dsh-session-metrics
cd ~/.dsh/plugins/dsh-session-metrics
./install.sh # builds, registers in your profile, runs pnpm install
脚本支持 --profile <dir> 指定非默认 profile、--check 仅预览变更、--remove 注销。
方式 B:手动注册¶
1、克隆到稳定路径
git clone https://github.com/mrdhira/dsh-session-metrics.git ~/.dsh/plugins/dsh-session-metrics
cd ~/.dsh/plugins/dsh-session-metrics
2、构建
pnpm install
3、在 profile 的 package.json 中 link 并加入 bundles(路径改为本机绝对路径):
{
"dependencies": {
"dsh-session-metrics": "link:/Users/<you>/.dsh/plugins/dsh-session-metrics"
},
"dsh": {
"profile": {
"bundles": [
"dsh-session-metrics"
]
}
}
}
4、在 profile 目录安装依赖并重启 DSH
cd ~/.dsh/profiles/desktop && pnpm install
Host 侧变更需完全退出并重新打开 DSH(README 示例:⌘Q 后重开),仅刷新页面不够;纯 UI 变更可在插件管理器中切换 bundle。
验证¶
composer 下方应出现含 cost、saved 与峰谷指示的条带。若未出现:确认 lib/v1/index.js 存在;profile 的 package.json 在 dependencies 与 dsh.profile.bundles 中均包含 dsh-session-metrics;安装后已重启 DSH。出现 unpriced 芯片通常表示安装正常但缺对应费率卡。
配置与典型用法¶
新装默认可用内置费率卡,无需先改配置。图形化编辑:Plugins 侧边栏 → dsh-session-metrics。等价 YAML 片段示例(字段含义以 README 为准):
- id: session-metrics
name: dsh-session-metrics
config:
display: { currency: USD, primaryProvider: deepseek-account }
budget: { sessionUsd: 5, warnAt: 0.75 }
providers:
- id: my-router
models:
- model: some/model
rates: { flat: { cacheHit: 0.01, cacheMiss: 0.1, output: 0.25 } }
billing: { windows: [] } # no peak concept
| 配置项 | 默认 | 作用 |
|---|---|---|
display.currency |
USD |
显示货币:USD 或 CNY |
display.primaryProvider |
— | 会话使用该 provider 时隐藏 provider 芯片 |
display.chips |
all | 芯片种类与顺序 |
budget.sessionUsd |
off | 单会话预算上限,省略则关闭 |
budget.warnAt |
0.75 |
达到预算该比例时预警 |
完整费率格式与内置卡说明见仓库内 docs/pricing.md;各指标与投影对应关系见 docs/data-sources.md。
向已安装 skill 的 Agent 提问示例:「这场 session 花了多少」「某 provider/model 有没有定价」「如何为刚出现的未定价对加 rate card」。
适用场景与注意¶
适合长期在 DSH Web GUI 里跑多轮对话、需要把 token 用量对齐到账单、并关心 DeepSeek 类峰谷计价的开发者。插件与当前 DSH 进程同权限运行;安装前请自行审阅源码与 MIT 许可证,社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,属「一切皆插件」生态中的第三方扩展。
自定义 providers 会替换内置 OpenRouter 免费卡等默认配置,迁移时需逐项补卡。OpenRouter 付费模型故意不提供虚构单价;集成新提供商后若未录入费率,应依赖 unpriced / Seen, unpriced 提示补配置,而不是假设为零成本。
结尾¶
dsh-session-metrics 在不重复 stats pills 的前提下,把同一份 tokenUsage 投影解释为可读的 cost、savings 与峰谷状态,并可通过 GUI 或 cordis.patch.yml 维护费率与预算。需要细节时可查阅 GitHub 仓库 与 SkillHub 目录页。