前言¶
在 DeepSeek Harness(DSH) 里,会话不是数据库里的一行记录,而是磁盘上的目录:~/.dsh/sessions/<工作区目录名>/<sessionId>/ 下的 session.v4.jsonl.zstd 等文件;工作区与会话的对应关系写在 ~/.dsh/storages/workspace.json。原生「删除会话」相当于从名单里摘掉并删掉目录,没有回收站,误删后只能依赖备份或文件恢复工具。社区插件 dsh-session-trash(维护者 a307608689-afk)把删除改成「先移入回收站、保留期内可恢复、到期自动清理」,并在删除前做分析、留档与运维向的自检。本文基于仓库 README 与 package.json(当前版本 0.1.7,MIT 许可证)整理用法与注意点;该插件属社区「记忆」类扩展,与 DeepSeek 官方无隶属关系。
这是什么¶
dsh-session-trash 是 DSH 的 Web 客户端插件:通过 package.json 的 dsh 字段与 cordis.patch.yml 声明,由宿主半端 index.js 与浏览器半端 client.js 协同工作。它针对三类常见问题:手滑删除无法撤销、删除前不清楚会话体积与状态、删完后侧栏仍显示旧项等。实现上强调「搬目录 + 改名单」、对 workspace.json 的唯一写入口、纯本地无出站网络(Node.js ≥ 20,零第三方运行时依赖)。
目录页:SkillHub 插件页 · 源码:GitHub — a307608689-afk/dsh-session-trash
核心功能¶
删除与回收站¶
- 会话「⋯」菜单最下方增加红色 删除会话 项。
- 删除前分析:确认前展示会话是否在本地、目录大小、是否归档 / 置顶 / 仍在运行等。
- 移入回收站:会话目录搬到
~/.dsh/session-trash/payload/<trashId>/,并从workspace.json相关名单中移除;改动前自动备份。 - 设置 → 回收站:列出条目,支持恢复(回原位并恢复归档 / 置顶)、彻底删除、批量操作。
保留期与留档¶
- 默认保留 30 天,到期自动清理;插件约每分钟检查,默认约每 30 分钟执行一轮清理。
- 删除前生成元数据快照(zstd 压缩 + sha256 校验);留档失败会中止删除。留档目录默认配额 2 GB。
- 审计写入
~/.dsh/session-trash/journal.jsonl(超过 2 MB 轮转,保留 5 份)。
运维向能力¶
- 启动时将回收站索引与磁盘目录对齐;页面退出时只读自检。
- 孤儿会话目录:找出磁盘上不属于任何工作区的会话目录,可批量移入回收站。
- 同源 HTTP 接口(如
/dsh-session-trash/health、/list、/delete、/restore等)供 UI 与脚本调用;详见 README「HTTP 接口」表。
安装与启用¶
本插件无资料记载的 dsh plugin add github:... 一键命令,安装方式以仓库说明与你所用 DSH 版本的插件文档为准。README 给出的流程如下:
- 获取本仓库源码(例如从 GitHub 下载压缩包或按你习惯的方式取得目录树)。
- 将插件目录放到 DSH 能加载的位置,或在 DSH 插件管理界面中添加该本地路径。
- 完全退出并重新启动 DSH。
- 打开 设置 → 回收站,若能看到条目列表(或空列表界面),说明加载成功。
环境要求:Node.js ≥ 20、DSH Web 端。
典型用法¶
删除一个会话¶
- 在侧栏选中会话,打开右侧「⋯」菜单。
- 选择最下方的 删除会话。
- 阅读分析信息后确认,会话进入回收站而非立即从磁盘抹除。
恢复或彻底删除¶
在 设置 → 回收站 中:
- 恢复:目录搬回原路径,归档 / 置顶状态一并恢复。
- 彻底删除:不可撤销;执行前会再做留档。
- 可勾选多条进行批量操作。
调整保留期与自动清理¶
默认保留 30 天。若需改为 90 天,可在 DSH 同源地址下 POST 配置(端口替换为你本机 DSH Web 端口):
curl -X POST http://127.0.0.1:<端口>/dsh-session-trash/config \
-H 'content-type: application/json' \
-d '{"retentionDays":90}'
README 说明:retentionDays 在接口校验中接受 7 / 30 / 90;autoPurgeMinutes 可设 5–1440,0 表示关闭自动清理。
数据位置与隐私¶
插件不向外部服务器发送数据;前端仅请求同源 /dsh-session-trash/*。
| 数据 | 路径 |
|---|---|
| 回收站索引 | ~/.dsh/session-trash/index.json |
| 被移走的会话 | ~/.dsh/session-trash/payload/<trashId>/ |
workspace.json 备份 |
~/.dsh/session-trash/backups/ |
| 留档 | ~/.dsh/session-trash/archive/ |
会被改写的宿主文件主要是 ~/.dsh/storages/workspace.json,且经 writeWorkspaceDoc() 做校验与原子写入。设置 → 回收站 → 安全 → 导出诊断包 不含对话正文,仅含健康状态、条目摘要与近期 journal,便于排查。
适用场景与注意¶
适合:长期在 DSH 中积累大量会话、需要误删可恢复、希望在彻底删除前留元数据证据的开发者。
使用前请知悉:
- 插件以当前 DSH 进程权限读写
DSH_HOME下目录;安装前应自行审阅源码与 MIT 许可证,并在重要环境先备份。 - 彻底删除 与卸载前未回滚回收站内容会导致数据不可恢复;卸载顺序应为:先
node tools/rollback-trash.mjs(必要时--write),再移除插件并重启。 - README 列出的已知边界包括:删除后侧栏可能需手动刷新列表;恢复按原
workspace.json插回、跨工作区移动未覆盖;部分附件与团队会话相关能力仍在演进。 - 若重启后出现工作区全空、
workspaceController is unavailable,可能与workspace.json时间字段格式有关;README 提供只读排查与tools/fix-workspace-timestamps.mjs,出现症状时不要随意「重新选择文件夹」覆盖名单。
结尾¶
dsh-session-trash 把 DSH 的会话删除从「一步到位抹掉」改为「回收站 + 留档 + 可配置保留期」,并补了删除前分析与孤儿目录清理,适合把会话当长期资产来管理的用法。更多截图、架构说明与故障排查见仓库 README。
- 插件目录页:https://www.skillhub.cn/plugins/a307608689-afk/dsh-session-trash
- GitHub:https://github.com/a307608689-afk/dsh-session-trash