dsh-recovery-resume:DSH 重启后自动续跑被打断的任务

前言

用 DeepSeek Harness(dsh)跑 agent 时,任务经常在半路被进程重启打断:崩溃、升级、手动重启都会让当前 turn 停在中途。重启后会话还在,但 agent 不会自己接着干,通常要你再发一条消息它才会动。若你不在终端前,下载、推送或长链路工具调用可能一直悬着。

社区插件 dsh-recovery-resume(维护者 flandre2233,分类:工作流)在 DSH 重启后自动入队一条续跑消息,并要求 agent 先核对真实进度再续做,而不是默认成功或失败。下面介绍它的定位、触发条件、安装方式与使用注意。

这是什么

dsh-recovery-resume 是 DSH 的 host 插件:在 Harness 重启后,若检测到「未处理的中断」,会自动让 agent 从合适的位置继续;续跑文案会强调检查实际做到了哪一步(例如重启若发生在下载或推送中途,不能想当然认为已完成或已失败)。

仓库:https://github.com/flandre2233/dsh-recovery-resume
社区目录页:https://www.skillhub.cn/plugins/flandre2233/dsh-recovery-resume
当前 package 版本:0.1.3(MIT 许可)。

核心功能

自动续跑的条件

下列条件须全部满足才会自动续跑,否则插件不做任何事:

  1. 上一个任务属于意外打断(中断、出错,或输出过长被截断),而非正常结束。
  2. 打断之后你尚未发新消息,也没有开始新任务。
  3. 打断发生在 15 分钟以内(更久的不处理;该时长目前写死,不可配置)。
  4. 该会话已经重新打开。

若上次失败属于重试也无用的情况(例如 API key 无效、余额用完、对话超出上限),插件会跳过续跑,判断标准与 DSH 官方对「值得重试」的界定一致。

若会话中存在进行中的 goal,插件会尝试让其继续推进,效果类似界面上的「继续」;你手动暂停的目标不会被自动恢复。

防止反复续跑失控

为避免「重启 → 续跑 → 再崩 → 再续跑」的循环,插件内置三道限制:

保险 规则
1 同一会话,每个 DSH 进程启动周期内最多自动续跑 1 次
2 连续 3 次续跑均无进展则停止自动续跑,记录保存在 $DSH_HOME/recovery-attempts.json(重启不清零)
3 两次续跑之间冷却:第 1 次之后 10 分钟,第 2 次之后 20 分钟

续跑后任务确有推进时,相关计数会清零。触发上限时仅写日志,不执行其他操作。

已知范围与限制

README 写明:仅在 DSH 0.1.6-alpha.1 与 macOS 13(Intel) 上做过实际验证;插件依赖 DSH 内部接口,升级 DSH 后建议重新跑测试。插件不判断任务是否已在重启前完成——若已做完,agent 可能多一轮检查,属预期行为。子代理(subagent)会话不处理。

安装与启用

插件随 DSH 以 host 插件方式加载,安装前请自行查阅仓库源码与 MIT 许可证;插件以当前 dsh 进程权限运行,与你在本机信任的其他 DSH 插件相同。

安装命令(来自仓库 README):

dsh plugin --profile web add github:flandre2233/dsh-recovery-resume

装完后再重启一次 DSH,插件才会生效。无需额外依赖或编译。

确认是否加载:

dsh --profile web --dump-config | grep -A2 recovery-resume

怎么确认它在工作

插件日志出现在运行 dsh web 的终端;若通过桌面启动器等打开 DSH,常见位置为 ~/.dsh/host.log(由启动器生成,手动运行 DSH 时该文件可能不存在):

grep dsh-recovery-resume ~/.dsh/host.log

触发续跑时,日志可能类似:

dsh-recovery-resume: agent 创建 id=session-… status=idle
dsh-recovery-resume: ★ 发现未处理的中断(reason=interrupted turnSeq=8451 lastTool=bash)
dsh-recovery-resume: 续跑消息已入队 session-…
dsh-recovery-resume: 已重新武装 goal …

多数时候没有任何续跑日志是正常的。例如「无需续跑(尾部没有未处理的非人为中断)」表示上次正常结束或你已继续对话;「跳过 …(本次进程已续跑 1 次)」表示单次启动续跑上限生效;「冷却中(…还需 N 秒)」表示冷却规则生效。若完全无相关日志,先用 --dump-config 检查插件是否加载。

开发与测试

仓库提供不依赖 DSH 运行时的逻辑测试(Node >= 20):

npm test

也可单独运行:node tests/logic.test.mjs(README 称约 85 个用例,Windows 可跑)。

适用场景与注意

适合长时间 unattended 跑 agent、且遇到过 Harness 重启导致 turn 悬空的工作流场景。不适合指望插件替你在任意错误下无限重试——永久性错误会被刻意跳过。

DeepSeek Harness 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。安装第三方插件前请阅读源码与许可,并了解其以 host 权限接入 DSH 的方式。

结尾

dsh-recovery-resume 解决的是 DSH 重启后会话在、任务却停住的问题:在严格条件与多重保险下自动续跑,并强制 agent 先核对真实状态。需要时可从目录页或 GitHub 查看 README 与 docs/notes.md 中的设计说明。

  • 目录页:https://www.skillhub.cn/plugins/flandre2233/dsh-recovery-resume
  • GitHub:https://github.com/flandre2233/dsh-recovery-resume
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye