dsh-auto-archive:按闲置时长自动归档 DSH 会话

前言

在 DeepSeek Harness(DSH)里长期跑智能体会话,侧边栏和磁盘上的会话目录会不断增多。只靠手动整理,很难区分「还在用」和「已经冷掉」的会话;附件按 sha256 分片存放在 harness 目录下,也会随时间占用越来越多空间。社区里已有基于 MuWinds 的 dsh-archived-sessions 做归档会话的查看与释放,但缺少按规则后台扫一遍、把冷会话移入归档区的机制。

下面介绍维护者 wzn16 的 dsh-auto-archive(分类:记忆):在归档管理 UI 之上增加自动归档引擎,并可选手动扫描清理未被活跃会话引用的附件。插件以当前 DSH 进程权限运行,安装前请自行审阅 GitHub 源码 与 MIT 许可证。

这是什么

dsh-auto-archive 是 DSH 的会话自动归档插件(当前 package 版本 0.4.6,要求 DSH >=0.1.5-rc.1)。它解决两类问题:一是按闲置阈值把冷会话自动移入归档区,并在 Web 设置里提供扫描预览与手动归档;二是在 v0.4.0 起支持对附件目录做引用扫描与手动清理。归档列表、释放、从硬盘删除、内容预览等能力继承自 dsh-archived-sessions 的改写实现。

目录页:skillhub.cn/plugins/wzn16/dsh-auto-archive
源码与说明:github.com/wzn16/dsh-auto-archive

自动归档怎么判定「闲置」

自动归档的核心口径是最后活跃时间,不是侧边栏显示的会话创建时间。

  1. 闲置阈值:会话目录内所有代际日志(如 session.jsonl.zstd、session.v3.jsonl.zstd 等)取最新 mtime;超过 N 天未写入则视为可归档,默认 N 为 14 天。
  2. 与列表显示的差异:侧边栏常按创建时间展示「X 天前」;若会话几天前仍有「继续会话」等写入,实际闲置天数可能更短,不会在未满阈值时被自动归档。设置面板的会话清单会同时展示「创建 X 天前 · 闲置 Y 天」两种口径。
  3. 后台扫描:默认每天扫描 1 次,周期可在 0.25–365 天之间调整;Harness 启动约 3 分钟后跑首轮,且扫描任务不重叠。

安全护栏与归档通道

自动归档只处理「完全冷掉」的会话,README 中明确下列情况不会被动归档:

  • 正在运行回合的会话;
  • 仍驻留内存(live)的会话,即使磁盘文件已多日未写;
  • 侧边栏置顶(钉住)的会话;
  • 手动排除清单 excludeIds 中的会话;
  • 已在归档区的会话(幂等跳过)。

归档时优先调用官方 workspaceRegistry.archiveSession();异常时降级为 storage 域直写,并同步私有缓存(思路与 dsh-session-manager 的兜底一致)。自动归档本身是可逆的(释放即可);从硬盘删除会话文件始终需你在 UI 里手动确认,且不可恢复。

设置页能做什么

安装并重启 DSH 后,在 Harness 设置 → 归档会话 页面可见:

自动归档卡片

  • 开关、闲置阈值、扫描周期;
  • 立即扫描(仅预览)、立即扫描并归档(二次确认);
  • 最近一次扫描审计与待归档预览列表。

手动操作

  • 对清单中单个会话执行「归档」或「永不自动归档」(维护 excludeIds,无需等到闲置满阈值)。

归档会话管理(继承能力)

  • 查看已归档会话(标题、创建时间、目录、路径、占用空间);
  • 释放(单个 / 批量 / 一键全部);
  • 从硬盘删除(单个 / 批量 / 一键清空,两步确认);
  • 点击标题展开预览用户 / 助手 / 工具消息。

附件清理(v0.4.0+)

会话中粘贴或拖入的图片、文件原件位于 <harness-home>/attachments/v1/objects(按 sha256 分片)。插件将清理与归档状态联动:

  1. 扫描:解压所有未归档(含活跃)会话日志,建立附件引用索引;不被任何未归档会话引用的附件(仅被已归档或已删除会话使用)列为可清理候选。
  2. 匹配:按 sha256 文件名匹配,与路径分隔符无关;策略偏保守,宁可少清、避免误删。
  3. 执行:扫描需手动触发(数百会话约 5–20 秒);不做自动删除;清理需两步确认且不可逆;逐文件删除,单个失败不中断整批。仅处理 objects/ 下 sha 命名文件,不碰 request-images/、tmp/ 等。

配置持久化

配置与最近一次扫描审计写在 harness 根目录的 dsh-auto-archive.json(路径由会话产物位置推导,例如 macOS 上可能为 ~/Library/Application Support/dsh-desktop/harness/dsh-auto-archive.json)。写入为原子方式,也可手工编辑后重启 DSH 生效。

安装与启用

资料中的安装方式为在 web profile 里 pnpm link 本地包,完成后重启 DSH,设置里应出现「归档会话」页与「自动归档」卡片。

若插件源码已在本地目录(路径按你的实际位置替换):

cd ~/Library/Application\ Support/dsh-desktop/harness/profiles/web
pnpm add "link:/path/to/dsh-auto-archive"

README 亦给出从 GitHub 克隆后再 link 的步骤(克隆位置自定):

git clone https://github.com/wzn16/dsh-auto-archive.git
cd ~/Library/Application\ Support/dsh-desktop/harness/profiles/web
pnpm add "link:/path/to/dsh-auto-archive"

重启 DSH 后即可在设置中使用上述功能。社区插件目录 SkillHub 与 DeepSeek / 幻方无官方从属关系,安装方式以仓库 README 为准。

典型用法

  1. 在 设置 → 归档会话 打开自动归档,将闲置阈值设为符合你习惯的天数(默认 14),扫描周期保持每日或按需调大间隔。
  2. 先点 立即扫描(仅预览),核对待归档列表与「创建 / 闲置」双口径,确认没有误伤仍会用但创建时间较久的会话。
  3. 对需要长期保留、但暂时不活跃的会话使用 永不自动归档;对明确可冷的会话可单独 归档,不必等阈值。
  4. 确认无误后使用 立即扫描并归档(二次确认),或在后台等待定时任务执行。
  5. 磁盘紧张时,在附件清理区域手动触发扫描,审阅候选列表后再做两步确认的清理(不可逆)。

适用场景与注意

适合长期在本机 DSH 中积累大量会话、希望用规则把冷会话移出主列表并统一在归档区管理的开发者。需要定期查看已归档占用、批量释放或谨慎删除硬盘副本时,同一设置页即可完成。

务必注意:插件包含删除会话文件能力;自动归档不会删盘,删除必须手动确认。插件与 DSH 同进程、同权限运行,排除清单与置顶规则是安全设计的一部分,但仍建议在重要环境先预览扫描结果。开发构建可参考仓库内 npm install、npm run build、npm run typecheck。

结尾

dsh-auto-archive 在归档会话管理 UI 之上补全了按日志 mtime 的闲置判定、定时扫描与多重跳过规则,并把附件 orphan 扫描做成手动、可审计的清理流程。若你要接入或二次开发,可从仓库 README 中的 src/auto-archive.ts、src/index.ts、src/client.tsx 分工入手。

  • 目录页:https://www.skillhub.cn/plugins/wzn16/dsh-auto-archive
  • GitHub:https://github.com/wzn16/dsh-auto-archive
羽毛球分组比赛记分
小程序二维码

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

小夜