前言¶
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(北京时间),不看本机时区。时间取不到或判定抛错时放行(不拦)。
- 高峰:周一至周五 9:00–12:00、14:00–18:00(法定节假日除外)。
- 空闲:午休、夜间、周末全天、法定节假日;相对高峰,价格为一半。
- 峰时窗口可在插件配置里改;改完后仍保留「周末 / 节假日算空闲」的语义。
三种模式¶
| 模式 | 行为 |
|---|---|
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 → 配置。
- 模式:拦截 / 只提醒 / 关闭。
- 哪几天算峰时:工作日 / 每天 / 自定义(勾周一…周日);选「每天」便于在周末本地测试峰时逻辑。
- 峰时窗口:下拉选小时和分钟,可一段或两段(默认 9:00→12:00、14:00→18:00)。
- 额外节假日:逗号分隔日期,例如
2027-01-01,2027-02-06。 - 计价模型:
deepseek-flash/v4-pro,仅影响聊天页「本会话 ≈¥x.xx」的估算,不自动换官方价目表。
聊天页状态条¶
挂载在 conversation.composer.dock(输入框上方)。关闭模式下不显示。
- 当前是高峰还是空闲、当前模式、距离下一次峰/谷切换还有多久。
- 右侧示例:
本会话 ≈¥x.xx · 12.3k tok,按当前时段单价与tokenUsage投影估算,不是账单。
典型用法¶
- 安装并重启 DSH,配置里选 拦截,峰时窗口保持默认或按团队习惯微调。
- 工作日峰时尝试发送新一轮 Agent 提问:应被拦下,原文在
last-blocked.json;输入框里的字不会自动回填(见下文限制)。 - 若只想心理提醒、不挡发送,改 只提醒,观察状态条上的模式文案。
- 临时绕过:终端或启动环境里设
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。