dsh-tidewatch: DeepSeek Peak and Valley Tiers and Session Cost Floating Badge

前言

DeepSeek 自 2026-08-17 起实施峰谷分时定价,谷期价格只有峰期的一半。同样的任务放在峰期跑,成本就是谷期的两倍。麻烦在于,写代码的时候你未必记得当前处于哪个档位,DeepSeek Harness(下称 DSH)的 web 界面也没有现成的地方显示档位和本次会话花了多少钱。

DSH 的理念是「一切皆插件」,这类展示层的缺口正好交给插件来补。下面介绍的 dsh-tidewatch 就是这样一枚徽章:悬浮在输入框旁,显示峰谷状态、倒计时和会话花费。

这是什么

dsh-tidewatch 由 KhalilYamber 维护,MIT License,当前版本 1.0.6,在 package.json 中归类为「费用 / Web UI / 观测」。一句话定位:DeepSeek 峰谷时刻悬浮徽章——一张悬浮在输入框旁的潮汐卡,显示此刻是峰期还是谷期、距下一阶段还有多久,以及本次会话的 API 花费(默认人民币)。

兼容性声明为 dsh >=0.1.0-rc.5、node >=20,surfaces 为 host、web:宿主侧负责统计,web 客户端负责展示。

核心功能

悬浮徽章

折叠态一行读完,状态点峰期橙红、谷期蓝绿:

● 峰期 距谷期 03:33 · ¥0.12

点击展开是完整面板:官方峰谷时段表(北京时间)、当前档位价格、本次会话 Token 明细、汇率/币种设置。再点击「本次会话费用」行,可展开分模型花费明细,各模型的 token 与花费分别列出,合计等于分模型之和。

位置与主题:徽章悬浮在输入框右侧、与输入框垂直居中;窄窗口放不下时自动移到输入框上方,不遮挡输入框与官方统计栏。配色跟随 GUI 亮/暗主题(--dsw-* 变量)。

计费口径

  • 按每次调用实际发生时刻的档位计价,跨峰谷切换不漂移;缓存命中/未命中分开计费
  • 价格单位为美元 / 1M tokens,成本 = 输入未命中 × cacheMiss + 输出 × output + (缓存读 + 缓存写) × cacheHit
  • 峰谷时代之前(2026-08-16 16:00 UTC)的调用按当时的基础价计费,保证历史正确性
  • 账本以美元存储,显示时按固定汇率 6.82 换算人民币(默认,与官方人民币标价口径一致),也可切换为直接显示美元;人民币 2 位小数,美元 4 位小数

峰谷时段表(官方依据)

时段(UTC) 北京时间 档位
01:00 – 04:00 09:00 – 12:00
04:00 – 06:00 12:00 – 14:00
06:00 – 10:00 14:00 – 18:00
10:00 – 次日 01:00 18:00 – 次日 09:00

谷期价格为峰期的一半。徽章按 UTC 窗口判定当前档位(官方口径),时段表展示按北京时间。另有周末规则(2026-08-23 起):周六/周日(UTC 自然日)全天按谷期计价,无峰谷切换,下一个切换点是下周一首次进入峰时。

安装与启用

需求:Node.js ≥ 20,以及带 dsh plugin 命令的 DeepSeek Harness 版本。先装插件,再重启 web 界面:

# npm 包安装(README 标注「发布后可用」)
dsh plugin --profile web add dsh-tidewatch

# 或本地目录(开发调试)
dsh plugin --profile web add link:./dsh-tidewatch

第一行从 npm 源安装;第二行把本地目录以链接方式接入,适合改代码调试。安装后重启 dsh web 生效。需要说明的是,npm 安装命令在 README 中标注为「发布后可用」,该包当前是否已发布未确认;拿不到包时,可先取得源码目录,再用 link: 方式从本地安装。

典型用法

1、重启 dsh web 后,徽章出现在输入框右侧,折叠态直接读当前档位、倒计时与会话花费;
2、点击徽章展开/收起详情面板:时段表、当前档位价格、Token 明细、币种切换(¥ / $),切换即时生效并被记住;
3、点击「本次会话费用」行展开分模型明细,核对各模型的 token 与花费。

如果要改这份代码,先做构建,再跑自检:

# 语法检查 + zod junction
DSH_CHECKOUT=<harness 源码根目录> bash scripts/build.sh

# 峰谷数学与计费自检(19 项,含双份常量一致性)
node test/verify.mjs

数据从哪来

模型调用 usage 块(assistant/chunk、assistant/message 事件)
  → lib/index.js:costUsage 会话投影(zod schema 校验)
  → token 桶 + 美元成本(按事件时刻峰谷档位)
  → useProjection('costUsage')(浏览器端)
  → lib/client.js:悬浮徽章渲染(秒级倒计时 + 汇率换算)

宿主侧的 lib/pricing.js 是纯函数集合(峰谷窗口、isPeakHour / peakPhaseAt、价格表、costOf),前端只在 lib/client.js 里做渲染。插件对外提供 projection:costUsage 会话投影,想把这份数据接进自己的面板可以直接复用;docs/PORTING.md 写了移植到其他宿主的适配说明。

适用场景与注意

适合在 DSH web 界面使用 DeepSeek、在意峰谷价差与成本观测的开发者。几点注意:

1、价格表内置(V4-Flash / V4-Pro 官方 2026-08-17 价),官方调价后需手动同步 lib/pricing.js(计费)与 lib/client.jsDISPLAY_PRICES(展示)两处常量;
2、时段判定固定按 UTC(官方口径),时段表展示按北京时间(UTC+8);
3、人民币显示是美元账本 × 固定汇率 6.82 的换算结果,与官方人民币标价口径一致,但不是实时汇率;
4、插件以当前 dsh 进程的权限运行,安装前应检查源码与许可证(MIT)。

小结

dsh-tidewatch 做的事不复杂:把官方峰谷时段、当前档位、倒计时和会话花费放进输入框旁的一张卡,省掉查时段表和心算的功夫。装上、重启、看徽章,三步可用。插件页面与源码:

  • 社区目录(独立站点,与 DeepSeek / 幻方无官方从属关系):https://www.skillhub.cn/plugins/KhalilYamber/dsh-tidewatch
  • GitHub:https://github.com/KhalilYamber/dsh-tidewatch
羽毛球分组比赛记分
小程序二维码

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

Xiaoye