dsh-plugin-weaknet-adaptor:DeepSeek Harness 的弱網適配插件

前言

用 DSH 跑長任務時,網絡抖動是個繞不開的問題:模型流跑到一半斷掉,回覆鏈條中斷,重開會話要從頭再來;如果重試不做約束,等待和重發還會持續消耗 token。DSH 的理念是「一切皆插件」,網絡這一層的問題同樣可以交給插件統一處理。與其在斷流後手動補救,不如讓插件在網絡層把重試、緩存、重連接管起來——下面介紹的 dsh-plugin-weaknet-adaptor 做的就是這件事。

這是什麼

dsh-plugin-weaknet-adaptor 是一個 DeepSeek Harness 弱網適配插件,作者 jiay98528-dev,MIT 許可證,要求 Node >= 18。它解決的核心問題是:弱網環境下模型回覆鏈條斷裂、重試燒 token。

它以 npm 包的形式分發,在 cordis.yml 中靜態加載。相比會話內用 cordis_define 創建的動態插件(只存在於進程內存,進程崩潰或重啓即丟失),靜態加載的包重啓後依然生效。截至 2026 年 9 月,package.json 中的版本號爲 1.0.5,倉庫 CHANGELOG 詳細記錄到 1.0.3。

核心功能

模型流透明重試

插件以 prepend 方式掛載在 llm/stream 瀑布層,透明攔截模型流。進入降級模式後,插件對響應做全緩衝,失敗即按指數退避重試,默認最長等待 10 分鐘。重試等待期間零模型調用,也就是零 token。

本地響應緩存

完整成功的響應會緩存到本地,key 是請求指紋,採用 LRU 淘汰,TTL 可配置。指紋由以下字段組成,只有逐字節一致的請求才命中,命中後零 token 本地重放:

provider + model + reasoningEffort + temperature + maxTokens
+ stop + system + tools + messages + purpose

心跳自動重連

斷網後,本地心跳任務按指數退避自動探測重連,間隔上限默認 10 分鐘;任意模型流成功也會立即被動恢復在線狀態。composer 底部狀態欄顯示網絡狀態:綠爲正常,黃爲弱網,紅爲中斷。

降級省 token

重連後有兩個可選的省 token 手段:輸出上限降級(reduceMaxTokens)和會話 tool-result 的確定性裁剪(pruneToolResults)。注意後者不可逆,開啓前需要確認可以接受。

結構化設置頁

24 個參數全部結構化(分組、類型、範圍、默認值),集中在設置頁「弱網適配」,可全部即時調整。每個參數的說明與預期效果均爲中英雙語,UI 跟隨系統語言。參數持久化到 <workspaceRoot>/.dsh/weaknet-params.json

設置頁底層通過 @Remote(dsh-typert-protocol)的 SRC markers 機制調用 weaknet/* 命名空間(getParamDefs / getParams / setParams / getStatus / resetStats),無需手寫 typert 生成物。

設計取捨

重試掛在 llm/stream,而不是 agent/request-error

宿主的 llm-retry 默認已接管 agent/request-error,後註冊的監聽器會被短路;而 llm/stream 是每個模型請求必經的瀑布,可以確定性接管。因此重試放在 llm/streamagent/request-error 僅作降級觀察。

明確不做的事

  • 不做工具集裁剪:裁剪工具集會改變模型的能力面,插件保持克制。
  • 不做流中斷的「前綴續傳」:LLM API 不支持續傳,重試即重新生成。

安裝與啓用

先用 npm 安裝:

npm install dsh-plugin-weaknet-adaptor

包依賴 @deepseek-ai/dsh-typert-protocol@deepseek-ai/*cordis 等對等依賴由 npm 自動安裝。

再在你運行的 DSH 配置的 cordis.yml 中靜態加載:

plugins:
  - name: dsh-plugin-weaknet-adaptor

Host 半區自動激活;瀏覽器半區(設置頁與狀態欄)經包內 dsh.client 聲明由 client-modules 提供,無需額外接線。重啓 dsh 後插件依然生效。

快速驗證

經過上面的步驟,插件已經在運行。可以按下面三步確認工作狀態:

1、打開 設置 → 弱網適配,能看到狀態卡與分組參數,每項帶雙語說明與預期效果。
2、把「心跳探測地址」改爲 http://127.0.0.1:1/x 並保存,composer 底部狀態欄會依次變黃(弱網)、變紅(連續 3 次探測失敗、中斷);改回默認地址後變綠,自動恢復在線。
3、切換界面語言(中/英),設置頁文案即時跟隨。

適用場景與注意

適合兩類使用者:網絡不穩定環境下跑長任務的 DSH 用戶,以及在意 token 消耗、希望相同請求直接本地重放的使用者。心跳探測地址可自定義,內網或代理環境可以指向自己的輕量端點。

使用前有幾點需要留意:

1、pruneToolResults 對會話 tool-result 的裁剪不可逆,確認後再開啓。
2、緩存只在請求逐字節一致時命中,messages 或任何參數有差異都會重新調用模型。
3、插件以當前 dsh 進程的權限運行,安裝第三方插件前建議先閱讀源碼與許可證;本項目的許可證爲 MIT,源碼與依賴清單在 GitHub 倉庫可見。

結語

dsh-plugin-weaknet-adaptor 把弱網下的重試、緩存、重連和省 token 收進一個可即時調整的設置頁,參數全部結構化,行爲邊界(重試掛載層、明確不做的事)寫得清楚。網絡不穩的環境裏,它能讓回覆鏈條儘量不斷。

  • GitHub 倉庫:https://github.com/jiay98528-dev/dsh-plugin-weaknet-adaptor
  • 社區插件目錄(獨立站點,與 DeepSeek / 幻方無官方從屬關係):https://www.skillhub.cn/plugins/jiay98528-dev/dsh-plugin-weaknet-adaptor
羽毛球分组比赛记分
小程序二维码

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

小夜