前言¶
在 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。
- 在已配置 DSH CLI 的环境执行:
dsh plugin --profile web add github:Zhao0335/dsh-conversation-retry
- 重新加载 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 等为独立生态索引。
典型用法¶
编辑已发消息¶
- 将鼠标悬停在你发送的一条消息上,旁侧出现铅笔按钮(仅对浏览器实际提交、且
source带rpcId的提示显示)。 - 点击后在对话框中编辑预填内容。
- 按 Fork and send(
Ctrl/Cmd+Enter)。会打开子会话:该消息之前的历史保留,原回答及之后内容不会进入新历史;编辑后的 prompt 已开始运行。
重试一轮¶
- 在助手回复的操作条找到 Retry(与自带按钮同尺寸与 tertiary 样式)。
- 点击后 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