
omdsh-dev/dsh-revive
30最近提交 2026年8月13日
dsh-revive DSH 插件
dsh-revive 是一个 DSH 插件,用于检测由于崩溃、OOM 或其他原因被中断的会话。它从持久化日志中冷恢复会话,重新挂接原来的 preset,并发送继续指令。支持浏览器按钮、斜杠命令和模型工具调用。
如何安装 dsh-revive DSH 插件
dsh plugin --profile web add dsh-revive@0.1.4复制不会执行命令。安装 dsh-revive DSH 插件前请核对仓库和版本。
dsh-revive DSH 插件数据来源
dsh-revive DSH 插件快照日期:2026年8月16日
discovered
dsh-revive DSH 插件能做什么
- 扫描所有持久化会话,基于确定性规则(killed-mid-turn、pending-user-message、aborted、interrupted、error、max-tokens、blocked)识别被中断的会话。
- 冷恢复会话:从 raw artifact 日志重建会话,重新挂接原始 preset 组合,沿用上次使用的模型。
- 向每个被恢复的会话发送可配置的继续提示(默认:'继续'),以继续未完成的任务。
- 通过浏览器 dock 按钮、斜杠命令(/revive、/revive list、/revive <sessionId>)或模型工具(revive_sessions)触发恢复。
- 跳过子代理会话(它们会自动被父会话管理)和当前正在运行的会话。
- 可配置的启动自动恢复,带延迟和缓存 TTL。
dsh-revive DSH 插件适合哪些场景
- DSH 崩溃(OOM、SIGKILL 等)后,一键恢复所有被中断的会话,继续工作。
- 开发过程中频繁重启 DSH,快速恢复所有受影响的会话,无需手动干预。
- 使用斜杠命令或模型工具单独恢复特定被中断的会话。
- 在 DSH 启动时自动恢复会话(autoReviveOnStartup),以最大程度减少生产环境中的停机时间。
- 列出所有被中断的会话,在恢复前检查哪些需要关注。
dsh-revive DSH 插件适合谁
- 运行长时间代理任务并需要应对进程崩溃的 DSH 用户。
- 在测试中频繁重启 DSH 并希望避免手动恢复会话的开发者。
- 管理大量会话并需要可扩展方式从中断中恢复的操作人员。
dsh-revive DSH 插件的限制
- 恢复的会话使用上次记录的模型;通过官方 web 选择器切换模型,但恢复的会话不在选择器注册表中。
- 冷扫描仅适用于暴露 raw artifact 的持久化后端(例如 SQLite 不支持);此类后端中的会话会被跳过。
- 峰值内存随最大单个 artifact 大小缩放,因为 raw artifact 会临时驻留在内存中。
- 没有标题的会话将在 UI 中显示会话 ID。
dsh-revive DSH 插件的仓库 README 摘录
以下文字摘自 dsh-revive DSH 插件的上游仓库 omdsh-dev/dsh-revive 的 README,版权归原作者,仅作引用。
DSH 进程经常在跑任务时被杀死(自己杀自己、OOM、崩溃……),重启之后每个被打断的会话都要手动点开、手动发一句「继续」。这个插件把这件事变成**一键**: - 扫描全部持久化会话,识别「被打断」的(回合没跑完、消息没处理、上次回合以中止/出错/阻塞/超长收尾的); - 按官方 GUI 同款路径冷恢复它们:从持久化日志重建会话、挂回它原来的 preset 组合、沿用上次的模型; - 给每个被打断的会话发送「继续」指令,让它们接着干活; - 子代理会话不直接复活(它们会随父会话的恢复被自动接管),正在运行的会话不动。 ## 触发方式(三选一,同一套核心逻辑) | 入口 | 用法 | |---|---| | **浏览器一键按钮** | 每个会话输入框下方的 dock 区有一个「⚡复活」按钮,角标显示被打断会话数,点一下全部复活 | | **斜杠命令** | `/revive`(复活全部)、`/revive list`(只列出)、`/revive <sessionId>`(只复活一个) | | **模型工具** | 对任意会话说「把被打断的会话都复活」,模型会调用 `revive_sessions` 工具 | ## 被打断的判定 对每个会话日志折叠出以下结论之一: | 结论 | 含义 | 是否复活 | |---|---|---| | `killed-mid-turn` | 日志末尾停在未结束的回合里(进程被杀) | ✅ | | `pending-user-message` | 有用户消息从未被处理 | ✅ | | `aborted` / `interrupted` / `error` / `max-tokens` / `blocked` | 上一回合非正常收尾 | ✅ | | `completed` | 上一回合正常完成 | ❌(避免无谓烧 token) | | 空日志 | 从未动过的会话 | ❌ | ## 安装 ```bash # 已登录私有 npm registry 的 DSH 部署机 dsh plugin --profile web add dsh-revive@0.1.4 # 本地开发 checkout dsh plugin --profile web add link:/path/to/dsh-revive ``` 插件自带 Profile Bundle;`dsh plugin` 会自动维护 profile 依赖和 `dsh.profile.bundles`。不要手工编辑 profile manifest,也不要再插入同名 `revive` loader entry,否则会触发 `duplicate loader entry id`。重启 DSH 后,任意会话输入框 下方出现「⚡复活」按钮即安装成功。 ## 兼容性 | 组件 |
阅读完整 README仓库许可: BSD-3-Clause
dsh-revive DSH 插件常见问题
如何安装 dsh-revive?
在已登录私有 npm registry 的 DSH 部署机上运行 `dsh plugin --profile web add dsh-revive@0.1.4`。本地开发时可以使用 `dsh plugin --profile web add link:/path/to/dsh-revive`。安装后重启 DSH,会话输入框下方会出现 ⚡ 复活按钮。
为什么有些会话没有被恢复?
当前正在运行的会话、上次回合正常完成的会话、以及空日志会话会被跳过。子代理会话不会直接恢复(它们由父会话管理)。此外,如果持久化后端不支持 raw artifact(例如 SQLite),这些会话也会被跳过,不会回退到完整日志读取。
我可以配置恢复时发送的提示文本吗?
可以,在插件配置中设置 `resumePrompt` 选项(例如在 `cordis.patch.yml` 中)。默认值是 '继续'。你可以改成任何字符串,该字符串会发送给被恢复的会话。
dsh-revive 会在 DSH 启动时自动恢复会话吗?
默认不会。你需要将 `autoReviveOnStartup` 设置为 `true`。注意:如果 DSH 反复崩溃,这可能导致崩溃循环,即会话被恢复后又被杀死。你可以调整 `startupDelayMs` 和 `scanTtlMs` 来控制行为。
恢复的会话使用什么模型?
恢复的会话使用上次记录的模型。但恢复的会话不在 web 模型选择器的注册表中,所以无法通过 UI 切换模型。你需要使用官方模型选择入口来更改模型。