# Rice Patrol 🍚🐋 [English](README.md) Rice Patrol 保护 DeepSeek Harness(DSH)的推理过程。模型持续重复短句、迟迟不推进任务时,插件确认循环,停止当前生成,然后在原会话恢复未完成的任务。 ## 固定的自动恢复流程 启用插件后无需选择处理模式。每次确认循环,都会先截断重复推理,再尝试让原来的主 Agent 接续。没有 Stop、Observe 或 Recover 下拉选择,也没有观察日志或 n-gram 检测。 旧配置和旧设置中保存的 `mode: stop`、`mode: observe`、`mode: recover` 均不再决定行为。升级时可以删除这些字段;即使保留也会自动恢复。要关闭整个插件,使用 DSH 自带的插件启停开关。 你仍可在恢复期间点“停止恢复”,也可以发送新的指令中断这次恢复。无法核对会话或后台任务时,插件会暂停并显示原因。 ## 怎么判断循环? 插件读取 DSH 暴露的推理文本,按换行分成非空行,去掉行首尾空白。最近 **50 行**的长度中位数不超过 **20 个字符**,且至少 **70% 的行**在同一窗口中有完全相同的重复行时,首次预警。再增加至少 50 个非空行,并再次满足条件,才确认并截断。 仅预警不会停止生成。规则不依赖特定服务商或关键词,每个模型请求独立判断。普通输出的 token 上限不属于本插件的检测对象。这一版没有修改检测阈值。 ## 如何接续? 插件等待当前生成和流清理完成,核对宿主后台任务,将本次中断推理从模型可见历史中排除,再让原 Agent 沿用同一会话继续。已经完成的文件修改和工具结果保留,接续时模型会被提醒先检查工作区状态。 每次新的循环都可以恢复,同一次截断只提交一次交接。恢复失败或受阻的旧任务不会自行再次启动。主 Agent 接续后遵循 DSH 原有执行策略;插件不额外调用模型生成摘要,也不限制接续后任务的请求或工具调用次数。 `resumeTimeoutMs` 默认 5 分钟,用于等待交接和首次接续响应,不是后续任务总时长限制。恢复状态和防止重复交接所需的记录会保留;插件不采集逐块观察日志。 ## 启用与配置 当前版本为 `0.2.11-desktopcompat.1`,桌面入口适配 DSH `0.2.0-rc.2`。源码同步到 GitHub;本次不发布 npm 包。 在 Plugins 页面启用 Rice Patrol 及其组件即可。插件页面显示自动恢复说明,恢复状态显示在对话输入区附近。配置示例见 [config/recover.example.yml](config/recover.example.yml)。 可以配置服务商/模型过滤、状态目录和恢复等待时限;无需配置处理模式。与其他会取消和恢复同一推理流的插件同时使用时,应只启用一个恢复控制器。 升级文件写入后需重启 DSH 才会加载新宿主代码。历史实现和验证记录见 [docs/SINGLE_AGENT_RECOVERY.md](docs/SINGLE_AGENT_RECOVERY.md)。项目使用 MIT 许可。