dsh-continue-all:一键续跑所有因异常退出而中断的会话

前言

在 DSH Web UI 里长时间跑智能体会话时,进程被 kill、崩溃或超时并不少见。这类异常往往发生在某一轮(turn)尚未正常结束的中途。下次恢复时,代理循环会把该轮标记为 interrupted,侧边栏里会话会 idle 并带上失败提示。常规做法只能逐个打开会话再点 Continue,会话一多就很费事。下面介绍社区插件 dsh-continue-all,用侧边栏里的一次操作,把符合条件的会话批量续跑。

这是什么

dsh-continue-all 是面向 DSH Web UI 的客户端插件,由 mkpoli 维护,仓库地址 github.com/mkpoli/dsh-continue-all。它解决的是:DSH 意外退出后,存储日志里仍留有「未闭合 turn」或最后 turn/end 原因为 interrupted 的会话,需要人工逐个 Continue 的问题。

插件在侧边栏底部提供 Continue all 入口,扫描本地存储的会话列表,确认后对每个目标会话依次发送字面量提示 continue,走与 Composer 相同的会话保留与 prompt(..., "queue") 路径。

核心功能

批量续跑

点击 Continue all 后,插件扫描已存储会话,列出因 mid-turn 异常而停下的条目;确认后按序向每个会话发送 continue。对话框会展示每个会话的进度与失败信息。

默认时间窗口

默认只选中最近 6 小时内被中断的会话。更早的中断会话会列在可选勾选项之后,避免一次批量操作误触更早崩溃或已放弃的任务。

排除规则

以下会话不会进入批量列表:

  • 正在运行(turn 仍在进行,不属于 interrupted 场景);
  • 空白会话、子代理会话,或已归档会话;
  • 正在等待审批或等待用户回答。

已归档会话保持归档状态;若需要续跑,需先取消归档。

扫描与检测(宿主侧)

宿主通过 DSH 已认证的 /api 通道暴露 POST /api/continue-all/scan。它会列出可见的存储会话并读取各会话日志。满足条件的情况包括:日志尾部落在未闭合的 turn 内,或最后一次 turn/end 的 reason 为 interrupted。响应携带该 turn 停止的时间,客户端据此区分「最近窗口」与更旧会话。

扫描结果按持久化 revision 缓存;后续扫描只读自上次以来变更过的日志。进程重启后首次扫描会读全部存储日志,历史很大时可能较慢,结果在进程生命周期内保留。宿主加载后会 shortly 启动一次 warm scan,因此用户第一次点击时扫描往往已完成。

客户端要求扫描响应为 version 2。更新插件后应重启一次 dsh web,使宿主与客户端 halves 一致;否则对话框会提示宿主侧版本过旧,而不会开始批量操作。

无法读取日志的会话会在宿主侧跳过并记录日志。

安装与启用

DSH 生态里插件通常通过插件管理器或 CLI 加入 profile bundle,再在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 中登记 bundle 名并重启 Web 服务。本插件属于 客户端 类,面向 web profile。

在 DSH 界面中:Plugins → Add plugin,使用下列 spec:

github:mkpoli/dsh-continue-all

或命令行安装并加入 profile:

dsh plugin --profile web add github:mkpoli/dsh-continue-all

随后在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 中加入 "dsh-continue-all",并重启:

dsh web

Release 附带预构建 tarball,也可直接:

dsh plugin --profile web add https://github.com/mkpoli/dsh-continue-all/releases/latest/download/dsh-continue-all.tgz

本地开发目录可用 link:/path/to/dsh-continue-all,用法与上述 spec 相同。

安装前建议浏览仓库源码与 MIT 许可证;插件以当前 dsh 进程权限运行,与任何 DSH 插件一样,应确认其 API 与日志读取行为符合你的环境策略。

典型用法

  1. 完成安装并在 dsh.profile.bundles 中启用 "dsh-continue-all",重启 dsh web。
  2. 在侧边栏底部找到 Continue all,点击开始扫描。
  3. 在列表中确认待续跑会话(必要时勾选「包含 6 小时以前的中断会话」)。
  4. 确认后等待对话框中的 per-session 进度;失败项按提示单独处理(例如先 unarchive 或处理 approval 阻塞)。

无需额外配置字段;行为由扫描规则与 UI 确认步骤决定。

适用场景与注意

适合经常在本地或服务器上跑 DSH Web、且遇到过进程异常退出导致大量 interrupted 会话的开发者。不适合替代对「正在运行」或「等待审批」会话的手动处理——这些会被插件 deliberately 排除。

注意:

  • 批量 continue 会按序占用各会话的队列,会话很多时耗时与模型调用成本需自行评估。
  • 首次重启后的全量扫描在大历史上可能较慢,属 README 描述的预期行为。
  • 社区目录页 skillhub.cn/plugins/mkpoli/dsh-continue-all 与 GitHub 仓库为独立信息源,与 DeepSeek / 幻方无官方从属关系;安装命令以仓库 README 为准。

结尾

dsh-continue-all 把「异常退出后逐个 Continue」收成侧边栏里的一步操作,并用 6 小时默认窗口与排除规则降低误批量风险。若你在 DSH Web 里维护多会话开发流,可在启用前读一遍仓库 README 的检测与扫描说明。

羽毛球分组比赛记分
小程序二维码

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

小夜