前言¶
在 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 循環內完成:
- Detect(檢測) — 五層檢測器:週期性、n-gram、錨點、字符連續段、句子池,並有意圖層面的 tool-query 跟蹤。
- Prune(剪枝) — 在流式輸出中途切掉重複後綴,並留一行 marker,讓模型知道有一段內容被移除。
- Compact(壓縮) — 用 checkpoint 摘要替換「中毒」上下文(v4
compaction/*事務),避免模型沿同一路推理再跑一遍。 - 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)。