谷时发送(dsh-offpeak-send):高峰排队、谷时半价自动投递

前言

在 DeepSeek Harness(DSH)里日常对话,发送时机往往只取决于「写完没有」,很少和 API 计价时段对齐。DeepSeek 对调用量分高峰与谷时计价,谷时约为高峰半价;若你在工作日 9 点到 12 点、14 点到 18 点(北京时间)频繁点发送,费用会按全价结算。手动记时段、到点再发,对多会话、带附件的长对话并不现实。

下面介绍社区插件 谷时发送(@carbonzhao/dsh-offpeak-send,维护者 CarbonZhao-02692,分类:工作流)。它在输入框权限选择模块右侧增加「谷时」开关:开启后,高峰时段按发送会把消息(含附件)排队,到下一个谷时开始后按可配置的 buffer(默认 3 秒)自动投递;处于谷时则立即发送,行为与未开开关时一致。

这是什么

一句话:DSH Web 输入区的 off-peak send queue——高峰拦截入队,谷时到点由宿主代为 followup,排队可跨浏览器关闭与 DSH 重启持久化。

插件以 npm 包 @carbonzhao/dsh-offpeak-send 发布(当前版本 0.1.1,MIT),仓库:CarbonZhao-02692/dsh-offpeak-send。README 记载已在 DSH Web 0.2.1-rc.5 上完成真机验收(开关位置、排队、倒计时、立即发送、修改、取消、关闭开关时的三按钮弹窗、到点投递、设置面板、附件落盘与自动清理等)。

DSH 生态主张「一切皆插件」;目录页 SkillHub 上的条目 与 GitHub 均为社区维护,与 DeepSeek / 幻方无官方从属关系。

计价时间模型(插件依据)

插件按固定 UTC+8 判定相位,不读浏览器本地时区;2026 年法定节假日表来自 lib/core/holidays.js(国办发明电〔2025〕7 号,33 天),未列年份按普通工作日处理。

项目 规则
高峰(全价) 北京时间周一至周五 09:00–12:00、14:00–18:00,法定节假日除外
谷时(半价) 其余时间(含午休、晚间、周末、法定节假日);调休上班的周六按谷时处理
延迟投递点 下一谷时起点 + buffer(默认 3 秒,可在 1–10 秒间调节)
最长等待 约 4 小时(例如 14:00 发送,18:00:03 投递)

判断发生在按发送的那一刻;入队后相位变化不会重新评估,到 sendAt 即投递。宿主重启时会对过期且仍处高峰的项改期到下一谷时起点 + buffer。

核心功能

输入区开关与 dock

开关挂在 DSH 槽位 conversation.input.left(0.2.1-rc.5 起位于权限选择块紧右侧)。dock 条在 conversation.input.dock(输入框上方),展示排队条目、目标时刻与倒计时。

状态 chip 表现 行为
开关关闭 「谷时」,灰点 全部直通
开 + 谷时 「谷时」,绿点 立即发送
开 + 高峰 「谷时 HH:MM 后发」,橙点 拦截、附件落盘、入队

右键 chip 或长按约 600 ms 可打开设置面板(buffer、当前相位、节假日只读表、隔离区与清理记录、恢复附件入口等)。关闭开关时若当前会话仍有排队,会弹出「关闭谷时发送?」——可选全部清除、全部立即发送或取消。追问 / 插话(steer)不排队,仅对普通发送生效。

dock 每条提供「立即发送」「修改」「取消」;修改会先取消该条并把正文放回输入框(有附件时需二段确认)。

宿主排队与投递

高峰拦截时:附件经 POST /stage 落盘为宿主工件引用,再 POST /enqueue 写入 outbox。存储域为 dsh_offpeak_send v1;单 timer 调度,同会话 FIFO 串行投递,跨会话互不阻塞。投递路径为 resolveAgent → createUserMessage → agent.followup,来源标记为真实用户。失败最多重试 3 次(退避 5s / 15s / 60s)。

路由前缀 /dsh-offpeak-send(插件路由不需要 GUI token)。配置持久化在 <DSH_HOME>/offpeak-send/config.json。

附件与清理

因 DSH 宿主暂无附件删除 API,插件对未引用且已登记 orphan 的对象采用「先移入隔离区、7 天后删除」的两段式清理;设置面板可在窗口期内恢复。触发包括宿主启动后约 10 分钟、每天 03:00、孤儿登记去抖 15 分钟等(详见 README)。

已知限制(使用前宜知)

  • 单附件 32 MB、单条最多 20 个附件;全局队列 100 条、单会话 20 条(超限 429 queue-full)。
  • 模型是否支持图像靠模型名启发式,可能误判;不支持时会省略 image 块并在正文尾部说明。
  • 节假日表目前覆盖 2026;后续年份需维护 holidays.js。
  • 页面刷新后 dock 依赖轮询恢复(可见时约 3 秒,隐藏时约 10 秒),非实时推送。

安装与启用

在 DSH 环境中安装 npm 包(命令来自仓库 README):

npm i @carbonzhao/dsh-offpeak-send

安装后重启 dsh web,输入框权限选择模块右侧会出现「谷时」开关。插件以当前 DSH 进程权限运行,安装前宜浏览源码与 MIT 许可证,确认符合你的安全与合规要求。

典型用法

  1. 开启「谷时」开关,在工作日高峰时段编辑消息并普通发送;chip 显示「谷时 HH:MM 后发」,dock 出现倒计时。
  2. 需要立刻发出时,在 dock 点「立即发送」;想改文案点「修改」;误发高峰可「取消」单条。
  3. 谷时时段(含周末、夜间)发送则绿点、立即投递,无需排队。

开发或自测时,周末/夜间天然为谷时,难以自然制造排队。README 提供通过 POST /config 设置调试字段 forceWorkday 与 peak 的方式(缺省关闭);自测结束后应还原为生产语义。示例:

curl -X POST -H 'content-type: application/json' \
  --data '{"forceWorkday":true,"peak":[[0,70]]}' \
  http://127.0.0.1:3080/dsh-offpeak-send/config
curl -X POST -H 'content-type: application/json' \
  --data '{"forceWorkday":false,"peak":null}' \
  http://127.0.0.1:3080/dsh-offpeak-send/config

GET /config 返回的 phase 应与页面 chip 一致;若不一致,可能是浏览器缓存了旧的 client bundle,需按 README 说明带缓存破坏参数重开页面后再验证。

适用场景

适合长期用 DSH Web、对话量集中在工作日白天、希望把非紧急发送对齐到谷时计价窗口的开发者或个人用户。不适合既要 steer 实时插话、又希望插话也排队省价的场景(steer 不排队)。若你无法接受队列上限、7 天附件隔离窗口或节假日表需手工逐年更新,应评估后再启用。

结尾

谷时发送把「何时点发送」和 DeepSeek 高峰/谷时规则绑在一起:开关开着,高峰入队、谷时到点自动投递,排队与附件在宿主侧持久化。目录与详情见 SkillHub,源码与完整 API、测试说明见 GitHub 仓库 README。

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

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

小夜