前言¶
在 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
自动归档怎么判定「闲置」¶
自动归档的核心口径是最后活跃时间,不是侧边栏显示的会话创建时间。
- 闲置阈值:会话目录内所有代际日志(如
session.jsonl.zstd、session.v3.jsonl.zstd等)取最新 mtime;超过 N 天未写入则视为可归档,默认 N 为 14 天。 - 与列表显示的差异:侧边栏常按创建时间展示「X 天前」;若会话几天前仍有「继续会话」等写入,实际闲置天数可能更短,不会在未满阈值时被自动归档。设置面板的会话清单会同时展示「创建 X 天前 · 闲置 Y 天」两种口径。
- 后台扫描:默认每天扫描 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 分片)。插件将清理与归档状态联动:
- 扫描:解压所有未归档(含活跃)会话日志,建立附件引用索引;不被任何未归档会话引用的附件(仅被已归档或已删除会话使用)列为可清理候选。
- 匹配:按 sha256 文件名匹配,与路径分隔符无关;策略偏保守,宁可少清、避免误删。
- 执行:扫描需手动触发(数百会话约 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 为准。
典型用法¶
- 在 设置 → 归档会话 打开自动归档,将闲置阈值设为符合你习惯的天数(默认 14),扫描周期保持每日或按需调大间隔。
- 先点 立即扫描(仅预览),核对待归档列表与「创建 / 闲置」双口径,确认没有误伤仍会用但创建时间较久的会话。
- 对需要长期保留、但暂时不活跃的会话使用 永不自动归档;对明确可冷的会话可单独 归档,不必等阈值。
- 确认无误后使用 立即扫描并归档(二次确认),或在后台等待定时任务执行。
- 磁盘紧张时,在附件清理区域手动触发扫描,审阅候选列表后再做两步确认的清理(不可逆)。
适用场景与注意¶
适合长期在本机 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