dsh-peak-hour-reminder: DeepSeek API Peak Hour Reminder and Cross-Peak Pause

前言

DeepSeek API 采用峰谷定价:工作日部分时段为高峰,单价约为空闲时段的约 2 倍。用 DeepSeek Harness(DSH)跑长回合、多步工具调用时,若不在高峰边界做提示,容易在不知情的情况下持续消耗高峰额度。手动查定价表、对照北京时间也不适合嵌入日常开发流。

下面介绍的 dsh-peak-hour-reminder 是 DSH 的本地 host 插件(维护者 ggghhh-11),在回合内按北京时间判断峰谷,插入可见提醒;若回合从空闲跨入高峰,在安全步骤边界暂停并询问是否继续;节假日数据过期时自动联网更新。许可证为 MIT,当前 package 版本为 0.1.0,需 Node.js >= 20。

这是什么

插件名称:dsh-peak-hour-reminder。分类为工作流,托管于 GitHub ggghhh-11/dsh-peak-hour-reminder,社区目录页见 SkillHub 插件页。DSH 生态主张「一切皆插件」;SkillHub 等为社区目录,与 DeepSeek / 幻方无官方从属关系。

它解决三类问题:高峰时段逐回合提醒、跨峰暂停询问、以及中国法定节假日数据的自动维护(与官方峰谷规则中的「排除法定节假日」一致)。

高峰规则(与官方定价对齐)

规则以 DeepSeek 官方 API 峰谷定价为准(README 注明 2026-11-03 核对)。北京时间下:

时间段 状态
周一至周五 09:00–12:00、14:00–18:00 高峰
周一至周五其余时间 空闲
周六、周日全天 空闲
中国法定节假日全天 空闲

换算关系与来源见仓库 README 中的 DeepSeek API Models & Pricing 及国务院节假日通知链接。内置基线含 2026 年完整假期和 2027 年元旦;2027 年其余假期待官方通知或由配置 / 自动更新补全。

核心功能

高峰提醒

每个用户回合在第一次调用模型前判断北京时间。只有高峰时才插入一条可见的「⏰ 高峰时段提醒」;空闲时段完全静默。提醒包含当前时间、星期、所在窗口、距空闲还有多久;可配置 showPriceHint 提示高峰期单价约为空闲的约 2 倍。

跨峰暂停

回合在空闲时段开始、执行中进入高峰时,在下一个安全步骤边界弹出询问卡:

  • 「继续」:继续后续步骤,并写入一条用户选择继续的 notice;
  • 「暂停」:结束本轮后续步骤,写入持久暂停 notice;已完成的消息、工具调用与结果已保存,之后发送「继续」即可恢复。

不会硬中断正在流式生成的回复或正在执行的工具,避免丢失半截输出或未完成的工具结果。同一条消息触发的同一回合、同一高峰窗口只问一次;跨入下一个高峰窗口会再问。配置项 pauseOnPeakCrossing 默认 true。

节假日数据自动更新

数据文件记录 coverageThrough(已完整覆盖到哪一年)。当当前年份超过覆盖范围,或 Q4 预取下一年时,自动请求配置的节假日 JSON URL(默认 https://timor.tech/api/holiday/year/{year})。更新成功后删除过时年份(默认保留上一年,retentionYears 可调)。更新失败或数据源尚未发布时保留旧数据,按工作日规则继续判断,并在提醒里注明「数据未更新」。updateEnabled: false 可完全离线。

安装与启用

插件以当前 DSH 进程权限运行;安装前应自行查看仓库源码与 MIT 许可证。

方式一:GitHub 安装(web profile)

在普通 web profile 下执行:

dsh plugin --profile web add github:ggghhh-11/dsh-peak-hour-reminder

然后重启 dsh web。插件包内的 cordis.patch.yml 会自动注册 host 行,不需要手动改 profile 补丁。

方式二:DSH Desktop(desktop profile)

Desktop 的 desktop profile 由应用独占管理,CLI 的 dsh plugin --profile desktop ... 会被拒绝。可在应用内 设置 → 插件 从本地路径安装,或按 README 在 %USERPROFILE%\.dsh\profiles\desktop\package.json 中用 link: 依赖并在 dsh.profile.bundles 中加入 "dsh-peak-hour-reminder",在 profile 目录执行 pnpm install 后重启 DSH Desktop。

注意:不要在 profile 的 cordis.patch.yml 里再手动 insert 同一 id,否则 duplicate loader entry 会导致启动失败。

配置

在 profile 的 cordis.patch.yml 用 id 覆盖(不是 insert):

- id: dsh-peak-hour-reminder
  config:
    timeZone: Asia/Shanghai
    peakWindows:
      - { start: '09:00', end: '12:00' }
      - { start: '14:00', end: '18:00' }
    weekendOffPeak: true
    pauseOnPeakCrossing: true
    showPriceHint: true
    updateEnabled: true
    updateUrls:
      - https://timor.tech/api/holiday/year/{year}
    retentionYears: 1

常用项包括:enabled 总开关;timeZone 默认 Asia/Shanghai;peakWindows 支持跨午夜;extraHolidays 补额外 YYYY-MM-DD;dataDir 默认 $DSH_HOME/peak-hour-reminder。配置非法时回退默认值并打印 warning,不会拖垮 DSH 加载。

节假日数据默认路径:Windows 为 %USERPROFILE%\.dsh\peak-hour-reminder\holidays.json;macOS/Linux 为 ~/.dsh/peak-hour-reminder/holidays.json。

临时禁用(不卸载):

- id: dsh-peak-hour-reminder
  disabled: true

典型用法与验证

本地测试

仓库内运行:

node scripts/run-tests.mjs

真实网络冒烟(期望 2026 年 status: "complete"、holidays: 33):

node scripts/net-check.mjs

验证跨峰暂停

若当前不是高峰,可临时把窗口设为全天并打开测试钩子:

- id: dsh-peak-hour-reminder
  config:
    peakWindows:
      - { start: '00:00', end: '23:59' }
    debugForcePause: true

debugForcePause 强制把回合视为从空闲开始,从而在第 2 步触发暂停询问。验证完请删除该项并恢复默认窗口。

适用场景与注意

适合长期用 DSH Web 或 Desktop 做 API 调用、且希望峰谷边界可见、长回合可主动暂停的开发者。

已知限制(摘自 README):暂停只在 pre-step 边界;不在 step 1 暂停;单步无工具回合没有后续步骤可暂停;subagent 不提醒、不暂停;无 user-questions answerer 的 headless 环境会降级为「暂停 + 持久 notice」。隐私方面,唯一出站请求为配置的节假日 URL,不发送会话内容或用户标识。

卸载时从 profile package.json 与 dsh.profile.bundles 移除依赖,删除 node_modules 中对应包并重启 DSH;可选删除 ~/.dsh/peak-hour-reminder 数据目录。

结尾

dsh-peak-hour-reminder 把 DeepSeek 官方峰谷时段、法定节假日与 DSH 回合边界绑在一起:高峰有提醒,跨峰可问,假期数据可自动维护。需要安装命令与字段说明时,以仓库 README 为准。

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

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

Xiaoye