前言¶
在 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 二选一搭配。