Skip to content

dsh-loop-recover

Verified

dsh-loop-recover · v0.3.2 · MIT · Web UI

Dead-loop rescue for DeepSeek Harness: detects model repetition mid-stream, prunes the loop from the committed message, and resumes the task automatically.

Install

dsh plugin add dsh-loop-recover

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Tags

Creators

Readme

dsh-loop-recover

dsh-loop-recover

检测模型死循环并自动救回,任务原地续跑。

npm 版本 GitHub stars MIT 协议 GUI 可配置
English · 中文


做什么

本地小模型(Ornith,部分版本 qwen 等)容易陷入两类死循环:字面刷屏(ssssss...)和语义复读(反复论证同一段话)。普通循环守卫只会"切断+终止",任务直接死掉。

dsh-loop-recover 是完整的救援链:

  • 检测 —— 五层检测器:周期扫描 / n-gram / 锚段 / 单字符刷屏 / 短句池 + 意图级工具查询跟踪
  • 剪枝 —— 流内切掉重复后缀,留一行标记让模型知道这里删过东西
  • 压缩 —— 被污染的上下文换成检查点摘要(v4 compaction/* 事务),模型没法再回放同样的推理
  • 续跑 —— 自动 followup 原任务,换采样参数——不开新会话,不重启

全在同一个 agent 循环里完成,救援后模型继续干活。

安装

GUI(推荐)

打开 插件 → 添加插件,搜 dsh-loop-recover,点安装。

命令行

dsh plugin --profile desktop add dsh-loop-recover
# 然后重启 app

配置

32 个配置项全部在插件页可视化编辑——不用手写 YAML。分组:基本 / 救援 / 续跑参数 / 意图检测 / 检测阈值 / 检测器(高级折叠)。

分组 关键字段
基本 mode(rescue/cut/observe)、watch、language、keepLanguage、marker、debugLog
救援 maxConsecutiveRescues(连续救援上限)、compactOnRescue(续跑前压缩)、stallCalls(空转提示)
续跑 retryTemperature、retryReasoningEffort、retryRequests
意图 intentEnabled、intentNoveltyThreshold、intentConfirmCount

模式:rescue(剪+压+续,默认)、cut(只剪不续)、observe(只记日志零干预——先用它评估阈值再上救援)。

冲突说明

不同插件解决不同问题——不要叠装:

插件 做什么 冲突原因
dsh-agent-loop-guard 检测循环即切断 同包装 llm/stream → 双重截断、状态错乱
dsh-client-auto-continue 中断后自动续跑 重复唤醒 → 两条冲突的续跑指令
dsh-session-shift 上下文压力压缩→新会话 职责重叠 → 一边压缩一边开新会话

用本插件时请禁用它们。

工作原理

llm/stream(仅 agent 调用)
  ↓ StreamLoopDetector 监控 reasoning & text 块
命中循环 → 剪除重复后缀 → 重写 block-end → finish: stop
  ↓ commitLoopCompaction——v4 事务,旧上下文换检查点
  ↓ followup()——续跑原任务,换采样参数

非 agent 请求(标题/摘要生成)原样透传不干预。

开发

npm test        # 66 个单元+集成测试
npm run check   # 插件加载冒烟

协议

MIT · NOTICE 上游署名(改自 dsh-compaction 辅助代码)。