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

自动续跑 shu0819-sjy/dsh-auto-continue

DeepSeek Harnessv0.4.7
shu0819-sjy28 天前有提交已提供中文文档扫描:未发现敏感能力

DSH 轮次失败 / 复读熔断后自动续跑套件。包含 auto-continue v1.8失败、软熔断与排队优先续跑与…

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

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

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add shu0819-sjy/dsh-auto-continue
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · market
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 28 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-auto-continue @ 0.4.7
✓Node 引擎要求 >=18 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 21:21:40

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
  • 发起网络请求
    plugins/anti-repetition.mjs:700
    : globalThis.fetch(input, init);
扫描于 2026/11/3(1 天前) · 范围 全包扫描 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 失败回合自动续跑
  • 复读熔断后恢复
  • 防重复续跑

为 DeepSeek Harness(DSH)自动恢复失败或卡住的回合——双链自动续跑 + 防重复插件、安装脚本、双语文档、47 项测试

README

由 DeepSeek 最新模型翻译生成
dsh-auto-continue DSH 轮次失败 / 复读熔断后自动续跑套件。包含 auto-continue v1.8(失败、软熔断与排队优先续跑)与 anti-repetition v2.6(流式复读、停滞与首 token 超时防护并广播事件)。MIT 许可。 特性 - 双链架构:硬失败链(超时/网络/5xx 白名单)与软熔断链(anti-repetition 事件)独立计数、共用退避与防竞争围栏 - 互斥槽(v1.5):C 链空停 steer 后紧随的 idle 上 A/B 链一次性让位,堵住「同一收尾周期双续跑」竞态,不吞并任何链的重试 - 错误白名单:仅匹配超时、网络、overload、429/5xx 等可恢复错误才续跑 - 退避与上限:默认 5s → 15s → 30s;硬失败 ≤3 次、软熔断 ≤2 次,到顶 fail loud - 防竞争围栏:发送前复查 agent 仍存活、仍 idle、运行时未关闭;关闭 priorityOverQueued 时有排队消息则让位,开启时自动续跑插队(同 dsh-goal-round-driver) - 人工接管:关闭 priorityOverQueued 时真人消息会清零;默认开启时自动续跑插到排队消息队首;删除排队中的 auto-continue 消息仍立即清零并撤定时器
展开完整文档(README 剩余 1 节)
dsh-auto-continue

DSH 轮次失败 / 复读熔断后自动续跑套件。包含 auto-continue v1.8(失败、软熔断与排队优先续跑)与 anti-repetition v2.6(流式复读、停滞与首 token 超时防护并广播事件)。MIT 许可。

特性

- 双链架构:硬失败链(超时/网络/5xx 白名单)与软熔断链(anti-repetition 事件)独立计数、共用退避与防竞争围栏
- 互斥槽(v1.5):C 链空停 steer 后紧随的 idle 上 A/B 链一次性让位,堵住「同一收尾周期双续跑」竞态,不吞并任何链的重试
- 错误白名单:仅匹配超时、网络、overload、429/5xx 等可恢复错误才续跑
- 退避与上限:默认 5s → 15s → 30s;硬失败 ≤3 次、软熔断 ≤2 次,到顶 fail loud
- 防竞争围栏:发送前复查 agent 仍存活、仍 idle、运行时未关闭;关闭 priorityOverQueued 时有排队消息则让位,开启时自动续跑插队(同 dsh-goal-round-driver)
- 人工接管:关闭 priorityOverQueued 时真人消息会清零;默认开启时自动续跑插到排队消息队首;删除排队中的 auto-continue 消息仍立即清零并撤定时器
- 子 agent 保护:默认跳过 origin === "subagent",避免与父级重试双跑
- 可观测性(v1.5):干净收尾时若有续跑,打一行 A/B/C 统计汇总,给阈值调参提供数据
- 热更新安全(v2.6):fetch 惩罚注入改全局引用计数,patchReload: live 下 install/dispose 任意交错不失效
- 测试:CI 静态 46 项(含示例 YAML 解析)+ CI Mock 16 项;另有需 DSH 私包的集成、部署副本和加固回归

工作原理

插件机制(挂载 / 事件总线 / 双链熔断)

1. 挂载:install/.ps1|sh(或手动)把 plugins/.mjs 复制进 <DSH_HOME>/profiles/web/plugins/,并在 cordis.patch.yml 幂等插入 id: anti-repetition 与 id: auto-continue 两段。Cordis 按 patch 加载 ESM 插件;auto-continue inject: ["agents"],在 agent 生命周期上挂监听。
2. 事件总线:
- 硬失败链订阅回合失败(如 agent/error),用 patterns 白名单过滤可恢复错误;
- 软熔断链订阅 anti-repetition/stopped(由 anti-repetition 在流式复读/断流熔断时广播);
- 续跑通过 agents 服务 followup 代发 continueText,不直连上游 HTTP。
3. 双链熔断:硬失败计数 attempt(默认 ≤3)与软熔断计数 softAttempt (默认 ≤2)独立;共用退避表与防竞争围栏(存活 / idle / 运行时未关)。
默认 priorityOverQueued: true 时,有排队消息也让自动续跑插队;关闭该项才把真人排队消息视为否决并清零。删除排队中的自动续跑消息同样视为否决。任一链到顶时重置两条计数器。子 agent(origin === "subagent")默认跳过。

