它做什么
dsh-cost-meter 是一个 web profile 客户端插件,用来统计 Harness 会话实际花掉多少钱。它在宿主的 llm/stream 路径上做计费包装,写入本地账本,并把数字渲染到侧边栏、会话徽章、输入区 dock 以及「设置 → 费用」页——界面中英双语。
对一个「费用计」来说功能面偏大,而且用户常搜的几项其实是相邻能力而非核心:
| 区域 | README 的声明 |
|---|---|
| 本会话费用 | 输入区下方或会话标题栏上的实时金额 + 输入/缓存/输出 token |
| 当日 / 历史 | 「今日」徽章、按天历史(默认保留 180 天)、安装前通过回放宿主会话日志导入历史 |
| 预算 | 额度 + 周期(今日 / 本月 / 累计 / 自定义区间),带 ≥80% / ≥100% 预警的进度图框——只预警,绝不拦截调用 |
| 官方余额 | 对 api.deepseek.com 的 GET {baseURL}/user/balance,复用与模型请求相同的 API Key;仅在你启用后才会请求 |
| 峰谷计价 | 官方两档时段(UTC 01:00–04:00、06:00–10:00 为峰;2026-08-23 起周末全天谷价)、时段条、切换前弹窗与可选系统通知 |
| 价格目录 | 内置 90+ 模型价格目录、模型 id 自动匹配、可编辑价格表、一键抓取解析官方定价页 |
| Coding Plan 额度 | 按厂商分别查询 Anthropic、Z.ai、MiniMax、Kimi、OpenRouter、SiliconFlow、CommandCode、SCNet、火山方舟(以及相关 Go / 千问路径) |
| 双轨计费 | 订阅渠道按目录价等值记账;预算与「今日」只计按量真金白银(issue #64) |
它不是计费代理,也不改变实际跑哪个模型。预算预警永远不会停止调用。在与官方账单核对之前,金额都只是估算——README 对分钟级滞后、reasoning token 列对不齐、USD/CNY 汇率差都写得很直白。
计费如何发生
来自 README 与 package.json 的架构声明:
- 宿主插件从纯 token 桶注册
costUsage会话投影(按模型拆分)。浏览器读取该投影,用当前价格表计价。 - 全局账本、预算、余额与配置走 Typert 网关 RPC(
remote.costMeter.*:getState/updateConfig/fetchPrices/refreshBalance/resetHistory)。 - 余额查询复用与模型请求相同的 API Key,进程内缓存按
refreshMinutes过期。 cordis.patch.yml向 web profile 插入一行cost-meter;package.json声明dsh.bundle.patch与dsh.client(platform: "web")。- 运行时依赖是 Node 内置模块加精确锁定的
zod@4.5.1,以及宿主提供的dsh-home-paths/dsh-credentials纯函数。作者声明从不 import Cordis/dsh 的 Service/Context 类,因此与宿主共享同一运行时。
计价数学(README「Billing rules」): 单位为美元 / 1M token;cost = 未命中输入 × cache-miss + 输出 × output +(缓存读 + 缓存写)× cache-hit;缓存写按官方旧规则记为命中价。峰谷档位锚定每次调用的发起时刻,而非完成时刻。账本始终存 USD;CNY 展示用可配置汇率(默认 1 USD = 7.2 CNY),除非把计价币种设为官方人民币页并直接按该表记账。
Plan 双轨: 订阅型渠道只记目录价等值。预算 / 今日费用 / 概览卡片默认只统计按量渠道;可用开关把所有金额切到「等值总成本」。Plan/API 分类由渠道与配置推断;混用厂商可按 provider:model 覆盖。
要求与安装
-
Node
>=20(来自engines)。客户端平台为web;os声明 darwin / linux / win32。 -
Harness 需带可用的
dsh plugin命令。声明兼容性为dsh.compatibility.dsh: ">=0.1.0-rc.5",并有dshReleases表把若干后续宿主标为 compatible,0.1.3-alpha.1为unknown。peer 依赖只有宿主提供的@deepseek-ai/dsh-credentials与@deepseek-ai/dsh-home-paths。作者的宿主检查记录(v1.7.x 文档)覆盖0.1.2-rc.1、0.1.3-alpha.2、0.1.5-alpha.1的安装/启动/模块共享。 -
安装 —— README 第一推荐路径是裸 npm 包名(无需特殊路径,也无需
install:字段):dsh plugin --profile web add dsh-cost-meter然后重启
dsh web。另有钉死 tag 的github:Han-1413141/dsh-cost-meter#v1.7.27、GitHub tag tarball、钉死 release tag 的 PowerShell 一行脚本,以及开发用的本地link:。运行任何远程安装脚本前请先审阅。 -
无安装期生命周期脚本。
package.json仅有build与test,没有preinstall/install/postinstall/prepare。运行时依赖是精确锁定的zod@4.5.1;两个 DeepSeek 包是 peer。发布files包含lib/、cordis.patch.yml与docs/provider-pricing.json。 -
安装或升级后必须重启
dsh web(插件行、Typert manifest 与客户端 bundle 都在启动时扫描)。 -
源码结构(master):宿主模块在
lib/(index.js、pricing.js、store.js、billing-stream.js、coding-plans.js、custom-balance.js等),浏览器源在src/client/,测试在test/,另有大量docs/与SECURITY.md。声明了会话修复 CLI bindsh-cost-meter-repair-sessions。
网络与数据
数据留在本地。 账本路径为 $DSH_HOME/storages/cost-meter/ledger.json(原子写入、2 秒防抖,受 historyDays 限制,每日约最多 200 条会话条目)。删除该文件或使用设置页「清空历史」可重置。设置自动保存;卸载插件会保留账本。安装/升级后的首次启动可能回放宿主会话日志以导入安装前历史(幂等;设置页可手动重跑)。
凭据不写入账本。 密钥(官方 API Key、Go key、各 Coding Plan key、火山 AK/SK、自定义余额的 {{VAR}} 占位符)从 DSH 凭据库解析。README 声明输入框 write-only、不回显、下发浏览器前抹掉密钥形态的请求头,并把旧版明文请求头密钥迁入凭据库。
出站流量按启用开关逐项发生。 未启用的厂商额度端点不会被请求。声明的权限主机包括 DeepSeek API/文档、Anthropic、Z.ai、MiniMax、Kimi/Moonshot、OpenRouter、SiliconFlow、CommandCode、中科曙光 SCNet、千问/阿里云、火山方舟,以及 Go 额度的 opencode.ai。官方余额硬锁定 api.deepseek.com;非官方 baseURL 会拒绝余额查询(不影响模型流量)。自定义余额是你自配的 HTTP(S):回环可走 http://,非回环强制 HTTPS;拒绝跟随重定向;带凭据的主机需命中 allowedHosts。价格同步会抓取官方定价页 HTML。
未记录遥测。 README、SECURITY.md 与发布清单都没有描述外发分析。未验证的部分:本条目没有第三方安全扫描或独立审计记录(security: unverified)。项目自己发布过 2026-08 代码审计与 CHANGELOG 里的高中危修复——那是作者披露,不是信任评级。SECURITY.md 是私漏洞报告策略加设计说明,不是外部鉴证。
已知限制
- 官方定价页改版会导致一键价格同步失败;回退是手工改表。
- 账本数据缺失时,会话徽章的回退估算可能把跨峰谷的会话估错档;精确金额以账本为准。
- Token Plan「每 1% / 满窗」数字是基于厂商整数百分比与本地采样的估算;同一 key 在其它机器/CLI 上的消耗对账本不可见。
- Plan 与 API 的分类是推断的;混用厂商可按
provider:model覆盖。 - 余额与额度接口依赖各厂商可用性与响应结构(OpenCode Go 端点依赖社区文档)。
- 未向宿主上报用量的 memory 或其它插件直连外部 API 时,无法被统计。
- 与官方账单对账:分钟级滞后是预期行为;reasoning token 由 API 单独上报且 DeepSeek 不计费,因此 token 列永远不会与官方三列对齐——请按金额核对。
- Star(303)与发版节奏不能替代外部安全审查。本条目为 L3(安装命令可解析、已声明目标版本)——不表示已在本机冒烟安装。
何时用 / 何时不用
适合你在 DSH 里跑 DeepSeek(或目录内的混合模型),需要会话级成本、预算可见性信号、峰时感知,或想在侧边栏看到 Coding Plan 额度而不离开 web UI 的人。相对「今日总额」小挂件,双轨账本与多厂商额度横条是选它的主要理由。
不适合指望它做消费强制、云端成本面板,或完全离线:每个启用的余额/额度源都是实时网络请求。只需要今日一个数字的话,这个插件的功能面明显过大;若不想要又一个设置页和凭据提示,可优先更轻的挂件。
FAQ
会因为超预算拦截调用吗?
不会。预算与超预算状态只是可视化预警;README 写明它们从不拦截调用。
API Key 会落到磁盘上吗?
设计上不会:密钥在 DSH 凭据库;账本与浏览器 state 只带占位符或空白。这是文档化设计与作者修复过的审计项——不能替代你自己检查发布 tarball。
支持查询哪些 Coding Plan 厂商?
README 与描述列出 Anthropic Claude Pro/Max、Z.ai/GLM、MiniMax Token Plan、Kimi、OpenRouter、SiliconFlow、CommandCode、SCNet Token Plan 与火山方舟(AK/SK 签名)。火山需额外 IAM 权限;SCNet 可用外部控制台快照或本地估算。请把厂商矩阵当作产品表面,而非「每个 adapter 永远跟得上厂商 UI」的保证。
价格同步会和官方账单完全一致吗?
不会自动一致。币种选择(USD / CNY 官方页)、USD 展示用的固定汇率、2 秒防抖的分钟级滞后、以及官方未计费的 reasoning token 列,都会造成小偏差。请按金额核对,不要按 token 列硬对——见 README 计费规则。
本地会话费用也需要 API Key 吗?
统计 DSH llm/stream 用量是本地行为,不要求调用 DeepSeek 余额接口。官方余额展示、Coding Plan 额度卡片与自定义余额条各自需要凭据,并且只在你启用该来源后才会请求。只要价格表已有价格(内置目录 + 可选官方同步),本地账本计算不需要网络。

