Lyoko-Jeremie/dsh-plugin-usage-insights ↗★ 0
dsh-usage-insights
在右侧栏展示Token用量与上下文指标 适合需要监控Token消耗、缓存命中率及费用明细的Web端用户。
同名包的其他仓库
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Lyoko-Jeremie/dsh-plugin-usage-insights说明文档
阅读完整 README ↗dsh-usage-insights · DSH 用量洞察
English | 简体中文
在 DeepSeek Harness Web 版的右侧栏里,查看每个对话的 Token 用量、上下文占用、会话指标,以及跨对话的用量汇总与峰谷费用。
这是一个纯展示插件:所有数字都来自 Harness 已经发布的会话投影,插件不写入会话日志、不新增模型可见内容、不上传任何数据。

功能
插件在右侧栏提供两个页面。
用量(当前对话)
- 会话概览:请求数、Token 总量、输入 / 缓存读 / 输出(缓存写仅在提供商上报显式缓存写入时显示)、缓存命中率、费用,以及峰谷比例(按 Token 与按请求各一行)。
- 缓存命中:三条横条分别显示本会话累计、当前回合、最近一步的缓存命中率。条形使用幂次刻度(
1-(1-r)^0.3)放大 90% 以上区间的差异,并带 50% / 90% / 99% 三档刻度尺与条内刻度线;百分比数字按状态着色:≥90% 绿色、70–90% 琥珀色、 官方没有提供「当前离线时段」的查询接口。DeepSeek 文档只以文字定义时段,账户接口也只返回余额,因此插件始终按请求开始时刻 + 北京时间规则 + 节假日日历在本地判定。
配置项参考
- insert:
- id: usage-insights
name: dsh-usage-insights
config:
stepHistory: 200 # 折叠保留的请求数(checkpoint 大小)
stepWindow: 200 # 下发给客户端的请求数(「显示全部」可看到)
bandDays: 90 # 每日聚合保留天数
compactionThreshold: 0.5 # 可选:读不到后端阈值时手动指定(0-1)
useBuiltinHolidays: true # 使用内置 2025-2026 节假日
holidays: [] # 额外放假日 YYYY-MM-DD
holidayRanges: [] # 额外放假区间 YYYY-MM-DD..YYYY-MM-DD
holidaySync:
enabled: false
urlTemplate: 'https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{year}.json'
years: []
timeoutMs: 4000
架构
Host(index.js)
├── usageSteps 投影:折叠 step/start + assistant/message + assistant/attempt
│ → 最近 200 个请求(时间、回合、模型、四桶、峰谷)
└── usageBands 投影:按天 × 时段 × 模型聚合(90 天 + 终身总量)
│ Harness 投影缓存 checkpoint(重开/重启恢复)
▼
Client(dist/client.js)
├── 「用量」页:读 tokenUsage / contextPressure / contextBreakdown / sessionStats / usageSteps / usageBands
├── 「用量汇总」页:读会话列表中的 usageBands 投影值
└── 输入框柱状图按钮:展开右侧栏并打开用量页
- Host 半只做投影折叠与节假日解析,不做任何 UI。
- Client 半不依赖任何
@deepseek-ai/*客户端包,只用平台基线(React)和自己的组件与样式。 - 不新增 Session 事件,不改变会话格式。
开发
npm install
npm run typecheck # TypeScript
npm test # Vitest:计价、峰谷、投影折叠、聚合、格式化
npm run build # 生成 dist/client.js(Harness module-loader 格式)
npm run verify:bundle # 在伪造 module loader 下校验注册面
npm run verify:render # 用真实 React 在 Harness 外渲染两个面板
npm run check # 以上全部
安装到本地 profile 后即可预览:
dsh plugin install /absolute/path/to/dsh-plugin-usage-insights
dsh web
目录结构:
index.js Host 半:注册投影、解析节假日、可选同步
src/host/ 投影折叠、节假日解析
src/shared/ 峰谷判定(Host 与 Client 共用)
src/client/ 注册、面板容器、展示组件、样式、文案
src/lib/ 纯函数:格式化、计价、聚合、视图派生
dist/client.js 构建产物(浏览器模块)
assets/ README 截图
已知限制
- 分步明细是窗口:每个会话的 Host 保留最近 200 条并全部下发给 Client,主/子合并后默认展示最近 30 条,可用「显示全部」查看窗口内所有请求;更早的请求只存在于会话日志中,聚合计数不受影响。
- 每日聚合保留 90 天,更早的天只计入终身总量。
- 2027 年及以后的节假日需要等国务院公告;可手动配置或开启自动同步。
- 极少数失败尝试(
assistant/attempt且此前没有成功消息)没有模型路由,按当前会话模型计价。 - 子会话作为独立对话计入汇总;主/子拆分见上文,团队与普通子代理无法在会话维度区分。
- 压缩摘要、标题生成等辅助模型调用不写入会话事件,因此不在用量统计内。
- 费用是基于配置价格的估算,不是官方账单。
隐私
- 所有计算在本地完成,插件没有遥测、不上传用量数据。
- 唯一可能的网络请求是可选开启的节假日数据同步,只请求公开的节假日 JSON。
致谢
- 价格与峰谷规则来自 DeepSeek 官方定价文档。
- 节假日数据来自
NateScarlet/holiday-cn。 - 计费与信息层级参考了 Reasonix 的实现思路。
License
价格配置
Harness 不提供货币计价,价格表由插件维护,位于 src/client/config.ts。内置的是 DeepSeek 官方价格(元 / 百万 tokens,读取于 2026-10-21):
| 模型 | 时段 | 缓存命中 | 缓存未命中 | 输出 |
|---|---|---|---|---|
deepseek-flash | 高峰 | 0.04 | 2 | 8 |
deepseek-flash | 空闲 | 0.02 | 1 | 4 |
deepseek-v4-pro | 高峰 | 0.30 | 9 | 27 |
deepseek-v4-pro | 空闲 | 0.15 | 4.5 | 13.5 |
修改价格后重新构建:
export const PRICING: PricingTable = {
currency: 'CNY',
prices: [
{ model: 'deepseek-flash', input: 2, cacheRead: 0.04, cacheWrite: 2, output: 8,
offPeak: { input: 1, cacheRead: 0.02, cacheWrite: 1, output: 4 } },
],
// fallback: { input: 2, cacheRead: 0.04, cacheWrite: 2, output: 8 },
}
npm run build # 重新生成 dist/client.js
计费公式参考 Reasonix:金额 = Σ tokens × 每百万单价,每个桶先取整到微单位再相加,避免浮点误差。单时段价格表只产生一个金额;峰谷双档价格表在缺少分步数据时产生区间(下界全按空闲、上界全按高峰),有分步数据时则按实际时段精确计价。
配置项参考
- insert:
- id: usage-insights
name: dsh-usage-insights
config:
stepHistory: 200 # 折叠保留的请求数(checkpoint 大小)
stepWindow: 200 # 下发给客户端的请求数(「显示全部」可看到)
bandDays: 90 # 每日聚合保留天数
compactionThreshold: 0.5 # 可选:读不到后端阈值时手动指定(0-1)
useBuiltinHolidays: true # 使用内置 2025-2026 节假日
holidays: [] # 额外放假日 YYYY-MM-DD
holidayRanges: [] # 额外放假区间 YYYY-MM-DD..YYYY-MM-DD
holidaySync:
enabled: false
urlTemplate: 'https://cdn.jsdelivr.net/gh/NateScarlet/holiday-cn@master/{year}.json'
years: []
timeoutMs: 4000