Han-1413141 / dsh-cost-meter

Listed

DeepSeek Harness Session Cost Statistics & OpenCode Go Quota Display, DS Official Balance Display, Codex-like Token Heatmap Plugin: Current Session Cost, Daily Cost, Budget Limit Display, History Records, Peak/off-peak pricing hours display, Synced with Official Pricing

masterModelSession View source

Installation

npx -y @deepseek-ai/dsh plugin --profile web add github:Han-1413141/dsh-cost-meter

This installation command is an unverified starting point generated from the GitHub repository address.

README

Maintainer-authored documentation snapshot.

View on GitHub ↗
Commit 8e8d7dbSynced Aug 17, 2026

dsh-cost-meter

DeepSeek Harness 会话费用统计插件(界面中英双语)

本会话费用 · 当日费用 · OpenCode Go 订阅额度显示 · 预算与已用百分比 · 官方账户余额 · 历史记录 · 峰谷计价时段显示(UTC 01:00–04:00、06:00–10:00 为峰时段) · 官方价格一键同步 · 类 Codex Token 用量热图

version license dsh awesome · DSH plugin WhaleHarness audit

English | 中文


宣传图

功能总览

功能位置说明
本会话费用输入区下方 / 会话标题栏实时累计费用 + 输入/缓存/输出 token,位置可配
官方余额侧边栏顶部 / 设置页(可配)总余额 / 赠送 / 充值,自动刷新 + 手动刷新
OpenCode Go 额度侧边栏 / 设置页 / 右下角(dock,可配)滚动 5 小时 / 本周 / 本月用量百分比与重置时间,三档可分别开关,可同时显示预算已用%;Key 自动发现(DSH 凭据库 OPENCODE_GO_API_KEY / 环境变量 / opencode 登录态)或手动填写
当日费用侧边栏底部(设置按钮上方)「今日 ¥x」,悬停见调用次数与 token 明细
预算图框侧边栏底部(余额行与设置按钮之间)圆角方形图框:预算、已用%、进度条、今日费用与占预算%、已用/额度,≥80% 预警、≥100% 超支
汇总卡片设置页今日 / 本月 / 累计费用与调用次数
Token 用量统计设置页(费用设置)历史累计 token 总量(输入/缓存/输出/调用)+ 类 Codex 的 26 周每日用量方格热图,横向铺满设置页宽度,悬停见当日明细
今日会话明细设置页每个会话的调用次数、输入/缓存/输出 token 与费用
历史记录设置页按天汇总,保留天数可配(默认 180 天)
预算设置设置页顶部额度、周期(今日/本月/累计/自定义日期区间)、已用%
价格表设置页每模型 谷时/峰时 两档价格(支持 input/output 简写,缓存价自动补齐),增删改自由
峰谷计价时段显示设置页 / 预算 / 今日费用显示 UTC 峰时段 01:00–04:00、06:00–10:00 与当前档位;峰时高价时段在预算与今日费用区域显示显著提示,可单独开关
官方价格同步设置页抓取解析官方定价页,一键应用
界面语言设置页 → 显示设置简体中文 / English / 跟随浏览器(自动);切换即时生效并自动保存
AI 价格同步提示词交给任意 AI 自主同步多模型、分时价格

双语界面

插件界面(会话徽章、侧边栏余额与预算图框、设置页全部文案)支持简体中文English:

  • 语言可选 简体中文 / English / 跟随浏览器(自动);
  • 默认「跟随浏览器」:自动探测浏览器语言(zh* → 中文,其余 → 英文),并把探测结果写回配置,服务端消息(余额查询、价格同步等)与界面语言保持一致;
  • 设置 → 费用 → 显示设置 → 界面语言 中切换,切换后整个插件界面即时生效并自动保存;设置页左侧的分节标签也随之切换(费用 / Cost);
  • 服务端返回的提示(余额刷新、官方价格同步、配置校验错误等)同样按当前语言输出。

图文演示

截图均取自真实 DeepSeek Harness 实例,默认以中文界面展示;插件界面本身中英双语,可在设置中切换为 English。

主页面

侧边栏底部(自上而下:官方余额 → 额度 / 预算图框 → 设置按钮):

侧边栏底部

  • 余额行显示官方开放平台总余额,悬停可见赠送/充值拆分;
  • 未启用预算时,该位置显示「今日 ¥x」徽章。

额度 / 预算图框三态(OpenCode Go 额度与预算各自独立开关,同款圆角图框;两者同时开启时自动合并为一张卡片,Go 在上、预算在下,细分隔线、各自保留预警色;「图框详细信息」开关可收起次要行,只保留 标签 + 已用% + 进度条):

仅 OpenCode Go 额度仅预算两者合并
仅 Go 额度仅预算合并卡片
  • 预算图框显示「预算 · 已用% · 进度条 · 今日费用与占预算% · 已用/额度」,≥80% 预警、≥100% 超支;窄栏(rail)模式收窄为百分比方块;
  • 峰谷计价时段显示 UTC 峰时段 01:00–04:00、06:00–10:00 与当前档位;当前处于 DeepSeek 峰时高价时段时,预算框与今日费用区域显示「当前为 DeepSeek 峰时高价时段,按峰时价计费」显著提示;可在设置中单独关闭,rail 窄栏不显示;

