前言¶
在 DSH(DeepSeek Harness)桌面版里,侧栏会话一旦堆多,很多人会想「删掉这条试错的对话」,而不是只把它藏起来。官方持久化插件 dsh-session-persistence 的文档写得很清楚:只有归档,没有删除或保留接口;归档只是把会话从侧栏隐藏,日志、投影缓存、工作区记账都还在磁盘上。若你确实需要可恢复的「移出工作区」以及二次确认后的彻底删除,社区插件 dsh-session-trash 补上了这条能力,并把删除拆成两步,降低误删风险。
下面介绍它是什么、能做什么、如何安装,以及使用时需要知道的限制。
这是什么¶
dsh-session-trash 是维护者 qyy2005 发布的 DSH 桌面客户端插件(纯 JavaScript、无构建步骤,MIT 许可证,当前 package 版本为 0.1.0)。它在侧栏会话行提供垃圾桶入口,把会话(连同子智能体与派生对话家族)移入插件自管的回收站;在 设置 → 回收站 里可以恢复、彻底删除或清空。运行中的会话会被拒绝移入,恢复后会尽量挂回原工作区。
插件目录页:https://www.skillhub.cn/plugins/qyy2005/dsh-session-trash
源码与说明:https://github.com/qyy2005/dsh-session-trash
核心功能¶
行尾垃圾桶移入回收站¶
悬停侧栏会话行会出现垃圾桶按钮。确认后,会话目录被移动到回收站,并一并处理其子智能体 / 派生对话家族。
移入时插件会:移动会话目录;删除投影缓存 storages/session_projcache 中对应记录;从所有工作区记账中脱离;通过 api-session/removed 让侧栏立刻去掉该行。
设置 → 回收站¶
回收站页面列出条目,包含标题、原工作区、会话数、移入时间、占用大小,并支持:
- 恢复:把目录搬回原位、重新挂回原工作区、恢复归档 / 置顶标记;页面会自动刷新。
- 彻底删除:第一次点击变为「确认彻底删除?」,再次点击才真正删除。
- 清空回收站:同样采用两段确认。
彻底删除会直接删掉回收站里该条目的目录与索引,不进系统回收站,不可恢复。
若原工作区已经不存在,会话仍会还原到原来的会话目录,并出现在侧栏「未分组」里。
运行中会话的保护¶
当会话还有未结束的回合、子智能体、后台任务或定时提醒时,插件会提示等其结束再移入,不会替你停掉任务再删。
存储位置¶
回收站数据在 DSH 用户目录下,与 profile 内的插件安装路径不同:
| 项 | 路径 |
|---|---|
| 回收站目录 | <DSH_HOME>/session-trash/<会话 id>/ |
| 索引 | <DSH_HOME>/session-trash/index.json(记录原目录、工作区、归档/置顶标记、大小) |
安装与启用¶
安装方式来自项目 README:把整个插件目录复制到当前 profile 的 node_modules,并在 package.json 里登记 bundle 与依赖,然后完全退出 DSH 再打开(客户端 bundle 只在启动时组装)。
- 复制目录到:
<DSH_HOME>/profiles/<profile>/node_modules/dsh-session-trash/
- 在 profile 的
package.json中登记(示例结构与版本号以 README 为准):
{
"dsh": { "profile": { "bundles": [ "...", "dsh-session-trash" ] } },
"dependencies": { "...": "...", "dsh-session-trash": "0.1.0" }
}
- 完全退出 DSH 再打开,否则客户端侧不会加载新 bundle。
安装前建议阅读 GitHub 仓库源码与 MIT 许可证;插件以当前 DSH 进程权限读写 <DSH_HOME>,包括移动会话目录与删除缓存。
典型用法¶
- 在侧栏悬停要清理的会话行,点行尾垃圾桶,在确认框里确认移入回收站。
- 打开 设置 → 回收站(页面 order 为 25,排在 Agent 预设与 Web 插件之间),查看列表。
- 误删或临时清理:点 恢复,等待页面刷新后回到原工作区(或「未分组」)。
- 确定不再需要:对单条使用两段式 彻底删除,或对整个回收站使用两段式 清空回收站。
若与 dsh-better-workspace 共存,会话右键菜单由后者硬编码,第三方 menu.item 不会出现;入口主要是行尾按钮与设置页。
实现要点(供排查问题)¶
Host 半(index.js)在 ctx.webServer 上挂载同源路由:/dsh-session-trash/list、trash、restore、purge、empty,作为无构建纯 JS 插件的 UI→Host 通道。
Client 半(client.js)通过 window.__ModuleLoader__.load 注册三个座位:sidebar.workspaces.session.row.action(行尾垃圾桶,需带空 inject face)、shell.overlay(移入确认框)、settings.section(回收站页)。
已知限制与适用场景¶
适合:需要在 DSH 桌面侧栏真正「移走」会话目录、又希望有一段时间缓冲再彻底删除的开发者;希望子智能体家族随主会话一起进回收站的用户。
注意:
- 恢复不能换工作区:会话
SessionHeader.cwd只读,DSH 用其校验工作区归属;换目标文件夹需改日志头部并搬目录,官方不支持,硬做可能导致会话打不开。 - 插件升级或重装会覆盖
node_modules里的文件,自定义改动会丢失。 - 社区目录 SkillHub 与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件为社区贡献,非官方内置能力。
结尾¶
dsh-session-trash 在官方「仅归档、无删除接口」之上,提供了移入 <DSH_HOME>/session-trash 的两段式删除与设置页统一管理。若你的痛点是侧栏会话只藏不删、或担心一次点错就丢日志,可以按 README 安装 0.1.0 并在退出重启后试用行尾垃圾桶与 设置 → 回收站。