dsh-cost-meter-modeltip
Verifieddsh-cost-meter-modeltip · v1.0.1 · MIT · Web UI
DeepSeek Harness read-only companion for dsh-cost-meter: a sidebar row that splits today's cost per provider:model, hovering for the full breakdown. Reads the main plugin's in-memory statistics when available so numbers track it exactly; never writes the
Install
dsh plugin add dsh-cost-meter-modeltip Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-cost-meter-modeltip
中文 | English
dsh-cost-meter 的只读伴生插件:在 DSH 侧边栏自有一行「今日按模型」,鼠标悬停即可看到今日费用按 provider:model 的完整拆分——不用点、不跳页、不占侧栏空间。
今日按模型 · zai:glm-5.3 ¥49.4691
└─ 悬停展开:
今日按模型 · ¥115.2362
zai:glm-5.3 ¥49.4691 · 43%
deepseek-account:deepseek-flash ¥34.5625 · 30%
zai:glm-5.3-flash ¥29.6817 · 26%
deepseek-official:deepseek-flash ¥ 1.3437 · 1%
为什么需要它
主插件的「今日 ¥…」合计是默认显示的数字,但不区分模型——多厂商混用时(DeepSeek 官方 / DeepSeek 账号 / GLM / Kimi / OpenRouter…)很容易被读成“全是 DeepSeek 花的”。设置页的「按模型统计」要跳页,v1.7.25 的「模型花费卡片」默认关闭且占侧栏空间;这个伴生插件补的是默认可见数字的语义。
特性
- 只读:从不写主插件的账本或配置,不持有锁、不产生重复入账、不占用任何服务/RPC 名字空间,只有一条同源只读 GET 路由;
- 与主插件数字完全一致:优先读主插件内存统计
getBillingStatistics(零落盘延迟、同口径);统计接口异常时自动回落为只读账本文件(最多落后 2 秒的落盘防抖);可用source: file强制严格零副作用; - 随主插件自动开关:主插件停用 → 这一行自动隐藏;重新启用 → 自动恢复,无需重启;
- 零依赖、无构建:宿主与客户端各一个纯 ESM 文件,Node 20+ 直接跑;
- 显示口径(币种/符号/小数位/汇率/是否含订阅)全部沿用主插件配置,金额一字不差。
安装
# 在 DSH 里安装(把 <profile> 换成你的 profile 名,桌面版通常是 desktop)
dsh plugin --profile <profile> add dsh-cost-meter-modeltip
# 或从本地 tgz
dsh plugin --profile <profile> add file:./dsh-cost-meter-modeltip-1.0.0.tgz
首次安装不需要重启 DSH:装载器会即时挂载新插件,侧边栏马上出现这一行。 但更新已装载插件的代码需要重启一次 DSH(宿主按模块 URL 缓存已 import 的代码)。
要求
- DSH ≥ 0.1.0-rc.5,且已安装并启用
dsh-cost-meter(本插件是它的伴生,不独立记账); - Node ≥ 20(仅宿主端运行需要,浏览器端无要求)。
配置
# <profile>/cordis.patch.yml(通常无需改动,默认值即可)
- id: cost-meter-modeltip
config:
source: 'auto' # auto(默认)=内存统计优先,异常回落文件 | service=总是内存 | file=严格零副作用
ledgerPath: '' # 留空 = $DSH_HOME/storages/cost-meter/ledger.json
新鲜度
| 数据路径 | 延迟 | 说明 |
|---|---|---|
| 内存统计(默认) | ≈ 0 | 与主插件同源同口径;其内部 refresh() 会把主插件本来就要落盘的数据提前落一次盘 |
账本文件(source: file) |
≈ 2s | 主插件 scheduleWrite 的落盘防抖,这是文件只读的地板 |
客户端 1.5s 轮询一次:页面不可见时不轮询、切回立即复查、悬停立即刷新、数据没变不重渲染。
行为细节
- 只统计今日(宿主机本地时区日键);模型按费用降序,最多 6 条,附占比;费用口径跟随主插件(默认 API 轨,
showTotalWithPlan: true时为含订阅总额); - 只有 1 个模型时整行不渲染(没有歧义,不占版面);
- 主插件停用(或账本读不到)→ 这一行自动隐藏,不留「孤儿」数字;
- 侧栏收起(rail,56px)时只显示金额。
卸载
dsh plugin --profile <profile> remove dsh-cost-meter-modeltip
与主插件自带「模型花费卡片」的关系
主插件 v1.7.25 起自带可折叠的模型花费卡片(设置 → 费用 → 模型花费卡片,默认关闭):点击展开、占侧栏空间、可显示 Top-N 与 token。两者不冲突:卡片适合主动查看,本插件适合默认数字的即时求证。上游合并类似交互后,本插件即可在面板中停用。
开发
npm test # node --test,零依赖,Node 20+ 直接跑
npm pack # 产物即安装包
本地热更新技巧:DSH 宿主按模块 URL 缓存已装载的插件代码,改完文件不会自动生效。把入口复制/改名为带版本号的文件(如 lib/index-031.js)并同步 package.json 的 main/exports,再到插件面板里关一下再开,即可免重启加载新代码。路由响应带 v 字段,可直接确认宿主装载的是哪一版。
MIT © Xinzhe99