DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Ui Conversation Message Actions — DeepSeek Harness 插件(DSH Plugin)
← Plugins

@morlay/ui-conversation-message-actions

Ui Conversation Message Actions

回退 / 重试 / 分叉编排(主机),以及 conversation.chat.node 渲染器替换(浏览器)——用户气泡上的消息编辑 / 重试操作。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @morlay/ui-conversation-message-actions@0.0.18
README兼容性版本

兼容性与来源证明

Ui Conversation Message Actions 以 @morlay/ui-conversation-message-actions 发布,当前版本为 0.0.18。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/20

版本

0.0.18stable
2026/9/14
0.0.17
stable
2026/9/13
0.0.16stable
2026/9/11
查看其余 17 个版本收起版本
0.0.19-alpha.5prerelease
2026/9/20
0.0.19-alpha.4prerelease
2026/9/20
0.0.19-alpha.3prerelease
2026/9/18
0.0.19-alpha.2prerelease
2026/9/18
0.0.19-alpha.1prerelease
2026/9/18
0.0.19-alpha.0prerelease
2026/9/18
0.0.15stable
2026/9/10
0.0.14stable
2026/9/10
0.0.14-alpha.4prerelease
2026/9/10
0.0.14-alpha.2prerelease
2026/9/8
0.0.14-alpha.1prerelease
2026/9/8
0.0.14-alpha.0prerelease
2026/9/8
0.0.13stable
2026/9/4
0.0.12stable
2026/9/3
0.0.11stable
2026/8/27
0.0.10stable
2026/8/20
0.0.9stable
2026/8/20

相关插件

正在加载相关插件…

最新版
0.0.18
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
1.6 MB
文件数
32
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 9
周下载
3,348
安全扫描
✓ v0.0.18 扫描通过
最近提交
2026/9/20
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

README

@morlay/ui-conversation-message-actions

rewind / retry / recall / fork 的编排层:在 @morlay/session-branch 的 provider 抽象之上组装完整功能(产品语义对齐 dsh-message-edit), 并提供浏览器半(client bundle):替换 conversation.chat.node 的 user / steering 渲染,在 user 消息行内直接挂编辑 / 重试入口。

服务面(ctx.sessionEditor)

操作语义
edit编辑已落定文本块(用户消息 / 助手块),就地(rewind + 重写,session id 不变)
reroll重生成最后一条已落定助手回复(使用原用户输入)
retry重试任意历史回合(truncate 只重放目标输入 / preserve 重放后续全部)
rewind截断式回退:原会话回退到闭合 turn/end 边界
recall撤回 user 消息到输入框:只 rewind 截断,不重写、不重放(交给用户改后重发)
fork从任意闭合边界派生新会话(唯一产生新 id 的操作)
timeline版本树投影(HTTP:GET /session-editor?sessionId=…)

就地编辑语义

  • edit / retry / reroll 是就地操作:rewind 截断到目标轮之前的闭合 turn/end 边界,再 append 版本效果 + 手工回合 / 重放输入回同一会话 ——session id 不变,版本树保持单根;
  • 重放复用目标轮号:轮首 user 编辑(含未闭合轮)整轮截断,重放接回原 轮号;编辑 assistant 写入 manualTurn 后同步 agent 的轮次游标;
  • 空轮吸收:目标轮之前的空轮(turn/start 后直接 turn/end,早期重放 缺陷的遗留形状)随截断一并删除,重放按保留前缀续号——轮次导航不再出现 点不开的空项与轮号空洞;manualTurn 的轮号同样按保留前缀收敛(正常会话 等于目标轮号)。版本效果仍记录原目标轮号(操作历史);
  • 只有 fork 创建新 id(ForkOperation / forkFrom,纯 append 派生);
  • recall 只截断不重写:轮内消息沿用 edit 的轮首规则(轮首整轮截断到前一轮 turn/end,无前轮则清空全部;轮内 followup exclusive drop),轮外 user 消息 (location 无轮次归属的排队落定消息)按消息自身位置 exclusive drop(截断该消息 及其后全部),但只 rewind 即返回——不写版本效果、不重放;被撤回的 user 文本由 浏览器半回填到 composer,用户修改后自行发送;
  • 版本效果事件(session-branch/version)携带 ignorable: true:原样落库 (rdb 不按信封过滤,与 JSONL 一致),非 branch 读者凭信封跳过;
  • 重放输入经 agent 驱动(见下)排队到原会话,agent 基于截断后历史回复。

