在指定时段挂起模型调用,到点自动继续任务
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Samuel-Ku/dsh-quiet-hours.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
该类项目不使用 dsh plugin add 安装,静态安装检查不适用
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-quiet-hours(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/8 09:40:55
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 挂起模型调用
- 按配置窗口暂停
- 到点自动恢复任务
DeepSeek Harness 插件:把每次模型调用都挂起,直到配置的暂停窗口结束,任务按计划暂停、自动恢复。
README
由 DeepSeek 最新模型翻译生成dsh-quiet-hours
一个 DeepSeek Harness 插件,它会将每次模型调用挂起,直到配置的暂停窗口结束,这样长任务会在高费用时段自行停止,并在非高峰时段开始时自动继续。
license: MIT
node: >=20
挂起期间不会重启任何东西,也不会产生任何开销:该轮次保持打开状态,请求尚未发送,当窗口结束时任务会从完全相同的位置继续。
它是如何挂接的
这个门控位于 llm/stream 瀑布流上——@deepseek-ai/dsh-llm 将该钩子描述为“围绕每次流式模型调用的瀑布流(重试、重放、路由)”。在暂停窗口期间,监听器返回一个异步生成器,该生成器在窗口结束之前不会启动底层请求。
有一个契约细节很容易弄错,而本插件正是围绕它构建的:监听器必须同步地返回一个 AsyncIterable,因为调用方消费瀑布流结果时并不会 await 它。如果那里返回一个 promise,就会破坏每一次模型调用。这就是为什么等待逻辑位于生成器函数体内,而不是监听器中,并且 test/probe.test.mjs 直接对此进行了断言。
function handler(options, next) {
if (!
展开完整文档(README 剩余 1 节)
dsh-quiet-hours
一个 DeepSeek Harness 插件,它会将每次模型调用挂起,直到配置的暂停窗口结束,这样长任务会在高费用时段自行停止,并在非高峰时段开始时自动继续。
license: MIT
node: >=20
挂起期间不会重启任何东西,也不会产生任何开销:该轮次保持打开状态,请求尚未发送,当窗口结束时任务会从完全相同的位置继续。
它是如何挂接的
这个门控位于 llm/stream 瀑布流上——@deepseek-ai/dsh-llm 将该钩子描述为“围绕每次流式模型调用的瀑布流(重试、重放、路由)”。在暂停窗口期间,监听器返回一个异步生成器,该生成器在窗口结束之前不会启动底层请求。
有一个契约细节很容易弄错,而本插件正是围绕它构建的:监听器必须同步地返回一个 AsyncIterable,因为调用方消费瀑布流结果时并不会 await 它。如果那里返回一个 promise,就会破坏每一次模型调用。这就是为什么等待逻辑位于生成器函数体内,而不是监听器中,并且 test/probe.test.mjs 直接对此进行了断言。
function handler(options, next) {
if (!inPauseWindow(Date.now(), config)) return next();
return (async function* parked() {
await waitUntilResume(config, options.signal);
yield* next();
})();
}
工具不会被门控。 它们不消耗 token,而且消费其输出的模型调用本来就会被挂起——对它们进行门控只会带来中断未完成副作用的风险。
窗口
窗口是 IANA 时区中的挂钟时间区间,通过 Intl 进行求值,因此夏令时是平台的问题,而不是偏移量算术的问题:
windows:
- days: [mon, tue, wed, thu, fri] # the day the window STARTS on
from: "01:00"
to: "04:00"
- from to —— 跨越午夜,并归属于它开始的那一天,因此周五的 22:00–06:00 窗口覆盖周六 00:00–06:00,而周日不覆盖任何时间。
- from == to —— 在加载时被拒绝;零长度窗口始终是一个错误。
未知的时区、格式错误的 HH:MM 或未知的星期名称都会导致插件挂载失败,并给出指明违规条目的消息,而不是静默地永不暂停。
配置
| 字段 | 类型 | 默认值 | 含义 |
| enabled | boolean | true | false = 永不挂起 |
| timezone | string | UTC | 窗口所使用的 IANA 时区 |
| windows | list | [] | 暂停窗口;为空表示永不挂起 |
| maxSleepChunkMs | number | 60000 | 挂起期间的唤醒节奏(使插件对时钟跳变和中止保持响应) |
| scanCapMs | number | 21 days | 恢复搜索在放弃并重新检查之前会向前查找多远 |
| auditFile | string | ~/.dsh/logs/quiet-hours.jsonl | 暂停/恢复事件的 JSONL 记录 |
高峰定价示例——工作在高峰时段暂停,并在非高峰开始的那一刻恢复:
- id: quiet-hours
name: dsh-quiet-hours
config:
enabled: true
timezone: UTC
windows:
- days: [mon, tue, wed, thu, fri]
from: "01:00"
to: "04:00"
- days: [mon, tue, wed, thu, fri]
from: "06:00"
to: "10:00"
auditFile: /home/me/.dsh/logs/quiet-hours.jsonl
安装
dsh plugin --profile web add /path/to/dsh-quiet-hours
该 bundle 的 cordis.patch.yml 会插入 quiet-hours 条目;在 profile 的 cordis.patch.yml 中按 id 覆盖其 config(不要重新插入它——那会以 duplicate loader entry id 失败)。
对于路径或 link: 安装,请将检出目录放在 $DSH_HOME/profiles/ 下,以便 Node 从 $DSH_HOME/profiles/node_modules 解析 @deepseek-ai/* 对等依赖。
新插件模块仅在 DSH 重启时挂载;之后配置编辑会在 patchReload: live 下实时重新加载。
审计记录
在 auditFile 中,每次暂停和每次恢复各一行 JSONL:
{"time":1790422374944,"event":"pause","resumeAt":1790433600000,"provider":"example-provider","model":"example-model","pauseWindows":"mon,tue,wed,thu,fri 01:00-04:00 | mon,tue,wed,thu,fri 06:00-10:00 (UTC)"}
{"time":1790433600012,"event":"resume","parkedMs":11225068,"provider":"example-provider","model":"example-model"}
event 为 pause,然后是 resume(带有 parkedMs),或者当该轮在暂停期间被中止时为 cancelled。
测试
npm install
npm test
两层共 25 个测试:
- test/logic.test.mjs —— 时钟解析、配置验证、跨时区/周末/同日和跨夜窗口的窗口包含判断、恢复搜索,以及由注入时钟驱动的等待循环,使数小时瞬间流逝。
- test/probe.test.mjs —— 在真实 Cordis 上下文上挂载插件,并像 LlmRuntime.stream() 那样驱动 llm/stream 瀑布流。它断言窗口外直通、窗口内暂停、“AsyncIterable,而非 promise”契约、中止时释放、卸载时移除门控,以及错误时区下明显的挂载失败。
devDependencies 的存在只是为了让测试能从裸克隆运行;运行时插件从 DSH 安装中解析其 @deepseek-ai 对等依赖。
注意事项
- 暂停的调用是一个活跃的 promise,而非持久状态:重启 DSH 或结束会话都会丢弃它。重启后任务不会自行恢复。
- 审批和自动回答的问题走同一个瀑布流,因此在暂停期间发起的裁判调用也会被暂停。实践中这是一致的——暂停的 agent 不会发起新请求——但值得了解。
- 最长的等待时间仅受你的窗口限制;唤醒节奏意味着插件每分钟重新检查一次时钟,因此系统时钟的变更会被及时察觉。
许可证
MIT — 参见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Samuel-Ku/dsh-quiet-hours
在指定时段挂起模型调用,到点自动继续任务
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1