flowchart TD
T["DSH agent 回合"] -->|"agent/error(硬失败)"| W{"命中 patterns 白名单?"}
T -->|"anti-repetition/stopped(软熔断)"| R{"resumeAfterRepetitionStop?"}
W -- "no" --> SKIP["不干预"]
R -- "no" --> SKIP
W -- "yes" --> L1{"attempt ≤ maxAttempts?"}
R -- "yes" --> L2{"softAttempt ≤ maxRepetitionResumes?"}
L1 -- "no" --> GIVE["fail loud,等真人"]
L2 -- "no" --> GIVE
L1 -- "yes" --> B["退避 backoffSeconds[n]"]
L2 -- "yes" --> B
B --> F{"防竞争围栏:存活 / idle / 未关闭"}
F -- "pass" --> Q{"有排队消息?"}
Q -- "无" --> S["followup 代发 continueText"]
Q -- "有且 priorityOverQueued=true" --> P["prepend 插队续跑"]
Q -- "有且 priorityOverQueued=false" --> SKIP
F -- "fail" --> SKIP
S --> DONE["重新开跑;干净 idle 双链归零"]
P --> DONE
V["关闭插队时真人插话 / 删排队自动续跑消息"] -.->|"全量清零"| DONE

护栏清单

1. 错误白名单(硬失败链)
2. 退避表 + 连发上限(两链独立)
3. 防竞争围栏(存活 / idle / 运行时未关;关闭插队时排队消息让位)
4. 关闭插队时真人消息重置;默认插队时不重置
5. UI 删除排队中的自动续跑消息视为否决(v1.3)
6. 子智能体默认跳过
7. 干净 idle 双链归零;任一条链到顶时同时重置两条计数器(v1.3)
8. 互斥槽:C 链 steer 后紧随 idle 的 A/B 一次性让位;C 链自身连续 steer 不受限(v1.5)

安装

安装会把 plugins/.mjs 复制到 <DataDir>/profiles/web/plugins/,并在 cordis.patch.yml 幂等追加挂载段。改完后必须重启 DSH(托盘退出才算真重启)。

方式一:安装脚本

Windows(PowerShell)

pwsh -File install/install.ps1
或显式指定数据目录: pwsh -File install/install.ps1 -DataDir "$env:DSH_HOME"

探测顺序(未传 -DataDir 时):环境变量 DSH_HOME → %APPDATA%\dsh-desktop\data。

行为要点

- 复制仓库 plugins/ 下全部 .mjs,并做 SHA256 校验
- 若不存在 cordis.patch.yml 则创建并写入挂载段;若已含 id: auto-continue 则跳过追加(幂等)
- 结束后提示重启 DSH,并建议跑 node test/check.mjs(11/11)做静态自检

macOS / Linux

bash install/install.sh
或显式指定数据目录(位置参数): bash install/install.sh "$HOME/.dsh/data"

探测顺序(未传参数时):环境变量 DSH_HOME → ~/.dsh/data。行为与 Windows 脚本一致(复制校验、幂等追加 patch、需重启)。

方式二:手动安装

1. 将 plugins/auto-continue.mjs 与 plugins/anti-repetition.mjs 复制到 <DSH_HOME>/profiles/web/plugins/
2. 把 examples/cordis-patch.snippet.yml 的内容追加到 <DSH_HOME>/profiles/web/cordis.patch.yml 末尾
3. (可选)把 examples/settings-retry.snippet.yml 合并进 settings.yaml 的对应 provider,拉长上游超时与重试
4. 重启 DSH

卸载

从 cordis.patch.yml 删除 id: anti-repetition 与 id: auto-continue 两段 insert,并删除对应 plugins/.mjs,然后重启 DSH。

配置参考

以下键与默认值均从 plugins/.mjs 的 Config 导出逐键核实。挂载样例见 examples/cordis-patch.snippet.yml。

auto-continue v1.8

