dsh-archive-manager:DeepSeek Harness 的归档会话管理插件

前言

DSH 官方提供了「归档会话」功能,但归档后的会话会从工作区列表隐藏,且既没有恢复入口,也没有物理删除入口。这会导致已归档的会话堆积在磁盘上,占用空间且无法清理。本插件通过在侧边栏新增入口,补全了恢复和彻底删除这两个功能缺口。

核心功能

  • 侧边栏入口:在侧边栏新增「历史归档」入口,跟随 DSH 侧边栏样式。
  • 会话列表:列出所有归档会话,显示真实会话标题和归档时间。
  • 一键恢复:点击面板中「恢复」按钮,即可取消归档,回到工作区列表。
  • 物理删除:点击面板中「删除」按钮,二次确认后彻底删除会话(不可恢复)。
  • 实时更新:归档、恢复、删除操作无需刷新页面。面板打开时自动刷新,打开状态下每 3 秒轮询更新归档状态。

安全与删除语义

物理删除不可恢复。插件按顺序执行以下步骤,任一步失败都不会留下“半删除”的会话:

  1. 归档标记:从 workspace 存储域的 archivedSessionIds 中移除。
  2. 工作区记录:从每个工作区实体的 sessionIds 名册中移除。
  3. 存储目录:删除 $DSH_HOME/sessions/<project>/<session-id>/(含 session.v3.jsonl.zstd)。
  4. 投影缓存:清理 storages/session_projcache.json 的索引行以及该会话的逐会话缓存文件。

安全约束:
* 仅限已归档会话:只有已归档的会话能被删除,正在使用的会话在归档之前不可达。
* 路径校验:删除前对路径做 realpath 二次校验,拒绝任何位于 $DSH_HOME/sessions 之外的路径。不跟随逃逸符号链接。
* ID 校验:会话 id 先做格式校验(拒绝 ..、路径分隔符、超长输入)。
* 附件保留:共享的内容寻址附件($DSH_HOME/attachments)不会被回收,它们可能被其他会话引用。

安装与使用

使用 pnpm 安装:

pnpm add dsh-archive-manager

安装后,在 DSH Web GUI 的侧边栏即可看到「历史归档」入口。

重建客户端产物

如需重新生成客户端代码:

node build-client.mjs

注意事项

  • 不可逆操作:物理删除会话后数据无法恢复。
  • 权限要求:插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
  • 仅限已归档:只有已归档的会话能被删除,普通工作区会话无法直接删除。

总结

该插件解决了 DSH 归档会话无法恢复和清理的问题,通过侧边栏管理界面提供了安全的物理删除能力。

GitHub 仓库 | 插件目录

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

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

小夜