前言¶
DeepSeek Harness (DSH) 原生没有提供删除已归档会话的接口。归档操作只能取消归档,而日志和投影缓存会一直留在磁盘上。dsh-archived 插件通过提供 UI 和 RPC 接口,填补了这一空白,确保会话日志、投影缓存和归档索引能被彻底清理。
插件介绍¶
这是一款记忆类插件,主要用于管理 DSH 的已归档会话。它为 DSH 的“设置 → 已归档”页面增加了删除、恢复和清理功能,并处理了索引残留和宿主契约检查等复杂状态。
核心功能¶
插件实现了以下核心能力:
- 会话删除:支持逐条删除和批量删除。默认采用“回收站”机制(30 天自动过期),也提供“永久删除”选项。
- 回收站管理:支持从回收站恢复会话,或清空回收站。顶部常显回收站中的会话数量和磁盘占用。
- 磁盘占用显示:列出每个会话的磁盘占用情况。
- 陈旧会话扫描:支持扫描并清理超过指定天数未动的会话(仅归档模式)。
- 目录访问:提供“打开文件夹”功能,直接在系统文件管理器中打开会话目录。
- 安全边界检查:
- 仅接受已归档的 ID,拒绝删除未归档会话。
- 拒绝删除正在运行的会话,或拥有正在运行子代理后代的父会话。
- 处理索引残留,防止因只有索引而无文件导致的异常。
- 进行宿主契约检查,确保宿主 API 可用。
安装与启用¶
安装命令如下:
dsh plugin --profile web add dsh-archived
前置要求:需要 DSH 0.2.0-rc.1 或更高版本。插件不支持 DSH 0.1.x。
典型用法¶
安装后,插件会自动挂载到 Settings -> Archived 页面。
界面操作¶
- 进入“设置 → 已归档”页面。
- 使用搜索框或工作区分组筛选会话。
- 勾选需要删除的会话,点击“删除”或“批量删除”。
- 在顶部回收站区域,可以点击“恢复最近一个”或“清空回收站”。
API 调用¶
通过 RPC 调用管理会话:
# 删除会话(进回收站或永久删除)
POST /api/dsh-archived/delete
Body: { "sessionId": "...", "mode": "quarantine" | "forever" }
# 批量删除
POST /api/dsh-archived/delete-all
Body: { "mode": "quarantine", "ids": ["id1", "id2"] }
# 从回收站恢复
POST /api/dsh-archived/restore
Body: { "sessionId": "..." }
# 扫描陈旧会话(仅读取)
POST /api/dsh-archived/sweep/scan
Body: { "days": 30 }
注意事项¶
- 24 小时硬保护:日志在 24 小时内写过的一律不列、不删,与天数设置无关。
- 宿主状态影响:如果宿主(Host)内存中还持有该会话,删除操作会暂时延迟执行(写入
deferred.json),直到宿主释放该会话(通常在重启后)。 - 不修改宿主数据:插件不会修改宿主的
schedule.json或message_feedback.json。 - 陈旧清理策略:陈旧会话清理只进回收站,永不永久删除。
- 权限要求:插件以当前 DSH 进程的权限运行,安装前请检查源码与许可证。
总结¶
dsh-archived 解决了 DSH 归档会话无法彻底清理的问题,提供了从 UI 到 RPC 的完整管理方案。对于需要维护长期会话记录的开发者来说,这是一个必要的清理工具。