🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

消息编辑分叉 SpookySandwich/dsh-plugin-message-edit

DeepSeek Harnessv1.5.0
SpookySandwich7 天前有提交已提供中文文档扫描:未发现敏感能力

编辑一条已经发出的消息,对话会从那一刻 真正回溯并分叉——和 ChatGPT、Claude、DeepSeek…

47.1/100
综合分
26
GitHub 星标
997
npm 周下载
—/5
用户评分

数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-plugin-message-edit
npm 源 · dsh-plugin-message-edit 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功(非静态推断);本次验证针对插件 v1.4.1,当前版本为 v1.5.0
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包dsh-plugin-message-edit @ 1.5.0
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖要求 >=0.2.0-rc.2 <0.3.0-0 || 0.2.1-rc.2 || 0.2.1-rc.5 · 最新 0.2.1-rc.5 兼容
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 17:40:24

安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 6 处,展示前 6 条)
  • 发起网络请求
    lib/client.js:314
    const res = await g.fetch(ROUTE + '?sessionId=' + encodeURIComponent(sessionId), { cache: 'no-store' });
  • 发起网络请求
    lib/client.js:457
    const res = await g.fetch(ROUTE, {
  • 写入剪贴板
    lib/client.js:1326
    if (g && g.navigator && g.navigator.clipboard) g.navigator.clipboard.writeText(text);
  • 发起网络请求
    plugin.client.js:294
    const res = await g.fetch(ROUTE + '?sessionId=' + encodeURIComponent(sessionId), { cache: 'no-store' });
  • 发起网络请求
    plugin.client.js:437
    const res = await g.fetch(ROUTE, {
  • 写入剪贴板
    plugin.client.js:1306
    if (g && g.navigator && g.navigator.clipboard) g.navigator.clipboard.writeText(text);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-scope@deepseek-ai/dsh-session@deepseek-ai/dsh
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

2 张 · 点击查看大图

功能亮点

  • 编辑已发送消息
  • 从该处分叉对话
  • 版本计数与树状视图

DSH 消息编辑插件:编辑已发送的消息并从该处分叉对话,气泡下方带版本计数与树状视图,支持位置预设。

v1.5.02026-10-30
在声明的 peerDependencies 与 engines.dsh 范围(>=0.2.0-rc.2 =0.2.0-rc.2 <0.3.0-0 || 0.2.1-rc.2 || 0.2.1-rc.5)中显式纳入官方 DSH 0.2.1-rc.5,同时保持对 0.2.0-rc.2 与 0.2.1-rc.2 的支持。无需改动插件运行时代码;本插件使用的会话、智能体、工作区及对话视图接口在官方 DSH 0.2.1-rc.5 上完全兼容。验证:57 项自动化测试、4 项发布工具测试、10 项发布辅助单元测试、13 个文件的 npm 包校验,以及官方 DSH 0.2.0-rc.2、0.2.1-rc.2、0.2.1-rc.5 的隔离全新启动与重启验收检查(在线/冷消息编辑、用户消息图片保留、版本导航、同级重试分支、版本树布局不重叠、400px 宽度下头部 More 菜单导航),均使用离线模型。从 npm 或附件发布包安装:dsh plugin --profile web add dsh-plugin-message-edit 更新后重启 DSH。
v1.4.12026-10-26
通过 @deepseek-ai/dsh-mcp-client 的 override,把仓库检出环境的传递依赖 MCP 客户端加固到 @modelcontextprotocol/client 2.3.0(@modelcontextprotocol/core 2.3.0)(#11)。 · 在本仓库的 package.json 和 package-lock.json 中,把 @deepseek-ai/dsh-mcp-client override 到 @modelcontextprotocol/client 2.3.0(解析为 @modelcontextprotocol/core 2.3.0),覆盖两条 MCP 客户端安全公告: - GHSA-6qxp-vccf-f47h / CVE-2026-104850(>=2.0.0 =2.0.0 <2.3.0,2.3.0 修复):HTTP 传输在重定向时跨源转发自定义请求头(并在 307/308 重定向时转发请求体),这正好命中 DSH 的 MCP 桥接所用的 requestInit.headers 传输模式,2.2.0 仍受影响。 · 行为与范围说明: - 仅加固检出环境依赖(现有用户的 DSH 宿主不受影响):npm 只在根项目应用 overrides,发布插件归档时也不带 package-lock.json,不打包 DSH/MCP 包。安装或更新 dsh-plugin-message-edit 不会给用户已装的 DSH 宿主打补丁或升级 @modelcontextprotocol/client;DSH 宿主依赖仍由宿主环境管理。插件运行时和客户端代码均未改动。 - 2.3.0 的跨源重定向行为:@modelcontextprotocol/client 2.3.0 默认拒绝跨源重定向(Node 下跟随同源重定向,浏览器中拒绝重定向)。依赖跨源重定向的 MCP 端点必须配置最终目标 URL。 在仓库检出环境的 package.json(overrides)与 package-lock.json 中,把 @deepseek-ai/dsh-mcp-client 的传递依赖固定为 @modelcontextprotocol/client 2.3.0(及 @modelcontextprotocol/core 2.3.0),同时覆盖 GHSA-6qxp-vccf-f47h(CVE-2026-104850,OAuth 凭据泄露,2.2.0 修复)与 GHSA-6prh-2h8m-c8cw(CVE-2026-111769,HTTP 传输在跨源重定向时转发自定义请求头及 307/308 请求体,2.3.0 修复;2.3.0 默认拒绝跨源重定向,Node 下仅跟随同源重定向,依赖跨源重定向的 MCP 服务端需配置最终 URL)。该变更仅加固本仓库的开发/测试检出环境:npm 把本插件作为依赖安装时会忽略 overrides,发布归档也不含 package-lock.json 或宿主依赖,因此安装或更新本插件不会改动用户已装的 DSH 宿主环境(#11)。 感谢 @anupamme(Anupam Mediratta)在 #11 中贡献了把 @deepseek-ai/dsh-mcp-client override 到 @modelcontextprotocol/client 和 @modelcontextprotocol/core 2.3.0 的改动。 验证:56 项自动化测试(含 37 项内部树断言)、4 项发布工具测试、13 个文件的 npm 包校验、npm 10 与 npm 11 的 lockfile 稳定性检查、8 个用例的本地 StreamableHTTPClientTransport 重定向验证(覆盖 2.2.0 与 2.3.0 的 307/308 同源与跨源自定义请求头/请求体行为),以及在官方 0.2.0-rc.2、官方 0.2.1-rc.2 和带 override 的检出宿主上、配离线模型做的隔离全新启动与重启 DSH 验收运行。v1.4.1 源码标签与发布已在 GitHub 上;dsh-plugin-message-edit@1.4.1(及 1.4.0)的 npm 发布待手动执行。
v1.4.02026-10-26
新增俄语(ru / Русский)客户端本地化(#10):为全部 37 条插件界面与图片文案补上俄语翻译(I18N.ru),含 {turn} 和 {count} 占位符插值;在 DSH 宿主语言目录(locale.addLanguage)中注册 { id: 'ru', label: 'Русский', fallback: 'en' },前提是没有预加载的俄语语言包已占用 ru,把 Русский 加进「设置 → 通用 → 语言」,并在插件卸载时清理目录与词典两处注册。行为与兼容性说明:安装插件会在宿主全局语言选择器里注册 Русский(fallback: 'en'),所以未显式保存 DSH 语言偏好时,自动浏览器语言检测在俄语排在中文之前(如 ru-RU、zh-CN)的情况下可能选中 ru,导致未翻译的宿主界面回退到英语而非中文,直到你显式选择语言;预加载的 ru / RU 语言包会被尊重(调用 locale.addLanguage 前先检查 locale.languages()),若另有俄语语言包在本插件注册 ru 之后加载,上游 locale.addLanguage 会拒绝重复的 ru 注册(目前尚无已知的独立俄语语言包)。感谢 @miztizm 在 #10 中贡献俄语本地化。验证:56 项自动化测试(含 32 项针对已发布 DSH locale 运行时的客户端本地化与图片测试、36 项树断言)、发布工具与 npm 包检查,以及在离线模型下对官方 DSH 0.2.0-rc.2 和 0.2.1-rc.2 的隔离全新启动、重启与浏览器验收检查。v1.4.0 源码标签与发布已在 GitHub 上提供;dsh-plugin-message-edit@1.4.0 的 npm 发布待手动执行。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-message-edit 编辑一条已经发出的消息,对话会从那一刻 真正回溯并分叉——和 ChatGPT、Claude、DeepSeek 的做法一致。旧版本不会被覆盖:气泡下方出现 ‹ 2/4 › 计数,「版本」标签页则画出整棵树。 演示 版本树分支展示 无论对话如何深层分叉、编辑多少次,「版本」标签页均会呈现清晰的轮次级分支图,当前会话所在路径实时高亮,点击任意节点即可平滑跳转: 版本树 功能 - 编辑并分叉:修改过去的提问并发送,新分支会带着该轮 之前 的完整上下文重新生成。这是真正的回溯,而不是从末尾继续的 fork。 - 版本计数:一条消息存在多个版本时,下方出现 ‹ n/m ›,左右箭头在各版本间即时切换。 - 版本树:新增「版本」标签页,以图的方式展示所有分支,可平移、缩放、拖动。当前所在分支高亮,点击任意节点即可跳转。 - 零延迟与即时切换:客户端家族级 SWR 缓存与乐观预加载,点击箭头或树节点切换版本 0ms 响应,无指示器闪烁或加载白屏。 - 高性能内存缓存:宿主端内存解析缓存,消除重复磁盘 I/O 与日志重析,即便是深度分叉的庞大家族树也能毫秒级响应。 - 自动中止旧分支:分叉时自动停止同家族中仍在流式生成的回复,避免浪费 Token 与计算资源。 - 重试:不修改内容,直接重跑该轮(Claude 布局)。
展开完整文档(README 剩余 1 节)
dsh-plugin-message-edit

编辑一条已经发出的消息,对话会从那一刻 真正回溯并分叉——和 ChatGPT、Claude、DeepSeek 的做法一致。旧版本不会被覆盖:气泡下方出现 ‹ 2/4 › 计数,「版本」标签页则画出整棵树。

演示

版本树分支展示

无论对话如何深层分叉、编辑多少次,「版本」标签页均会呈现清晰的轮次级分支图,当前会话所在路径实时高亮,点击任意节点即可平滑跳转:

版本树

功能

- 编辑并分叉:修改过去的提问并发送,新分支会带着该轮 之前 的完整上下文重新生成。这是真正的回溯,而不是从末尾继续的 fork。
- 版本计数:一条消息存在多个版本时,下方出现 ‹ n/m ›,左右箭头在各版本间即时切换。
- 版本树:新增「版本」标签页,以图的方式展示所有分支,可平移、缩放、拖动。当前所在分支高亮,点击任意节点即可跳转。
- 零延迟与即时切换:客户端家族级 SWR 缓存与乐观预加载,点击箭头或树节点切换版本 0ms 响应,无指示器闪烁或加载白屏。
- 高性能内存缓存:宿主端内存解析缓存,消除重复磁盘 I/O 与日志重析,即便是深度分叉的庞大家族树也能毫秒级响应。
- 自动中止旧分支:分叉时自动停止同家族中仍在流式生成的回复,避免浪费 Token 与计算资源。
- 重试:不修改内容,直接重跑该轮(Claude 布局)。
- 复制:把消息文本复制到剪贴板。
- 持久可靠:每个分支都是真实会话,版本关系写入持久事件,重启后依旧完整。新分支自动归入父会话的工作区。

界面风格

这三家界面的差别在于 操作按钮放在哪里、有哪些,因此预设只改变这一点,颜色始终沿用 DSH 原生配色。在 设置 → 消息树 中选择,面板内有实时预览。

| 预设 | 气泡下方的按钮 | 显示方式 | 编辑框按钮 |
| ChatGPT | 编辑、复制 | 悬停时显示 | 取消 / 发送 在框 内部 |
| DeepSeek | 编辑、复制 | 始终显示——与 DSH 一致 | 取消 / 发送 在框 内部 |
| Claude | 重试、编辑、复制 | 悬停时显示 | 取消 / 保存 在框 下方 |

只有 Claude 在用户消息上提供重试,与真实界面一致。没有分享按钮——DSH 本身没有,就不自行发明。

安装

dsh plugin --profile web add dsh-plugin-message-edit

安装后请重启 DSH:宿主端随服务器加载。界面跟随 DSH 显示语言(中文 / English / Русский)。可在语言选择器中选择俄语;宿主中尚未翻译的界面使用英语。

工作原理

DSH 的会话是仅追加的事件日志,本身不支持会话内分支,因此回溯需要另行实现:

- 宿主端提供 /message-tree 接口。编辑消息时,会 以目标轮次之前的全部事件为种子创建一个新会话,写入持久的 message-tree/version 标记说明改动内容,并把编辑后的提问送入。
- 之后读取这些标记,还原出整棵版本树、‹ n/m › 计数,以及当前处于哪个分支。
- 标记事件带有信封上的 ignorable 标志。插件自定义的事件类型不在宿主的事件词表内,缺少该标志时读取端会拒绝解释整份日志,会话将直接打不开。
- 只遮蔽普通的 user 消息节点(优先级 -1);思考、工具调用与引导消息仍由宿主渲染。

宿主端的分支逻辑源自 dsh-message-edit(MIT © Moeblack),在其基础上重做为 ChatGPT 式回溯语义、同级分支展开,以及上述界面预设。

两者名字相近,这里说明一下:这是另一个独立插件。它的路由、cordis id 与持久事件类型都保留了 message-tree 这一套命名,正是为了两个插件可以同时安装而互不冲突。

文档

更多技术细节与开发指南,请参阅:
- 架构概览 (Architecture):宿主/客户端架构、Cordis 服务注入、持久事件模型与 HTTP 接口。
- 树数据模型与算法 (Tree Data Model):轮次级消息树构建、同级展开、删除会话(Ghost)桥接与高亮路径计算。
- 开发与测试指南 (Development):构建流程、单元测试与本地安装说明。

兼容性

版本 1.4.1(当前源码):在仓库检出环境的 overrides 与锁文件中,将 @deepseek-ai/dsh-mcp-client 的 @modelcontextprotocol/client(及 @modelcontextprotocol/core)固定为 2.3.0,覆盖 GHSA-6qxp-vccf-f47h(CVE-2026-104850,2.2.0 修复)与 GHSA-6prh-2h8m-c8cw(CVE-2026-111769,跨源重定向会转发自定义请求头与 307/308 请求体,2.3.0 修复;2.3.0 在 Node 下仅跟随同源重定向,依赖跨源重定向的 MCP 服务端需配置最终 URL)。该变更仅加固本仓库的开发/测试检出环境;npm 作为依赖安装时会忽略 overrides,且发布包不含 package-lock.json,安装或更新本插件不会修改你现有的 DSH 宿主依赖。

版本 1.4.0:新增俄语(ru / Русский)客户端本地化(完整覆盖全部 37 条界面与图片文案),并在宿主语言选择器中注册 Русский(宿主未翻译界面回退至英语;若未显式保存语言偏好,且浏览器语言顺序将俄语排在中文之前,自动检测会选中俄语,未翻译宿主界面回退为英语;预加载的 ru 语言包会被优先保留,若外部 ru 语言包在本插件之后加载,则会因重复注册冲突)。

版本 1.3.1:当宿主不再传入旧版 renderMessageImages 回调时,通过宿主 conversation.chat.user.content 工厂恢复用户消息图片与原图预览,并提供基于 loadImage / loadImage.peek 的异步缩略图兜底。

版本 1.3.0:在兼容范围中显式纳入官方 dsh 0.2.1-rc.2,并在官方 0.2.0-rc.2 与 0.2.1-rc.2 运行时验证编辑、重试与重启恢复。

版本 1.2.1:修复 DSH 0.2 客户端加载,编辑、重试及版本切换改用 uiWorkspace.openSession 导航。

版本 1.2.0:在官方 dsh 0.2.0-rc.2 上通过 workspaceRegistry.unarchiveSession 取消版本归档。

版本 1.1.0:修复编辑/重试的 seed 边界,发布分支前清空继承的待发送输入,按会话身份识别版本标记,保留推理强度,并通过会话观察接口恢复持久分支。

声明兼容范围为 >=0.2.0-rc.2 <0.3.0-0 || 0.2.1-rc.2;官方 dsh 0.2.0-rc.2 与 0.2.1-rc.2 满足该范围。旧版 DSH 请保留上一插件版本。验证记录。

已发布版本可从 npm 安装。测试当前源码时,先运行 npm ci 和 npm pack,再运行 dsh plugin --profile desktop add ./dsh-plugin-message-edit-1.4.1.tgz。发布完整性检查见 发布流程。

1.1.0 已在 DSH 0.1.5-rc.2 的隔离 Web 环境验证:插件加载、图片显示、编辑与重试、深层分支,以及持久会话的恢复读取。模型回复使用本地测试实现,未调用远程模型服务。

兼容层保留了旧版 events / seedLength 接口支持,并由自动测试覆盖。本版本对应官方 dsh 0.2.1-rc.2。更新插件后请重启 DSH。

可与 dsh-plugin-smooth-stream、dsh-plugin-rollout-scout 共存。

许可

MIT © SpookySandwich。宿主端部分逻辑源自 dsh-message-edit(MIT © Moeblack)。
预览分享卡片长什么样 ↓SpookySandwich/dsh-plugin-message-edit
分享 · DeepSeek Harness Hub
SpookySandwich/dsh-plugin-message-edit

编辑一条已经发出的消息,对话会从那一刻 真正回溯并分叉——和 ChatGPT、Claude、DeepSeek…

回到顶部