🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

复读熔断插件 Aclypea/dsh-repetition-guard

DeepSeek 客户端
Aclypea64 天前有提交已提供中文文档扫描:未发现敏感能力兼容 / 相关生态

流式输出陷入复读时自动熔断,省下数万 token

28.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/16 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Aclypea/dsh-repetition-guard.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 64 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
  • 发起网络请求
    client/index.js:22
    const res = await fetch(STATS_API, { method: "GET", cache: "no-store" });
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 检测流式输出复读
  • 自动熔断复读输出
  • 节省token消耗

README

由 DeepSeek 最新模型翻译生成
dsh-repetition-guard DSH(DeepSeek Harness)的模型输出复读熔断插件。模型流式输出陷入循环(单字刷屏、短句复读、低多样性长文本)时,在线终止流,抛结构化错误码 MODEL_REPETITION_LOOP,交给 DSH 现有的 agent/request-error → retry 流程处理,避免几万 output tokens 打水漂。 几个特点: - 纯插件实现,不改 DSH 源码。卸载即移除,DSH 更新不丢补丁 - 挂在官方 llm/stream waterfall 上,所有 provider 和包装路由都过它 - 对 vision-toolkit- 前缀路由启用更激进的局部防护(P2) - 自带静态加载 / 历史回放 / 误杀测试 背景 长会话、超大上下文下,上游模型会真实陷入语言循环。见过单字「课」重复几千次,也见过 执行 / send / Create 这种短句无限循环,单步浪费 10 万+ 字符、数万 output tokens。DSH 核心没有通用的在线复读熔断,只能等 max-tokens 或人工取消;流空闲超时也救不了——模型一直在吐 token,永远不算 idle。诊断细节在 docs/dsh-repetition-diagnosis.md。
展开完整文档(README 剩余 1 节)
dsh-repetition-guard

DSH(DeepSeek Harness)的模型输出复读熔断插件。模型流式输出陷入循环(单字刷屏、短句复读、低多样性长文本)时,在线终止流,抛结构化错误码 MODEL_REPETITION_LOOP,交给 DSH 现有的 agent/request-error → retry 流程处理,避免几万 output tokens 打水漂。

几个特点:

- 纯插件实现,不改 DSH 源码。卸载即移除,DSH 更新不丢补丁
- 挂在官方 llm/stream waterfall 上,所有 provider 和包装路由都过它
- 对 vision-toolkit- 前缀路由启用更激进的局部防护(P2)
- 自带静态加载 / 历史回放 / 误杀测试

背景

长会话、超大上下文下,上游模型会真实陷入语言循环。见过单字「课」重复几千次,也见过 执行 / send / Create 这种短句无限循环,单步浪费 10 万+ 字符、数万 output tokens。DSH 核心没有通用的在线复读熔断,只能等 max-tokens 或人工取消;流空闲超时也救不了——模型一直在吐 token,永远不算 idle。诊断细节在 docs/dsh-repetition-diagnosis.md。

两层防护:

- P1 通用熔断:包一层流的 text/reasoning delta,命中立即终止上游迭代,产出 MODEL_REPETITION_LOOP
- P2 Vision Toolkit 局部防护:vision-toolkit- 这类图片输入包装路由复读概率高,命中前缀时换成更积极的检测参数,熔断更早

隐私声明见 PRIVACY.md:本仓库是公开的,已移除所有真实会话、个人信息和机器路径,测试样本是匿名合成数据。

检测模式

核心在 lib/repetition-guard.js,零依赖、纯 ESM,node / 浏览器都能跑。5 种模式:

- exact-suffix-loop:精确后缀循环,短窗口逐周期重复
- token-density:短 token 在窗口里占比异常,单字/短词刷屏
- repeated-lines:同一行/句反复出现
- stalled-action:一直在输出动作标记但没有新信息(默认关,P2 对 vision 路由开)
- low-diversity:N-gram shingle 多样性过低,长文本复读

