前言¶
DSH 的会话管理有个容易被忽略的点:内置的「删除」并不是删文件。删掉工作区后,会话只是从分组里摘出来、掉进「未分组」;会话本身则根本没有删除入口,因为核心设计里会话只能归档。等到磁盘上积累了大量日志目录,常规操作清不掉,就需要一个能真正落盘的删除手段。
下面介绍的 dsh-purge 就是补这个缺口的插件,属于客户端分类,由 GitHub 用户 Manbaout-08 维护(npm 包作者署名为 CTTWang)。它把会话与工作区的删除做成真实磁盘删除,同时提供会话菜单入口和斜杠命令。
这是什么¶
一句话定位:dsh-purge 为 DeepSeek Harness(DSH)提供会话和工作区的永久删除能力,删除的是磁盘上的实际文件,而不是取消注册。
它解决的核心问题有两点:
- 会话没有删除入口,只能归档,日志目录一直留在磁盘上。
- 工作区删除只取消注册,会留下「未分组」残渣,磁盘文件仍在。
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 删当前会话
删除行为¶
- 工作区:走宿主内存里的
WorkspaceRegistry.delete(),内存与workspace.json一起更新,不需要刷新页面,也不会留下「未分组」残渣。 - 会话:核心没有删除会话的 API,sessions 服务的内存目录无法移除。实际做法是「删日志文件 → detach → archive」:文件真的没了,行从主视图消失,只在「已归档会话」里可能残留一个打不开的幽灵条目,重启 DSH 后彻底消失。
- 边界:插件只动会话日志与注册记录,工作区对应的磁盘目录(即你的工程文件)永远不碰。
删除是不可逆的¶
删除不可撤销,没有回收站。执行前请看清命令作用的对象,尤其 /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 开关。禁用时三选一:
- 在
cordis.patch.yml里把enabled: true改成false; - 在插件管理器里禁用
dsh-purge; - 删掉
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
适用场景与注意¶
适合以下几类人:
- 需要在 web 或 desktop 端真正清掉废弃会话日志、腾出磁盘空间的开发者;
- 希望用斜杠命令批量清理会话或工作区的开发者;
- 知道 DSH 内置删除只是取消注册、愿意用插件补足真删能力的用户。
使用时需特别注意:
- 插件以当前 dsh 进程的权限运行,删除的是真实文件。安装前应自行检查源码与许可证,确认后再启用。
- 删除不可撤销,没有回收站;插件只删会话日志与注册记录,工作区磁盘目录不会被碰。
- 会话删除后其 id 可能短暂残留在归档集合中,重启 DSH 后清空,这是已知限制,不是数据残留到磁盘。
- 工作区删除入口挂在会话菜单里,是受侧栏 slot 限制的取舍,使用时注意选中的是会话而不是工作区行。
小结¶
dsh-purge 做的事很聚焦:把 DSH「只能归档、只取消注册」的删除行为,补成真正落到磁盘的删除,同时保留菜单和斜杠命令两种入口。它不碰工程文件、不提供回收站,适合清楚后果后再使用的开发者。
相关链接:
- 社区目录页:https://www.skillhub.cn/plugins/Manbaout-08/dsh-purge
- GitHub:https://github.com/Manbaout-08/dsh-purge
说明:社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系,不是官方应用商店。