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)。

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

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

小夜