前言¶
DeepSeek Harness(DSH)桌面端目前只有“归档”,它会隐藏会话但不会删除日志。如果你需要真正移走对话,只能依赖手动删除文件,无法撤销,也不适合日常清理。Session Trash 插件为 DSH 增加了确认删除、立即从侧栏移除、7 天回收站和撤销恢复的能力,把删除变成一个可控的操作。
插件简介¶
这是社区维护的 DSH 插件 yycf1/dsh-plugin-delete-session,归类在“记忆”类。它通过内部接口拦截删除流程,先归档、再复制日志到回收站、最后删除原文件;支持运行中任务拒绝删除、失败回滚、自动过期清理等。
核心功能¶
- 删除对话:每个会话的
...菜单新增红色“删除对话”选项,确认框显示标题和保留天数。 - 立即消失:删除成功后侧栏行立即移除,包括“未分组”会话,无需刷新或重启。
- 7 天回收站:日志、投影缓存和元数据先完整复制到
$DSH_HOME/session-trash/,复制成功后才删除原文件。 - 撤销 / 恢复:删除提示条内嵌“撤销”;侧栏底部的回收站按钮可以恢复任意未过期会话。
- 彻底删除:在回收站中可立即永久删除,不必等 7 天。
- 只拦截真正运行中的任务:Agent 回合处于
running时立即拒绝删除,不归档、不取消、不等待;空闲但仍驻留内存的会话可以正常删除。 - 失败安全:归档、从工作区摘除、flush、复制任一步失败都会在动原文件之前中止并回滚;不会出现“原文件删了、回收站也没有”的状态。
- 与归档一致的提示:复用 DSH 的
Toast原语,位置和样式与“会话已归档,可撤销”一致。
安装¶
从 npm 安装(推荐)¶
dsh plugin --profile web add dsh-plugin-delete-session
安装后完全退出并重新打开 DSH(Host 半是 ESM 模块,刷新页面不会重新加载它),再按 Ctrl+Shift+R 刷新页面。
从 GitHub 源码安装¶
dsh plugin --profile web add github:yycf1/dsh-plugin-delete-session
这是纯 JavaScript 包,不需要构建授权。安装后同样需要完整重启 DSH。
在 DSH 内浏览¶
本仓库同时发布了一个符合 DSH 插件市场格式的索引:
https://yycf1.github.io/dsh-plugin-delete-session/index.json
打开 设置 → 插件 → 实验性插件 → 自定义插件市场,添加上面的索引地址,即可在“发现”中查看并安装。已提交 DSH Plugin Hub(dsh-plugin.org),收录后可在其站点搜索。
典型用法¶
- 在左侧会话列表找到目标对话,打开
...菜单; - 点击 删除对话,确认;
- 会话立即从列表消失,顶部出现带“撤销”的提示;
- 7 天内点击提示里的“撤销”,或打开侧栏底部的回收站点击“恢复”;
- 在回收站点击“彻底删除”可立即永久删除。
删除的是会话日志和它的投影缓存;全局附件库按内容寻址共享,不会被删除。
配置¶
默认配置在 cordis.patch.yml:
- insert:
- id: dsh-plugin-delete-session
name: 'dsh-plugin-delete-session'
config:
retentionDays: 7
| 字段 | 默认值 | 说明 |
|---|---|---|
retentionDays |
7 |
回收站保留天数(1–3650)。 |
trashRoot |
$DSH_HOME/session-trash |
回收站目录。 |
sessionsRoot |
session-persistence 的 root,否则 $DSH_HOME/sessions |
会话日志根目录。 |
projectionCacheDir |
$DSH_HOME/storages/session_projcache/sessions |
投影缓存目录。 |
homeDir |
$DSH_HOME,否则 ~/.dsh |
未显式给出路径时使用的数据目录。 |
purgeIntervalMs |
3600000 |
自动清理间隔(最小 60 秒)。 |
在 profile 的 cordis.patch.yml 中覆盖 config 可以修改保留天数;patch 会替换整行配置,因此请同时写出需要保留的其他字段。
适用场景与注意¶
- 适合需要在 DSH 中真正删除对话并希望保留撤销能力的场景,例如清理测试会话或误删后补救。
- 插件依赖 DSH 内部接口(
ctx.sessions.retireScope、sessions.detachEntered、agents.detachEntered、@deepseek-ai/dsh-client-ui-primitives的Toast),DSH 升级后可能需要适配。 - 空闲 Agent 的底层 scope 仍会保留到本次进程结束(DSH 没有公开的 Agent close 接口);它已被摘除注册,不能从侧栏或 session API 访问,也不会再写日志,重启后彻底释放。
- 回收站操作在单个 DSH 进程内串行;不要同时运行多个共享同一
$DSH_HOME的 DSH 实例。 - Windows 已验证;macOS/Linux 未完整验证。
- 运行中的回合不会被删除顺手取消;请先停止任务,这是数据安全选择。
- 删除后恢复的会话会出现在 workspace 最前面,不保留原手动排序位置。
- 本插件没有注册 Agent 工具,模型不能自行删除对话;删除只通过 GUI 暴露。
兼容性¶
- DSH:
>=0.2.1-rc.2 <0.3.0 - 平台:Windows 已验证;macOS/Linux 未完整验证
- 运行时:DSH Desktop 或带 Web UI 的 DSH profile
短结尾¶
Session Trash 为 DSH 提供了可撤销的删除与 7 天回收站,让删除对话变成可控的操作。如需了解更多,可访问插件目录页或 GitHub 仓库。