峰时高价时段提示:

侧边栏峰时提示设置页峰时提示开关
侧边栏峰时提示设置页峰时提示开关
  • 提示遵循 peakEnabled / peakEffectiveAt / peakWindows 门控,按 UTC 峰时窗口显示;

  • 设置 → 费用 → 峰谷计价 下可单独开关「峰时高价时段显著提示」;

  • 配图展示侧边栏今日费用、预算框和设置页开关三处效果。

  • Go 图框按主档位(默认滚动 5 小时,可在显示设置切换周/月)显示已用% 与进度条,下方一行展示其余两档与重置时间:

窄栏 rail

右下角(dock)额度 / 预算 chips(显示设置中开启,四项独立开关:5h / 周 / 月额度 + 预算已用%):

右下角 chips

本会话费用(两个位置,可在设置中切换):

输入区下方会话标题栏
会话 dock会话标题栏

上图:本会话 ¥5.5939 · 输入 321K · 缓存 119M · 输出 235K;右图:标题栏徽章「费用 ¥6.1606」(真实会话截图)

会话页

设置 → 费用

概览(OpenCode Go 额度 → 预算 → 余额 → 汇总卡片 → 今日会话 → 历史记录 → 显示设置 → 价格表 → 数据与同步):

设置页

OpenCode Go 额度面板(设置页最顶部:三档进度条,主档位高亮,手动刷新;未订阅时为中性提示,可一键关闭):

Go 额度面板

预算面板(含自定义日期区间):

预算

余额面板(总余额/赠送/充值 + 手动刷新):

余额

显示设置(Go 主档位与 Key、右下角 chips、图框详细信息等):

显示设置

汇总卡片:

卡片

Token 用量统计(历史累计总量 + 类 Codex 的 26 周方格热图,横向铺满设置页宽度;无用量日为半透明玻璃格):

Token 用量统计

今日会话 / 历史记录(输入、缓存、输出 token 分列):

今日会话 历史记录

价格表(谷时/峰时两档,支持 input/output 简写,美元 / 1M tokens):

价格表

数据与同步(配置即时自动保存 + 官方价格同步 + 清除历史):

同步

安装

需求:Node.js ≥ 20 + DeepSeek Harness(带 dsh plugin 命令的版本,npm install -g @deepseek-ai/dsh)。

一键安装(推荐)

PowerShell 一键脚本(复制整行粘贴回车;自动补齐 pnpm、自动探测 git,无需克隆仓库;安装链固定到发布 tag v1.4.0,建议先下载审阅再运行):

irm https://raw.githubusercontent.com/Han-1413141/dsh-cost-meter/v1.4.0/install.ps1 | iex

或直接命令行(机器上需已有 pnpm 与 git;同样固定到 tag):

dsh plugin --profile web add github:Han-1413141/dsh-cost-meter#v1.4.0

没有 git 时可用 GitHub tag 打包直链:

dsh plugin --profile web add https://github.com/Han-1413141/dsh-cost-meter/archive/refs/tags/v1.4.0.tar.gz

安装后重启 dsh web(插件行、Typert 清单与客户端 bundle 均在启动时扫描):

dsh web

更新 / 卸载

# 更新:发布新版后用新版 install.ps1 重跑(脚本内固定版本随之更新)
dsh plugin --profile web remove dsh-cost-meter  # 卸载

开发者本地调试

git clone https://github.com/Han-1413141/dsh-cost-meter.git
cd <克隆目录的父目录>
dsh plugin --profile web add link:./dsh-cost-meter  # 符号链接,改 lib/client.js 后刷新页面即生效

计费规则

计费规则与峰谷计价

  • 价格单位与官方文档一致:美元 / 1M tokens;
  • 成本 = 未命中输入 × cache-miss + 输出 × output + (缓存读 + 缓存写) × cache-hit(缓存写沿用官方历史规则按命中价计费);
  • 纯峰谷两档计价(2026-08 起官方方案):峰时段(01:00–04:00、06:00–10:00 UTC)按峰时价,其余按谷时价(谷时价 = 峰时价的一半);基础档与谷时档同价,未启用峰谷时按谷时价计;设置页实时显示当前档位(峰时段/谷时段);当前处于峰时段时,预算与今日费用区域显示一行显著提示;
  • 历史计费正确性:2026-08-16 16:00 UTC(峰谷时代分界)之前的调用按当时的基础价计费,之后的调用按峰谷两档;
  • 账本金额恒以美元存储,币种/汇率仅影响显示(默认 1 USD = 7.2 CNY,可改);
  • 会话徽章与当日/月度/累计、预算一样,按每次调用的实际时刻精确计费(宿主导出的逐次成本);
  • 计费来源为每次模型调用的 usage 块(含子代理、压缩、标题等辅助调用),与账单口径一致;
  • 预算与超支提示仅提醒,不阻止调用

