dsh-delete-session-menu:在 DSH 侧栏彻底删除会话

前言

DeepSeek Harness(DSH)侧栏里,单条会话自带固定、重命名、分叉、归档等操作,但会话日志按设计是只追加、长期累积的,官方并没有「从列表里删掉这条会话并清掉磁盘上的日志目录」这一项。试验性对话、误建会话、或需要把工作区注册表理顺时,往往只能手动删目录、改 registry,且多端已连接的客户端不一定立刻去掉对应行。

下面介绍社区插件 dsh-delete-session-menu(维护者 ba1ying2,目录分类为「记忆」):在每条会话的 … 菜单里增加 Delete conversation,确认后删除持久化会话目录、从工作区注册表解绑,并向所有客户端广播移除。

这是什么

dsh-delete-session-menu 是 DSH 插件包,在 Web 侧栏的会话行菜单中注册删除入口(中英文界面),由宿主执行真正的删除逻辑,客户端负责确认对话框与删除后的页面刷新。它补上 DSH 原生菜单里缺失的「删除会话」能力,而不是替代固定或归档。

核心功能

确认删除后,插件会依次完成这些事(与 README 描述一致):

  1. 删除 <DSH_HOME>/sessions/<project>/session-<id>/ 目录;同一 project 下其它会话不动;仅当 project 目录变空时才 pruning。
  2. 从工作区注册表的 sessionIds 以及固定 / 归档集合中移除该 id。
  3. 若会话仍在内存中活跃,先在删文件前从内存 store detach,避免删除后又被写回。
  4. 发出 api-session/removed,各已连接客户端立刻去掉侧栏行,随后页面 reload。

实现上分为宿主与客户端两半:

部分 文件 作用
host lib/index.js POST /session-delete/exec,经 ctx.connection.requestRejection 准入;删目录、改注册表、detach 活跃会话、发事件
client client.js 注册 sidebar.workspaces.session.menu.item(order 500)与 shell.overlay 确认框;确认后 POST 并 reload

包声明 dsh.bundle.patch,安装时会把 mount 写入 composition,一般无需手改 cordis.patch.yml。dsh.client(platform: web)与 exports["./client"] 使 dsh-client-modules 能提供 /plugins/dsh-delete-session-menu/client.js。

安装与启用

在对应 profile 下执行(命令取自仓库 README):

dsh plugin --profile <profile> add dsh-delete-session-menu

DSH Desktop 也可走 Settings → Plugins 安装同一包。

插件以当前 DSH 进程权限运行,安装前建议阅读仓库源码与 MIT 许可证。Node 引擎要求 >=20;peer 依赖 @deepseek-ai/cordis ^4.0.5(optional)。

本地开发时可在 profile 的 cordis.patch.yml 里 insert mount(README Development 小节),例如 id session-delete、name dsh-delete-session-menu;改 client.js 后刷新页面即可拾取新版本。

典型用法

  1. 在侧栏找到目标会话行,悬停。
  2. 点击行末 …。
  3. 选择 Delete conversation(中文环境下为对应译文)。
  4. 在确认对话框中确认。对话框会说明删除不可恢复。

无需额外配置文件;删除完全由菜单与确认流程触发。

如需从集成侧直接调用,宿主暴露路由(README 已给出):

POST /session-delete/exec
content-type: application/json

{ "sessionId": "session-3c98f71c-5e75-4d87-8274-21fa1ce83cf8" }

成功时返回 { "ok": true, "value": { … } };失败为 { "ok": false, "error": "…" }(400 错误请求、403 准入、405 方法、500 文件系统等)。

适用场景与注意

适合谁: 需要在 DSH 里真正丢掉某条会话及其持久化日志、并让多端侧栏同步去掉该行的开发者;与工作区「记忆」相关的清理也属于常见用途。

限制(README Limits):

  • sessionId 必须符合 session-<id> 形态,用作路径段前会做白名单校验。
  • 只删该会话目录;.dsh/storages/session_projcache 不会动,删除后 reload,陈旧项可能变成不可达。
  • 正在运行的 agent 不会阻塞删除:会先 detach 再删文件。
  • 删除是永久的,以确认文案为准。

社区插件目录(如 SkillHub)与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本包是其中一例。

结尾

DSH 默认只提供固定、重命名、分叉、归档;dsh-delete-session-menu 在侧栏补上可确认的「删除会话」,并把磁盘日志、注册表与多客户端列表对齐。需要安装命令、API 与行为细节时,以 README 与仓库为准。

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

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

小夜