前言¶
DeepSeek Harness(DSH)桌面版或 Web 版用久了,会话列表会堆满长期不再打开的线程。手动逐条归档费时,而会话相关的派生数据(例如投影缓存)也会占磁盘。若希望「列表变干净、缓存可回收」,又必须保证 transcript、附件和工作区文件不被误删,就需要在 DSH 官方归档能力之上做可配置的自动化。dsh-auto-archive 是社区维护者 elk-9527 发布的本地插件,归类为「记忆」,通过定时巡检调用 DSH 官方 workspaceRegistry.archiveSession(),并在安全边界内清理已归档会话的超期投影缓存。
这是什么¶
dsh-auto-archive 面向 DeepSeek Harness 本地宿主:按可配置天数将闲置会话移入归档列表(可从归档列表恢复),并对已归档且闲置更久的会话删除 DSH 派生的 projection cache 文件;不删除会话记录、附件、工作区或对话产出的任何文件。维护者:elk-9527。目录页:https://www.skillhub.cn/plugins/elk-9527/dsh-auto-archive ;源码:https://github.com/elk-9527/dsh-auto-archive 。
核心功能¶
下面表格中的默认值与行为均来自插件 README,安装后可在设置面板或 ~/.dsh/auto-archive/config.json 中调整。
| 能力 | 默认 | 行为 |
|---|---|---|
| 自动归档 | 闲置 14 天 | 调用 DSH 官方归档 API;归档会话仍可从归档列表恢复。 |
| 缓存清理 | 已归档且闲置 90 天 | 仅删除 ~/.dsh/storages/session_projcache/sessions/<id>.json(DSH 可按需重建)。 |
| 定时巡检 | 每 30 分钟 | 后台静默执行;设置面板可预览或立即运行。 |
| 保护 | 置顶会话 | 可选按 session id、workspace id 或 cwd 片段加入白名单,匹配项不归档。 |
| 审计 | 最近 30 次运行 | 记录每次归档/清理明细;支持一键从归档恢复。 |
安全边界¶
插件设计上只写两类数据:
- 归档状态 — 通过官方 registry API 增删
archivedSessionIds,可逆。 - 投影缓存 — 删除上述
session_projcache下的 json 缓存文件。
不会删除:transcript(session.v4.jsonl.zstd 及会话目录)、~/.dsh/attachments、溢出文件、工作区或项目文件。进行中的会话始终跳过(不传 stopActivity),不会打断正在运行的 turn、job 或 subagent。
单次运行受 limits.maxOperationsPerRun(默认 50)限制,避免首次启用时一次性扫光历史。
安装与启用¶
桌面版 profile 由 Electron 管理,请用 CLI 安装到 desktop profile:
dsh plugin --profile desktop add github:elk-9527/dsh-auto-archive
本地开发目录安装示例:
dsh plugin --profile desktop add "file:D:/path/to/dsh-auto-archive"
宿主插件在启动时加载,安装后需完全退出并重新打开 DSH。打开面板:左下角头像 → Settings → 自动归档(与 General、内置插件相邻)。
卸载:
dsh plugin --profile desktop remove dsh-auto-archive
配置¶
配置文件路径:~/.dsh/auto-archive/config.json(首次运行自动创建,也可在面板编辑)。运行状态在 ~/.dsh/auto-archive/state.json(原子写入,保留最近 30 次运行)。
{
"version": 1,
"autoArchive": { "enabled": true, "idleDays": 14, "checkIntervalMinutes": 30 },
"cacheCleanup": { "enabled": true, "unusedDays": 90 },
"protect": { "pinnedSessions": true, "sessionIds": [], "workspaces": [] },
"limits": { "maxOperationsPerRun": 50 },
"dryRun": false
}
要点说明:
idleDays:末次活动时间超过该天数的会话会被归档。末次活动 = max(transcript mtime,createdAt)。unusedDays:已归档且闲置超过该天数的会话,其 projection cache 会被清理。protect.workspaces:workspace id 或不区分大小写的 cwd 片段;匹配的工作区永不归档。dryRun: true:每次自动运行变为预览,不写归档状态、不删缓存。limits.maxOperationsPerRun:单次运行操作上限。
典型用法¶
设置面板¶
安装并重启 DSH 后,在 Settings → 自动归档 查看状态卡片、配置表单、会话清单与运行历史;面板支持预览或立即执行一次巡检。
本机 HTTP API¶
前缀 /dsh-auto-archive,仅 loopback Host,否则返回 403:
| 方法 | 路径 | 用途 |
|---|---|---|
| GET | /dsh-auto-archive/api/state |
配置、上次/下次运行、计数 |
| GET | /dsh-auto-archive/api/sessions?limit=200 |
会话清单(含闲置天数与是否 eligible) |
| GET | /dsh-auto-archive/api/history |
最近 30 次运行 |
| POST | /dsh-auto-archive/api/config |
深度合并并保存配置 |
| POST | /dsh-auto-archive/api/run |
{"dryRun":true} 预览 / {"dryRun":false} 执行 |
| POST | /dsh-auto-archive/api/restore |
{"sessionIds":["..."]} 取消归档 |
建议首次启用时将 dryRun 设为 true,在面板或 POST /api/run 预览候选数量,确认白名单与 maxOperationsPerRun 后再关闭 dry-run。
适用场景与注意¶
适合谁:长期在本机使用 DSH、会话数量多、希望活跃列表保持可读、又愿意把旧线程放进官方归档而非删数据的用户。
已知限制(README 原文):
- 缓存清理仅针对已归档会话,活跃列表上的 projection cache 不会被本插件清理。
- 「对话缓存」指 DSH projection cache;transcript 与附件仍占磁盘,这是设计如此。
- 归档遵循 DSH 自身的活动判断;其他插件仍视为活跃的会话会被跳过。
- 修改插件代码后需重启 DSH(宿主在启动时加载)。
权限与信任:插件以当前 DSH 进程权限读写 ~/.dsh 下配置、状态及上述缓存路径,并调用内核 workspaceRegistry 等 API。安装前请阅读源码与许可证(MIT,package 版本 0.1.0)。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-auto-archive 把「闲置归档」和「已归档会话的超期投影缓存回收」做成可配置、可审计、可 dry-run 的本地自动化,并在文档中明确不碰 transcript 与附件。需要安装说明与 API 细节时,见 GitHub README:https://github.com/elk-9527/dsh-auto-archive ;插件条目:https://www.skillhub.cn/plugins/elk-9527/dsh-auto-archive 。