前言¶
DSH 的插件化方向让 Web 端会话界面可以扩展。对智能体开发者来说,消息发送后想回头修改某一句输入、某一段思考或某一次回复时,通常只能继续追问或新开对话。
dsh-edit-resend 解决的是这个问题:在消息已发送之后原位编辑并重新发送,也可以停止进行中的回复、重生成最后一条已落定回复,或重试 Timeline 中的任意历史回合。
这是什么¶
dsh-edit-resend 是 DeepSeek Harness(DSH)插件,由 mbj733 维护,许可证为 MIT。
它面向 web profile,提供以下能力:
- 停止并编辑重发;
- 重生成最后一条已落定回复;
- 在 Timeline 中重试任意历史回合;
- 以单对话模式保留修改后的会话体验。
单对话模式下,修改后旧版本自动归档,标题不变,侧边栏始终只保留一个对话。
核心功能¶
停止并编辑重发¶
回复进行中可以停止。修改后从该消息重新生成,不产生重复消息,旧版本自动归档。
失败可见¶
编辑框与标题栏会显示失败原因,不会静默无反应。
编辑已落定消息¶
可编辑内容包括:
- 用户文本;
- 助手思考(reasoning);
- 助手回复(response)。
重生成¶
用原输入重新生成最后一条已落定回复。
重试任意回合¶
在 Timeline 中选择任意历史回合重跑。
级联策略¶
支持两种策略:
truncate:默认策略,截断后续内容;preserve:保留后续用户输入,依次重跑。
安装与启用¶
安装命令:
dsh plugin --profile web add dsh-edit-resend
本地开发时使用符号链接安装:
dsh plugin --profile web add -w link:/path/to/dsh-edit-resend
安装后重启 dsh:
dsh web
插件需重启 dsh 后生效。
本地构建¶
如果从源码构建,先安装依赖:
npm install
再执行构建:
npm run build
构建会生成:
index.mjs:Host 插件;client.js:Browser 插件。
主要接口¶
插件提供以下 HTTP 接口:
GET /edit-resend?sessionId=
POST /edit-resend
其中:
GET /edit-resend?sessionId=用于获取时间线投影;POST /edit-resend用于执行edit、reroll、retry操作。
适用场景与注意¶
适合需要在 DSH Web 端反复调整某一轮输入或输出的开发者。常见场景包括:
- 发送后发现用户输入有误,希望直接改后重发;
- 对某次回复不满意,希望重生成;
- 想基于某个历史回合重新跑后续流程;
- 希望修改后侧边栏仍只保留一个对话。
注意以下几点:
- 插件以当前 dsh 进程权限运行;
- 安装前应检查源码与许可证;
- 不原地改写会话事件,历史保持 append-only;
- 不联动恢复工作区文件或外部命令副作用;
- 不修改 DSH 引擎或官方 UI 包;
- 版本元数据存储在
DSH_HOME/storages/dsh-edit-resend/versions.json; - 不往会话日志写自定义事件类型,以避免
SessionFormatUnsupportedError。
链接¶
GitHub 仓库:
https://github.com/mbj733/dsh-edit-resend