dsh-peak-hours
Sidebar badge that marks the current DeepSeek peak-pricing window (24-hour schedule bar, countdown, click to copy) plus a settings card that splits your logged usage into peak / off-peak tokens and compares what it actually cost against all-peak and all-off-peak.
같은 패키지 이름의 다른 저장소
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add dsh-peak-hoursdsh-peak-hours
一个 DeepSeek Harness 插件,做两件事:
- 侧栏角标:现在是不是高峰计价时段;
- 设置页卡片:把你自己的用量按高峰/空闲拆开,并算出「实际花了多少」对比「全在高峰 / 全在空闲要花多少」。

它显示什么
挂在侧栏底部动作行(sidebar.footer.action,「插件市场」下面),一行搞定三件事:
- 状态:橙点 = 高峰,蓝点 = 空闲;后面跟当前倍率(高峰
×2,空闲5 折) - 倒计时:还有多久切换(
3小时11分后转空闲) - 全天日程条:00:00–24:00 一条 8px 高的条,橙色段是高峰、蓝色段是空闲,白色竖线是当前时刻——一天里什么时候贵,一眼看全
侧栏折叠成窄轨时自动退化为「圆点 + 一小截进度条」,不占地方。
距切换不到 10 分钟时,倒计时会变成琥珀色加粗、圆点轻微脉冲,提醒你「要涨价了」或「要降价了」(系统开启减少动态效果时动画自动关闭)。
点一下角标(或聚焦后按 Enter / 空格)会把当前状态复制到剪贴板,例如
DeepSeek 高峰 ×2 · 3小时11分后转空闲(北京时间),方便贴给同事。
鼠标悬停能看到完整说明:当前段起止时间、明天是工作日还是休息、以及高峰/空闲的价格表。
计费规则
按 DeepSeek 的峰谷定价:
- 高峰:北京时间 09:00–12:00、14:00–18:00
- 空闲:其余时间(含午间 12:00–14:00、18:00 之后、09:00 之前)
- 整天空闲:周六、周日,以及中国的法定节假日
- 闲时价 = 高峰价的一半
节假日表是内置的,不联网:目前覆盖 2026 年(中秋 9/25–27、国庆 10/1–7)。2026 年 9/20(周日)和 10/10(周六)是调休上班日,按规则仍算空闲。表里没有的年份退化成「周末空闲」规则——这是保守选择:宁可把某天当成空闲(少标高峰),也不误报高峰;遇到新的节假日安排需要更新 client.js 里的 HOLIDAYS,tooltip 里显示的年份由该表自动推导。
时间一律按北京时间(UTC+8)算,和你浏览器的时区无关。
用量与费用对比(设置 → 通用)
除了角标,插件还在「设置 → 通用」里加了一行 高峰/空闲用量与费用对比(settings.general.item,排在「性能与用量」后面)。它读取本机 DeepSeek Harness 的会话日志,把每个请求按它发生的北京时间归到高峰或空闲,然后按模型价目表折算成钱:
- 三个区间:近 7 天 / 近 30 天 / 全部
- 三笔钱:实际花费(高峰按 ×2、空闲按 ×1)、假如全部落在高峰、假如全部落在空闲
- 省下的钱与比例:
¥68.49 · 35.5%这样 - 用量拆分:高峰 token、空闲 token、合计、高峰占比,配一条橙/蓝比例条
- 分模型:前四个模型各自的 token 与费用
口径与限制(重要,也是诚实的地方):
- 只统计能对上 DeepSeek 价目表的模型(
deepseek-flash按 flash 价、deepseek-v4-pro/ reasoner 按 pro 价);其他供应商(claude、gpt、qmodel 等)只计 token、不计入费用,并在说明里单独标注 - 价目表同样内置在
lib/schedule.js(元/百万 tokens,空闲→高峰):flash 命中 0.02→0.04、未命中 1→2、输出 4→8;pro 命中 0.15→0.30、未命中 4.5→9、输出 13.5→27 - 同一
turn+step的多次采样按最后一次算(会话流式输出会反复覆盖同一步的用量),不会重复累加 - 数据来自本机会话日志
~/.dsh/sessions///session.v4.jsonl.zstd,只在本地读、不外发;解析结果按文件大小与修改时间缓存到~/.dsh/storages/peak-hours/cache.json,第二次打开是毫秒级 - 用量接口也有 60 秒 TTL,卡片上的「刷新」会跳过缓存重新扫一遍
安装
从 npm:
dsh plugin --profile web add dsh-peak-hours
从本地目录:
dsh plugin --profile web add /绝对路径/dsh-peak-hours
装完刷新页面(或重启 dsh web)即可生效。
卸载
dsh plugin --profile web remove dsh-peak-hours
兼容性
- 需要带客户端 UI 的 DeepSeek Harness Web GUI(
dsh.client声明为platform: web) - 客户端 + 一个只读的 host 半:host 半注册一条
GET /dsh-peak-hours/api/usage,读取本机会话日志算峰谷账,不发任何网络请求;除~/.dsh/storages/peak-hours/cache.json这一份解析缓存外不写文件,不需要任何配置或凭据 - 角标部分纯客户端,不依赖 host 半;即使 host 半取数失败,角标照常工作
- 颜色是固定值(高峰
#f59e0b、空闲#4d6bfe,即 DeepSeek 品牌蓝),不跟随主题brand-primary,以免换皮肤后蓝色被改成别的色
开发
npm test # 24 个单元测试(node --test,零依赖)
npm run verify # npm pack --dry-run,检查发布清单
测试分两块,全部零依赖、不用起 GUI:
test/schedule.test.mjs:通过vm加载client.js,用最小的 React / locale / document 替身渲染角标,验证时段边界、日程条分段与宽度、游标位置、折叠态、复制与中英文 key 对齐test/usage.test.mjs:直接测 host 半的lib/schedule.js与lib/usage.js,用合成事件验证窗口判定、节假日、模型分类、价格公式、turn+step替换语义、按日+小时+模型分桶、峰谷费用对比与区间过滤
设置页卡片还有一个独立的 headless 渲染检查(真实接口数据 + 最小 hooks 替身),确认取数成功后不会渲染崩溃。
许可
MIT