dsh-hyper-tools:解決 Charm Hyper 網關 10 MiB 限制的插件

前言

DeepSeek Harness (DSH) 採用了插件化架構,允許在模型推理前注入中間件邏輯。Charm Hyper 的 HTTP 網關(Google Frontend 後端)對請求體有嚴格的 10 MiB 限制。當對話歷史累積的圖片超過這個上限時,網關會拒絕請求並返回 400 invalid request body 錯誤,導致推理任務在執行前就失敗。dsh-hyper-tools 插件正是爲了解決這一場景而設計。

插件概覽

該插件由 samuelrubiodev 維護,開源協議爲 MIT。它通過攔截特定路由的請求,在發送到網關前動態調整圖片載荷,確保請求體大小不超過限制。

工作原理

插件通過註冊 llm/stream 中間件實現功能,主要包含兩個步驟:

  1. 預處理與替換
    在請求分發前,插件會根據 maxRequestImageBytes 預算投影持久化歷史。如果圖片載荷超標,最舊的圖片會被替換爲 DSH 標準的佔位符文本([image omitted to fit request image limits; …]),而最新的圖片會被保留。如果請求體原本就符合要求,則直接通過 next() 分發,不做額外處理。

  2. 失敗重試
    如果網關依然拒絕請求(通常是因爲預算估算低估了非圖片的元數據開銷),插件會捕獲這個錯誤並重試一次。重試時,圖片預算會乘以 recoveryBudgetFactor(默認 0.5),進一步替換更舊的圖片。如果已無可替換內容,則原樣返回原始錯誤。

安裝

使用以下命令安裝插件:

dsh plugin --profile <profile> add dsh-hyper-tools

配置

該插件支持靈活的配置,所有字段均爲可選。以下是核心配置項:

配置項 默認值 說明
providers ['charm-hyper', 'hyper'] 受影響的 Provider 路由列表(不區分大小寫)。
maxRequestImageBytes 6291456 (6 MiB) 單次請求允許的最大圖片載荷(Base64 字節數)。
recovery true 當網關拒絕請求時,是否觸發一次重試。
recoveryBudgetFactor 0.5 重試時的圖片預算乘數。
byteQuantum 1 字節溢出時的移除步長。
countQuantum 1 數量溢出時的移除步長。

配置示例:

- id: hyper-tools
  name: 'dsh-hyper-tools'
  config:
    providers: ['charm-hyper']
    maxRequestImageBytes: 6291456

注意事項

  • 預算計算範圍:maxRequestImageBytes 僅計算圖片的 Base64 載荷。文本內容、工具模式定義以及 JSON 結構體不計入此限制。
  • 僅處理指定路由:插件僅對 providers 列表中的路由生效,其他 Provider 的請求不受影響。
  • 兼容性:需要 @deepseek-ai/dsh-llm ^0.1.5-rc.1。

總結

dsh-hyper-tools 通過智能替換舊圖片和失敗重試機制,解決了 Charm Hyper 網關對請求體大小的硬性限制問題。對於需要處理大量圖片的長對話場景,這是一個可靠的中間件解決方案。

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

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

小夜