前言¶
DeepSeek Harness (DSH) 的 goal 系统会将目标本身及其生命周期阶段持久化到会话日志,以便在重启后恢复上下文。然而,”继续执行的授权”(activation)并不会持久化。当 DSH 进程重启或升级后,目标会被解除武装,导致 goal-round-driver 停止工作。开发者必须手动发送指令来重新激活目标。
dsh-auto-goal-resume 插件旨在消除这一手动干预步骤。它会在 DSH 重启后自动扫描并恢复所有活跃目标的执行,使 agent 能够无缝接续之前的工作,直到目标完成、阻塞或达到轮次上限。
核心功能¶
- 自动续跑:重启后无需任何人工指令,自动检查并恢复活跃目标。
- 冷恢复 agent:从持久化会话日志中恢复 agent 及其预设组合,确保上下文一致性。
- 幂等性:已 armed 的会话会被自动跳过,重复扫描不会产生副作用。
- 容错能力:单个会话失败不会影响其他会话;服务未就绪时具备自动重试机制。
- 零依赖:逻辑自包含,不引入额外的包或依赖解析链路。
- 护栏保留:严格遵守目标的轮次上限,不触碰 paused、blocked 或 complete 状态的目标。
安装与启用¶
插件已发布到 npm,可通过以下命令快速安装:
dsh plugin --profile web add auto-goal-resume
安装完成后,重启 DSH 即可生效。插件会自动接管重启后的活跃目标恢复逻辑。
工作原理¶
插件通过两层机制确保恢复的可靠性:
- 实时层:当会话被打开或 agent 冷启动时,插件立即检查该会话的活跃目标并执行恢复。
- 启动扫描:DSH 启动约 20 秒后,插件会扫描所有持久化会话,解析其中的 goal 事件,对活跃目标进行 resume 操作。
在恢复过程中,插件会优先从日志中解析预设(preset),这比创建时的 header 更能反映会话的实际状态。
注意事项与限制¶
- 轮次上限:自动恢复不会无限执行,仅会在
roundsStarted < maxGoalRounds时生效。 - 状态过滤:只恢复
active状态的目标,paused、blocked和complete状态一律跳过。 - 单实例限制:不跨机器或实例,恢复仅针对当前 DSH 实例的持久化会话。
- 副作用风险:自动续跑可能产生副作用(如写文件、调用外部 API),使用前需确认任务本身可安全自动继续。
- 普通对话:没有活跃目标的普通对话不会触发自动恢复逻辑。
资源链接¶
- 插件目录:dsh-auto-goal-resume
- 源码仓库:GitHub