Thomas-zz/dsh-offpeak-queue:把不急的任务推到模型闲时再跑

前言

在 DSH 里做智能体开发,经常会遇到一类任务:不是不重要,只是不急,例如批量跑文档转换、长文本摘要、跨仓库的核对工作。现在做,就要按当前时段计价;放着等,除非手动记到待办里,否则很容易顺势就做了。DeepSeek 在工作日高峰是全价,闲时半价;GLM Coding Plan 在工作日高峰按全积分抵扣,闲时按 50% 积分抵扣。对可延后的任务,时段本身就是成本。

下面介绍的这个插件把「等会儿再做」变成了一条本机队列:在对话里用 /闲时任务 提交任务时不调用模型,到该对话所用模型的闲时时段,任务在同一个对话里自动执行。这是 Thomas-zz 在 GitHub 上维护的开源插件,分类属于工作流(社区目录 SkillHub 上登记),包名为 @zayn_/dsh-offpeak-queue,仓库为 Thomas-zz/dsh-offpeak-queue。

这是什么

一句话定位:一个 DSH 插件,让你在任意对话里排队一个任务,排队这一步零模型调用,然后在该模型的闲时窗口,在同一条对话里自动执行。

解决的具体问题有三个:

  1. 排队这件事本身不产生 token 费用,提交阶段被拦在 agent/pre-step,直接结束本轮。
  2. 按模型排期,而不是按一个统一的时间表。用 DeepSeek 的对话就等 DeepSeek 的闲时,用 GLM 的就等 GLM 的闲时。
  3. 执行时回到来源对话,上下文、贴图、工作区都还在,不是另开一个陌生会话。

插件内置了两个模型家族的官方峰谷规则(自动配置,无需手填):

  • DeepSeek:北京时间周一至周五(不含法定节假日)09:00–12:00、14:00–18:00 为高峰期全价,其余时间为闲时半价。
  • GLM Coding Plan:北京时间周一至周五 14:00–18:00 为高峰期全积分,其余时间按 50% 积分抵扣(官方规则未设节假日豁免)。

核心功能

先做排队,再做执行,中间由面板管理。已核实的能力如下。

对话内排队。 在输入框输入 /闲时任务 回车开启,工具条出现「闲时任务 ×」标签;写下任务回车即入队,这时不产生模型回复。会话标题会自动改成任务标题,侧栏用月亮图标标记。

面板管理。 侧栏「闲时任务」面板分任务队列与统计两个页签,队列支持全部 / 等待 / 执行中 / 已完成 / 失败 / 已取消六个状态筛选。标题下是一排等宽状态卡,按已开启的模型分别展示峰谷徽章、切换倒计时和下一闲时时段;「设置」按钮打开居中弹窗,可以开关各模型的闲时任务、调节最大并发。

分模型统计。 统计页按模型分卡片,DeepSeek 显示估算节省金额,GLM 显示估算积分消耗与闲时节省;另有按模型的表格(含积分与 Token 列)、运行次数叠加图,近期执行带模型标识。

修改零调用。 点状态卡上的「修改」,任务内容回填到输入框,像聊天一样改(可以贴图),回车保存;真正执行时用的是最新版本。修改同样不产生模型调用。

立即执行。 队列里每条任务都可以手动「立即执行」,任何时段都能跑,高峰时段会按全价计费并给出提示。

其余细节。 面板里选好工作区(下拉可搜索)点「新建闲时任务」,会在该工作区打开新对话并自动开启指令;完成提醒只用绿色小点,不弹横幅;界面跟随 DSH 语言,窄到 520px 仍可用,支持明暗主题。

安装与启用

环境要求:DeepSeek Harness(DSH)桌面端或 web profile。插件是一个 bundle,分成 Host 与 Client 两半,Host 需要 webServer 等平台服务。

方式一,命令行安装(README 推荐路径,前提是先拿到插件源码目录):

"$DSH" plugin --profile desktop add "$PWD/dsh-offpeak-queue"

这条命令会以 link 方式链接源码目录,并自动登记 bundle。macOS 桌面端的 dsh CLI 位于 app 内:

DSH="/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh"

装完需要重启 DSH 桌面端(Host 部分改动要重启;Client 的 client.js 改动保存后热更新)。

方式二,插件管理器:

  1. 在 DSH 的「设置 → 插件」里从本地目录安装 @zayn_/dsh-offpeak-queue。
  2. 确认 profile 的 dsh.profile.bundles 里已包含 @zayn_/dsh-offpeak-queue(用 dsh plugin add 会自动加)。

数据文件位置:

~/.dsh/offpeak-queue.json

