dsh-archive-toolkit:补齐 DSH 会话归档与消息整理能力

前言

DeepSeek Harness(DSH)的会话日志采用只追加(append-only)设计:官方侧重归档,一般不提供消息级删除、从任意消息分叉,以及把整条消息带入输入框引用的入口。长对话里如果某轮回答不满意、想删掉几条噪音消息,或要从中间某条提问重新开一条分支,往往只能另建会话或手动复制粘贴,和「日志可审计、界面可整理」的需求对不上。

下面介绍社区插件 dsh-archive-toolkit(维护者 chwb0505,SkillHub 分类为「记忆」):把删会话、遮蔽删消息、按消息分叉、整条引用打包成一个 bundle,且不改写任何历史日志原文。

这是什么

dsh-archive-toolkit 是给 DSH 用的会话归档工具集,当前版本 0.1.0,许可证 MIT。

它是一个整合型插件:消息删除的 surface 折叠与转录隐藏逻辑改编自 dsh-delete-turn,会话级联删除改编自 dsh-session-delete-cascade(二者均为 MIT);分叉与整条引用为本仓库新增的胶水层。归属与细节见仓库 NOTICE。

package.json 中声明的 DSH 引擎要求为 >=0.2.1-rc.2;README 记载在 DSH 0.2.2-rc.1(Windows 桌面端,Chromium 内核)上实测;Node 需 >=22。

核心功能

能力按界面位置归纳如下(与 README 功能表一致):

位置 能力
左侧会话 ⋯ 菜单 删除会话:连同子代理子孙一起删除;运行中的会话会被拒绝并指出是哪一条
消息悬停操作行 删除(单条或整轮)、分叉、引用
助手回复操作条 分叉、引用、删除,位于官方复制/反馈按钮旁
会话标题栏 多选删除:一次勾选多条消息/步骤/回复,合并为一次替换请求

删除:遮蔽,不重写日志

删除不是从磁盘抹掉字节,而是追加一条官方 surfaceOp: { op: 'replace', startSeq, endSeq } 载体事件;后续模型请求不再包含被遮蔽内容,原始日志逐字节保留。界面隐藏依据从日志里的替换事件重建,刷新、重启后仍生效。

分叉

  • 用户消息:切点在该轮开始之前;新会话保留之前的记录,原提问回填到新会话输入框。
  • 助手回复:切点在该条提问之后;新会话保留提问、丢掉这条回复,便于换一种答法。

引用

整条消息(提问或回答)作为 QuoteNode 进入输入框,可继续编辑、补充后发送。已知限制:引用只取文本,附件不会随引用进入输入框。

安装与启用

插件以当前 DSH 进程权限运行;安装前建议自行查看仓库源码与许可证(含第三方改编部分的 LICENSE-delete-turn、LICENSE-session-delete-cascade)。

宿主插件树只在启动时加载,安装或升级后必须完全退出并重开 DSH(或刷新页面)。

从 GitHub 安装(推荐)

桌面端:

  1. 设置 → 插件 → 添加插件
  2. 粘贴仓库地址:
https://github.com/chwb0505/dsh-archive-toolkit
  1. 完全退出并重开 App(或刷新页面)。

命令行 profile(非 desktop):

dsh plugin --profile <profile> add github:chwb0505/dsh-archive-toolkit

desktop profile 由桌面端独占管理,不能使用 CLI 安装;请走「设置 → 插件」。

从本地目录安装(开发)

dsh plugin --profile <profile> add file:C:/path/to/dsh-archive-toolkit

卸载

桌面端:设置 → 插件,找到本插件点卸载。卸载不会恢复已遮蔽的内容(原始日志仍在,可用官方工具重建)。

典型用法

  1. 删会话:侧栏会话行 ⋯ → 删除会话。确认框会列出将被连带删除的子会话;运行中的会话会被拒绝。
  2. 删消息:悬停任意消息,点垃圾桶;用户消息上还有「删除这一轮」。助手回复的删除按钮在官方操作条里。
  3. 分叉:悬停消息点分叉图标。新会话打开后,输入框已回填原提问,改完直接发送即可。
  4. 引用:悬停消息点引用图标,整条消息进入输入框,继续输入你的问题。
  5. 多选删除:会话标题栏右侧的勾选按钮进入多选,勾选后底部浮条「删除选中」。

技术要点与安全边界

Host 半注册路由:GET /api/archive-toolkit/state、GET /api/archive-toolkit/context、POST /api/archive-toolkit/delete、POST /api/archive-toolkit/session-delete;只接受回环地址与同源请求。

Client 半通过官方 slot(如 conversation.chat.assistant-actions、conversation.input.overlay 等)和 data-chat-flow-* DOM 锚点接入,不读取 React fiber,不依赖 CSS Module 哈希类名。

安全边界(README 原文):不发送遥测、不访问外部网络、不读取会话之外的用户文件;会话删除只删除 DSH 会话根目录内的会话目录,并对会话 id 做字符校验;删除前有确认框。

适用场景与注意

适合谁:需要在大模型会话里做「整理版面」而不是改写底层日志的开发者——删错会话、清掉几轮无效对话、从某条提问分叉重试、把某条回答整段引用再追问。

务必知晓的限制:

  • 删除不可撤销:插件不提供恢复入口(原始日志仍在)。
  • 分叉要求源会话有可用的切点;首条提问之前没有记录,无法分叉。
  • 会话删除按持久化 header 遍历子代理血缘;纯内存中尚未落盘的子会话不在遍历范围。
  • 若 DSH 0.2.x 的客户端 slot 或 Chat DOM 锚点改动,插件可能需要跟进。

DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。本插件在目录页与 GitHub 上的星标数为 0(以站点与仓库当时展示为准)。

结尾

dsh-archive-toolkit 在不动 append-only 原文的前提下,把删会话、遮蔽删消息、分叉和整条引用接到 DSH 自带界面上,适合把会话当可维护工作区来用的场景。

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

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

Xiaoye