dsh-loop-recover:檢測死循環、剪枝壓縮並在原任務上續跑

前言

在 DeepSeek Harness(DSH)裏跑本地或小模型時,輸出有時會卡在字面重複(例如連續 ssssss...)或語義上的「反覆分析同一段推理」。常見的循環防護只是在檢測到後截斷並結束本輪,任務往往就此中斷,需要人工新開對話或重試。

dsh-loop-recover 面向同一類問題,但把處理做成一條完整的救援鏈:流式檢測 → 剪掉重複後綴 → 用 checkpoint 摘要替換被污染的上下文 → 在同一 agent 循環裏自動 followup 續跑,不新建 session、不重啓應用。下面介紹它的定位、能力與安裝配置要點。

這是什麼

維護者爲 GitHub 用戶 terry2010,倉庫 terry2010/dsh-loop-recover,在 SkillHub 插件目錄中歸類爲工作流。插件簡介(英文原文):A guard for DeepSeek Harness: stops model repeat loops mid-stream, prunes and compacts context, then resumes the task.

當前 npm 包版本爲 0.3.4(見倉庫 package.json),許可證 MIT,可在插件頁 GUI 配置,無需手寫 YAML。

核心功能

README 將能力概括爲四步,且都在同一次 agent 循環內完成:

  1. Detect(檢測) — 五層檢測器:週期性、n-gram、錨點、字符連續段、句子池,並有意圖層面的 tool-query 跟蹤。
  2. Prune(剪枝) — 在流式輸出中途切掉重複後綴,並留一行 marker,讓模型知道有一段內容被移除。
  3. Compact(壓縮) — 用 checkpoint 摘要替換「中毒」上下文(v4 compaction/* 事務),避免模型沿同一路推理再跑一遍。
  4. Resume(續跑) — 對同一任務自動 followup,並刷新採樣參數;不新開 session、不重啓。

掛鉤範圍:僅包裝 agent 調用的 llm/stream;標題/摘要等非 agent 請求原樣透傳。

安裝與啓用

推薦在 DSH 桌面端通過界面安裝;也可用 CLI(命令來自官方 README)。

GUI:

打開 Plugins → Add plugin,搜索 dsh-loop-recover,點擊 Install。

CLI:

dsh plugin --profile desktop add dsh-loop-recover
# then restart the app

安裝後需重啓應用。運行環境要求 Node >= 22.18.0(見 package.json 的 engines)。

配置與典型用法

配置項在插件頁面編輯,共約 32 個字段,分組爲 Basics / Rescue / Resume / Intent / Detection / Detector (Advanced)。README 摘錄的關鍵項如下。

分組 主要字段
Basics mode、watch、language、keepLanguage、marker、debugLog
Rescue maxConsecutiveRescues、compactOnRescue、stallCalls
Resume retryTemperature、retryReasoningEffort、retryRequests
Intent intentEnabled、intentNoveltyThreshold、intentConfirmCount

運行模式(mode):

  • rescue(默認):剪枝 + 壓縮 + 續跑。
  • cut:僅剪枝,不續跑。
  • observe:只記錄日誌、不干預;適合先在真實 workload 上觀察閾值再開救援。

典型工作流:新裝插件時先用 observe 看檢測是否誤報,確認後再改爲 rescue。若只需截斷重複、不需要自動續跑,可用 cut。

處理鏈路(README 示意):

llm/stream (agent calls only)
  ↓ StreamLoopDetector — watches reasoning & text blocks
loop hit → cut repeated suffix → rewrite block-end → finish: stop
  ↓ commitLoopCompaction — v4 transaction, old context → checkpoint
  ↓ followup() — resume same task, fresh sampling params

適用場景與注意

適合誰: 經常在 DSH 裏用較小本地模型(README 舉例 Ornith、部分 Qwen 變體等)做長任務,且遇到過 token 或推理死循環、希望任務能在原會話內繼續的開發者。

與其它 loop 類插件不要疊用(README 明確說明會衝突):

插件 作用 衝突原因
dsh-agent-loop-guard 檢測到循環即截斷並結束 turn 二者都包裝 llm/stream,可能雙重截斷、狀態混亂
dsh-client-auto-continue 中斷後自動繼續 可能觸發兩次互相矛盾的續跑
dsh-session-shift 上下文壓力 compaction 並切新 session 與 rescue 的 compaction 重疊

使用本插件時,應禁用上述插件。

安全與權限: 插件在當前 DSH 進程權限下運行,會改寫流式輸出與會話上下文;安裝前建議閱讀倉庫源碼與 MIT 許可證及 NOTICE 中的上游歸屬說明。

社區目錄頁:SkillHub — terry2010/dsh-loop-recover。DSH 生態強調「一切皆插件」;SkillHub 爲社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-loop-recover 把「發現循環」從單純的停輪,擴展爲剪枝、v4 壓縮與原地續跑,適合作爲工作流類防護插件與 observe 模式聯調閾值。更多細節見 GitHub 倉庫(含 中文 README)。

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

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

小夜