dsh-conversation-retry:在 DSH Web UI 中编辑、重试已完成轮次

前言

在 DeepSeek Harness(DSH)的 Web 对话界面里,默认行为是只能继续追加消息:已经发出去的提示词会被冻住,模型若答错了,错误回复仍留在历史里并继续占用上下文。对日常调试 prompt、对比同一轮的不同回答来说,不够顺手。

社区插件 dsh-conversation-retry(维护者 Zhao0335,分类:工作流)针对这一点:在 Web UI 里对自己的消息做编辑后从该点重跑,或在助手消息操作条里原样重试该轮。两条路径都会生成独立会话分支,不就地改写原日志。目录页:SkillHub;源码:GitHub — Zhao0335/dsh-conversation-retry。

这是什么

一句话:在 DSH Web UI 中对任意已完成轮次做 Retry、编辑后重发,并以 fork 方式派生子会话。

Harness 会话本质是只追加的事件日志,就地删掉尾部会破坏回放与导出的可信度。插件用与侧栏「Fork session」相同的原语,在消息粒度上截断事件前缀,子会话自包含,原会话不动;放弃的 branch 仍可随时回到。

说明:从某一轮分支这件事 harness 聊天页脚已有分支按钮,本插件不重复实现该项;README 中表格里的 branch 指的是 fork 会话机制本身,而非额外 UI。

核心功能

操作 位置 作用
Edit 悬停在你自己的消息上 改写已发送的 prompt,从该点重新运行
Retry 助手消息操作条(与复制、分支等并列) 不改写 prompt,去掉该轮回答后让模型再答一次

两者都会打开新的真实会话,出现在侧栏,标题在原会话名基础上递增后缀,便于辨认同源分支。Host 侧 apply() 为空,能力全在浏览器端客户端模块(package.json 中 dsh.client.platform 为 web,immediately: true)。

安装与启用

插件随 DSH web profile 安装。当前包版本在仓库 package.json 中为 0.4.0,许可证 MIT。

  1. 在已配置 DSH CLI 的环境执行:
dsh plugin --profile web add github:Zhao0335/dsh-conversation-retry
  1. 重新加载 Web UI 一次,让浏览器加载新的客户端模块。

若要从本地目录安装 bundle(非 git clone 场景下的开发路径),README 给出:

plugin_manager install_bundle  target: <absolute path to this directory>

环境要求(README 原文):Harness 构建需暴露 ctx.sessions.fork(含 atSeq 边界)、链槽 conversation.chat.user.before 与 conversation.chat.assistant-actions,一般为 0.2.x 及以后。

安装前建议自行查看仓库源码与 LICENSE;插件在当前 dSH 进程权限下运行,与社区目录站点无官方从属关系,SkillHub 等为独立生态索引。

典型用法

编辑已发消息

  1. 将鼠标悬停在你发送的一条消息上,旁侧出现铅笔按钮(仅对浏览器实际提交、且 source 带 rpcId 的提示显示)。
  2. 点击后在对话框中编辑预填内容。
  3. 按 Fork and send(Ctrl/Cmd+Enter)。会打开子会话:该消息之前的历史保留,原回答及之后内容不会进入新历史;编辑后的 prompt 已开始运行。

重试一轮

  1. 在助手回复的操作条找到 Retry(与自带按钮同尺寸与 tertiary 样式)。
  2. 点击后 fork 出不含该轮回答的历史,并重新发送该轮对应的用户侧 prompt。

实现要点(便于排障)

  • 编辑 fork 边界:userMessage.seq - 1;重试:turnStart.seq - 1。
  • 子会话就绪后通过 SessionBinding.session.prompt 入队发送,并用 ctx.uiWorkspace.openSession 切到主视图。
  • 编辑对话框由 shell.overlay 承载;rpcId → seq/文本 索引随事件窗口 revision 重建,避免长对话逐行扫日志。

适用场景与限制

适合:Web 上迭代 prompt、对同一轮要第二次模型输出、又不想丢失原会话留档的开发者。

README 明确的限制:

  • Retry 重发的是该轮第一条用户消息;若轮次由合成上下文注入(如 goal 续写、文件变更通知)打开,会重发注入文本而非人工 prompt。
  • 无 rpcId 的旧日志恢复消息不可编辑。
  • 已滚出已加载历史窗口的事件对应消息不显示按钮。
  • 附件不会随编辑/重试带走,仅以文本重发。

结尾

dsh-conversation-retry 把「改 prompt 再跑」和「同一轮再生成」放进 Web UI,且用 fork 保持只追加日志的语义。需要安装与 issue 时,以 README 与仓库为准。

  • 目录:https://www.skillhub.cn/plugins/Zhao0335/dsh-conversation-retry
  • 源码:https://github.com/Zhao0335/dsh-conversation-retry
羽毛球分组比赛记分
小程序二维码

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

小夜