前言¶
DeepSeek Harness (DSH) 的核心设计理念是「一切皆插件」。dsh-nightshift 是一个第三方插件,旨在解决 DeepSeek 模型价格在夜间(UTC+8)显著低于白昼的问题。智能体通常在用户工作的高峰时段运行,导致计算成本高昂。该插件允许在高峰时段将任务排队,在低峰时段释放,并自动生成节省报告。
插件定位¶
- 名称:dsh-nightshift
- 所有者:mikasaxin529
- 许可证:MIT
- 核心价值:在高峰时段排队,在低峰时段释放,阅读节省报告。
核心功能¶
- One-chip enqueue:对话输入栏中的 🌙 芯片,用于将当前草稿加入队列。默认目标为继续当前会话;新会话按钮则运行在独立会话中。
- Peak freeze:在高峰时段窗口内停止调度。如果任务已经在运行,它将自然完成(已完成的工作不会中断)。
- Off-peak drain:在低峰时段窗口内,一次调度一个任务,任务间间隔由
drainGapMs控制。 - Failure policy:根据失败原因分类处理:
error/interrupted使用指数退避重试(有上限);max-tokens自动发送继续提示(有上限);blocked暂停等待人工介入;aborted视为用户取消。 - Savings ledger:按实际发生时的价格窗口(高峰或低峰)对 token 差异进行计费,确保跨窗口和重试任务的账目准确。
- Daily reports:当队列为空或高峰时段返回时生成报告。
- Durable queue:支持重启恢复,重启时会重新排队未完成的任务(至少一次语义)。
- Panel:侧边栏入口,显示窗口横幅、实时任务行、队列管理(运行/取消)、历史记录和最新报告。
安装与启用¶
确保已安装 DeepSeek Harness 并使用 web profile(进程必须保持驻留)。Node.js 版本需 >= 20。
执行官方安装命令:
dsh plugin --profile web add github:mikasaxin529/dsh-nightshift
安装后重启 DSH 或等待 HMR 重新加载。
配置说明¶
配置项位于 loader 配置的 nightshift 条目下。默认值如下:
| key | default | meaning |
|---|---|---|
timeZone |
Asia/Shanghai |
IANA 时区,用于解释窗口 |
peakWindows |
09:00–12:00, 14:00–18:00 |
[start, end) 墙钟窗口;可能跨午夜;[] 表示永不高峰 |
peakPricePerMTok |
2 |
高峰时段每百万 tokens 价格(请填入真实数值) |
offPeakPricePerMTok |
1 |
低峰时段每百万 tokens 价格 |
currency |
¥ |
显示货币 |
tickMs |
30000 |
窗口检查 / 调度间隔 |
maxRetries |
3 |
error/interrupted 轮次的重试次数 |
retryBaseMs |
60000 |
指数退避基数 |
retryFactor |
2 |
指数退避因子 |
retryMaxMs |
1800000 |
指数退避上限 |
continuationLimit |
3 |
max-tokens 情况下自动发送继续提示的最大次数 |
continuationPrompt |
继续 |
继续提示的文本 |
drainGapMs |
5000 |
调度之间的暂停时间 |
allowRunNow |
true |
是否允许面板上的「立即运行」按钮 |
reportRetentionDays |
30 |
报告保留天数 |
exposeTool |
false |
预留 v1.1 (nightshift_enqueue 工具) |
典型用法¶
在白天高峰时段编写任务,点击侧边栏的 🌙 芯片加入队列。插件会自动冻结调度。等到夜间低峰时段,插件会自动逐个处理任务。任务完成后,系统会生成一份每日节省报告。
注意事项¶
- 价格简化:缓存定价是简化的,所有 token 桶均按同一窗口价格计费,报告中的节省可能较为保守。
- 至少一次:任务在重启时会重新排队。请确保任务具有幂等性或可重运行。
- 单任务并发:同一时间只处理一个任务。
- 价格声明:插件不检查实际价格 API,使用你声明的
peakPricePerMTok和offPeakPricePerMTok。 - 配置变更:修改配置会触发 HMR 重载。
结语¶
dsh-nightshift 通过将任务调度与价格窗口绑定,帮助用户在高峰时段排队、在低峰时段释放,最终获得一份成本节省报告。其开源地址为 https://github.com/mikasaxin529/dsh-nightshift。