dsh-peak-guard:DeepSeek 峰谷时段守门员

前言

DeepSeek API 按北京时间划分高峰与空闲时段:工作日 9:00–12:00、14:00–18:00 为高峰,单价约为其余时段的两倍。在 DSH 里随手开一轮 Agent,若正好落在峰时,一轮多步对话的 token 会按高峰价累计。靠记忆或手动查定价页来避峰,容易漏;纯提醒又拦不住误触发送。

下面介绍社区插件 dsh-peak-guard(维护者 changzheng-Loji,分类:客户端)。它在 DSH 宿主侧挂 agent/pre-step 钩子,高峰时可拒绝「新一轮提问」的第一条输入(也可改为只提醒);浏览器侧在聊天输入框上方常驻峰/谷状态、模式、切换倒计时,以及本会话花费估算。配置集中在 DSH 插件页,规则默认对齐官方定价页的峰谷窗口。

这是什么

dsh-peak-guard 是 DeepSeek Harness 的插件:一半跑在 Node 宿主(时段判定与拦截),一半注入 Web 客户端(配置 UI 与 composer 状态条)。当前版本 0.1.0,许可证 MIT,仓库 changzheng-Loji/dsh-peak-guard。

解决的问题很具体:在高峰时段避免按双倍价发起新的 Agent 轮次;需要时仍可切换为只提醒或完全关闭。

峰谷规则(默认)

判定一律用 UTC+8(北京时间),不看本机时区。时间取不到或判定抛错时放行(不拦)。

  1. 高峰:周一至周五 9:00–12:00、14:00–18:00(法定节假日除外)。
  2. 空闲:午休、夜间、周末全天、法定节假日;相对高峰,价格为一半。
  3. 峰时窗口可在插件配置里改;改完后仍保留「周末 / 节假日算空闲」的语义。

三种模式

模式 行为
block(拦截) 高峰时段拒绝新一轮提问:在 agent/pre-step 不调 next(),轮次以 blocked 收尾,不发出模型请求、不扣钱
remind(只提醒) 不拦截;聊天页状态条会标「只提醒」
off(关闭) 默认;插件逻辑与状态条均不生效

另有几点:

  • 只拦一轮的第一条输入(step === 1)。工具跑完后的续跑是 step > 1,不会被掐断——例如 11:58 启动的任务不会在 12:00 被腰斩。
  • 被拦下的原文写入 %DSH_HOME%\peak-guard\last-blocked.json,避免内容丢失。
  • 环境变量 DSH_PEAK_GUARD_DISABLE=1 可完全关闭拦截(逃生阀)。

安装与启用

插件以当前 DSH 进程权限运行;安装前建议浏览仓库源码与 LICENSE,再决定是否启用。

命令行安装(README 原文):

dsh plugin add changzheng-Loji/dsh-peak-guard

也可在 Releases 下载 dsh-peak-guard-0.1.0.zip,解压到 %DSH_HOME%\plugins\peak-guard,再按 README「手动安装」在 profile 的 package.json 里 link 并登记 bundle,执行 pnpm install 后重启。

装完后完全退出并重开 DSH(bundle 列表启动时读取)。在 插件 → dsh-peak-guard → 配置 里把模式设为「拦截」即可生效。

配置项

路径:插件 → dsh-peak-guard → 配置。

  1. 模式:拦截 / 只提醒 / 关闭。
  2. 哪几天算峰时:工作日 / 每天 / 自定义(勾周一…周日);选「每天」便于在周末本地测试峰时逻辑。
  3. 峰时窗口:下拉选小时和分钟,可一段或两段(默认 9:00→12:00、14:00→18:00)。
  4. 额外节假日:逗号分隔日期,例如 2027-01-01,2027-02-06。
  5. 计价模型:deepseek-flash / v4-pro,仅影响聊天页「本会话 ≈¥x.xx」的估算,不自动换官方价目表。

聊天页状态条

挂载在 conversation.composer.dock(输入框上方)。关闭模式下不显示。

  • 当前是高峰还是空闲、当前模式、距离下一次峰/谷切换还有多久。
  • 右侧示例:本会话 ≈¥x.xx · 12.3k tok,按当前时段单价与 tokenUsage 投影估算,不是账单。

典型用法

  1. 安装并重启 DSH,配置里选 拦截,峰时窗口保持默认或按团队习惯微调。
  2. 工作日峰时尝试发送新一轮 Agent 提问:应被拦下,原文在 last-blocked.json;输入框里的字不会自动回填(见下文限制)。
  3. 若只想心理提醒、不挡发送,改 只提醒,观察状态条上的模式文案。
  4. 临时绕过:终端或启动环境里设 DSH_PEAK_GUARD_DISABLE=1。

适用场景与注意

适合:长期用 DSH 跑 Agent、希望默认避峰开新轮次;需要在 composer 一眼看到峰谷与粗略会话成本的开发者。

已知限制(README 明确写出):

  • 硬拦截发生在消息已经发出之后(DSH 无「提交前」钩子),被拦时输入框内容不会自动恢复,需从 last-blocked.json 取回。
  • 只有新一轮第一步会被拦;8:50 开始、9:40 才跑完的长任务,9:00 之后产生的用量仍可能按高峰计费。
  • 花费为估算:按 cacheRead / uncachedInput / output 乘价;缓存写入、重试、图片等未计;换模型需手动改「计价模型」。
  • 「今日累计」「余额」尚未实现,需宿主额外 RPC/HTTP 通道,目前仅有设置命名空间。

插件目录页:SkillHub - dsh-peak-guard。源码与 issue:GitHub。

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

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

Xiaoye