🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

错峰任务调度 YuGaN525/DSH-work-on-time

DeepSeek Harness
YuGaN5258 天前有提交已提供中文文档扫描:未发现敏感能力

峰时排任务入队,谷时自动执行省成本

29.6/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add YuGaN525/DSH-work-on-time
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · other
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 8 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DSH 插件:高峰时段只做规划,非高峰时段自动执行排队的任务

README

由 DeepSeek 最新模型翻译生成
DSH work on time(dsh-work-on-time) 一个宿主插件,给 DeepSeek Harness(DSH)用:峰时只收需求、只排任务;谷时自动把排好的任务跑起来。 灵感来自 DeepSeek 的错峰优惠:把「写代码」这类重活挪到便宜的时段,把「想清楚要做什么」留在工作时间。 峰时 / 谷时怎么算 默认按北京时间(Asia/Shanghai): | 时段 | 判定 | | 周一至周五 09:00–12:00 | 峰时 | | 周一至周五 14:00–18:00 | 峰时 | | 周末、法定节假日全天 | 谷时 | | 工作日其余时间 | 谷时 | - 区间左闭右开:09:00 整算峰时,12:00 整算谷时。 - 支持跨零点窗口(如 22:00–02:00)与全天窗口(start === end)。 - 调休上班日、额外放假/剔除日期都可以自己配。 它做了什么 1. 峰时:插件向模型注入一段系统提示,并拦截执行类工具(pwsh/write/edit/subagent/workflow 等,可配置)。 模型只能把需求拆成任务清单,调用 pv_enqueue 入队,然后告诉你「已入队,谷时执行」。
展开完整文档(README 剩余 1 节)
DSH work on time(dsh-work-on-time)

一个宿主插件,给 DeepSeek Harness(DSH)用:峰时只收需求、只排任务;谷时自动把排好的任务跑起来。

灵感来自 DeepSeek 的错峰优惠:把「写代码」这类重活挪到便宜的时段,把「想清楚要做什么」留在工作时间。

峰时 / 谷时怎么算

默认按北京时间(Asia/Shanghai):

| 时段 | 判定 |
| 周一至周五 09:00–12:00 | 峰时 |
| 周一至周五 14:00–18:00 | 峰时 |
| 周末、法定节假日全天 | 谷时 |
| 工作日其余时间 | 谷时 |

- 区间左闭右开:09:00 整算峰时,12:00 整算谷时。
- 支持跨零点窗口(如 22:00–02:00)与全天窗口(start === end)。
- 调休上班日、额外放假/剔除日期都可以自己配。

它做了什么

1. 峰时:插件向模型注入一段系统提示,并拦截执行类工具(pwsh/write/edit/subagent/workflow 等,可配置)。
模型只能把需求拆成任务清单,调用 pv_enqueue 入队,然后告诉你「已入队,谷时执行」。
2. 谷时:插件心跳(默认 45 秒)发现当前是谷时,就把所有 queued 批次按会话分组,向对应会话投递一条 【谷时任务启动 · dsh-work-on-time】 消息(内含批次 id、需求、编号任务清单、执行要求),模型随后按清单逐条执行;每批结束调用 pv_complete 记录结果。
3. 会话当时没开也没关系:批次一直留在队列里,等会话恢复后的第一个谷时再投递。

安装

git clone https://github.com/YuGaN525/DSH-work-on-time.git

然后在 DSH 里安装(插件目录的绝对路径):

plugin_manager → action: install_bundle
target: <绝对路径>/DSH-work-on-time

安装后插件会自动启用,pv_ 工具立即可用。改完 index.js 后需要重载:

plugin_manager → action: set_plugin
target: include:work-on-time
enabled: false # 先关 enabled: true # 再开

target 必须是精确的 entryId(include:work-on-time),传包名会报 unknown-plugin。

工具

| 工具 | 作用 |
| pv_enqueue | 入队一个需求 + 任务清单。峰时唯一应该调用的写操作;不传 tasks 时按换行/分号自动拆分(最多 12 条)。 |
| pv_status | 查看当前峰/谷、距下次切换多久、队列与批次详情(可传 batchId)。 |
| pv_complete | 标记批次完成:outcome 为 done/partial/failed,附 summary。 |
| pv_cancel | 取消一个还没开的批次。 |
| pv_run | 立刻强制开跑(跳过峰谷判断)。峰时用它会在该批次运行期间临时放行执行类工具。 |
| pv_config | 改配置:峰时窗口、节假日、时区、心跳、守卫开关等。 |

