前言¶
DeepSeek Harness(DSH)可以把会话归档,侧栏里「仅显示已归档」能筛出历史会话,但归档并不等于从磁盘和工作区记录里抹掉。会话日志仍躺在 $DSH_HOME/sessions/<项目键>/<会话 id>/,工作区归属与归档标记也还在持久化状态里。长期开发、多项目并行时,试过的会话、废弃分支上的对话会越积越多,既占空间,也容易在列表里造成干扰。
社区插件 dsh-archive-purge(维护者 Angela-lwh,分类 admin-security)针对的正是这一点:在已归档会话上提供「删除会话」入口,按固定顺序清日志目录、工作区归属与归档标记;宿主仍持有会话时则写入待办,下次启动或手动触发再完成。下面介绍它的能力边界、安装方式与日常用法。
这是什么¶
dsh-archive-purge 是 DSH 的 npm 包插件,包名 @angela_lwh/dsh-archive-purge(当前资料中的版本为 1.0.3,MIT 许可证,要求 Node >= 22)。一句话:给已归档会话加「真正删除」——移除该会话的日志世代、工作区 membership 与归档标记;对宿主暂时放不掉的会话提供延迟删除($DSH_HOME/archive-purge/pending.json),登记期间取消归档可撤销登记。
它不替代 DSH 自带的归档流程;不删除附件($DSH_HOME/attachments)与投影缓存。删除不可逆,不进回收站。
界面与删除流程¶
装好后,侧栏 Plugins 页会出现「归档会话清理」卡片(中英双语,随 app 语言),可开关插件。
界面入口(仅出现在已归档会话行;正在使用或仅未归档的会话不会出现):
- 行内
...菜单中的 删除会话; - 悬停时出现的垃圾桶按钮。
两者都会先弹出确认框,写明会话名并声明不可撤销。
一次确认后,宿主按顺序执行(资料原文顺序):
- 拒绝正在干活的会话(有进行中的对话);
- 拒绝未归档的会话——归档标记是删除的授权;
- 定位目录
$DSH_HOME/sessions/<项目键>/<会话 id>/,校验内容确属该会话日志,路径不对则不删; - 若宿主仍加载该会话,在已归档且空闲的前提下释放持有(正在干活的永不释放);
- 递归删除该目录(全部日志世代);
- 清除工作区归属与归档标记等持久记录,并通过
api-session/removed让已连接界面立刻去掉该行。
当场删不掉时:正在干活的会话一律不删;暂时无法释放的会写入 pending.json,下次 DSH 启动自动完成,也可随时手动完成(见下文)。登记期间会话历史不变;取消归档可撤销这次登记。
安装与启用¶
安装时把 desktop 换成你的 profile 名。以下命令均来自仓库 README,任选其一即可;五种方式都会写入 profile 依赖、把 @angela_lwh/dsh-archive-purge 加入 dsh.profile.bundles,并装进 profile 的 node_modules。
# 从 npm 安装(包名带 scope;npm 上无 scope 的 dsh-archive-purge 已被他人占用)
dsh plugin --profile desktop add @angela_lwh/dsh-archive-purge
# GitHub 仓库地址
dsh plugin --profile desktop add https://github.com/Angela-lwh/dsh-archive-purge
# 固定到 40 位完整 commit(推荐给别人用,避免 main 漂移)
dsh plugin --profile desktop add https://github.com/Angela-lwh/dsh-archive-purge#<40 位完整 commit>
# Release tarball
dsh plugin --profile desktop add https://github.com/Angela-lwh/dsh-archive-purge/releases/download/v1.0.3/dsh-archive-purge-1.0.3.tgz
# 本机已有检出(开发时改代码即时生效)
dsh plugin --profile desktop add file:<本仓库的绝对路径>/plugin
README 明确提醒:不要使用 github:owner/repo#<sha>&path:/子目录 这类写法,pnpm 可能报 ERR_PNPM_INVALID_DEPENDENCY_NAME;指定 commit 用带 #<commit> 的 HTTPS 地址即可。
卸载:
dsh plugin --profile desktop remove @angela_lwh/dsh-archive-purge
改动插件后如何生效(README 实测说明):浏览器侧的 plugin/lib/client.js 刷新页面即可;宿主侧的 plugin/index.js 需重启 DSH,或关闭再打开该 bundle 以重新挂载。
典型用法¶
- 侧栏视图筛选切到 仅显示已归档;
- 悬停该行点垃圾桶,或
...→ 删除会话; - 在确认框中确认。宿主能释放的会当场删除、行立即消失;被登记的会在下次启动完成,弹窗会说明情况。
手动完成待删除清理:任意会话行的 ... → 完成待删除清理 → 立即清理。
权限、适用场景与注意¶
插件以当前 dsh 进程权限在本地运行。README 中的权限与副作用表可概括为:
| 方面 | 行为 |
|---|---|
| 文件系统 | 读取并递归删除会话目录;写入 $DSH_HOME/archive-purge/pending.json |
| DSH 持久状态 | 经 Workspace API 移除工作区归属与归档标记(涉及 $DSH_HOME/storages/workspace.json) |
| 本地 HTTP | 注册 POST /api/archive-purge/deleteSession,继承 DSH 鉴权 |
| 界面 | 注册侧栏菜单与悬停按钮;删除后通知 UI 移除行 |
| 网络 | 无(宿主仅 node: 内置模块) |
| 安装脚本 | 无 postinstall 等 |
适合谁:需要定期清理已归档试跑会话、希望列表与磁盘状态一致的 DSH 用户;归类在 admin-security,涉及不可逆删日志,安装前宜浏览 GitHub 源码 与许可证。
不适合或需知:未归档会话、正在对话的会话无法通过此入口删除;跨会话共享的附件与投影缓存不会被碰;不要指望回收站或一键恢复。
DSH 生态强调「一切皆插件」;社区目录 SkillHub 插件页 是独立站点,与 DeepSeek / 幻方无官方从属关系。若你已在用归档筛历史会话,dsh-archive-purge 补的是归档之后的那一步——在确认无误后,把日志与工作区记录一并清掉,必要时交给延迟队列处理宿主占用。