前言¶
在 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 許可證)。
- 目錄頁:https://www.skillhub.cn/plugins/dixieWithHeart/dsh-doom-loop-guard
- 源碼:https://github.com/dixieWithHeart/dsh-doom-loop-guard
與同類現象插件 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 許可證,確認符合你的安全與合規要求。
配置¶
配置有兩條路徑:
- 寫在 profile 的
cordis.patch.yml(插件 id:dsh-doom-loop-guard) - 在 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「演示會話」時,可按下面順序落地:
- 用上述命令把插件裝進目標 profile,重啓或按 DSH 慣例加載插件。
- 先用
intervention: observe跑一兩輪真實任務,確認誤報可接受,再改爲nudge或cut。 - 長上下文任務可將
warnAbovePercent調高,僅在接近窗口上限時加強幹預。 - 需要強打斷時用
cut,並視任務是否可分段,決定是否保持autoResume: true與maxConsecutiveCuts。 - 定期查看報告中的 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 二選一搭配。