DeepSeek Harness (DSH) 實時重複輸出守衛

前言

DeepSeek Harness (DSH) 是面向大模型推理的插件化框架。在開發或使用過程中,模型有時會陷入“復讀”狀態,即連續輸出相同的字符串或段落。這不僅浪費 Token,還會污染會話上下文。

dsh-dupguard 是一個 DSH 實時重複輸出守衛插件,用於在模型生成流中實時檢測重複內容,一旦檢測到同一字符串連續重複達到閾值,立即停止本次生成。

是什麼

名稱:zqh260619/dsh-dupguard

定位:模型推理插件,解決大模型輸出中的循環復讀問題。

核心能力:
- 實時監測:在流式輸出過程中逐增量檢測。
- 精準截停:當同一字符串在輸出中連續重複 ≥ 10 次時(默認值),立即中斷生成流。
- 兼容性:支持 DSH 動態插件與 npm 常駐版雙入口交付。

安裝與啓用

安裝前請確保環境滿足以下要求:
- DSH 版本 ≥ 0.1.2-rc.1(宿主 API 下限爲 ≥ 0.1.1-rc.1)
- Node.js 版本 ≥ 20

執行以下命令安裝插件(示例使用 web profile,請替換爲你的實際 profile 名稱):

dsh plugin --profile web add dsh-dupguard

安裝後需要重啓 DSH 才能生效,因爲宿主代碼只在進程啓動時加載。

安裝成功的判斷標準:
1. 設置頁新增“重複守衛”分節。
2. 宿主日誌中出現 [dupguard] 生效參數:…(以日誌爲準)。

核心功能

檢測機制

  • 逐增量檢測:每個 text-delta 到達時即觸發判定,命中即停止。
  • 復讀形態:支持單字符、詞語、帶空格/換行分隔的字符串、逐行重複等多種形態。

代碼區域放寬

默認情況下,代碼區域(包括圍欄代碼塊、行內代碼、縮進代碼塊)的檢測閾值會放寬至默認值的 3 倍。這防止了正常代碼編寫或測試夾具中的字符重複被誤判。

思考守衛

默認開啓對 reasoning(思考)文本的檢測。如果模型在思考過程中陷入循環,也會被立即截停。可在設置中通過 monitorReasoning: false 關閉。

截停通知

插件提供全局通知功能。無論用戶當前打開哪個會話,截停發生時都會彈出通知,顯示重複的字符串和重複次數,並提供“繼續”或“不發送”的選項。

配置與設置

通過設置頁可調整參數,改完無需重啓,配置會寫回 cordis.patch.yml 並由宿主熱讀取。

默認配置

  • 觸發閾值:默認連續重複 ≥ 10 次。
  • 代碼倍數:代碼區域倍數默認爲 3。

檢測範圍

  • 忽略白名單:支持忽略特定字符(如 Markdown 表格分隔符 - |)和特定字符串片段。
  • 工具參數:默認不檢測工具調用參數(monitorToolArguments: false)。

分段表模式(實驗性)

設置頁支持分段表模式,限制爲 1-16 行,用於根據輸出單元長度動態設置不同的重複次數閾值。

注意事項與限制

  • 版本依賴:插件依賴 DSH >= 0.1.2-rc.1 和 Node >= 20。
  • 已知缺陷:fixStandingMountConflict 默認開啓,但在 DSH 0.1.1-rc.1 和 0.1.2-rc.1 版本上實測存在缺陷。
  • 通知機制:截停通知是全局通知,與當前打開的會話無關。
  • 配置演進:配置鍵從 1.0.0 版本起只增不減,配置項取值範圍只會放寬,不會收縮。
  • 實驗性功能:advancedThresholdFile 爲實驗性功能。

總結

dsh-dupguard 通過在 DSH 流式輸出中增加一層實時檢測,有效防止模型陷入無意義的復讀循環。其默認的寬鬆代碼檢測策略和全局通知機制,使其在開發調試和生產環境中都能保持較高的實用性。

GitHub 倉庫

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

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

小夜