dsh-session-guard:高峰自动会话门插件

前言

DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在 2026-08-17 DeepSeek 实行峰谷计费后,高峰时段(北京时间 9:00-12:00、14:00-18:00)的模型调用单价变为闲时的 2 倍。对于需要长时间运行会话的场景,手动控制暂停不仅效率低下,也难以做到精准的峰谷错峰。

dsh-session-guard 插件旨在解决这一问题。它通过自动会话门机制,实现高峰自动暂停、周末模式以及会话级的冻结与恢复,帮助开发者在不修改 DSH 源码的情况下,实现成本优化。

插件介绍

dsh-session-guard 是一个由 drscrewdriver 维护的 DSH 插件,采用 MIT 许可证。

它不需要对 DSH 源码进行修改或提交 Pull Request,而是通过 dsh plugin 命令和 bundle patch 的方式装配 Cordis 插件。核心功能包括:高峰自动暂停、周末模式、官方源二维判定、会话级冻结/恢复以及后端自动重试。

核心功能

周末模式

插件识别周末状态,基于配置时区的 Intl.DateTimeFormat,避免直接使用裸 getUTCDay() 可能带来的时区边界 bug。在周末模式下,插件会忽略峰谷计费规则,允许会话畅快运行。

高峰自动暂停(全局)

进入高峰时段(且非周末)时,插件会自动暂停所有处于 running 状态的根会话。退峰后,所有会话自动恢复运行。这是一个全局开关,无需手动干预。

官方源二维判定(providerGuard)

高峰期的拦截策略是精细化的。插件仅在请求目标是 DeepSeek 官方源 时才进行拦截。如果使用本地或第三方 Provider(如 local-35b),无论是否处于高峰期,请求都会正常通过,不受高峰门控影响。判定逻辑依次为:显式 ID 名单 → baseURL 端点 → catalog 默认端点 → 内置 ID。

会话级冻结/恢复

插件提供了会话级的控制能力。除了自动暂停,还支持通过 POST /session-guard/rpc 接口或 input-traffic 集成的冻结按钮对特定会话进行冻结或恢复。同时提供了 /pause、/resume、/cancel 手动命令。

后端自动重试

在冻结或门控期间,如果发生瞬时失败(如 error、429、max-tokens),插件具备自适应退避的自动重试机制,直至永久失败停止。这保证了在暂停期间不会因偶发错误导致任务中断。

Fail-open 静默降级

为了保证系统的稳定性,插件设计了 fail-open 机制。如果自研会话门不可用、session-guard 未安装或设置服务缺失,系统将静默降级,不会因为这些依赖缺失而导致整个 DSH 进程崩溃。

安装

使用 DSH 的插件管理命令进行安装。请根据你的宿主版本选择对应的 dist-tag。

# 安装 dsh-session-guard (推荐使用指定 dist-tag)
dsh plugin --profile web add dsh-session-guard@dsh-0.1.5

注意事项:
不要依赖裸包名 dsh-session-guard。npm 的 latest 标签无法同时服务两条互斥的版本线(两条线的 engines.dsh 按 semver 预发布规则互斥)。必须使用指定的 dist-tag(如 @dsh-0.1.5)。

兼容性与限制

  • 语言支持: v0.1.1 版本已包含日语(ja)和韩语(ko)字典,但当前官方 DSH 仅通过 LocaleRuntime 提供 zh 和 en。在原版 DSH 中选择 ja 或 ko 会失败并提示 locale not registered。需要等待官方 DSH 增加对应 locale ID 后才能正常使用。
  • 降级策略: 如前所述,所有依赖项缺失均会触发静默降级,确保插件本身不影响宿主运行。

结语

dsh-session-guard 提供了一套完整的会话门控方案,结合 DeepSeek 的峰谷计费策略,能有效帮助开发者在保证业务连续性的同时降低调用成本。其 fail-open 设计也保证了插件生态的健壮性。

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

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

小夜