dsh-doom-loop-guard:在流式推理裏識別 doom loop 並干預

前言

在 DeepSeek Harness(DSH)裏跑帶推理鏈的智能體任務時,模型有時會在輸出裏陷入重複:破折號鋪滿一行、括號層層嵌套、短句機械復讀。這類「doom loop」不一定立刻報錯,但會拖長會話、佔滿上下文,後續步驟也很難糾偏。手工盯流式輸出成本高,事後翻日誌也難量化某次會話到底卡了多久。

社區插件 dsh-doom-loop-guard(維護者 dixieWithHeart,分類:工作流)在 llm/stream 路徑上做實時檢測,命中後可只記錄、注入提醒、或截斷並可選自動續跑,並支持掃描歷史會話生成報告。下面介紹其定位、能力、安裝與配置要點。

這是什麼

dsh-doom-loop-guard 是 DSH 工作流類插件:檢測推理輸出中的重複循環(doom loop),命中時以 提醒(nudge)、截斷(cut) 或 響鈴 等方式響應,並可生成歷史報告。當前倉庫版本爲 1.1.0(MIT 許可證)。

與同類現象插件 dsh-loop-rescue 的差異在於檢測器不同:文檔記載在約 1.4 萬條真實推理樣本上,本插件召回 100%、loop-rescue 約 60.5%,後者漏檢的主要是純符號填充。兩者均包裝 llm/stream,若同時啓用 cut,可能重複截斷,宜二選一。

核心功能

實時檢測

插件包裝 llm/stream,在流式輸出過程中識別:

  • 破折號填充過長
  • 括號嵌套異常
  • 短句重複

檢測規則隨 防護等級(寬鬆 / 普通 / 敏感)變化;普通(standard) 爲默認校準檔。

命中後的處置

模式 行爲
observe 只記錄,不改動輸出
nudge 注入提醒(提醒落在下一步請求,不能當場打斷當前流)
cut 截斷當前流,並可配合 autoResume 自動續跑

還可配置 生效門檻:僅當上下文佔用達到設定百分比後才啓用檢測(默認 warnAbovePercent 爲 0,即全程生效)。

音效與報告

命中時可播放提示音:默認啓用內置 assets/loop-alert.mp3,也可通過 soundPath 指定自定義音頻。

報告能力會掃描會話存檔,給出會話 doom 分與 14 天趨勢;掃描範圍由 reportDays、reportLimit 等字段控制(默認 7 天、最多 20 條相關範圍,以配置表爲準)。

防護等級閾值

README 給出的三檔示例如下(普通檔爲默認 preset: standard):

等級 破折號 括號 短句重複 間隔 佔比
寬鬆 1200 300 20 6 8%
普通 800 200 15 8 5%
敏感 500 120 10 12 3%

文檔說明:普通檔在 1.4 萬條真實推理上召回 100%、誤報 0。除 preset 外,也可在 patch 中直接寫 maxDashRun、maxParenRun、shortSentenceRepeat、maxRepeatGap、shortRepeatRatio 覆蓋閾值。

安裝與啓用

環境要求(來自 README 與 package.json):

  • DSH >= 0.2.1
  • Node >= 22.15(依賴內置 zstd 解壓)

面向用戶的安裝命令如下。將 <profile> 換成你實際使用的 DSH profile 名稱:

dsh plugin --profile <profile> add dsh-doom-loop-guard

本地開發插件時,文檔提到可用 install_bundle 指向插件目錄,此處不展開。

插件以當前 dsh 進程權限 運行;安裝前建議瀏覽倉庫源碼與 MIT 許可證,確認符合你的安全與合規要求。

配置

配置有兩條路徑:

  1. 寫在 profile 的 cordis.patch.yml(插件 id:dsh-doom-loop-guard)
  2. 在 DSH 設置頁修改(會寫入 ~/.dsh/dsh-doom-loop-guard.json)

常用字段默認值與含義如下:

字段 默認 說明
preset standard relaxed / standard / sensitive
intervention nudge observe / nudge / cut
warnAbovePercent 0 生效門檻,0 爲全程
autoResume true cut 後自動續跑
maxConsecutiveCuts 3 連續截斷上限
soundEnabled true 是否播放音效
soundPath '' 自定義音頻,留空用內置
reportDays / reportLimit 7 / 20 歷史掃描範圍

設置頁文案支持中文與英文,跟隨 DSH「設置 → 常規 → 語言」切換,無需重啓。插件清單中的名稱與描述由 locale/zh.json、locale/en.json 提供;若宿主缺少 locale 服務,界面退回中文並在控制台輸出 warn。

典型用法思路

沒有單獨的可複製 CLI「演示會話」時,可按下面順序落地:

  1. 用上述命令把插件裝進目標 profile,重啓或按 DSH 慣例加載插件。
  2. 先用 intervention: observe 跑一兩輪真實任務,確認誤報可接受,再改爲 nudge 或 cut。
  3. 長上下文任務可將 warnAbovePercent 調高,僅在接近窗口上限時加強幹預。
  4. 需要強打斷時用 cut,並視任務是否可分段,決定是否保持 autoResume: true 與 maxConsecutiveCuts。
  5. 定期查看報告中的 doom 分與趨勢,決定要不要從 standard 調到 sensitive 或放寬到 relaxed。

若已安裝 dsh-loop-rescue,請避免兩者同時對 llm/stream 做 cut,以免重複截斷。

適用場景與邊界

適合:

  • 經常在 DSH 裏跑長推理、工具鏈較長的智能體工作流
  • 需要可觀測的 doom 指標(報告、趨勢),而不只是肉眼盯流
  • 希望用等級或自定義閾值平衡召回與打擾

不適合或需注意:

  • 插件只覆蓋 符號崩壞與低信息循環,不包含語義層面的「打轉」;語義重複仍需提示詞、工具或上層編排處理。
  • nudge 不能當場中斷當前流;要即時止損需用 cut。
  • 星標與社區熱度不以本文爲準;請以 GitHub 與 SkillHub 頁面實時信息爲準(撰寫時倉庫星標爲 0)。

DSH 生態強調「一切皆插件」;SkillHub 等爲社區目錄,與 DeepSeek / 幻方無官方從屬關係,本文僅作技術介紹,不代表官方背書。

結尾

dsh-doom-loop-guard 把 doom loop 檢測接到 llm/stream 上,用可配置的觀察、提醒或截斷減輕重複輸出對上下文和工時的消耗,並用報告把單次會話與短期趨勢攤開。若你在同類插件之間選擇,可按文檔中的召回差異與 cut 互斥說明,與 dsh-loop-rescue 二選一搭配。

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

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

小夜