dsh-usage-dash-board:在 DSH 设置里看本地用量与估算成本

前言

DeepSeek Harness(DSH)在每轮对话里会给出 token 明细,但缺少跨会话的汇总视图。想长期看消耗、请求数和缓存命中率,常见做法是装 cc-switch 等外部工具,通过解析本机会话日志来统计,额外多一个桌面应用,还要跟着 DSH 日志格式变化做维护。

下面介绍社区插件 dsh-usage-dash-board(维护者 sixzjd):在 DSH 设置 → 用量统计(英文界面为 Usage Statistics)里,用原生分区展示 token 消耗、总请求数、缓存命中率与按天趋势,数据全部来自本机会话日志,不联网、不上传、不需要 API Key。

这是什么

dsh-usage-dash-board 是 DSH 的客户端插件(当前 GitHub 星标 0,版本 0.4.2,MIT 许可)。它消费宿主公开的 ctx.sessionQuery 服务:会话日志的解压、排序与中断轮次平衡由 DSH 负责,插件只处理结构化事件,不做文件解析或格式猜测,因此不依赖 DSH 是否改动 $DSH_HOME/sessions 下的布局。

分类上属于「客户端」:浏览器半区挂载在设置页的 settings.section 插槽;宿主半区负责扫描、聚合、持久化与 HTTP 路由。

数据从哪来、怎么算

处理链路

durable session log
      │  ctx.sessionQuery.listSessions() / readSession()
      ▼
  事件流(已解压、已排序)
      │  assistant/message.usage  ▸ 覆盖同轮的 assistant/chunk
      │  request/header / request/context  ▸ 模型与供应商标识
      ▼
  按 (session, turn, step) 折叠成「一次调用」
      │  本地日历日分桶
      ▼
  日聚合 / 模型聚合 / 区间汇总 + 价格表计价
      │  GET /api/dsh-usage-dash-board/summary
      ▼
  设置页原生分区(settings.section slot)

一次调用只计一份用量:同一 turn:step 上,assistant/message 的最终 usage 替换流式 assistant/chunk,而不是相加;全零的重放事件也不会覆盖已记录的真实数字。

指标口径

token 桶遵循宿主 @deepseek-ai/dsh-llm 的 DISJOINT 语义:inputTokens 只含未命中缓存的输入,缓存部分在 cacheReadTokens / cacheWriteTokens。

指标 计算方式
消耗 token 输入 + 输出 + 缓存写 + 缓存读
总请求数 携带 usage 的调用次数(按 session:turn:step 去重)
缓存命中率 缓存读 ÷ (输入 + 缓存写 + 缓存读)

OpenAI 式协议不上报 cacheWriteTokens 时该项恒为 0,命中率分母同样不含它,属于上游字段缺失而非统计漏算。

核心功能

面板能力以 README 为准,主要包括:

区域 内容
顶部三张卡 消耗 token、总请求数、缓存命中率;点击可看构成明细
使用趋势 柱状图,可切 Tokens / 请求;默认按天,选「今天」或起止同一天的自定义区间时自动按小时
筛选 供应商、模型、时间范围(今天 / 近 7 / 30 / 90 天 / 全部时间 / 自定义);打开时默认近 30 天
请求明细 每次调用的时间、供应商、模型、token、费用
供应商 / 模型 分组聚合与占比
定价 可编辑价格表,按 USD / 百万 token 计四桶价格

趋势图 X 轴按日历日(或按小时视图的 24 时段)补齐,无数据日期显示为 0。「全部时间」起点为实际最早一条记录;无记录时退化为「今天」,仍按天展示。标题下会标抓取时刻(例如 · 数据更新于 15:27:45);面板不自动刷新,改筛选或点「刷新」才更新。

内置 DeepSeek 官方峰谷价(含中国法定节假日全天谷价),例如 deepseek-v4-flash、deepseek-v4-pro 的 in / out / 缓存读单价;峰时段为 UTC 01:00–04:00 与 06:00–10:00(对应北京时间工作日上午与下午峰段,法定节假日除外)。没有公开单价的模型标为「未计价」,可在「定价」里手工补价。

安装与启用

包尚未发布到 npm,安装命令以仓库 README 为准:

dsh plugin --profile web add github:sixzjd/dsh-usage-dash-board

发布后 README 说明可改用:

dsh plugin --profile web add dsh-usage-dash-board

安装后刷新浏览器页面即可。插件兼容 DSH >=0.2.0-rc.2 <0.3.0(见 package.json 中 dsh.compatibility)。

卸载:

dsh plugin --profile web remove dsh-usage-dash-board

典型用法

  1. 按上文命令为 web profile 安装插件并刷新页面。
  2. 打开 DSH 设置,进入 用量统计(Usage Statistics)。
  3. 用顶部筛选选择供应商、模型与时间范围;需要核对单次调用时查看「请求明细」。
  4. 估算成本与官方价不一致时,在「定价」编辑价格表(保存走受保护的写接口,需进程令牌)。
  5. 需要程序化核对汇总时,可请求宿主注册的 GET /api/dsh-usage-dash-board/summary(仅回环地址可访问;响应不含提示词与回复正文)。

部分供应商用路由别名暴露模型(如 Qoder 的 qfmodel)。插件可能读取 dsh-qoder-connect 在 $DSH_HOME/profiles/*/.dsh-qoder-connect/state/*-catalog.json 的模型发现缓存,仅用于显示名;分组、计数、筛选与计价仍按路由 id。可通过 summary 响应中的 catalog.aliasCount 判断是否解析到别名。

适用场景与注意

适合谁:长期在 DSH web 客户端里跑智能体、希望在本机汇总 token、请求数、缓存命中率并做估算成本,又不想依赖外部日志解析工具的用户。

运行边界:插件以当前 DSH 进程权限运行,会经 ctx.sessionQuery 读取全部列出的会话(不限于已注册工作区),并在 $DSH_HOME/storages 持久化价格表。安装前应自行查看 GitHub 源码 与 MIT 许可证。

务必知晓的限制(摘自 README):

  • 成本为按内置/手工价格表的估算值,不等于供应商账单。
  • Qoder 等按 credits 配额计费的路由,套用 USD 单价只是「等价 API 价」,不是实际支付金额;插件只做名称解析,不自动为别名填价。
  • 上游中断且缺少最终 assistant/message 时可能只保留 chunk 用量;完全没有 usage 事件则无法精确还原 token。
  • 缺少 request/header / request/context 时会话模型显示为 unknown。
  • 面板正文目前为中文,侧栏标签跟随浏览器语言。

HTTP 接口限制回环地址并拒绝跨站 Sec-Fetch-Site,写价格需进程令牌;响应仅含用量数字、模型标识与会话 UUID,不含提示词、标题或工作区路径。

结尾

dsh-usage-dash-board 把跨会话用量统计收进 DSH 设置页:基于公开 sessionQuery 接缝,本地聚合、可选定价,不依赖外网。社区目录页:skillhub.cn/plugins/sixzjd/dsh-usage-dash-board;源码与完整说明:github.com/sixzjd/dsh-usage-dash-board。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