@zhourenke/dsh-agent-rate-limit:爲 DSH 自動添加 TPM/RPM 速率限制

前言

DSH 的 Agent 循環能在幾十秒內連續發出多個請求。這很容易超過供應商的 TPM(每分鐘令牌數)或 RPM(每分鐘請求數)上限,導致對話被 429 錯誤打斷。@zhourenke/dsh-agent-rate-limit 插件在 LLM 流式管線前插入一層自適應延遲。它使用滑動窗口算法管理請求隊列,在觸發供應商限速之前,先按餘量把請求排好隊。

插件簡介

  • 名稱:@zhourenke/dsh-agent-rate-limit
  • 維護者:zhourenke
  • 許可證:MIT

核心能力:
* 讀取 API usage 數據塊,含緩存命中,賬單口徑準確。
* 只延遲不拒絕,避免 429 導致對話中斷。
* 默認值匹配常見配額,無需改動 DSH 源碼。
* 支持配置熱重載。

安裝與啓用

通過命令行安裝:

dsh plugin --profile web add "github:zhourenke/dsh-agent-rate-limit"

安裝後必須重啓 DSH 纔會生效(新增的 bundle 在進程啓動時才載入)。確認插件加載成功:在聊天輸入框輸入 /agent-rate-limit,若顯示 Status: loaded 即爲工作正常。

配置

默認配置即可工作,但可以通過編輯配置文件調整參數:

~/.dsh/profiles/web/cordis.patch.yml

主要配置項包括:

  • tpmLimit:每分鐘令牌上限,默認 1200000。
  • rpmLimit:每分鐘請求數上限,默認 15000。
  • safetyFactor:安全係數,默認 0.8,實際生效上限爲 tpmLimit * safetyFactor。
  • verbose:是否輸出詳細日誌。
  • countFailedAttempts:失敗嘗試是否計入窗口,默認 true。

編輯配置後保存,無需重啓,熱重載即可生效(僅安裝/卸載插件本身需要重啓)。

工作原理與限制

插件通過滑動窗口算法控制請求頻率。當窗口內有足夠餘量時直接放行;接近上限時等待舊記錄滑出窗口。

注意事項:
* 窗口狀態存在於 DSH 進程內,多實例不共享。
* 配置對 provider 是全局的。
* 失敗嘗試默認計入窗口。
* 不保證不撞限速,僅降低概率。

結語

該插件爲 DSH 提供了基礎的保護機制,通過在觸發供應商限速前進行排隊,降低了對話中斷的風險。更多細節可參考 GitHub 倉庫。

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

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

小夜