数据存储

  • 账本:$DSH_HOME/storages/cost-meter/ledger.json(原子写入 + 2 秒防抖;按 historyDays 保留,每日最多 200 个会话明细);
  • 所有设置修改即时自动保存(600ms 防抖),无需手动保存;
  • 删除账本文件即可清零,或使用设置页「清除全部历史」。

架构

架构与数据流

dsh-cost-meter
├── cordis.patch.yml        # bundle 补丁:向 web profile 插入 cost-meter 行
├── install.ps1             # 一键安装/更新脚本(irm … | iex)
├── .github/workflows/      # CI:install-smoke 一键安装冒烟验证
├── package.json            # dsh.bundle 补丁声明 + dsh.client 浏览器声明
└── lib/
    ├── index.js            # 宿主插件:llm/stream 计费包裹、costUsage 会话投影、
    │                       #   costMeter 服务(手写 typertRemote 绑定)、余额查询
    ├── pricing.js          # 官方价格表、官方页面 HTML 解析、峰谷计费数学
    ├── store.js            # 账本持久化与配置管理($DSH_HOME/storages/cost-meter)
    ├── typert.host.js      # ./typert 导出:Typert 清单(typert-loader 自动注册)
    └── client.js           # ./client 导出:浏览器单文件 bundle(徽章/图框/设置页)

数据通道:

  • 本会话费用:宿主注册 costUsage 会话投影(纯 token 桶 + 按模型拆分),浏览器经 useProjection('costUsage') 读取并按当前价格表计价;
  • 全局账本 / 预算 / 余额 / 配置:costMeter/getState | updateConfig | fetchPrices | refreshBalance | resetHistory,经 Typert 网关 RPC(remote.costMeter.*);
  • 余额:调用官方 GET {baseURL}/user/balance,复用模型请求的同一把 API Key(凭证服务/环境变量),进程内缓存按 refreshMinutes 过期。

插件不导入 cordis/dsh 的 Service/Context 运行时类(仅 Node 内建模块、zod、dsh-home-paths、dsh-credentials 的纯函数),与宿主共享同一运行时实例,无重复依赖风险。

官方价格同步原理

fetchPrices 抓取官方定价页(Docusaurus 服务端预渲染),解析:

  1. 基础价格表(转置布局:首行 MODEL + 模型 id,价格行标签后紧跟价格);
  2. 峰谷价格表(每模型两行:OFF-PEAK / PEAK);
  3. 生效时间(take effect at …)与峰时段窗口(Peak hours are …)。

解析结果写入价格表并持久化;页面结构变化时同步报错并保留原价格,可手动编辑兜底。

AI 价格同步

docs/AI-PRICE-SYNC-PROMPT.md(中文)与 docs/AI-PRICE-SYNC-PROMPT.en.md(English) 提供可直接复制给任意 AI 的提示词: AI 自主读取官方定价 → 输出多模型、分时(基础/谷时/峰时 + 生效时间)价格 JSON → 人工核对后应用(设置页 / RPC / 文件三选一)。适合官方价格变动时自主同步。

开发与验证

corepack pnpm install                                   # 依赖
node --check lib/index.js && node --check lib/pricing.js \
  && node --check lib/store.js && node --check lib/typert.host.js \
  && node --check lib/client.js                         # 语法检查
node test/verify.mjs                                    # 纯模块验证(解析/计费/账本/配置)
node test/mock-balance.mjs                              # (可选)本地余额接口模拟:3101
dsh --profile web --dump-config                         # 组合树校验
dsh --profile web --port 3099                           # 真机启动(观察启动日志与 UI)

已知限制

  • 官方页面解析依赖当前页面结构;改版后「从官方文档同步价格」会报错,可手动编辑价格表兜底;
  • 会话徽章按当前价格档位估算,精确费用以账本为准;
  • 价格同步会覆盖官方页面列出的同名模型价格,自定义模型条目不受影响;
  • 余额查询需要可访问 api.deepseek.com 的网络与有效 API Key;API Key 只会发往官方域名(baseURL 指向非官方域名时余额查询拒绝请求,模型请求不受影响);
  • OpenCode Go 额度接口为 opencode.ai 官方端点(社区文档);接口结构变化时设置页会显示错误,可在显示设置中关闭该显示;
  • 安装/更新插件后需重启 dsh web 生效。

更新历史

各版本更新总览与社区 issue 处理记录见 docs/UPDATE-HISTORY.md;逐条开发记录见 CHANGELOG.md

License

MIT © 2026 dsh-cost-meter contributors

Project files and signals

Shown items are public repository signals detected in the directory snapshot.

TestsDetected
DocumentationDetected

Repository information

Language
JavaScript
License
MIT
Latest release
v1.4.0
Last updated
Aug 17, 2026, 7:50 AM

Install deliberately

Review source code, permissions, lifecycle hooks, dependencies and network access. Test untrusted plugins in an isolated environment.