dsh-chat-editor-plus:在 DSH 桌面端改写、删除与分叉会话消息

前言

在 DeepSeek Harness(DSH)里跑长对话时,常见需求并不是「重来一整段」,而是改某一条用户话、删掉一条跑偏的助手回复,或从中间某一轮分叉出新会话。日志里往往还留着原文,如果只改界面、不改模型上下文,下一轮请求仍然会带上旧内容。

dsh-chat-editor-plus 是社区插件,面向 DSH 桌面端,在会话里提供消息编辑面板:支持显示层调整、通过核心消息投影改写/删除上下文,以及从指定轮次分叉。本仓库由 rumengyihua 维护,归类为客户端插件;上游来自 WZZNNE/DSH-CyberWorkStation 中的 plugins/dsh-chat-editor(MIT),针对 DSH 桌面 0.2.x 做了适配,包名与路由带 -plus,可与原版并存。

这是什么

一句话:DeepSeek Harness 消息编辑器——对任意一条消息做改写、删除、折叠,或从任意一轮之前分叉会话。

社区目录站点与 DeepSeek / 幻方无官方从属关系;安装前建议自行阅读源码与 LICENSE。插件在当前 DSH 进程权限下运行,改写/删除会改变模型实际收到的上下文,操作前需理解各模式差异。

核心功能

入口与列表

  1. 会话头部 ✎ 按钮打开消息面板,列出整段会话(用户、助手、注入上下文、工具结果、压缩摘要)。
  2. 每条已完成的助手消息旁有内联 ✎,可直接定位到该条。

三种操作模式

按你的目标选模式,不要混用含义:

模式 作用
显示(display) 只改你看到的界面;日志与模型上下文不变。记录写在 $DSH_HOME/chat-edits.json。
上下文(context) 改模型真正收到的内容:用户/助手/工具结果改写与删除走核心消息投影(registerMessageProjection + plugin:chat-editor-plus/rewrite),deriveMessages() 看到新文本;删除则整条从上下文中消失,无占位符、无「用户更正了回复」类前缀。助手改写时文本块原位替换,thinking 默认保留,也可在面板里改思考文本。
分叉(fork) 在该轮之前复制会话(ctx.agents.create({ seed }) 与工作区挂接),可选把编辑文本作为分叉后第一条消息。

工具结果也可改:面板里对工具结果行点「改」走上下文投影,只替换内容块,toolCallId / source 与配对关系不变,模型会把改后文本当作工具原始返回。

折叠只影响显示,点击可展开。

相对原版的桌面端适配要点

原版 dsh-chat-editor 面向 CyberWorkStation;本 fork 主要变化包括:用 useChat 读会话节点、DOM 锚点优先 data-chat-node-key、助手/用户改写与删除改用消息投影、思考文本可在面板修改且界面与模型侧同步、可与原版 -plus 并存等。完整对照见仓库 README「与原版的差异」表格。

安装与启用

DSH 桌面端通常不把 dsh CLI 放在系统 PATH,需用安装目录自带的 CLI。README 给出的 Windows 示例如下(将本地路径换成你实际放置仓库的目录):

# 把本仓库放到任意目录,例如 D:\workplace\dsh-chat-editor-plus
D:\dsh\resources\runtime\cli\bin\dsh.cmd plugin --profile desktop add file:D:\workplace\dsh-chat-editor-plus

也可在应用内打开插件管理器,用本地路径安装。装完后会自动登记进 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles(本包声明了 dsh.bundle.patch)。重启桌面端后,会话头部应出现 ✎。

若运行时版本不在 engines.dsh 范围内,安装或启动会被拒绝;可按 README 说明用 dsh plugin allow-version <package@version> --dsh-version <runtime> --accept-risk 逐版本豁免(需自行承担风险)。

典型用法

下面是可以直接对照界面操作的流程,无需额外配置文件。

  1. 只收拾界面、不动模型:在面板选 显示,改文案或折叠某条;适合排版阅读,不影响下一轮请求。
  2. 纠正已发送内容并继续对话:等 agent 空闲(未在生成),选 上下文,改写用户/助手/工具结果或删除整条;再发送新消息,模型侧上下文已是投影后的版本。上下文模式在生成中会返回 409;子代理会话只读。
  3. 从某轮尝试新分支:选 分叉,指定轮次;需要时可把当前编辑框内容作为分叉会话第一条消息(依赖可选 peer @deepseek-ai/dsh-llm 等,缺失时相关能力可能返回 503)。
  4. 改助手思考:编辑助手消息时使用面板中的「思考」输入框,只替换 reasoning 块文本;折叠摘要与展开正文会同步显示新文本。

改写记录在日志中可再通过编辑改回以撤销;删除在面板无撤销按钮(模型侧已移除,日志仍保留原文)。

适用场景与注意

适合谁:在 DSH 桌面 0.2.1-rc.2 及以上、0.3.0 以下 做智能体或长对话调试的开发者。README 写明在 0.2.1-rc.2(Windows x64,profile desktop) 实测;0.2.2 及以上尚未验证。

版本与 API:早于 0.2.1-rc.2 的核心缺少 registerMessageProjection / appendPluginRecord 时,上下文改写/删除会退化为旧 surface 行为,与本插件设计不符。投影契约若随核心变化,插件需同步适配。

已知限制(使用前必读):

  • 改的是「模型看到的那份」,不会自动清理其他消息里的引用;例如删除一轮后,另一条助手消息的 thinking 仍可能写着被删内容。
  • thinking 只能改已有 reasoning 块文本,不能增删块结构;只发起工具调用、无正文的助手步骤只能改思考,不能补 text 块。
  • token meter 仍按原文计费;压缩摘要按投影后文本。
  • 运行中卸载插件时,已用投影的活跃会话可能在下次请求前报 projection 被移除;重启可恢复打开会话,但改写/删除效果会消失。要长期保留效果,应保持插件安装。

必需依赖包括 @deepseek-ai/dsh-home-paths、@deepseek-ai/dsh-session;fork 首条消息与 token 估算等依赖可选包,缺失时对应功能受限。

结尾

dsh-chat-editor-plus 把 CyberWorkStation 侧的消息编辑能力接到 DSH 桌面 0.2.x,用显示 / 上下文 / 分叉三种模式区分「只看」与「真改上下文」,并支持工具结果与思考文本的投影改写。安装走桌面 CLI 或插件管理器的本地路径,注意 engines.dsh 与空闲态下的上下文编辑。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