dsh-offpeak:DSH 宿主插件,用於自動管理高峯期會話與請求

在 DeepSeek Harness (DSH) 生態中,插件化是核心。當處於高峯期時,API 限流會直接導致請求失敗。dsh-offpeak 插件旨在解決這個問題:在高峯請求真正發出之前進行攔截,只攔截目標爲官方源或顯式列出的模型的請求,其餘照常運行,並支持給單個會話排一段時間「暢跑」豁免。

這是一個 DSH 宿主插件,插件 id 爲 dsh-offpeak。作者爲 lizilong1993。配置文件位於 config/offpeak.json。

核心功能

可配置峯谷策略
峯窗口、時區、每窗口的星期與週末規則全部來自 config/offpeak.json(環境變量 $DSH_HOME/config、當前目錄 config、包內默認依次生效)。配置文件寫壞絕不靜默讓守衛失效:錯誤被收集並暴露,對應鍵保留默認值。

回合門控
入峯時對 running 會話走回合級暫停(當前輪跑完再攔),退峯自動放行。自動放行不碰手動 /pause。

請求級守衛
agent/request 每個請求都過,所以入峯後才啓動的會話、會話中途切到官方源的情況都能兜住。hold(默認)靜默掛起,error 拋可識別的 PEAK_DEFERRED。

目標判定
優先級:顯式 officialProviders → 模型名(精確匹配、大小寫不敏感) → 實時 baseURL → catalog 默認端點 → 內置 id(deepseek-official)→ unknown。只有判爲官方纔攔。

高峯攔截列表
在面板裏勾選模型(或直接寫 officialModelPatterns):條目是模型名精確匹配 —— 勾了 ocg/deepseek-flash 就只攔這一個模型,無論它跑在哪條路由上;不勾不攔。面板頂部有關鍵詞過濾、全選/取消全選、刷新與熱重載。

暢跑
給單個會話排一段或多段絕對時間窗口,窗口內該會話在入峯、請求掛起兩處都豁免;支持逐段暫停/恢復、合併上限 8 條、持久化。面板裏與攔截列表同處一個展開區(最上方)。

可編輯高峯谷時
面板最底部「當前高峯谷時」:按配置預填每段 開始 – 結束(可增刪行)+「週末默認谷時」複選框,保存即寫入 config/offpeak.json 並立即生效(其它鍵與每行的星期限制原樣保留)。

顯示時區
可另選任一 IANA 時區(默認策略時區):暢跑時間、峯谷時段與 hover 卡片按它換算展示;配置文件裏的時間值不動。

徽標
輸入區一個可點徽標:高峯 / 高峯 · 攔截中 / 高峯 · 暢跑中 / 谷時 / 週末;攔截態紅、放行態綠。

自動重試
可選的後端重試(默認關),且永遠給門控讓路。

兼容性

DSH 宿主版本
package.json 的 engines.dsh = >=0.1.5-rc.2 <0.1.6-0 \|\| >=0.1.7-rc.1 <0.1.8-0 \|\| >=0.2.0-rc.1 <0.2.1-0(三段)。穩定接口:/session-guard/* 路由前綴(與既有工具兼容)。

Node 版本
engines.node >= 20。

與 input-traffic 關係
優先讀 window.__DSH_OFFPEAK_BRIDGE__,兼容舊橋接名 window.__DSH_SESSION_GUARD_BRIDGE__。

已知限制
不識別法定節假日;暢跑按配置時區解釋牆鍾;高峯攔截列表是精確模型名匹配(不做關鍵字/正則的批量覆蓋)。

安裝

三條通道任選:npm 包 / GitHub 倉庫 / 本地目錄或 Release 裏的 tgz。

# npm(推薦)
dsh plugin --profile desktop add dsh-offpeak

# GitHub
dsh plugin --profile desktop add github:lizilong1993/dsh-offpeak

# 本地目錄 / Release 資產
dsh plugin --profile desktop add ./dsh-offpeak
dsh plugin --profile desktop add ./dsh-offpeak-<version>.tgz

從源碼構建(開發用):

git clone https://github.com/lizilong1993/dsh-offpeak.git
cd dsh-offpeak
npm install
npm run build

配置

config/offpeak.json(默認層;設置表單裏的值優先),常用鍵:

{
  "timezone": "Asia/Shanghai",
  "peakPolicy": { 
    "peakWindows": [{ 
      "name": "morning", 
      "start": "09:00", 
      "end": "12:00", 
      "days": ["mon","tue","wed","thu","fri"] 
    }] 
  },
  "weekendPolicy": { "enabled": true, "days": ["sat","sun"], "mode": "offPeak" },
  "providerGuard": true,
  "officialProviders": [],            // 追加官方 provider id(精確匹配,最高優先級)
  "officialModelPatterns": [],        // 高峯攔截的模型名(精確匹配、大小寫不敏感)
  "officialBaseURLs": ["api.deepseek.com"],
  "deferredMode": "hold",             // 'hold' | 'error'
  "deferredResume": true
}

可用 DSH_OFFPEAK_CONFIG 顯式指定配置文件。

HTTP / 服務面

GET /session-guard/status · /state?session= · /settings · /diag · POST /session-guard/rpc(動作包括 setModelPatterns、setPeakPolicy、freeRunAdd、reloadConfig 等),以及進程內的 sessionGuard 服務端口。

典型用法

  1. 安裝:執行 dsh plugin --profile desktop add dsh-offpeak。
  2. 配置:編輯 config/offpeak.json,設置時區、峯窗口和週末策略。
  3. 管理:通過 /session-guard/settings 面板管理攔截列表與暢跑,或通過 POST /session-guard/rpc 設置模型模式並熱重載。
  4. 環境變量:使用 DSH_OFFPEAK_CONFIG 顯式指定配置文件路徑。
羽毛球分组比赛记分
小程序二维码

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

小夜