| 键 | 默认值 | 说明 |
| enabled | true | 总开关 |
| continueText | "[auto-continue] 上游请求失败。接着做未完成的工作,不要复述。" | 自动续跑时代发的文本 |
| maxAttempts | 3 | 硬失败连发上限(1–10) |
| maxRepetitionResumes | 2 | 软熔断连发上限(1–10) |
| resumeAfterRepetitionStop | true | 是否在 anti-repetition 熔断后自动续跑 |
| backoffSeconds | [5, 15, 30] | 退避表(秒);第 n 次取 min(n-1, len-1) |
| patterns | 见下 | 可续跑错误白名单(不区分大小写的正则) |
| includeSubagents | false | 子智能体失败是否也续跑 |
| priorityOverQueued | true | 有排队消息时将自动续跑插到队首 |
| repetitionResumeText | 见源码默认 | 软熔断续跑引导文本 |
| watchPrematureStop | true | C 链:空停/截断时本轮内 steer 续跑 |
| maxPrematureSteers | 2 | C 链连续 steer 上限,超过放行关闭 |

v1.5 起每次干净收尾若本周期有续跑,日志输出一行 本周期续跑统计(硬失败/软熔断/空停各几次、最后触发原因)。

默认 patterns:timed out、timeout、etimedout、econnreset、econnrefused、econnaborted、epipe、socket hang up、fetch failed、network、overloaded、rate limit、\b(?:429|500|502|503|504|529)\b。

anti-repetition v2.6

| 键 | 默认值 | 说明 |
| models | [""] | 流式复读检测作用的模型 id 通配;空数组 = 全部 |
| samplingModels | ["glm-5.3-flash", "glmflash"] | 仅对这些模型注入 frequency/presence penalty |
| minRepeats | 3 | 连续重复次数阈值(含当前段) |
| minUnitLen | 5 | 重复单元最短字符数 |
| maxUnitLen | 96 | 重复单元最长字符数 |
| checkEveryChars | 12 | 每累计多少新字符再检测一次 |
| windowChars | 1600 | 检测窗口(只看末尾这么多字符) |
| minLineRepeats | 3 | 同一行连续重复阈值 |
| enableDensity | false | 密度检测(默认关,避免技术长文误伤) |
| minDensityHits | 8 | 密度命中次数阈值 |
| densityMinLen | 20 | 密度候选最短长度 |
| enableNormStem | true | 归一化短词干刷屏检测 |
| minStemHits | 12 | 词干命中次数阈值 |
| minStemShare | 0.35 | 词干占比阈值 |
| minStemLen | 3 | 词干最短长度 |
| maxStemLen | 24 | 词干最长长度 |
| enableCollapseDetect | true | 早期崩溃:一字一行 / 破损 shell 草稿 |
| minSingleCharLines | 40 | 单字符行数阈值 |
| minSingleCharShare | 0.3 | 单字符行占比阈值 |
| minBrokenShellHits | 8 | 破损 shell 草稿命中阈值 |
| charTokMinHits | 120 | 同行空格拆字变体:单字符 token 数阈值(只认极端形态) |
| charTokMinShare | 0.6 | 同行空格拆字变体:单字符 token 占比阈值 |
| stallTimeoutSec | 120 | 首 token 后的流式停滞看门狗;连续 N 秒无新 delta 即断流熔断;0 = 关闭 |
| preTokenStallSec | 240 | 首 token 前的上游沉默上限;超时返回 EMPTY_RESPONSE 交给硬失败链;0 = 关闭 |
| enableUniqueRatio | false | 低多样性检测(默认关) |
| minUniqueRatio | 0.12 | 唯一字符占比下限 |
| uniqueMinChars | 200 | 启用唯一比检测的最小字符数 |
| appendNotice | true | 命中后是否追加可见提示 |
| noticeText | 见源码默认 | 追加提示文案 |
| watchReasoning | true | 是否也监控思考链 |
| injectSamplingParams | true | fetch 兜底注入 sampling penalty(v2.5 起引用计数,热改配置不失效) |
| frequencyPenalty | 0.55 | frequency_penalty |
| presencePenalty | 0.4 | presence_penalty |

注意:models / samplingModels 按需收窄。更换默认模型时记得同步这两个白名单——流式检测只盯匹配的模型,换模型后若不同步,保护会静默失去作用。

实战验收

重启 DSH 后,在聊天中发送:

请连续输出300个x

预期时序(软熔断链)

1. 模型开始刷屏 x / 短句复读
2. anti-repetition 命中 → 流停止,追加 notice(若 appendNotice)→ 广播 anti-repetition/stopped
3. agent 进入 idle 后,auto-continue 按退避表等待(默认首次 5s)
4. 防竞争复查通过 → 代发来源为 auto-continue 的续跑消息(软熔断使用 repetitionResumeText)
5. 若再次熔断,软链最多再续到 maxRepetitionResumes(默认 2);到顶写 warn 并放弃,等真人介入

硬失败链同理:上游超时/网络错误命中 patterns → idle → 退避 → 代发 continueText,上限 maxAttempts(默认 3)。

测试