防误杀方面:只看 text/reasoning delta,不碰工具参数流;滚动窗口有界(默认 16 KiB);阈值保守,代码、表格、PPT/XML 结构、长文、引用列表都不触发(见 test/misdetect.test.mjs)。

安装

本地安装(推荐)

在仓库根目录执行 powershell -ExecutionPolicy Bypass -File scripts/install-local.ps1

脚本做的事:把插件复制到 ~/.dsh/dsh-repetition-guard → 在 profile 的 node_modules 建 Junction → 改 profiles/desktop/package.json(dependencies 加 link: 依赖、bundles 加条目,改前自动备份)。之后重启 DSH 生效。

卸载:

powershell -ExecutionPolicy Bypass -File scripts/install-local.ps1 -Uninstall

手动注册

改 ~/.dsh/profiles/desktop/package.json:

"dependencies": {
"dsh-repetition-guard": "link:C:/Users//.dsh/dsh-repetition-guard"
},
"dsh": {
"profile": {
"bundles": [ "...", "dsh-repetition-guard" ]
}
}

再把插件目录放到 ~/.dsh/dsh-repetition-guard,profile 的 node_modules 下建 Junction 指向它。

配置

默认配置直接能用。想调的话,在 profile 的 cordis.patch.yml 里覆盖 repetition-guard 条目(和别的插件一样),或看下表:

| 配置项 | 默认 | 说明 |
| enabled | true | 总开关 |
| checkEveryChars | 96 | 每累计多少字符检测一次 |
| minRun / minCoveredChars | 12 / 96 | 循环最少重复次数 / 最少覆盖字符 |
| maxChars | 16384 | 滚动窗口上限 |
| detectStalledAction | false | 停滞动作检测(通用默认关) |
| vision.enabled | true | P2 局部防护开关 |
| vision.providerPrefixes | ["vision-toolkit-"] | 命中即启用局部防护的前缀 |
| vision.densityRatio | 0.5 | P2 的密度比,比通用值(0.58)更激进 |
| vision.lowDiversityChars | 2048 | P2 的低多样性窗口,比通用值(3072)更小 |
| vision.detectStalledAction | true | P2 开启停滞动作检测 |

使用

- 熔断命中后:DSH 显示结构化错误(模式、重复次数、覆盖字符数),重试策略决定 retry / 切模型 / 终止,retry 会清掉旧草稿
- 设置 → 复读熔断 页面能看到累计统计(请求总数、熔断次数、按 provider 分布)
- 只读接口 GET /api/repetition-guard/stats,插件卸载即消失

测试

静态加载 + 单元 + 误杀测试,纯 node 即可,不需要 DSH
node test/static-load.test.mjs
node test/misdetect.test.mjs
历史回放:把 DSH 会话存档(.jsonl.zstd)按步喂给 guard,看哪些步骤会熔断需要 node 22+(node:zlib 原生 zstd)
node test/replay.test.mjs

目录结构

dsh-repetition-guard/
├── lib/
│ ├── index.js # 插件入口(llm/stream 挂载 + 统计 API) │ ├── repetition-guard.js # P1 核心算法(零依赖 ESM) │ └── vision-guard.js # P2 局部防护参数解析 ├── client/index.js # 前端设置页(熔断统计) ├── test/ # 静态加载 / 回放 / 误杀测试 ├── docs/dsh-repetition-diagnosis.md # 诊断报告(P0/P1/P2/P3) ├── examples/dsh-anomaly-samples.txt # 匿名测试样本 └── scripts/ └── install-local.ps1 # 本地安装/卸载

License

MIT
预览分享卡片长什么样 ↓Aclypea/dsh-repetition-guard
分享 · DeepSeek Harness Hub
Aclypea/dsh-repetition-guard

流式输出陷入复读时自动熔断,省下数万 token

这是你的仓库?认领条目

回到顶部