dsh-session-leftover-purge:删除会话后清理 bili 与 cost-meter 残留

前言

在 DeepSeek Harness(DSH)里用 @michengai/dsh-archive-manager 删掉一条会话时,Harness 自己的会话记录会跟着清掉,但 billion-context(bili)的快照、SQLite 索引,以及 dsh-cost-meter 的账本明细往往还留在本机。结果是 bili 面板里仍能看到已删会话,正文也可能还在 index.db 里。若你同时用 bili 和 cost-meter,单靠 DSH 默认删除流程无法把这些「边角料」一并收走。下面介绍社区插件 dsh-session-leftover-purge(维护者 FenrirCait,分类:工作流),它订阅 DSH 的 api-session/removed 事件,在 archive-manager 完成删除后补做清理。

这是什么

dsh-session-leftover-purge 是 DeepSeek Harness 的插件,不跑常驻服务;装好后在 host 侧随 DSH 进程加载,监听会话删除并清理关联的 bili / cost-meter 数据。项目托管在 GitHub:FenrirCait/dsh-session-leftover-purge,社区目录页:skillhub.cn 条目。许可证为 MIT(README 与 package.json 一致)。

宿主版本要求(package.json dsh.compatibility):>= 0.2.0-rc.1 < 0.3.0-0。运行环境需 Node >= 20。插件以当前 DSH 进程权限访问本机存储;安装前建议自行查看仓库源码与许可证。

核心功能

事件驱动的残留清理

删除会话触发 api-session/removed 后,插件按配置处理:

项目 默认 说明
总开关 开 关掉后不再清理,也不再监听删除
bili JSON 快照 开 删掉 bili 面板里该会话对应条目
bili SQLite 索引 开 删掉 index.db 中的行;删前自动备份,可回滚
cost-meter 账本明细 关 只删账本里的明细行,总额不动
cost-meter 原始明细文件 关 删掉每轮用量的凭证文件

缺组件时不会导致插件加载失败,只是跳过对应能力:无 archive-manager 则没有「删除会话」入口、主要靠开机对账;无 bili 时记 bili-sessions-root-missing;无 cost-meter 时记 ledger-missing / cost-files-root-missing。

开机对账与可选回收

项目 默认 说明
开机对账 开 启动时扫描孤儿快照并写报告
自动清理孤儿 关 对账发现孤儿后直接清理
开机回收 index.db 空间 关 回收已删行占用的空间;失败不影响数据
开机延迟 8000 ms 开机对账前等待时间

边界说明(README):只保证处理经 archive-manager 删除的路径;其它删法靠开机对账发现。bili 的 index.db 可能被另一进程占用,遇 SQLITE_BUSY 会跳过、下次再试。不碰 DSH 附件与 Electron localStorage;任何失败只写日志,不中断 DSH 删除流程。

备份、恢复与演练

每次清理在 ~/.dsh/storages/session-leftover-purge/trash/<时间戳>/ 留副本,含 index.db(及 wal/shm)、移走的 bili 快照 JSON、改过的 ledger.json、删掉的 cost-meter 文件等。备份保留天数默认 7 天,0 表示永久保留。

「演练模式」默认关:开启后只写日志,不移动也不删除。设置里「恢复最近备份 / 删除全部备份 / 立即备份 cost-meter 账本」为触发器——填入一个新数字并保存即执行一次。

安装与启用

README 给出四条安装方式,命令原文如下:

# 最省事:从 npm 装最新版,不需要 git,也不需要访问 GitHub
dsh plugin add dsh-session-leftover-purge

# 默认:永远装 main 的最新提交(需要本机有 git)
dsh plugin add github:FenrirCait/dsh-session-leftover-purge

# 需要锁死版本时,把 vX.Y.Z 换成 tags 页里的任意 tag
dsh plugin add github:FenrirCait/dsh-session-leftover-purge#vX.Y.Z

# 不需要 git:永远取最新一版的 tgz
dsh plugin add https://github.com/FenrirCait/dsh-session-leftover-purge/releases/latest/download/dsh-session-leftover-purge.tgz

第一条走 npm registry;中间两条需本机有 git;最后一条为 HTTPS 下载 release 附件 dsh-session-leftover-purge.tgz。

装完后必须完全退出并重新打开 DSH。 host 侧由 Loader 在进程启动时装载,运行中新装的包不会挂进当前进程;仅刷新页面不会让清理逻辑生效。

依赖方面,必需 DSH 本身;@deepseek-ai/schemastery 由宿主提供,一般无需额外安装。

典型用法

装好后默认无需操作:在 archive-manager 里删除会话后,会自动清理 bili JSON 快照与 index.db 行(cost-meter 相关项默认关闭)。

需要改行为时,打开 设置 → 插件 → 插件管理 → dsh-session-leftover-purge。开关改动即时生效,不用重启。若要顺带清 cost-meter,在表单里打开对应项并保存。

日志与对账结果目录:~/.dsh/storages/session-leftover-purge/。其中 purge.log 记录启动与每次清理/恢复/删备份;orphans.json 为最近一次对账结果;triggers.json 记录已执行的触发器数字。

适用场景与注意

适合已经在 DSH 里组合使用 billion-context、dsh-archive-manager,并希望删会话后 bili 面板与索引与 Harness 状态一致的用户。若还启用 cost-meter 且希望删会话时同步删明细或凭证文件,需在设置里显式打开相关开关。

注意:插件权限等于 DSH 进程权限;清理前会做备份,但恢复时若 bili 正锁库,可能把库文件写成 index.db.restored-<时间戳>* 需手动替换。社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-session-leftover-purge 用一条事件订阅把「删会话」和「清 bili / cost-meter 残留」接在一起,并通过对账、备份和演练模式降低误删风险。目录页:https://www.skillhub.cn/plugins/FenrirCait/dsh-session-leftover-purge;源码与文档:https://github.com/FenrirCait/dsh-session-leftover-purge。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