CI(可移植,无需 DSH)

GitHub Actions 跑 node test/ci-static.mjs(Node 18/20/22):语法检查 + 源码/示例契约断言,不 import 插件(插件依赖仅存在于 DSH 安装内的 @deepseek-ai/)。

node test/ci-static.mjs

本机全量(部分需要 DSH / @deepseek-ai/)

在仓库根目录运行;test/test.mjs、test/integration.mjs、test/check.mjs 需配置 DSH_HOME 指向 DSH 数据目录,其余 Mock 与 v24/v25 可使用本地 stub:

node test/test.mjs # 25/25 Mock(v1.8 契约)
node test/integration.mjs # 5/5 集成;需 @deepseek-ai/cordis
node test/check.mjs # 11/11 部署副本静态自检;DSH_HOME 指向数据目录
node test/ci-mock.mjs # 16/16 CI Mock;resolve hook 免 DSH 依赖
node test/v24-smoke.mjs # 19/19 v2.4/v1.4 冒烟;可移植 hook,DSH_PLUGINS_DIR 可指向部署副本
node test/v25-hardening.mjs # 27/27 v2.5/v1.5 加固:互斥槽/统计行/热改注入/合成流;可移植 hook

FAQ

为什么有上限、不会死循环? 硬失败与软熔断各自有连发上限(默认 3 / 2),到顶 fail loud 并写 warn;关闭插队时真人消息会清零,默认插队时不清零;删除排队中的自动续跑消息会清零。干净成功的 idle 也会归零。

错误白名单是什么? patterns 是一组不区分大小写的正则,匹配错误链全文。默认只覆盖超时、连接重置、network、overloaded、rate limit、429/5xx 等可恢复错误。鉴权失败、内容审查等不在名单内,不会自动续跑。

子 agent 为何默认跳过? includeSubagents: false 时跳过 session.header.origin === "subagent",避免父级与子级同时重试打架。需要时再显式打开。

如何卸载? 见上文「卸载」:删 patch 挂载段 + 插件文件 + 重启。

是否需要把 continueText 改成英文? 不必。默认是带 [auto-continue] 前缀的中文短句;英文界面可改成 Continue 等任意字符串,插件只代发配置值,不依赖语言。

致谢

- cheapestinference/claude-auto-retry — 失败自动重试思路来源
- DSH 官方 dsh-goal-round-driver — 防竞争围栏模式参考

Contributing / Security

- Contributing guide: CONTRIBUTING.md
- Vulnerability reporting (private): SECURITY.md

License

MIT © 2026 dsh-auto-continue contributors

dsh-auto-continue 是一对 DeepSeek Harness 插件,可在可恢复的失败或防重复熔断后自动续接一轮对话。

- auto-continue v1.8 — 硬失败、软停止、空停止/max-tokens 三条引导链;排队消息优先级可配置,默认开启
- anti-repetition v2.7 — 流式重复 / 塌缩 / 停滞检测;发出 anti-repetition/stopped 触发软续接;引用计数的 fetch 惩罚注入,热重载配置后依然生效
- 测试:25 项 mock + 5 项集成 + 11 项部署检查 + 46 项 CI 静态 + 16 项 CI mock + 19 项 v24 冒烟 + 27 项 v25 加固(共 149 项)
- License:MIT

快速安装(Windows)

pwsh -File install/install.ps1
optional:
pwsh -File install/install.ps1 -DataDir "$env:DSH_HOME"

然后重启 DSH(从托盘彻底退出)。不带 -DataDir 时的检测顺序:DSH_HOME → %APPDATA%\dsh-desktop\data。

快速安装(Unix)

bash install/install.sh
optional positional data dir:
bash install/install.sh "$HOME/.dsh/data"

不带参数时的检测顺序:DSH_HOME → ~/.dsh/data。装完重启 DSH。

手动安装:把两个 plugins/.mjs 复制到 <DSH_HOME>/profiles/web/plugins/,将 examples/cordis-patch.snippet.yml 追加到 cordis.patch.yml,重启。

架构(简版): 插件通过 cordis.patch.yml 挂载;硬失败和 anti-repetition/stopped 分别喂给两条独立的续接链,共用防竞争围栏,并保留人工否决 —— 见上文工作原理。

贡献 / 安全:CONTRIBUTING.md、SECURITY.md。

完整配置表、防护、FAQ 和验收步骤见上文中文各节(配置参考 / 工作原理 / FAQ / 实战验收)。
预览分享卡片长什么样 ↓shu0819-sjy/dsh-auto-continue
分享 · DeepSeek Harness Hub
shu0819-sjy/dsh-auto-continue

DSH 轮次失败 / 复读熔断后自动续跑套件。包含 auto-continue v1.8失败、软熔断与排队优先续跑与…

这是你的仓库?认领条目

回到顶部