DeepSeek Harness (DSH) 目前没有内置方式来编辑上一条消息或重试失败的回合(例如网络错误中断)。locietta/dsh-rewind-retry 插件通过添加 Retry、Edit prompt 和 Continue 操作来解决这个问题,其核心实现方式是“分叉”会话。
插件简介¶
这是 Locietta 维护的一个 DeepSeek Harness (DSH) 插件,为 Web / 桌面聊天 UI 中已结束的回合添加了 Retry、Edit prompt 和 Continue 操作。
核心功能¶
插件通过分叉会话来实现对历史的修改和重试:
- Retry:对每个由用户提示产生的已结束回合,在提示前分叉会话并重新发送相同的提示。
- Edit:在同一边界分叉会话,将旧提示放入编辑器以便修改。
- Continue:仅在最新回合失败或无回复时生效,在同一会话中发送“Continue from where you left off”,保留已做的工作。
安装与启用¶
DSH 的插件管理器直接从 GitHub 安装 bundles,无需 npm 包。
在 DSH 代理中执行以下命令:
Install the plugin bundle github:Locietta/dsh-rewind-retry#v0.1.0
安装后无需重启 DSH,刷新页面即可看到按钮。
更新与卸载¶
- 更新:移除旧 bundle 并安装新 tag,例如在代理中输入
reinstall github:Locietta/dsh-rewind-retry#<new tag>。 - 卸载:进入 Settings → Plugins,找到
@local/dsh-rewind-retry并移除。
工作原理¶
DSH 的会话日志是追加的,“回溯”本质上是一次分叉。插件调用 Host 的 session.fork 并指定精确的 atSeq 边界,原会话保留为分支。
- Idle prompt:切在提示入站前,保留回合间的设置变更(如模型、权限模式)。
- Queued prompt:切在上一回合结束后,确保队列中的旧提示不会在分叉会话中优先执行。
需要注意的是,回溯仅影响对话历史,磁盘上的文件修改在回溯后保持原样。
局限与注意事项¶
- 附件限制:Retry 仅支持文本,若原提示包含图片或文件,需手动重新添加。
- UI 位置:操作按钮显示在回合末尾(因为 DSH 的用户消息气泡没有扩展插槽)。
- 可回溯回合:仅限你手动发起的回合。由 goal rounds、schedules 或 subagent notices 发起的回合不支持 Retry 和 Edit。
- 依赖版本:当前已测试 DSH 0.1.7-rc.1。插件会防御性地读取 Client 内部(聊天快照和会话事件窗口),未来 DSH 版本可能需要更新。