dsh-peak-guard:在 DSH 中按模型目录拦截 DeepSeek 峰时计费调用

前言

在 DeepSeek Harness(DSH)里走 OpenCode Go 等推理通道时,部分 DeepSeek 模型会在特定时段按倍率加价。若智能体在峰时仍持续发起流式请求,账单和调试成本都会抬升。手动记时间表或改代码硬编码窗口,既难维护,也难跟上厂商改价。

dsh-peak-guard 是维护者 yamahei21python 发布的 DSH bundle,分类为模型推理。它在发请求前读取提供商模型目录中的 cost.multipliers,仅在判定为峰时且未手动解除时拦截调用,并以可复现的 CLI 做短时放行。

这是什么

dsh-peak-guard(npm 包名同插件 id)面向已使用 DSH、且通过配置中的 provider(默认 opencode-go)路由 LLM 调用的开发者。插件不替换你的 API Key、endpoint 或模型列表行,只增加峰时守卫逻辑;峰时窗口不写死在仓库里,而是随 opencode-go 目录更新。

许可证为 MIT;package.json 标明版本 0.1.0,DSH 引擎要求 >=0.2.0-rc.1 <0.3.0(developer preview 阶段)。

核心功能

下面介绍插件在资料中明确描述的行为。

  1. 挂载点:挂钩 llm/stream waterfall,在流式推理发出前介入。
  2. 目录拉取:请求 https://opencode.ai/inference/go/v1/models(10 分钟缓存;失败时保留上次成功目录;失败负缓存 60 秒)。
  3. 峰时判定:用当前 UTC 时间评估各模型 cost.multipliers[].when(utc_days、utc_hours 及 gte/lt、any/all)。
  4. 拦截方式:命中峰时且无有效 bypass 时,产出终端 finish 片段,code: PEAK_GUARD,语义上对应 HTTP 429,回合干净结束而非进程崩溃。
  5. 目录不可用时的回退:使用文档记载的平日窗口 UTC 01:00-04:00 与 06:00-10:00(对应 JST 平日 10:00-13:00 / 15:00-19:00 一类表述,以目录为准)。
  6. 守卫范围:仅阻止经配置的 provider id 发出的调用(默认 opencode-go);Claude Code、Codex 等其他客户端不在此包覆盖范围内。

拦截时用户可见的示例输出(README 日文说明)大意如下:当前模型因峰时倍率停止,并提示剩余峰时时间与临时解除命令 npx dsh-peak off。

安装与启用

先做插件安装,再重启 DSH。bundle 安装会把 guard 行写入 profile,无需手写插入 cordis.patch.yml 中的 guard 片段。

npm(推荐):

dsh plugin --profile web add dsh-peak-guard

未走 registry、从 GitHub 添加时:

dsh plugin --profile web add github:yamahei21python/dsh-peak-guard

安装完成后重启 dsh。

提供商配置:bundle 只安装守卫;模型 provider 行仍由你维护(API Key、endpoint、models)。OpenCode Go 的示例片段见仓库 README,路径为 ~/.dsh/profiles/web/cordis.patch.yml,包含 llm-pi-ai 下 opencode-go 的 baseURL、models 列表,以及 agent-default-model 的 provider / model 指向。密钥可通过 DSH Models 页的 credentials 服务保存,或导出环境变量 OPENCODE_GO_KEY。

可选的插件级覆盖(cordis.patch.yml 中 peak-guard 行):

- id: peak-guard
  config:
    providers: [opencode-go]
    modelsUrl: https://opencode.ai/inference/go/v1/models

典型用法:峰时拦截与手动解除

经上面的步骤启用后,峰时内请求会被挡住。需要临时继续开发时,用包自带的 dsh-peak 二进制(通过 npx 调用):

npx dsh-peak off          # 60 分钟
npx dsh-peak off 30       # 30 分钟
npx dsh-peak on           # 立即恢复拦截
npx dsh-peak status

状态写入默认与 OpenCode guard 共用的状态文件,形如:

{"until":1794017000000,"minutes":60,"set_at":"2026-11-07T02:00:00.000Z"}

可用环境变量 DSH_PEAK_BYPASS 覆盖状态文件路径。守卫采用 fail-closed:文件缺失或损坏时,峰时内仍视为应拦截。

本地开发可强制行为:

PEAK_GUARD_FORCE=peak dsh web   # 始终拦截
PEAK_GUARD_FORCE=off  dsh web   # 始终放行

适用场景与注意

适合:已在 DSH web(或其它已配置 profile)中使用 OpenCode Go 调用 DeepSeek,希望自动跟目录倍率、又保留可控的短时 bypass 的开发者。

需注意:

  • 插件在当前 DSH 进程权限下运行;安装前请自行查看 GitHub 源码 与 MIT 许可证。
  • 价格与峰时窗口完全来自提供商目录,本包不随仓携带价目表。
  • 需要全客户端统一控费时,应在网关层另做 guard,而非仅依赖此 bundle。
  • DSH 仍为 developer preview,engines.dsh 版本区间较窄,升级 DSH 主版本前请核对兼容性。

结尾

dsh-peak-guard 把峰时判断交给模型目录、把放行交给 dsh-peak,在 DSH 流式路径上减少无意高价调用。目录介绍见 SkillHub 插件页,安装与配置细节以 GitHub 仓库 README 为准。

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

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

Xiaoye