在 DeepSeek Harness 中开发智能体时,模型调用成本是主要考量之一。插件 dsh-peak-hours 提供了运行窗口的切换能力,允许用户在非高峰时段自动运行或暂停任务,以优化成本。
插件简介¶
这是一个由 lion231226 维护的 DeepSeek Harness 工作流插件,基于 MIT 许可证。它允许在 Composer 工具栏添加控件,在“总是运行”和“仅非高峰时段运行”之间切换。在“仅非高峰时段运行”模式下,当北京时区的峰价窗口开始时,所有 dsh 任务(包括正在运行的任务)会自动暂停;窗口结束后自动恢复。
核心功能¶
- 界面控件:在 composer 工具栏添加运行模式切换控件,支持“总是运行”和“仅非高峰时段运行”两种模式。
- 自动调度:高峰时段自动暂停所有任务,非高峰时段自动恢复。
- 时段判定:基于北京时区(UTC+8)的峰谷时段判定(周一至周五 09:00-12:00, 14:00-18:00)。
- 节假日支持:支持法定节假日和补班日判定。
- HTTP API:提供 API 接口用于状态查询、模式切换和时钟模拟。
- 实现方式:无构建步骤,纯 JavaScript 实现。
安装与启用¶
使用 DeepSeek Harness 的 CLI 进行安装:
dsh plugin --profile web add github:lion231226/dsh-peak-hours
典型用法¶
界面操作¶
在 composer 界面中,点击工具栏中模式按钮右侧的控件即可选择运行策略。
API 操作¶
插件在宿主机的回环 Web 服务器上注册了以下接口:
- 查询健康状态:
GET /api/peak-hours/health
- 查询当前状态:
GET /api/peak-hours/state?session=<id>
不带 `?session=` 参数时,报告 `default` 模式。
- 切换运行模式:
POST /api/peak-hours/mode
Content-Type: application/json
{
"mode": "always" | "idle-only" | null,
"session": "<id>",
"scope": "session" | "default"
}
设置 `mode: null` 并指定 session 可清除该 session 的覆盖设置。
- 时钟模拟:
POST /api/peak-hours/clock
Content-Type: application/json
{
"offsetMs": <int|null>,
"ttlMs": <int>
}
`ttlMs` 最大限制为 30 分钟。
技术细节与注意事项¶
- 安装冲突:不要混用
dsh plugin add和install.ps1两种安装方式。dsh plugin add会注册包,而install.ps1会手动写入 patch 文件。混用会导致 patch 文件重复。 - 补班日逻辑:补班日被视为空闲时段,不参与高峰时段判定。
- 时钟覆盖:
clockOverride的 TTL 最大限制为 30 分钟。 - 依赖项:依赖
@deepseek-ai/cordis(可选依赖)。 - 拦截机制:主要通过
agent/pre-step和tools/pre-execute拦截,llm/stream接口未被阻挡,因为其返回类型与 agent loop 的调用路径有关。
适用场景¶
该插件适合需要在特定时间段控制任务运行、以降低模型调用成本的 DeepSeek Harness 用户。使用前请检查源码与许可证,插件以当前 dsh 进程权限运行。