前言¶
DeepSeek Harness(DSH)侧栏里,单条会话自带固定、重命名、分叉、归档等操作,但会话日志按设计是只追加、长期累积的,官方并没有「从列表里删掉这条会话并清掉磁盘上的日志目录」这一项。试验性对话、误建会话、或需要把工作区注册表理顺时,往往只能手动删目录、改 registry,且多端已连接的客户端不一定立刻去掉对应行。
下面介绍社区插件 dsh-delete-session-menu(维护者 ba1ying2,目录分类为「记忆」):在每条会话的 … 菜单里增加 Delete conversation,确认后删除持久化会话目录、从工作区注册表解绑,并向所有客户端广播移除。
这是什么¶
dsh-delete-session-menu 是 DSH 插件包,在 Web 侧栏的会话行菜单中注册删除入口(中英文界面),由宿主执行真正的删除逻辑,客户端负责确认对话框与删除后的页面刷新。它补上 DSH 原生菜单里缺失的「删除会话」能力,而不是替代固定或归档。
- 仓库:ba1ying2/dsh-delete-session-menu
- 目录页:SkillHub 插件页
- 许可证:MIT(见仓库 README)
核心功能¶
确认删除后,插件会依次完成这些事(与 README 描述一致):
- 删除
<DSH_HOME>/sessions/<project>/session-<id>/目录;同一 project 下其它会话不动;仅当 project 目录变空时才 pruning。 - 从工作区注册表的
sessionIds以及固定 / 归档集合中移除该 id。 - 若会话仍在内存中活跃,先在删文件前从内存 store detach,避免删除后又被写回。
- 发出
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 后刷新页面即可拾取新版本。
典型用法¶
- 在侧栏找到目标会话行,悬停。
- 点击行末
…。 - 选择 Delete conversation(中文环境下为对应译文)。
- 在确认对话框中确认。对话框会说明删除不可恢复。
无需额外配置文件;删除完全由菜单与确认流程触发。
如需从集成侧直接调用,宿主暴露路由(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 与仓库为准。