dsh-session-archive-delete:为 DSH 会话列表补上安全的删除入口

前言

DeepSeek Harness(DSH)侧栏里,会话可以归档,但没有「删除」。若真要腾出磁盘空间,只能自己去 ~/.dsh/sessions/<工作区>/<uuid>/ 删目录,再手动改 workspace.json、清理投影缓存。任一步漏掉,侧栏就可能留下点不开的空壳会话。

社区插件 dsh-session-archive-delete(维护者 device1999,分类:记忆)把这条链路做成可确认的流水线:可先完整备份到本地、逐文件校验通过后再删,也可在明确风险下彻底删除。包名 @device1999/dsh-session-archive-delete,当前资料中的版本为 0.1.1,MIT 许可证;GitHub 仓库 device1999/dsh-session-archive-delete 星标为 1。目录页:SkillHub 插件页。

这是什么

本插件通过 Cordis 补丁扩展 DSH 客户端:在侧栏任意会话的「…」菜单最下方增加删除相关选项。定位是「dsh session delete」——在 DSH 原生只有归档的前提下,提供 备份后删除 或 彻底删除,并处理子代理会话、元数据与缓存,避免手工删目录时账本不一致。

核心功能

下面介绍 README 中已列出的能力,均可在安装后于界面或设置中验证。

能力 说明
备份删除 将会话目录、缓存与元数据快照复制到指定位置,校验通过后再删除原件
彻底删除 不备份,直接删除(可与备份删除并存或只显示其一)
子代理会话 自动找出该会话派生的子代理,一并备份或删除
自定义备份位置 系统文件夹对话框或手输路径;支持四种备份文件夹命名规则
路径校验 无效路径当场提示,不会写入设置
一键恢复说明 每个备份目录含 RESTORE.txt,按步骤可复制回 DSH 数据目录

安全相关行为(资料原文):复制后逐文件比对大小与数量,不一致则中止;删前先从 workspace.json 移除引用并落盘;删后对目录删除结果复查;会话目录必须在 ~/.dsh/sessions 下且目录名与会话 id 一致;若删的是当前运行中的会话,会先取消当前轮次再删。

流水线可概括为:

确认 → 复制会话目录 + 缓存 + 元数据快照 → 逐文件校验 → 删除原件 → 清理账本

任何一步失败都会中止,原会话保持完好。

安装与启用

DSH 生态里插件通常通过包名或 profile 安装;以下命令均来自仓库 README,请勿自行拼接未在文档中出现的 github:owner/repo 形式。

方式一:DSH 界面(推荐)

左侧栏 插件 → 右上角 添加插件 → 输入包名:

@device1999/dsh-session-archive-delete

装完后重启 DSH。

方式二:命令行

dsh plugin --profile <profile> add @device1999/dsh-session-archive-delete

<profile> 一般为 desktop 或 web,可在 ~/.dsh/profiles/ 下查看。

系统要求(资料原文):DSH 0.2.x(Web / 桌面客户端);Windows / macOS / Linux;Node 引擎要求 ^20.0.0 || >=22.0.0。Windows 上系统文件夹对话框依赖 PowerShell 7,无 pwsh 时回退到页面内目录浏览。

卸载

dsh plugin --profile <profile> remove dsh-session-archive-delete

重启 DSH;已生成的备份文件夹不会随卸载删除,需自行清理。

典型用法

删除一个会话

  1. 侧栏会话行点「…」
  2. 选「备份删除」或「彻底删除」
  3. 在确认框核对会话名、ID 和备份路径
  4. 点「确认」

删除成功后侧栏会刷新;若删的是当前会话,会自动跳到下一个。

设置

打开 设置 → 备份删除:

设置项 选项
删除模式 两个菜单项同时显示 / 只显示「备份删除」/ 只显示「彻底删除」
备份位置 选择文件夹或编辑地址栏;留空则走默认规则
备份文件夹命名 日期+主题 / ID 前八位+主题 / 纯主题 / 前八位+主题+日期

设置保存在 ~/.dsh/dsh-session-archive-delete.json。

默认备份位置优先级(资料原文):

  1. 设置里填写的路径
  2. 环境变量 DSH_ARCHIVE_ROOT
  3. 插件配置 workspaceRoot
  4. 从会话记录推断使用最多的工作区目录
  5. 均不可得时:<用户主目录>/DSH-归档会话

备份位置不能设在 ~/.dsh 内部,否则 DSH 可能将其当作数据目录重新扫描。

备份目录结构

<备份位置>/<按命名规则生成的文件夹>/
  sessions/<工作区目录>/<会话id>/    会话原始文件
  projcache/<会话id>.json            界面投影缓存
  meta/workspace.json                删除前的元数据快照
  meta/session_projcache.json
  manifest.json                      清单(含子代理列表等)
  RESTORE.txt                        恢复步骤

从备份恢复

按备份内 RESTORE.txt 操作,大意如下(删 DSH 前须完全退出):

  1. 将 sessions/<工作区>/<会话id> 复制回 ~/.dsh/sessions/<工作区>/
  2. 将 projcache/<会话id>.json 复制回 ~/.dsh/storages/session_projcache/sessions/
  3. 在 ~/.dsh/storages/workspace.json 中把会话 id 加回对应工作区的 sessionIds
  4. 启动 DSH

适用场景与注意

适合谁:长期用 DSH 做智能体或对话开发、会话数量多、归档仍占磁盘、又希望有可回滚删除路径的用户;需要在清理前留本地副本的团队或个人也适合用「备份删除」模式。

权限与信任:插件在当前 DSH 进程权限下读写 ~/.dsh 与会话文件。安装前建议阅读 GitHub 源码 与 MIT 许可证,确认行为符合你的安全策略。

已知限制(资料原文):默认备份位置推断依赖宿主 sessionQuery;子代理关系来自会话 header 的 parentSession,会话文件为 zstd 压缩,无法仅靠读盘解析;备份为完整复制,大会话占用相应空间。

社区目录站点 SkillHub 与 DeepSeek / 幻方无官方从属关系,插件来自社区维护者,非官方应用商店条目。

结尾

若你已经在用手动删 ~/.dsh/sessions 的方式腾空间,本插件把备份、校验、账本清理和子代理级联收成侧栏菜单里的一条链路,并留下可恢复的备份结构。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

小夜