dsh-session-delete: Permanently delete sessions in the DSH Web sidebar

前言

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 侧逻辑(源码注释归纳)大致为:

  1. 若会话仍有进行中的回合、子代理、后台任务或定时提醒等活动,拒绝删除(HTTP 409,session-running),需用户先停止再试。
  2. 先归档,使侧边栏默认过滤下持久隐藏该行,并在当前选中该会话时切走。
  3. 删除 $DSH_HOME/sessions(默认 ~/.dsh/sessions)下该 sessionId 的所有目录。
  4. 发出 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 并删除目录。

典型用法

  1. 在 DSH Web 客户端打开侧边栏,定位要清理的会话。
  2. 点击该行「…」菜单中的 删除会话,或悬停行后点垃圾桶图标。
  3. 在确认对话框中阅读提示(含磁盘记录一并删除),点击 删除。
  4. 若会话仍在运行,界面会提示先停止(对应 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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye