dsh-archive-manager:DSH 归档会话的可视化管理与彻底清理

前言

在 DeepSeek Harness(DSH)里把会话「归档」,默认只是把条目从侧边栏藏起来。时间一长,你很难回答:到底归档了多少、各占多大空间、属于哪个工作区;想找回几个月前的会话,往往只能在侧边栏里翻;若手动删过磁盘上的会话目录,侧边栏里还可能留下点开就报 ENOENT 的「幽灵行」,而 DSH 本身也没有一条完整的「彻底删除归档会话」路径。

dsh-archive-manager(仓库包名 archive-manager)由社区维护者 jiulanyanyue-boop 发布,在 设置 → 归档会话管理 提供一整页归档中心:按工作区分组列出归档会话,显示归档时间、最后活动与占用体积,支持一键恢复回原工作区原位置,或按固定顺序抹掉本地存储(含会话历史、投影缓存、工作区记账与 live 会话),并在页面内即时刷新列表,无需反复重启或手动刷新页面。

这是什么

这是面向 DSH Web / 桌面端的记忆类插件:把「归档」从单向隐藏,扩展为可看、可恢复、可永久删除的完整生命周期管理。实现为 Host 半 + 浏览器半 两件套(host.js / client.js),纯前端加 Host 路由,仓库内为可直接运行的产物,无构建步骤、无 npm 依赖、无外部服务。在 DSH 0.2.1-rc.2 上验证通过,依赖宿主 webServer、workspaceRegistry、sessions 三个服务;缺服务时插件不激活,不会渲染假列表。

社区目录页:dsh-archive-manager(SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系)。源码与说明:GitHub - jiulanyanyue-boop/dsh-archive-manager,许可证 MIT。

核心功能

下面按 README 已描述的能力归纳,均可在安装后于设置页或 Host API 侧验证。

列表与索引

  • 入口:设置 → 归档会话管理(settings.section,id archived-sessions)。
  • 按工作区分组:每组显示工作区标题、目录名与条数;已不属于任何工作区的会话归入「未归组会话」。
  • 每行展示完整标题、归档时间(绝对 + 相对)、最后活动时间、创建时间、占用体积;磁盘缺失时标红提示。
  • DSH 只持久化归档 id 集合、不存归档时间;插件在 <DSH_HOME>/archive-manager/archive-times.json 自建索引,首次观测到归档即记录,恢复或删除时同步清理。

恢复

在列表中悬停目标行,点「恢复」。调用宿主 unarchiveSession,工作区记账原样保留,会话回到原工作区、原位置;侧边栏无需手动刷新即可看到,页面顶部有成功提示。

永久删除

悬停 →「删除」→ 二次确认(展示将删除的项数与大约体积)→「永久删除」。确认后顺序为:停活动(workspace/session-stop)→ 摘掉 live 会话(detachEntered)→ 删除会话目录与投影缓存(失败则整体失败、不摘记账)→ workspace.detachSession → 摘归档集合 → 清归档时间索引。不进回收站,无法撤销。

删除与恢复共用串行队列,避免并发竞态;列表刷新时对 /state 请求带序号单飞,过期响应丢弃,减少「删完行又复活」的问题。

失效引用清理

若存在「记账里有、磁盘上没有」的残留,页面顶部会出现提示条,可「一键清理」;清理只动工作区记账,不删除现存会话文件。插件启动约 3 秒后也会静默自检一次(幂等);亦可 POST /plugins/archive-manager/repair。

界面与可访问性

样式引用宿主 CSS 变量(--dsw-alias-* 等),随浅色 / 深色主题切换;文案随宿主 locale 在中英之间切换。操作按钮默认悬停或聚焦时显示,触屏常显;空状态有装饰图而非单纯「无数据」。

安装与启用

前置条件

项 要求
DSH Web / 桌面端,0.2.1-rc.2 上验证通过
Node >= 22.19.0(一般使用 DSH 自带运行时即可)
构建 不需要

不要用裸包名安装

npm 上 archive-manager 与 dsh-archive-manager 已被他人占用;在「添加插件」里填裸包名会装错包或报版本不兼容。请填完整 GitHub 地址。

打开 设置 → 插件 → 添加插件,填入:

https://github.com/jiulanyanyue-boop/dsh-archive-manager

README 还列出等价写法,均由 DSH 安装器解析并克隆本仓库,例如 github:jiulanyanyue-boop/dsh-archive-manager,或带 tag 的 https://github.com/jiulanyanyue-boop/dsh-archive-manager#v1.2.0(需该 tag 已推送)。

安装器会先做一次 git ls-remote 连通性检查(默认 5 秒超时),再交给 pnpm 克隆安装。

装完请重启一次 DSH 桌面应用(或对应进程):profile 组合在启动时构建,插件条目需重启才生效;之后的恢复、删除、列表刷新在页面内即时生效。

离线场景可用 npm pack 打 tarball 后填绝对路径,或按 README「方式三」手动 link 到 profile 的 dependencies 与 dsh.profile.bundles(同一包只装一次,避免重复条目)。

典型用法

归档(仍用 DSH 自带入口)

在会话列表使用 DSH 自带的「归档」即可;本插件不改变该行为。归档后会话从侧边栏消失,并出现在 设置 → 归档会话管理 列表中。

恢复与删除

  1. 打开 设置 → 归档会话管理。
  2. 在工作区分组下找到目标会话;悬停该行,点「恢复」或「删除」。
  3. 若选择删除,在二次确认框中核对项数与体积后点「永久删除」。

Host 接口(可选)

插件在 Host 侧注册 exact 路由,例如:

BASE=http://127.0.0.1:<port>/plugins/archive-manager

curl "$BASE/state"
curl -X POST "$BASE/restore" -H 'Content-Type: application/json' -d '{"sessionId":"<id>"}'
curl -X POST "$BASE/delete" -H 'Content-Type: application/json' -d '{"sessionId":"<id>"}'
curl -X POST "$BASE/repair"

具体端口以当前 DSH Web 服务为准。

适用场景与注意

适合谁: 长期用 DSH 做多个工作区、频繁归档旧会话,需要集中查看占用、恢复历史对话,或安全腾挪磁盘空间的开发者。

运行权限: 插件以当前 DSH 进程权限读写 <DSH_HOME> 下的会话目录、投影缓存、工作区记账与自建索引;安装前建议浏览仓库源码与 MIT 许可证,确认符合你的环境策略。

版本说明: 仓库 package.json 当前版本为 1.3.0;README 徽章仍标注 1.2.0,以你安装时克隆到的 tag / commit 为准。DSH 0.1.0-rc.x 未验证且大概率不可用。

生态背景: DSH 采用「一切皆插件」的扩展方式;本插件是社区贡献的记忆类工具,不是 DSH 内置功能。

结尾

若你受困于「归档即消失、删不干净、幽灵会话」这几类问题,dsh-archive-manager 把归档做成可审计、可恢复、可彻底抹掉本地痕迹的一页管理界面,并与 DSH 工作区记账对齐。

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

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

Xiaoye