前言¶
DeepSeek Harness(DSH)内置的会话能力侧重创建、重命名、分叉和取消;工作区注册表可以把会话归档,但不会把磁盘上的会话目录一并清掉。长期开发时,侧边栏里会堆满试过的会话:归档能隐藏默认列表里的行,却删不掉 $DSH_HOME/sessions 下的记录,也谈不上「彻底不要这份上下文」。下面介绍社区插件 dsh-session-delete(GitHub:Fragmented-Chaos/dsh-session-delete),它在 Web 客户端侧边栏提供删除入口,并在 Host 侧按既定顺序归档、删目录、广播移除事件。
这是什么¶
dsh-session-delete 是 DSH 的「记忆」类插件:在侧边栏对单个 Session 做永久删除——而不只是从当前视图隐藏。维护者为 Fragmented-Chaos;package.json 中版本为 1.0.0,许可证 MIT,仓库简介为「DeepSeek Harness plugin: permanently delete a session」。更完整的说明写在源码注释里:删除会同时处理侧边栏行、归档/固定等注册表状态,以及 $DSH_HOME/sessions 下对应目录(见仓库 index.js 文件头注释)。
DSH 生态主张「一切皆插件」;插件目录站点 SkillHub 由社区维护,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
插件分为 Host(index.js)与 Web Client(client.js),通过 cordis.patch.yml 把 Host 模块 @local/dsh-session-delete 挂入 bundle;Client 在 package.json 的 dsh.client 中声明为 web 平台,且 immediately: true,加载后即可向侧边栏插槽注册 UI。
Host:删除流程与 API¶
Host 注册的 HTTP 路由(均需与浏览器 Index 相同的鉴权,见 guarded):
| 路径 | 方法 | 作用 |
|---|---|---|
/api/dsh-session-delete/delete |
POST | 执行删除或 dryRun 探测 |
/api/dsh-session-delete/state |
(只读探测) | 开发用:当前 Host 可见的会话与 busy 状态 |
对一次 POST 删除,Host 侧逻辑(源码注释归纳)大致为:
- 若会话仍有进行中的回合、子代理、后台任务或定时提醒等活动,拒绝删除(HTTP 409,
session-running),需用户先停止再试。 - 先归档,使侧边栏默认过滤下持久隐藏该行,并在当前选中该会话时切走。
- 删除
$DSH_HOME/sessions(默认~/.dsh/sessions)下该sessionId的所有目录。 - 发出
api-session/removed,让各界面立即去掉该行;归档项在下次启动时由pruneStaleArchives清理已无文件的残留条目。
请求体为 JSON,例如探测是否在运行:
{ "sessionId": "session-xxxxxxxx", "dryRun": true }
正式删除:
{ "sessionId": "session-xxxxxxxx" }
每次尝试会追加一行 JSON 到 $DSH_HOME/session-delete.log(文件超过约 512KB 会轮转),便于事后核对拒绝或失败原因。
Client:侧边栏入口与确认¶
Client 向以下插槽注册组件(见 client.js 文件头):
sidebar.workspaces.session.menu.item:会话「…」菜单中的 「删除会话」。sidebar.workspaces.session.row.action:行悬停时的垃圾桶按钮。shell.overlay:居中确认卡片(说明会连同磁盘记录删除)与删除成功提示。
确认后 Client 对 /api/dsh-session-delete/delete 发起 POST;若当前主视图正打开被删会话,会尝试切换到同工作区相邻会话或新建会话,避免界面停在已不存在的会话上。
安装与启用¶
仓库当前没有独立的 README 文件;SkillHub 目录页标注「暂时没有 README」,安装以目录给出的插件标识为准。
在 SkillHub 插件页 使用「发送给 DeepSeek Harness 安装」时,交给 DSH 的说明形如:
请安装 DSH 插件 Fragmented-Chaos/dsh-session-delete
DSH 会读取后端安装计划后执行安装。请勿在未核对文档的情况下自行拼接未在资料中出现的 shell 安装命令。
安装前建议在 GitHub 浏览 index.js、client.js 与 LICENSE,确认行为与权限可接受;插件以当前 DSH 进程的用户权限读写 $DSH_HOME 并删除目录。
典型用法¶
- 在 DSH Web 客户端打开侧边栏,定位要清理的会话。
- 点击该行「…」菜单中的 删除会话,或悬停行后点垃圾桶图标。
- 在确认对话框中阅读提示(含磁盘记录一并删除),点击 删除。
- 若会话仍在运行,界面会提示先停止(对应 Host 的
session-running);停止后重复上述步骤。
删除成功后会出现短时顶部提示;操作不可撤销(与归档可撤销不同)。
适用场景与注意¶
适合:本地长期跑 DSH、侧边栏会话过多,需要真正释放磁盘上的会话目录,而不是仅归档隐藏。
注意:
- 删除不可恢复;确认前请自行备份仍需保留的会话数据。
- 仅在有 Web 客户端的场景下提供 UI;Host API 仍依赖已登录浏览器的 Index 鉴权。
- 插件分类为「记忆」,本质是管理会话生命周期与本地存储,不涉及模型记忆服务的额外配置项(资料中未列出可配置字段)。
- 安装即授予其删除
$DSH_HOME/sessions下匹配目录的能力,务必在信任源码与 MIT 许可证的前提下使用。
结尾¶
dsh-session-delete 补上了 DSH 默认能力里缺失的「永久删除会话」路径:侧边栏可操作,Host 侧归档、删盘、通知各界面同步。需要安装标识或概览时可打开 SkillHub 目录页;实现细节与问题反馈见 GitHub 仓库:
- 目录页:https://www.skillhub.cn/plugins/Fragmented-Chaos/dsh-session-delete
- 源码:https://github.com/Fragmented-Chaos/dsh-session-delete