# dsh-loop-detector 的 bundle 自挂载 patch。 # # 本文件由 package.json 的 `dsh.bundle.patch` 指认:只要包名出现在 profile 的 # `dsh.profile.bundles` 里,dsh 就会自动读取它并把下面这条插件挂进 loader # (与 @local/* 那类本地 bundle 插件的做法一致),因此会出现在 GUI 的「已安装」列表里, # 并可以用那里的开关启停。 # # 想改配置有两种方式: # 1. 直接在 profile 的 cordis.patch.yml 里按 id 覆盖(推荐,升级插件不会丢配置): # - id: loop-detector # config: # minLen: 1024 # 2. 改本文件(会被下次升级覆盖)。 # # 临时停用:在 profile 的 cordis.patch.yml 里写 `- id: loop-detector` + `disabled: true`, # 或直接用 GUI 插件页的开关。 - insert: - id: loop-detector name: 'dsh-loop-detector' config: # ── 打断行为 ────────────────────────────────────────────── minLen: 512 # 输出达 512 字符后才开始检测(防短文本误判) maxRetries: 1 # 打断并引导重试 1 次, 再犯则强制中止 action: steer # steer = 打断+引导重试; cancel = 命中直接中止 cooldownMs: 1500 # 命中后的冷却时间, 避免残余分片连环触发 # ── 检测范围 ────────────────────────────────────────────── checkText: true # 检测正文本(text-delta) checkReasoning: true # 检测思考内容(reasoning-delta) # ── 工具调用意图级重复 ──────────────────────────────────── toolPatterns: - web_search # 支持通配符, 如 'mcp__*'; 空数组关闭该功能 historySize: 3 # "主题词集"取最近几次调用的关键词并集 noveltyThreshold: 0.25 # 新词占比低于该值算"没有新信息" similarityThreshold: 0.5 # 与主题词集相似度高于该值也算同一主题(中文常用) stallLimit: 2 # 连续几次"没有新信息"才判定为循环 # ── 文本检测器微调(一般不用改)──────────────────────────── # minPeriod: 8 # 周期扫描下限 # maxPeriod: 256 # 周期扫描上限 # periodRepeats: 4 # 周期至少重复几次 # ngramSize: 64 # n-gram 块长度 # ngramRepeats: 3 # n-gram 块至少出现几次 # anchorSize: 512 # 大段锚段长度(重写整个文件时容易被它拦, 可调大) # checkEvery: 64 # 每新增多少字符跑一次检测(节流) # bufferLimit: 16384 # 每个流保留的尾部字符数 # minDistinctChars: 2 # 重复块至少要有几种不同字符(拦 "-----") # minSubstantiveRatio: 0.3 # 重复块实义字符最低占比(拦分隔线) # legacySessionEvents: false # 旧版 dsh 兼容通道(监听 session/event)