前言¶
DeepSeek Harness(DSH)在设计上强调一切皆插件,这让扩展能力变得灵活,但也带来了一个问题:当模型在思考流和输出流中开始重复时,开发者往往要手动打断,或者只能等输出结束后才发现。这种重复可能发生在长对话中,也可能以“编号循环”的形式悄悄发生,直到输出量已经很大才暴露。
DSH 0.2.0-rc.2 开始支持插件机制,开发者可以借助插件来接管模型的流式输出。插件运行在宿主进程内,可以订阅 agent/assistant-stream,在流中检测特定模式并调用 agent.cancel 来终止当前回合。
这是什么¶
dsh-rice-guard 是一个为 DeepSeek Harness 设计的独立插件,由维护者 XiaoSHang05 维护。它作为 DSH 的一个工作流插件存在,主要职责是监控模型的思考流和正式输出流,在检测到重复内容时报警,并可选择自动取消当前回合。它不依赖群聊插件,功能坞为可选依赖。
插件兼容 DSH 0.2.0-rc.2 及以上,包声明范围为 >=0.2.0-0 <0.3.0。宿主需要提供 webServer 和 agent 运行时,以及 @deepseek-ai/schemastery ^3.18.1。
核心功能¶
插件通过四条规则来检测重复:
- 周期重复:在尾部窗口中寻找连续相同的片段,命中时会自动旋转英文周期边界到可读位置。
- 自定义短语:默认关闭。在监控页打开开关后,可以输入你最怕模型复读的句子(一行一句,至少两个字)。命中要求这些句子在很短的跨度内出现多次,不会因为正常行文中的多次引用而触发。
- 编号循环:把每行的数字抹成同一个占位符后比较句式,连续 ≥12 行同一句式且这些行里字母占字母加数字的比例 ≥60% 时才命中。这类复读通常表现为“第 1 步:…”、“第 2 步:…”的形式,字符和整行都不重复,其他三条规则难以捕捉。
- 重复行密度:只归一化行首尾和连续空白后比较相同的行。数字不同仍视为不同内容,因此正常进度列表、带变化计数的重试日志不会被误判。
四条规则按“周期重复 → 自定义短语 → 编号循环 → 重复行密度”的顺序检测,先命中的那条生效。命中后会显示会话、流、重复片段、次数与打断状态。报警卡片会弹出,并伴随提示音(使用 WebAudio)。报警不会自动消失,需要点击“知道了”才能关闭。
插件支持三种配置开关:
- cancel: false 切换为只报警,不自动打断。
- alarm: false 不显示报警卡片。
- sound: false 关闭提示音。
安装与启用¶
在包含本文件与 package.json 的插件目录中安装:
dsh plugin --profile desktop add "link:$($PWD.Path)"
从 GitHub 安装(无需先克隆):
dsh plugin --profile desktop add "github:XiaoSHang05/dsh-rice-guard"
安装或更新宿主代码后重启 DSH,然后刷新原来的网页。对话区会出现“监控”标签页。报警挂在全局浮层,无需一直停留在监控页。已安装过旧目录时,请先在插件管理器里处理旧链接,再装交付目录,避免两个目录的同名插件混用。
插件使用宿主 Web 的认证边界,读写接口位于 /dsh-rice-guard/api/,包括 health、state、config、monitor、hits、events。SSE 只通知重新读取,状态以 GET state 为准。
典型用法¶
安装后,默认监视全部会话,思考与输出分别检测。在监控页中:
- “启用监控”控制全局开关;
- 会话行可以暂停/恢复单独监控;
- “重复次数”控制连续周期重复阈值,默认 5;
- “重复行占比”控制独立重复行检测,默认最近 8 行中 75% 是已出现的行;
- “编号循环占比”控制编号循环检测,默认 0.6。
配置 enabled: false 可以全局关闭监控。scopeDefault: all 表示默认全部监控,selected 仅监控显式选中的会话。
适用场景与注意¶
适合在以下场景使用:
- 需要实时监控模型输出,防止重复内容累积到大量文本时才发现;
- 对“编号循环”类复读敏感,希望提前阻断;
- 希望通过自定义短语来捕捉特定卡住模式。
插件以当前 DSH 进程权限运行,安装前应检查源码与许可证(MIT)。已知边界:一条很长的正常枚举(如连续 20 行“port 8001 is listening”)可能命中编号循环规则,因为它们在语法上与编号循环相同。插件在检测边界上做了取舍:宁可报错一条长清单,也不漏掉一个循环。不认同这个取舍的用户可以通过设置 structLines: 0 关闭该规则,或调高行数阈值。
插件不加载插件之前的输出,超出窗口长度/周期长度的重复也可能漏检。单字符刷屏不是本版的检测目标。
短结尾¶
dsh-rice-guard 提供了在流式输出中检测重复的模式,帮助开发者在模型开始“复读”时及时介入。通过报警和自动取消,它减少了人工干预的成本,也降低了重复内容累积的风险。更多细节和源码可以在 GitHub 查看。
目录页¶
https://www.skillhub.cn/plugins/XiaoSHang05/dsh-rice-guard
GitHub¶
https://github.com/XiaoSHang05/dsh-rice-guard