配置

配置优先级:内置默认值 → cordis.patch.yml 的 config: → $DSH_HOME/work-on-time.config.json(pv_config 写入这里,最高)。
所以用 pv_config 改过之后,再改 cordis.patch.yml 不会生效;要恢复 patch 默认值,删掉 $DSH_HOME/work-on-time.config.json 再重载。

常用项(都可在 cordis.patch.yml 或 pv_config 里改):

timeZone: Asia/Shanghai
peakWindows:
- { days: [1, 2, 3, 4, 5], start: '09:00', end: '12:00' }
- { days: [1, 2, 3, 4, 5], start: '14:00', end: '18:00' }
extraHolidays: [] # 追加休息日,如 ['2027-01-01']
excludeHolidays: [] # 从内置表里剔除某天(把它当普通工作日)
extraWorkdays: [] # 调休上班日,即使是周末也算工作日
tickSeconds: 45 # 心跳节流间隔 peakGuard: true # 峰时是否拦截执行类工具
blockedToolsDuringPeak: [pwsh, write, edit, subagent, subagent_fork, workflow]
dispatchOnlyWhenIdle: true # 会话忙时先不打断 maxDispatchesPerTick: 3 autoCompleteIdleSeconds: 90 # 会话空闲这么久还没 pv_complete,自动标完成

days 用 ISO 数字:1=周一 … 7=周日。

法定节假日表

内置表目前只覆盖 2026 年(国务院办公厅 2026 年部分节假日安排)。
节假日按「休息日(不上班)」处理:落在节假日的工作日一律算谷时。

- 以后的年份公布后,改 index.js 里的 BUILTIN_HOLIDAYS,或用 pv_config({ extraHolidays: [...] }) 追加。
- 想临时把某个节假日变回工作日,用 excludeHolidays。
- 当前年份不在覆盖范围时,pv_status 和系统提示都会给出提示,避免「节假日没生效」的静默错误。

数据文件

| 文件 | 内容 |
| $DSH_HOME/work-on-time.state.json | 队列与批次(原子写)。插件重载时,把上次遗留的 running/interrupted 批次重新排队成 queued,并在下次唤醒文案里提示「先检查已完成部分,避免重复劳动」。 |
| $DSH_HOME/work-on-time.config.json | pv_config 的持久化覆盖。 |

从旧名(dsh-peak-valley-queue)升级时,首次启动会自动把 peak-valley-queue..json 复制成 work-on-time..json,队列不丢。

测试

仓库自带离线自测(假的 Cordis 上下文 + 临时 DSH_HOME,不碰真实数据):

node test/mock-test.mjs
PASS: 97 passed, 0 failed

覆盖:日期/星期/节假日判定、时段边界(08:59/09:00/11:59/12:00/13:59/14:00/17:59/18:00)、周末与节假日、excludeHolidays/extraWorkdays、跨零点窗口、全天窗口、下一切换点,以及入队、峰时拦截、pv_run 强制开跑、pv_complete、pv_cancel。

项目结构

index.js # 零依赖宿主插件(只 import node: 内置模块) cordis.patch.yml # bundle 插入声明 + 默认配置
locale/{zh,en}.json # 插件管理器里的标题/描述
icon.svg # 图标 test/mock-test.mjs # 离线自测

为什么零依赖:本地用 link: 方式安装的插件,运行时解析不到 @deepseek-ai/ 这类 bare specifier,所以工具用普通对象注册(不用 defineTool),配置也不导出 schemastery schema。

限制

- 需要 DSH 进程在运行:插件是宿主插件,应用关掉就不会有任何调度。
- 谷时唤醒的是原会话:会话得还能恢复(模型、工作目录都在)。会话被删掉的话,批次会一直排队,直到手动 pv_cancel 或改配置。
- 强杀进程时,已在跑的批次下次启动会被重新排队,可能重复执行 — 唤醒文案会提醒模型先检查已完成的步骤。
- 峰时拦截是「工具级」的:如果用 pv_config({ peakGuard: false }) 关掉,模型在峰时就能直接干活。

License

MIT © 2026 YuGaN525
预览分享卡片长什么样 ↓YuGaN525/DSH-work-on-time
分享 · DeepSeek Harness Hub
YuGaN525/DSH-work-on-time

峰时排任务入队,谷时自动执行省成本

回到顶部