前言¶
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 为准。