前言¶
DeepSeek Harness(DSH)把每个会话的完整日志写在 profile 下的 sessions 目录里。侧栏里的「归档」只是把会话 id 记进 workspace.json 的 global.archivedSessionIds,界面上不再显示——session.v4.jsonl.zstd 等文件并不会被删除,官方右键菜单也没有删除入口。用久了,大量不会再打开的已归档会话会一直占用磁盘。社区插件 dsh-archive-cleaner(维护者 dongfangxy)在 设置 → 通用 增加清理入口,列出全部已归档会话,支持移入隔离区或直接删除,并从注册表里剔除对应 id。
这是什么¶
dsh-archive-cleaner 是 DSH 的 Cordis bundle 插件,分类为 admin-security。它解决的是「归档 ≠ 删除」:在宿主权限下读取 profile 注册表,只处理已出现在 archivedSessionIds 里的会话,由服务端解析路径并执行隔离或彻底删除,同时备份并改写 workspace.json 与 session_projcache.json。当前版本 0.2.1,许可证 MIT。
归档在磁盘上留下了什么¶
DSH 会话日志路径形如:
$DSH_HOME/sessions/<工作区>/<session-id>/session.v4.jsonl.zstd
归档仅隐藏侧栏条目;session_projcache.json 里的统计缓存也仍保留。README 中举过一个日常使用的 profile 实测:38 个已归档会话合计约 133.9 MB,单个会话可达 10.2 MB。这类体积不会随「归档」自动收回。
核心功能¶
下面介绍插件在界面与后端上的行为,均来自仓库说明。
设置入口与列表¶
- 打开 设置 → 通用,会多出一行「清理已归档工作区」。
- 点「开始清理」,弹窗列出全部已归档会话:工作区路径、创建时间、会话 id、占用大小、勾选框。
- 若磁盘上已无会话目录,会标注「磁盘上已不存在,选中只清登记」——选中后只删注册表项,不碰文件。
确认与两种模式¶
勾选会话后点「下一步」,进入确认页:条数、合计大小、隔离目录,以及「直接删除文件(不保留隔离区)」选项。
| 模式 | 行为 | 可否恢复 |
|---|---|---|
| 隔离(默认) | 将会话目录 rename() 到 $DSH_HOME/.session-trash/<时间戳>/,并写入 restore-map.json 记录原路径与工作区 |
可将目录按 restore-map.json 搬回原路径后重启 DSH |
| 直接删除 | 需在确认页显式勾选;对目录 rm -rf,无隔离区与 restore-map |
不可恢复 |
两种模式都会从 workspace.json 的三处(archivedSessionIds、pinnedSessionIds、各工作区 sessionIds)以及 session_projcache.json 中剔除 id;改写前会生成 *.bak-<时间戳> 备份。
安全设计要点¶
- 只认 profile 中标记为已归档的 id,否则跳过并说明原因。
- 前端只提交 id 与
mode(仅接受quarantine/purge),不传路径;解析后的目录必须在$DSH_HOME/sessions/内,否则拒绝。 - 未知
mode在触碰任何文件前返回错误。
安装与启用¶
最省事的方式(依赖会写入 profile,后续 pnpm install 不会清掉插件):
dsh plugin add github:dongfangxy/dsh-archive-cleaner
应用内等价操作:设置 → 插件 → Add plugin,填写同一串 github:dongfangxy/dsh-archive-cleaner。
不要把仓库目录手工拷进 node_modules,否则下次 pnpm install 可能被当作多余包删除。若要本地改源码,在 <profile>/package.json 中声明 link: 依赖后执行 pnpm install --dir <profile>,再重启 DSH。
典型用法¶
- 安装插件并重启 DSH。
- 进入 设置 → 通用,打开「清理已归档工作区」。
- 在列表中勾选要处理的已归档会话,点「下一步」。
- 在确认页核对条数与合计大小;默认走隔离到
.session-trash/<时间戳>/;若确定不需要恢复,勾选「直接删除文件」后使用「彻底删除」。 - 确认后完成清理;重启 DSH 后侧栏才会不再列出这些会话(运行中侧栏状态在宿主内存里)。
隔离模式下恢复:根据 $DSH_HOME/.session-trash/<时间戳>/restore-map.json 将会话目录移回原路径,重启 DSH。
适用场景与注意¶
适合谁:长期用 DSH、侧栏里堆了大量已归档会话、需要可控释放磁盘或清理「只剩登记、文件已删」的残留 id 的用户。
已知限制(README 原文):
- 入口在 设置 → 通用,不在侧栏账号菜单(该菜单无第三方插槽)。
- 插件直接读 profile 的
workspace.json;若未来 DSH 改变该文件结构,列表可能为空而不会瞎猜。 - Windows / macOS / Linux 通用;单元测试不依赖平台。
权限与信任:插件以当前 DSH 进程权限读写 $DSH_HOME 下的会话与注册表;直接删除模式不可恢复。安装前建议在 GitHub 仓库 查看源码与 MIT 许可证,确认符合你的安全策略。DSH 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-archive-cleaner 把「已归档但仍在磁盘上的会话」变成可列举、可隔离、可选彻底删除的操作,并在改注册表前备份,适合作为 profile 磁盘与注册表 hygiene 的补充工具。