在 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 服務端口。
典型用法¶
- 安裝:執行
dsh plugin --profile desktop add dsh-offpeak。 - 配置:編輯
config/offpeak.json,設置時區、峯窗口和週末策略。 - 管理:通過
/session-guard/settings面板管理攔截列表與暢跑,或通過POST /session-guard/rpc設置模型模式並熱重載。 - 環境變量:使用
DSH_OFFPEAK_CONFIG顯式指定配置文件路徑。