可用环境变量 DSH_OFFPEAK_DATA_FILE 指定其他路径,便于隔离测试。卸载走「设置 → 插件」里禁用或移除,或执行 "$DSH" plugin --profile <profile> remove @zayn_/dsh-offpeak-queue。

典型用法

下面是 README 中给出的完整流程。

1、在任意对话输入框输入 /闲时任务(或从 / 指令菜单选「闲时任务」)回车开启。这一步只是把输入框置为 armed 状态,不做模型调用。

2、工具条出现「闲时任务 ×」标签;写下任务描述回车,任务入队且不会产生模型回复。

3、输入框上方会出现一条与对话内容列同宽的状态卡,可以展开查看详情、修改、取消;面板里同样可以操作。

4、到达该模型的闲时时段,任务在同一条对话里自动执行,对话中出现一张「插件状态更新」触发卡。注意这是插件注入的触发卡,不是冒充用户发出的消息。

5、侧栏「闲时任务」面板查看队列和省钱统计;面板图标上的绿点表示有任务完成且未查看,点任务标题可以跳到来源对话。

如果队列里有任务想在非闲时时段跑,直接点「立即执行」,会按当前全价计费并提示。

工作原理

调度链路按 README 的描述整理如下:

  1. 对话里输入 /闲时任务,输入框进入 armed 状态。
  2. 提交任务时,Host 在 agent/pre-step 拦截,登记任务并结束本轮,零模型调用,也不写会话日志。
  3. 任务进入本机 JSON 队列,面板的修改、取消、立即执行都作用于这条队列。
  4. 调度引擎只在闲时启动任务,最大并发默认 3。执行中如果跨入高峰会继续跑完,费用按每一步实际完成时刻分别计价。
  5. Runner 向来源会话注入「插件状态更新」触发卡,把任务正文与贴图送回对话。
  6. 正常的 agent loop 执行任务,记录 token 与费用,统计页给出节省估算。

实现上,Host 是纯 ESM、无第三方依赖;Client 是单个浏览器 bundle,只依赖平台 React。Host 与 Client 的行为契约写在仓库的 docs/ARCHITECTURE.md。

队列与调度由 DSH 进程负责。电脑休眠或 DSH 退出时任务不会丢失,会顺延到下一个闲时窗口。

适用场景与限制

适合的读者:工作里有可延后、可批量、能等峰谷切换的任务,且主要使用 DeepSeek 或 GLM Coding Plan 的 DSH 用户。如果平时只跑必须立刻出结果的任务,这个插件的调度收益不大。

几点需要留意的地方,都来自 README 的已知限制:

  • 插件以当前 dsh 进程的权限运行,任务在来源对话里执行,沿用该对话的权限预设。无人值守任务建议使用 approval: never 的预设,否则可能卡在审批上。
  • 排队零成本不等于完全没有开销,只是没有模型请求。开启指令后如果没写任务就继续聊天,那条消息会被当作任务入队,需要先取消标签。
  • 开启后、还没提交之前贴进输入框的图片由插件在内存中保管,页面刷新或重启后无法还原;已提交任务的图文都持久化在队列里。
  • 费用与积分均为估算,不是账户账单:DeepSeek 按官方价目表 × 实测 token,GLM 按官方积分系数 × 实测 token(MCP 工具积分不计入);搜索、抓取等额外费用不计入。GLM 官方没有公开的积分查询 API,插件按官方积分公式本地估算。
  • 内置的法定节假日为 2026 年,仅覆盖 DeepSeek 家族;GLM 官方高峰规则未设节假日豁免,其他年份按工作日估算。
  • 调度依赖 DSH 进程保持运行,闲时到来时如果电脑在休眠或 DSH 已退出,任务会顺延。
  • 任务按创建时对话所用模型排期,创建后切换模型不改变排期;未识别的模型按 DeepSeek 日历处理。
  • 指令输入名固定为中文 /闲时任务,即使界面语言切换为英文,输入名不变。

安装前建议先通读一遍源码与 docs/ARCHITECTURE.md:插件只在本机读写 ~/.dsh/offpeak-queue.json,本身不联网(积分也不向 GLM 服务器查询),但仍应确认代码与许可证(MIT,© 2026 Thomas-zz)符合你的使用环境。仓库内测试用 node --test,另有会话日志安全检查脚本与日志修复脚本可配合验证。

结语

这个插件的价值不在于让任务变快,而在于把「时段」变成可调度的资源:提交时零成本,执行时落在模型自己的闲时窗口,上下文留在原对话里,省了多少在统计页里有据可查。对于日常工作中那些不急但一定会做的事,这是一条可以直接落地的流水线。

目录页:https://www.skillhub.cn/plugins/Thomas-zz/dsh-offpeak-queue
源码与 README:https://github.com/Thomas-zz/dsh-offpeak-queue

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

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

小夜