dsh-edit-resend
Agent 与工作流mbj733/dsh-edit-resend
DSH 插件:编辑已发送消息并重新发送,包括停止进行中的回复、编辑、重发,以及基于分支的编辑/重生成/重试和版本时间线。
- dsh
- dsh-plugin
- dsh-plugins
GitHub Stars
4GitHub浏览量
0DSH Plugin HubForks
0GitHub开放问题
0GitHub IssuesManifest 版本
0.1.0dsh-edit-resend最近推送
2026年8月23日GitHub许可证
MITTypeScript插件类型
Host + Client同时运行于 Host 与 Web Client项目 README
README
dsh-edit-resend
DeepSeek Harness (DSH) 插件:在消息已发送之后原位编辑并重新发送——包括停止正在进行的回复、编辑、重新发送,以及重生成 / 重试任意回合。单对话模式:修改后旧版本自动归档、标题不变,侧边栏始终只保留一个对话。
与上游 dsh-message-edit 的关键区别:本插件的版本元数据存在会话日志之外(DSH_HOME/storages/dsh-edit-resend/versions.json),从不往会话日志写自定义事件类型,因此不会触发宿主重启后的 SessionFormatUnsupportedError,会话始终可恢复。
功能
- 停止并编辑重发:回复进行中,标题栏出现「■ 停止」;你也可以直接点最后一条消息的「编辑」图标——修改后点「重新发送」时,插件会自动停止当前回复、等回复收敛后从该消息重新生成,无需先手动停止。不会产生重复消息,旧版本自动归档。
- 失败可见:编辑框内与标题栏会直接显示失败原因(例如“所选消息不属于已落定回合”),不会再静默无反应。
- 编辑已落定消息:编辑用户文本、助手思考(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)即生效。
构建
npm install
npm run build
生成 index.mjs(Host 插件)与 client.js(Browser 插件)。
架构
- Host 半(
src/host.ts,注入sessions/agents/sessionQuery/workspaceRegistry/webServer):通过ctx.agents.create({ seed, meta })事务缝从目标回合之前分支;parentSession落在会话头建立谱系,版本效果元数据落在插件私有 JSON 存储。 - Client 半(
src/client/*,注入slots/conversation/connection/sessions):注册conversation.view(「编辑与重发」标签页)与conversation.session.header.actions(停止 / 重生成),并用 MutationObserver 把「编辑 / 重试」按钮注入到消息操作行。 - HTTP 接口:
GET /edit-resend?sessionId=(时间线投影)、POST /edit-resend(edit/reroll/retry)。
范围边界
- 不原地改写会话事件;历史 append-only。
- 不联动恢复工作区文件 / 外部命令副作用。
- 不修改 DSH 引擎或官方 UI 包。