dsh-purge:给 DSH 会话和工作区补上真正的磁盘删除

前言

DSH 的会话管理有个容易被忽略的点:内置的「删除」并不是删文件。删掉工作区后,会话只是从分组里摘出来、掉进「未分组」;会话本身则根本没有删除入口,因为核心设计里会话只能归档。等到磁盘上积累了大量日志目录,常规操作清不掉,就需要一个能真正落盘的删除手段。

下面介绍的 dsh-purge 就是补这个缺口的插件,属于客户端分类,由 GitHub 用户 Manbaout-08 维护(npm 包作者署名为 CTTWang)。它把会话与工作区的删除做成真实磁盘删除,同时提供会话菜单入口和斜杠命令。

这是什么

一句话定位:dsh-purge 为 DeepSeek Harness(DSH)提供会话和工作区的永久删除能力,删除的是磁盘上的实际文件,而不是取消注册。

它解决的核心问题有两点:

  1. 会话没有删除入口,只能归档,日志目录一直留在磁盘上。
  2. 工作区删除只取消注册,会留下「未分组」残渣,磁盘文件仍在。

dsh-purge 同时覆盖 web 与 desktop 两个 profile,当前最新版本为 1.0.1,许可证为 MIT。

核心功能

入口位置

在会话行的「⋯」菜单里,插件项排在「复制 Session ID」下面,并带分隔线。这里要说明:DSH 侧栏只暴露会话级的 slot,工作区行的「⋯」菜单无法扩展,所以「删工作区」的入口也挂在会话菜单里。菜单行为如下:

菜单项 行为
彻底删除会话 删除该会话的磁盘日志目录 + 从工作区摘除 + 归档隐藏
彻底删除所在工作区 删除该工作区名下所有会话的日志目录 + 通过 Registry 删除工作区注册,侧栏即时消失

斜杠命令

除了菜单,插件提供四条命令,适合脚本化或键盘操作:

/purge session <sessionId>        删单个会话
/purge workspace <workspaceId>    删工作区及其全部会话
/purge workspace-of <sessionId>   删该会话所属的工作区
/purge here                       删当前会话

删除行为

  1. 工作区:走宿主内存里的 WorkspaceRegistry.delete(),内存与 workspace.json 一起更新,不需要刷新页面,也不会留下「未分组」残渣。
  2. 会话:核心没有删除会话的 API,sessions 服务的内存目录无法移除。实际做法是「删日志文件 → detach → archive」:文件真的没了,行从主视图消失,只在「已归档会话」里可能残留一个打不开的幽灵条目,重启 DSH 后彻底消失。
  3. 边界:插件只动会话日志与注册记录,工作区对应的磁盘目录(即你的工程文件)永远不碰。

删除是不可逆的

删除不可撤销,没有回收站。执行前请看清命令作用的对象,尤其 /purge workspace 会连带删掉该工作区下全部会话日志。

安装与启用

安装

官方安装命令如下:

npm i @manbaout-08/dsh-purge

兼容范围与运行要求写在 package.json 里:

DSH   >=0.2.0-rc.2 <0.3.0
profile  web / desktop
node   >=20.18

启用与禁用

插件通过一个 patch 注册,cordis.patch.yml 里有对应的 enabled: true 开关。禁用时三选一:

  1. 在 cordis.patch.yml 里把 enabled: true 改成 false;
  2. 在插件管理器里禁用 dsh-purge;
  3. 删掉 node_modules/dsh-purge 以及 patch 里的对应段落。

安装位置

插件包含宿主端和客户端两部分,源码与运行时的路径如下:

源码     <workspace>\purge-plugin\
已安装   %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-purge\
配置     %USERPROFILE%\.dsh\profiles\desktop\cordis.patch.yml

改源码后需要复制到已安装目录并重启 DSH 才生效,客户端模块不做热替换。相关文件职责如下:

index.js           宿主:删除引擎 + /purge 命令
client.js          浏览器:菜单项 + 自绘对话框
cordis.patch.yml   插件注册行
locale/{zh,en}.json 插件管理器里显示的名称与简介
icon.svg           图标
test.mjs           删除引擎单元测试(node test.mjs)

典型用法

以桌面端场景为例,操作路径如下。

1、看到一个已经不需要的会话,点会话行的「⋯」菜单,选「彻底删除会话」。对话框确认后,磁盘日志目录被删除,该会话从工作区摘除并归档隐藏。

2、想清理整个工作区时,在同一菜单里选「彻底删除所在工作区」。插件会删掉该工作区名下所有会话的日志目录,并通过 WorkspaceRegistry.delete() 删除注册,侧栏即时消失。

3、如果更喜欢命令,用斜杠命令完成同样操作:

/purge here
/purge session <sessionId>
/purge workspace-of <sessionId>

4、单元测试可以在源码目录执行:

node test.mjs

适用场景与注意

适合以下几类人:

  1. 需要在 web 或 desktop 端真正清掉废弃会话日志、腾出磁盘空间的开发者;
  2. 希望用斜杠命令批量清理会话或工作区的开发者;
  3. 知道 DSH 内置删除只是取消注册、愿意用插件补足真删能力的用户。

使用时需特别注意:

  1. 插件以当前 dsh 进程的权限运行,删除的是真实文件。安装前应自行检查源码与许可证,确认后再启用。
  2. 删除不可撤销,没有回收站;插件只删会话日志与注册记录,工作区磁盘目录不会被碰。
  3. 会话删除后其 id 可能短暂残留在归档集合中,重启 DSH 后清空,这是已知限制,不是数据残留到磁盘。
  4. 工作区删除入口挂在会话菜单里,是受侧栏 slot 限制的取舍,使用时注意选中的是会话而不是工作区行。

小结

dsh-purge 做的事很聚焦:把 DSH「只能归档、只取消注册」的删除行为,补成真正落到磁盘的删除,同时保留菜单和斜杠命令两种入口。它不碰工程文件、不提供回收站,适合清楚后果后再使用的开发者。

相关链接:

  • 社区目录页:https://www.skillhub.cn/plugins/Manbaout-08/dsh-purge
  • GitHub:https://github.com/Manbaout-08/dsh-purge

说明:社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,不是官方应用商店。

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

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

小夜