在 DeepSeek Harness(DSH)中,归档会话通常只是将其从侧边栏隐藏,没有明确的恢复入口,一旦归档往往意味着会话永久消失。@huangzhaoyu/dsh-trashbin 为 DSH 增加了一个“回收站”机制,让归档操作变成一个可控的“删除冷静区”。
下面介绍这个插件的安装方式、核心功能以及技术实现细节。
功能概览¶
该插件旨在解决归档会话不可找回的问题,提供以下能力:
- 归档即回收:归档的对话会进入回收站,而不是直接从界面消失。
- 恢复与移除:在 7 天有效期内,支持随时恢复会话至原工作区;也支持手动移除。
- 自动清理:归档超过 7 天未恢复的会话将自动清理。
- 数据安全:插件不修改 DSH 核心,不触碰
~/.dsh/sessions中的会话日志文件,只负责界面状态管理。 - 幂等性:恢复操作具备幂等性,恢复不存在的会话不会报错。
安装与启用¶
所有安装方式在完成配置后都需要重启 DSH,插件才会生效。
方式一:命令行安装(推荐)¶
如果你本地环境配置了 dsh 命令,可以直接通过 profile 安装:
dsh plugin --profile web add @huangzhaoyu/dsh-trashbin
方式二:脚本安装(Windows)¶
插件仓库提供了 PowerShell 安装脚本:
powershell -ExecutionPolicy Bypass -File install.ps1
脚本会自动完成备份、复制文件、注册依赖与 bundles 以及验证文件完整性。
方式三:手动安装¶
如果没有 dsh 命令或无法使用脚本,可以手动复制文件并修改配置:
- 复制
dsh-trashbin目录到~/.dsh/profiles/web/node_modules/@huangzhaoyu/。 - 修改
~/.dsh/profiles/web/package.json,在dependencies中添加"@huangzhaoyu/dsh-trashbin": "^0.1.0"。 - 在
dsh.profile.bundles数组中追加"@huangzhaoyu/dsh-trashbin"。 - 重启 DSH。
卸载¶
同样可以通过提供的脚本卸载:
powershell -ExecutionPolicy Bypass -File uninstall.ps1
或手动从 dsh.profile.bundles 和 dependencies 中移除该插件,并重启 DSH。
机制与限制¶
回收站入口¶
安装后,侧边栏左下角的设置按钮旁会出现一个垃圾桶图标,点击进入回收站面板。
状态存储¶
回收站的状态(如归档时间)存储在浏览器的 localStorage 中。
* 注意:如果清除了浏览器缓存,localStorage 会被清空,此时所有归档对话的时间信息会丢失,表现为全部显示为“过期”状态。但这不会影响归档本身,也不会导致数据丢失。
自动清理逻辑¶
7 天自动清理的过滤逻辑是在打开回收站时触发的。如果连续 7 天未打开回收站,清理顺延到下次打开,用户无感知差异。
目录与文件结构¶
插件的主要代码与配置文件如下:
dsh-trashbin/
├── package.json # 声明 dsh.bundle.patch + dsh.client 双面机制
├── cordis.patch.yml # 注册 trashbin 行到 profile
├── install.ps1 # 安装脚本(包含备份与回滚)
├── uninstall.ps1 # 卸载脚本
└── lib/
├── index.js # host 半边:处理 /trash/unarchive 路由及存储域写入
└── client.js # browser 半边:处理回收站按钮、面板 UI 及 localStorage 状态
结语¶
@huangzhaoyu/dsh-trashbin 通过独立包的形式,在不侵入 DSH 核心的前提下,为归档操作提供了“后悔药”。对于习惯使用归档整理会话但担心误删的开发者来说,这是一个实用的工具。