前言¶
DeepSeek Harness(DSH)可以归档会话,但归档只是把条目从侧栏藏起来。对话 transcript、标题缓存、SQLite 索引、费用账本和 bridge 日志仍会留在磁盘上。若你关心本地隐私、磁盘占用,或需要在测试 profile 里清掉某次会话的全部痕迹,内置「归档」并不等同于删除。
下面介绍社区插件 dsh-deep-purge(维护者 kkkkk-tubu,分类 admin-security):在应用内面板或 PowerShell 脚本中,一次操作清理与单个 session id 相关的六个 on-disk 位置,并提供预演、备份、回滚与自动重启 DSH。插件当前在 GitHub 上星标为 0;仅支持 Windows。
这是什么¶
dsh-deep-purge 的定位是:补足 DSH 只有 archive、没有 delete 的缺口,且不是只删侧栏注册表,而是按 session id 扫清六处存储。安装后左侧导航会出现 会话清理 / Session purge,每个会话右键菜单会增加 彻底删除会话 / Delete session permanently。真实删除逻辑在独立 PowerShell 脚本 ps/dsh-session-cleanup.ps1 中,面板是其前端。
六处会清理什么¶
一个 session id 会出现在下列六个位置;README 说明多数「删除」工具只处理第一处即停。
| # | 路径 | 内容 |
|---|---|---|
| 1 | ~/.dsh/sessions/<slug>/<session-id>/session.v4.jsonl.zstd |
完整对话 transcript(zstd 压缩 JSONL) |
| 2 | ~/.dsh/storages/session_projcache/sessions/<session-id>.json |
标题 / 项目元数据缓存 |
| 3 | ~/.local/share/billion-context/sessions/index.db |
billion-context SQLite 索引(含 \|sub: 子 agent 行),之后执行 VACUUM |
| 4 | ~/.dsh/storages/workspace.json |
侧栏注册:sessionIds、archivedSessionIds、pinnedSessionIds |
| 5 | ~/.dsh/storages/cost-meter/ledger.json |
按会话的 token/费用明细及引用该 id 的 hash 缓存 |
| 6 | ~/.dsh/storages/cost-meter/ledger.json.billion-context/ |
按 call 的 bridge 日志(大量小 JSONL,按子串匹配) |
提交删除前,面板会对六处分别显示命中数量;预演选中 (Dry run) 只统计、不写盘。
为什么要先退出 DSH¶
删除不能在 DSH 进程仍占用相关资源时安全完成:
workspace.json被 DSH 整对象驻内存,侧栏任意变更会整文件重写;若在底下删文件,下一次变更可能把会话「复活」,且无文件监听对账。index.db为 WAL 模式 SQLite,运行中持有连接;VACUUM需要独占访问。
因此流程是:注册计划任务 → 请求 DSH 退出 → 删文件 → 再启动 DSH。辅助脚本刻意运行在 DSH 进程树外(DSH 会把工具子进程放进 Windows Job Object,会话内 spawn 的进程会随会话结束)。面板会说明这一点;执行期间页面会断开数秒。
安装与启用¶
官方安装命令如下(来自 README,勿自行改成 github:owner/repo 形式):
dsh plugin add dsh-deep-purge
安装后重启 DSH。也可手动将包放到 <profile>/node_modules/,写入 profile 的 dependencies 与 dsh.profile.bundles 后重启。
package.json 标明版本 1.0.0、许可证 MIT,Node >=20,DSH 兼容范围见 engines.dsh 与 dsh.compatibility.dshReleases(含 0.2.1-rc.2、0.2.1-rc.3、0.3.0-rc.1 等标注为 compatible 的版本)。插件以当前 DSH 进程权限运行;安装前应在 GitHub 阅读源码与 LICENSE、NOTICE.md。
典型用法(面板)¶
- 点击左侧 会话清理,或右键某会话 → 彻底删除会话。
- 勾选要删除的会话;当前会话故意不可选,服务端也会拒绝。
- 点 预演选中 (Dry run),查看六处命中数,不写盘。
- 在输入框键入
DELETE(防误触短语,非密码),再点 删除选中。 - 在浏览器确认对话框中确认;约 25 秒内 DSH 退出、执行删除并自启。
- 重启后面板顶部展示上一轮结果;红色表示有残留,可点进逐步日志。
每次删除默认在 ~/.dsh/session-delete-backup-<timestamp>/ 留备份(命令行可用 -NoBackup 跳过)。
首次打开有阻塞式引导:说明六路径、风险、五步流程、回滚与卸载;须勾选「I understand deletion is irreversible」才能开始,Esc 与点遮罩不能关闭。文案版本变更(GUIDE_VERSION)后会再次出现;页头 使用说明 可随时重开。页头下方永久警告条不可关闭,提示不可逆、会退出并重启 DSH。
命令行(PowerShell)¶
面板之外可直接调用脚本(路径以你的 profile 为准):
$ps1 = "<profile>\node_modules\dsh-deep-purge\ps\dsh-session-cleanup.ps1"
# 只读:六处 inventory
powershell -ExecutionPolicy Bypass -File $ps1 -List
# 指定 session 预演
powershell -ExecutionPolicy Bypass -File $ps1 -SessionId session-aaaa,session-bbbb
# 真删(DSH 须已关,或加 -AutoRestart)
powershell -ExecutionPolicy Bypass -File $ps1 -SessionId session-aaaa -Execute -AutoRestart
常用参数:-List、-SessionId、-Execute、-AutoRestart(需与 -Execute 同用)、-Restore <dir>、-NoBackup、-SkipBiliGc(不动 index.db / 不 VACUUM)、-WaitTimeoutSec(默认 180)等。退出码:0 干净,1 有残留,2 DSH 仍在跑且未 -AutoRestart,3 等待退出超时且未删任何文件。
回滚¶
先退出 DSH,否则内存中的 workspace.json 会覆盖刚恢复的内容:
powershell -ExecutionPolicy Bypass -File "<plugin>\ps\dsh-session-cleanup.ps1" -Restore "<backup dir>"
恢复只写回备份中的文件,不会删除删除之后新建的会话。
适用场景与注意¶
适合:需要在 Windows 上彻底移除某次 DSH 会话的全部本地痕迹、释放与 billion-context / cost-meter 相关的磁盘数据、或在合规场景下做可审计的删除(配合备份目录)。
务必注意:
- 仅 Windows:需 PowerShell 5.1+、计划任务、Win32 消息优雅关闭 DSH。
- 会关闭并重启 DSH;若托盘有确认对话框,需手动点一次。
- 不能删当前会话;同一 profile 不要开两个 DSH 窗口(两份内存
workspace.json,后写覆盖)。 - 关闭托盘图标不阻断流程,但若 DSH 忽略关闭请求,辅助进程会超时,超时意味着未删除任何文件。
- 卸载:在插件管理器中禁用或移除
dsh-deep-purge并重启;插件自身不持久化状态,动到的都是你的会话数据。
DSH 生态强调「一切皆插件」;目录页 skillhub.cn 为社区站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-deep-purge 把 DSH 会话从 archive 推进到可验证的 deep purge:六处路径、预演计数、备份与 -Restore、以及为 SQLite 与 workspace.json 设计的退出再删再启流程。需要细节与截图时,以仓库 README 为准。
- 目录页:https://www.skillhub.cn/plugins/kkkkk-tubu/dsh-deep-purge
- GitHub:https://github.com/kkkkk-tubu/dsh-deep-purge