dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DSH 用量统计插件:按工作区/会话/时段/模型统计 token 用量与 DeepSeek 费用。 / Track DSH token usage and DeepSeek cost by workspace/session/period/model.
ui-usage-stats 是 DSH Web 客户端的“用量统计”插件。它在“设置”页面中新增“用量统计”页面,按 工作区 → 会话 → 时段 → 模型 展示 token 用量与费用,并提供每一层的总计、会话类型筛选、分叉去重、持久化缓存和增量计算能力。
如果你已安装 dsh CLI,可以按项目官方教程使用 dsh plugin 命令安装:
# 从本地插件目录安装
dsh plugin --profile web add C:/Users/<user>/.dsh/plugins/ui-usage-stats
# 或从 GitHub 仓库安装
dsh plugin --profile web add github:xiyue718/dsh-ui-usage-stats
安装后启动:
dsh --profile web
查看组合配置:
dsh --profile web --dump-config
详细命令说明见项目文档:docs/user/develop/basic/publish.md。
构建产物:host 为自包含的 lib/index.js,client 为 lib/client.js,打包文件为 dsh-external-ui-usage-stats-0.1.0.tgz。
安装前先构建一次:DSH_CHECKOUT=<dsh 源码 checkout> bash scripts/build.sh。官方渠道把插件装进 profile 后,宿主只从插件自身目录解析运行期依赖,所以 host 半由 tsdown 打包成自包含模块(内联 schemastery、zod 与 @deepseek-ai/dsh-* helper);未打包的 lib/index.js 会让该行以 failed to import 停用。
GET /user/balance 查询账户余额,展示币种、总余额、赠送余额和充值余额。.00,也不改动项目核心文件seedLength 前缀聊天记录不会重复计入,只统计分叉后自己产生的用量。按照 DeepSeek 官方峰谷定价,高峰时段为北京时间 9:00-12:00、14:00-18:00,其余为空闲时段。周六和周日全天执行谷价(空闲时段),不再设置峰价。
| 模型 | 时段 | 百万 tokens 输入(缓存命中) | 百万 tokens 输入(缓存未命中) | 百万 tokens 输出 |
|---|---|---|---|---|
| deepseek-v4-flash | 空闲 | 0.05 元 | 1.5 元 | 4.5 元 |
| deepseek-v4-flash | 高峰 | 0.10 元 | 3.0 元 | 9.0 元 |
| deepseek-v4-flash-vision-exp | 空闲 | 0.05 元 | 1.5 元 | 4.5 元 |
| deepseek-v4-flash-vision-exp | 高峰 | 0.10 元 | 3.0 元 | 9.0 元 |
| deepseek-v4-pro | 空闲 | 0.15 元 | 4.5 元 | 13.5 元 |
| deepseek-v4-pro | 高峰 | 0.30 元 | 9.0 元 | 27.0 元 |
费用公式:
费用 = 未命中缓存 tokens / 1_000_000 × 未命中单价
+ 命中缓存 tokens / 1_000_000 × 命中单价
+ 输出 tokens / 1_000_000 × 输出单价
未在上表中的模型显示费用为 0。
GET /@dsh-external/ui-usage-stats/api/stats
GET /@dsh-external/ui-usage-stats/api/filters
POST /@dsh-external/ui-usage-stats/api/filters
GET /@dsh-external/ui-usage-stats/api/balance
插件由 host 和 client 两部分组成。
Host 侧通过 sessionPersistence.readRaw 或 sessionQuery.readSession 读取会话日志,只关注 assistant/message 事件中的模型 usage 数据,按模型和高峰/空闲时段聚合未命中缓存、命中缓存、输出 tokens,再根据 DeepSeek 官方价格计算费用。高峰时段为北京时间 9:00-12:00、14:00-18:00;周六和周日全天按空闲时段计价。分叉会话通过 header.seedLength 跳过继承自原会话的聊天记录,避免重复统计。
余额查询通过 DeepSeek GET https://api.deepseek.com/user/balance 实现,API Key 从项目凭证服务读取 DEEPSEEK_API_KEY,响应中的 balance_infos 会映射为页面顶部的余额展示。
统计结果会以会话为单位缓存到 storage domain,缓存键为会话的持久化 revision;请求 /api/stats 时,只有 revision 变化的会话会重新读取日志并计算,未变化的会话直接复用缓存。多个会话使用并发数为 4 的 mapLimit 并行处理。最后按工作区路径分组,并按最近活动时间排序返回树形结果。
Client 侧渲染“用量统计”页面,调用 /api/stats 获取数据,按工作区、会话、时段、模型逐层展示,并提供折叠、总计、会话类型筛选和刷新操作;页面顶部调用 /api/balance 展示余额。聊天窗口中的百分比修正由插件侧组件读取 tokenUsage 投影计算后显示为两位小数。