dsh-edit-resend:在 DSH 中编辑已发送消息并重新发送

前言

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 用于执行 editrerollretry 操作。

适用场景与注意

适合需要在 DSH Web 端反复调整某一轮输入或输出的开发者。常见场景包括:

  • 发送后发现用户输入有误,希望直接改后重发;
  • 对某次回复不满意,希望重生成;
  • 想基于某个历史回合重新跑后续流程;
  • 希望修改后侧边栏仍只保留一个对话。

注意以下几点:

  1. 插件以当前 dsh 进程权限运行;
  2. 安装前应检查源码与许可证;
  3. 不原地改写会话事件,历史保持 append-only;
  4. 不联动恢复工作区文件或外部命令副作用;
  5. 不修改 DSH 引擎或官方 UI 包;
  6. 版本元数据存储在 DSH_HOME/storages/dsh-edit-resend/versions.json
  7. 不往会话日志写自定义事件类型,以避免 SessionFormatUnsupportedError

链接

GitHub 仓库:

https://github.com/mbj733/dsh-edit-resend

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

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

小夜