← 返回列表
未验证
在对话历史中编辑用户输入:点击用户气泡下的「✎…
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/19 · 已提供中文文档
DSH 插件:在对话历史中编辑用户消息,并在分叉会话中基于修改后的提示重新生成。
综合分
26.7
GitHub 分
26.7
用户评分
—
★ Stars
0
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add StabCut/dsh-edit-regenerate该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
信任档位:仅索引本站尚未对其实装验证,仅收录元数据
- 是什么
- dsh 原生插件 · chat
- 装得上吗
- 本站尚未做安装检查
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 更新放缓:最近一次提交在 37 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
数据截至 2026/9/20(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-typert-protocol用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-plugin-edit-regenerate English · 简体中文 在对话历史中编辑用户输入:点击用户气泡下的「✎ 编辑」修改内容,确认「确定修订」后,系统删除该消息之后的所有内容,并以修订后的提示词重新生成。 演示 下面的截图展示了核心的「编辑并重新生成」流程:用户气泡上的「✎ 编辑」按钮(与官方「⧉ 复制」并排保留),以及以修订提示词重新生成的回复。 行为语义 - 非首条消息:在原会话的上一轮次结束处分支出一个新会话(sessions.fork + prompt + 打开),原会话保持不变; - 首条消息:在同一工作区新建空白会话,以修订文本作为开场重新生成; - 含图片等附件的消息修订后以纯文本重新发送(附件不保留,界面会提示); - 用户气泡保留原有的复制操作:⧉ 复制 按钮与 ✎ 编辑 按钮并排共存(插件渲染器遮蔽了官方渲染器,因此自行实现了复制而不是丢弃它); - 会话存储为 append-only 日志,不支持原地截断,分支即平台原生的「编辑并重新生成」。 架构 一个 DSH 插件包同时声明: - dsh.bundle.patch —— 指向 cordis.patch.yml,作为 bundle 被 profile 组装; - dsh.client —— 声明浏览器侧模块(./client),由 dsh-client-modules 注入 window.__DSH_BOOT__; - main —— 主机侧入口 lib/index.js。 主机侧(Host,lib/index.js + lib/typert.host.js) EditRegenerateService extends TypertRemoteService 注册 Cordis 服务 editRegenerate,通过 ./typert 的 TYPERT 清单由 @deepseek-ai/dsh-typert-loader 自动注册为可被客户端调用的 Remote: - resolve(sessionId, seq) —— 读取会话事件日志,定位用户消息,计算前一个 turn/end 作为 fork 边界;首条消息则解析所属工作区。 浏览器侧(Client,lib/client.js) - 挂载 TYPERT_REMOTE,把 remote.editRegenerate 装进运行时; - 以 priority: -1 接管 conversation.chat.node 槽位的 user 键渲染器(官方 user 渲染器被遮蔽,steering 等其它键不受影响),渲染可编辑的用户气泡,并保留复制操作(⧉ 复制 与 ✎ 编辑 并排),不丢失任何官方功能。 安装(持久化) 插件按 profile 安装,先确定你用的是哪个版本: | 版本 | Profile | Windows | macOS | Linux | | --- | --- | --- | --- | --- | | DSH Desktop 桌面版 | desktop | C:\Users\\.dsh\profiles\desktop | /Users//.dsh/profiles/desktop | /home//.dsh/profiles/desktop | | 官方原版启动版(命令行 dsh web) | web | C:\Users\\.dsh\profiles\web | /Users//.dsh/profiles/web | /home//.dsh/profiles/web | DSH Desktop 桌面版 dsh plugin --profile desktop add file:./dsh-plugin-edit-regenerate 官方原版启动版(命令行) dsh plugin --profile web add file:./dsh-plugin-edit-regenerate 或手动安装:在对应 profile 的 package.json(如 Windows 的 C:\Users\\.dsh\profiles\desktop\package.json,或 macOS/Linux 的 ~/.dsh/profiles/desktop/package.json)的 dsh.profile.bundles 追加 dsh-plugin-edit-regenerate、在 dependencies 追加 "dsh-plugin-edit-regenerate": "file:",然后在该 profile 目录执行 pnpm install。 重启 DSH 后生效。两个 profile 相互独立——装到其中一个不会影响另一个。 拉取更新后的更新流程 由于 pnpm 会把 file: 依赖拷贝到每个 profile 的 node_modules(hoisted 布局下是浅拷贝),执行 git pull 更新源码后,不会自动同步到已安装的 profile。当你拉取到新变更时,先检查目标 profile 在系统中是否还保存着该插件的副本: - 查看该 profile 的 node_modules,例如 C:\Users\\.dsh\profiles\desktop\node_modules\dsh-plugin-edit-regenerate(如果 web 也装了,同样的路径再查一份); - 只要某个 profile 还留有副本,它的副本就需要刷新。 然后判断是否确实需要更新并拷贝。如果当前运行的 DSH 还没有加载该插件(例如从未启动,或你改动的是一个当前未使用的版本),可以跳过拷贝,直接用新源码 pnpm install / 重启即可;如果该 profile 已存在副本、且当前 DSH 运行依赖它(或你希望本次 pull 立即生效),则按以下任一种方式刷新副本: 把整个插件目录镜像覆盖到目标 profile 的副本(排除 VCS 元数据): robocopy "F:\路径\dsh-plugin-edit-regenerate" "C:\Users\\.dsh\profiles\desktop\node_modules\dsh-plugin-edit-regenerate" /MIR /XD .git 或强制 pnpm 刷新 / 重新解析(在 profile 目录下执行): pnpm install --force 一旦判定确实需要更新,拷贝步骤可交由工具自动执行(例如由 AI 在更新流程中自动完成拷贝)。刷新副本后,重启 DSH 使变更生效。 故障排查 分叉会话在重启 DSH 后无法重新加载(SessionFormatUnsupportedError: ... unknown to this harness and not marked ignorable) 分叉会原样复制父会话的事件日志。如果父会话含有本 harness 构建不认识、且事件信封未标记 ignorable 的其他插件事件——例如 @loserfox/distill 在 #5 修复之前写入的 session/distill-review-request 事件——分叉日志在重启后会被拒绝加载(父会话本身同样受影响)。写入这些事件的插件版本已停止写入,但已经含有这些事件的日志仍需要一次性迁移:为相关事件补上 ignorable: true。 运行仓库自带的修复脚本(请先停止 DSH): node scripts/repair-session-logs.mjs 该脚本扫描 $DSH_HOME/sessions(默认为 ~/.dsh/sessions)下的所有 session.jsonl.zstd,在逐字节保留日志其余部分的同时为遗留事件补上 ignorable 标记,并把每个文件备份为 .bak。可传入具体日志路径进行定向修复,或用 --dry-run 预览将要修改的内容。