← 返回列表
未验证
编辑已发消息并重发,自动归档原会话可一键恢复
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/17 · 已提供中文文档
DSH 插件:编辑已发送的用户消息并重新发送(分叉出一个新分支),自动归档原始会话
综合分
27.7
GitHub 分
27.7
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add caoTbenren0/dsh-edit-resend该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-typert-protocol用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-edit-resend
编辑已发送的用户消息并重新发送 —— 从该消息所在回合 fork 出一个新分支,用编辑后的文本重新生成回复。原会话自动归档,可在设置页一键恢复。
编辑已发送的用户消息并重新发送:从该消息所在回合 fork 出一个新分支,用编辑后的文本重新生成回复。原会话自动归档,可在设置页一键恢复。
License: MIT
一个适用于 0.1.0-rc.6 的 DeepSeek Harness (DSH) 插件,为任意已完成回合添加编辑并重发功能,基于 cordis 插件系统和 Typert Remote 协议构建。
✨ 功能特性 / Features
- 回合尾部编辑入口 — 每个已完成回合的尾部出现 ✎ 编辑本轮消息并重发 按钮(不替换官方 UI,纯增量注入)每个已完成回合尾部都有编辑入口 —— 一个增量式幽灵按钮,官方气泡保持不变。
- 读取该轮用户原文 — 从 Host 的全量事件日志定位该轮的用户消息(客户端投影会截断长会话历史,因此不在客户端查节点)从 Host 的全量事件日志读取该轮的用户原文(客户端投影会截断长会话历史,因此绝不在客户端查找节点)。
- Fork 重发 — 以目标回合起点为界切割事件日志作为种子,创建子会话并发送编辑后的文本;历史不可改写,只 fork 新分支Fork 重发 —— 以目标回合之前的事件日志前缀为种子创建子会话,然后将编辑后的文本作为首个后续消息发送;历史不可变,因此回复会在新分支上重新生成。
- 自动归档原会话 — 重发成功后原会话自动归档(仅视图隐藏,日志与数据绝不删除)重发成功后原会话自动归档 —— 仅在视图层面隐藏,绝不删除任何数据。
- 设置页恢复 — 设置页新增「编辑重发」分区,列出全部归档会话,一键恢复回侧边栏(官方 rc.6 没有 unarchive API,本插件补齐)设置页新增「编辑重发」分区,列出全部归档会话,一键恢复回侧边栏(官方 rc.6 没有 unarchive API —— 本插件补齐了这一空缺)。
🚀 安装 / Installation
以 web profile 为例,其他 profile 同理。要求 DSH ≥ 0.1.0-rc.6。
以 web profile 为例;其他 profile 同理。要求 DSH ≥ 0.1.0-rc.6。
1. 安装插件(发布包或本地路径均可)
安装插件(发布包或本地路径均可)
dsh plugin --profile web add dsh-edit-resend
2. 把 cordis.patch.yml 中的 insert 行并入 profile 的 cordis.patch.yml
将 cordis.patch.yml 中的 insert 行并入 profile 的 cordis.patch.yml
- id: edit-resend
name: 'dsh-edit-resend'
3. 重启 dsh web(Host 端改动必须重启;之后客户端改动只需刷新页面)
重启 dsh web(Host 端改动必须重启;仅客户端改动只需刷新页面,
bundle 以 no-cache 方式提供)
手动配置 / Manual configuration
将以下内容加入 profile 的 package.json 与 cordis.patch.yml:
// profiles//package.json
{
"dependencies": {
"dsh-edit-resend": "link:/absolute/path/to/dsh-edit-resend"
},
"bundles": {
"dsh-edit-resend": "dsh-edit-resend"
}
}
profiles//cordis.patch.yml
- insert:
- id: edit-resend
name: 'dsh-edit-resend'
📖 使用 / Usage
1. 打开任意有已完成回合的会话 → 回合尾部点击 ✎ 编辑本轮消息并重发打开任意有已完成回合的会话 → 在回合尾部点击 ✎ 编辑本轮消息并重发。
2. 编辑器会预填该轮的用户原文,修改后点击「保存并重发」编辑器会预填该轮的用户原文,修改后点击「保存并重发」。
3. 界面自动切换到新 fork 分支并开始重新生成;原会话从侧边栏消失(已归档)界面会自动切换到新的 fork 分支并开始重新生成;原会话从侧边栏消失(已归档)。
4. 需要找回原会话:设置 → 编辑重发 → 找到对应会话 → 「恢复」如需找回原会话:设置 → 编辑重发 → 找到对应会话 → 「恢复」。
归档绝不删除数据:恢复后原会话回到原位置,日志完整保留。
归档绝不删除数据:恢复后原会话回到原位置,日志完整保留。
🧩 工作原理 / 工作原理
| 层 | 机制 |
|---|---|
| Host 端 | EditResendService(cordis 服务,继承 TypertRemoteService)暴露 5 个 Remote 端点:edit / getText / archive / unarchive / listArchived。edit 从完整事件日志定位目标回合的 turn/start,切割出前缀作为 seed 调用 agents.create 创建子会话,attach 到原工作区,再以编辑后的文本触发 followup |
| Client 端 | UMD bundle 注入两个 slot:conversation.chat.turnTail(链式,编辑按钮)与 settings.section(归档恢复列表);通过 remote.editResend. 调用 Host(第三方插件需自行 $mount Remote 贡献) |
| 归档竞态 | 归档广播会清空“当前被归档的会话”,因此 client 先同步打开 fork、再归档原会话——归档到达时当前会话已是 fork,清空规则永不触发(详见 HANDOFF.md §3.5) |
| 层 | 机制 |
|---|---|
| Host | EditResendService(一个继承 TypertRemoteService 的 cordis 服务)暴露 5 个 Remote 端点:edit / getText / archive / unarchive / listArchived。edit 在完整事件日志中定位目标回合的 turn/start,通过 agents.create 以保留的前缀作为 seed 创建子会话,将其 attach 到原工作区,再以编辑后的文本作为 followup 投递 |
| Client | 一个 UMD bundle 注入两个 slot:conversation.chat.turnTail(链式 slot,编辑按钮)与 settings.section(归档会话恢复列表),通过 remote.editResend. 调用 Host(第三方插件必须自行 $mount 其 Remote 贡献) |
| 归档竞态 | 归档广播会清空一个当前已变为归档的会话,因此 client 先打开 fork,然后才归档原会话——当广播到达时,当前会话已经是 fork(详见 HANDOFF.md §3.5) |
📁 文件结构 / 文件布局
dsh-edit-resend/
├── lib/
│ ├── index.js # Host 半:EditResendService(5 个 Remote 端点) / Host 半部分
│ ├── client.js # Client 半:UMD bundle(按钮 + 设置页) / Client 半部分
│ ├── typert.host.js # Host Typert 清单(schema + invocation + model)
│ └── typert.remote.js # Client Remote 描述符 / 描述符
├── cordis.patch.yml # bundle patch 声明
├── package.json
└── HANDOFF.md # 开发记录与 root-cause 分析 / 开发日志与 root-cause 分析
🔧 兼容性 / 兼容性
- DSH 0.1.0-rc.6(web profile 验证)
- peerDependencies:@deepseek-ai/cordis ^4.0.1、@deepseek-ai/dsh-agent ^0.1.0-rc.6、@deepseek-ai/dsh-typert-protocol ^0.1.0-rc.6
- 官方 rc.6 无 unarchive API/UI:设置页恢复由本插件实现(workspaceRegistry.setState + host/archived-sessions-changed 广播)
📄 License
MIT — 请同时参考 DeepSeek Harness 的许可条款。
另请参阅 DeepSeek Harness 许可条款。扫码进群