agent 驱动(重放排队输入)

agents 服务以 duck-typed 接口使用(不硬依赖 @deepseek-ai/dsh-agent), 缺失时退化为「已 durable 的就地版本」(可随时 resume 续跑):

  • live agent(会话驻留 / 已恢复):直接 followup 排队,不重建、不换 id;
  • rewind 前必须停止运行中的 loop:每次 rewind(edit / retry / reroll / recall / HTTP rewind)都先对驻留 agent cancel({ kind: "user" }, { keepInbox: true }) 再 whenIdle(),然后才截断——截断会重写 agent 的 session 内存 log,不能与 运行中的 loop 并发;keepInbox 表示停止本身不丢弃待处理输入,残留排队输入由 rewind 在截断后强制 durable 取消(session-rdb 的 live 会话钩子 inbox.clear); 实现无 cancel 能力时退化为等待其自然停下 (ADR 0005);
  • cold 会话:resume 已持久化会话(create 对已持久化日志必失败), resume 后 agent 驻留(不 dispose,避免 session 被移出 store 破坏客户端窗口);
  • 模型 provider/model 在 rewind 之前从 request/header 解析(就地编辑 可能截断掉 header,编辑第一轮 boundary = -1 时尤甚)。

浏览器半(client bundle)

dist/client.js 经 __ModuleLoader__.load 手递,替换 conversation.chat.node 的 user / steering 渲染:

  • shadow 注册:user / steering 两个 key 以 priority: -1 重新注册 (最低优先级渲染,shadow 上游默认注册);其余 key 沿用上游渲染器;
  • 编辑 / 重试按钮只挂在 user 消息(UserMessageNodeView):编辑只要消息存在 可编辑文本块就显示(不要求轮次归属——location 无 turn/step 的已落定消息同样 可撤回),点击后不再打开编辑弹窗,而是确认(Modal + Button)后调用 recall——服务端只 rewind 截断,客户端把消息文本 setDraft 回填到主输入框 (conversation.input),交给用户修改后自行发送;重试仍先弹确认,且只对已闭合 轮次开放;
  • 操作后刷新:就地编辑后优先调用客户端会话级 resync()(重置窗口并重新 拉取历史,不整页重载——rewind 的删除无法经 append-only 事件流表达,seq 回退只做增量会残留旧节点),随后丢弃该会话的全部投影行 (projections.truncate(-1))——投影 store 按 higher-seq-wins 保留 rewind 前的高 seq 旧值,截断后的正确值 seq 更小,永远覆盖不上(轮次导航残留已 删除的轮次);不可用时回退 location.reload();
  • 构建约束:client bundle 必须是单文件(client-modules 只服务/加载 client.js)——deps.neverBundle 保持 react 与 @deepseek-ai/* external (平台 seed 词或独立插件,内联会把别的插件的 __ModuleLoader__.load 嵌进来 导致 duplicate factory),其余依赖全部内联,inlineDynamicImports 合并动态 import;CSS Modules 经 lightningcss 内联 + <style data-plugin> 注入。

分层边界

  • 数据层(forkFrom / rewind / readBranchPrefix)来自 ctx.sessionBranch(provider 实现,如 @morlay/session-rdb);
  • 本服务只做编排:闭合轮次扫描、版本效果事件构造、派生 seed 组装、 rewind 命令透传、agent 驱动、HTTP 面(POST /session-editor 执行 edit / reroll / retry / rewind / recall / fork)。

装配

# cordis.patch.yml
- insert:
    - id: ui-conversation-message-actions
      name: "@morlay/ui-conversation-message-actions"

依赖 ctx.sessionBranch / ctx.sessionPersistence(需先装配 @morlay/session-rdb 等 provider 实现)与 ctx.sessions;agents 可选。

端到端装配真实 rdb 后端,验证 retry / rewind / fork / timeline 闭环, 以及 live 会话的 rewind(内存 log 截断 / handle cursor 对齐)与 agent 重放。

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。