dsh-archive-manager:本机已归档会话的列表、复原与永久删除

前言

在 DeepSeek Harness(DSH)里,会话归档后会从项目侧栏消失,但磁盘上仍保留会话日志与相关缓存。Harness 本身没有专门界面去查看这些「已归档」条目,也无法在设置里一键复原或连同日志一起删掉。若你长期在同一台机器上跑多个项目,归档会话会越积越多,占用 $DSH_HOME 空间,却难以判断每条记录对应哪条会话、占多少空间、是否还能恢复。

下面介绍的 dsh-archive-manager(仓库 linanbuan/dsh-archive-manager)是社区维护的客户端插件:在 DSH 设置里增加一页「归档会话管理」,列出本机全部已归档会话,并支持逐条复原回工作区,或永久删除会话日志与投影缓存。维护者为 linanbuan;包版本在资料中为 1.0.0,许可证 MIT。插件不联网、无遥测,只在 Host 侧读本机文件与 Harness 服务。

这是什么

插件定位可以概括为:DSH 桌面端设置面板插件,补全「已归档会话」的管理入口。

  • 入口位置:设置 → 归档会话管理(settings.section,order: 100,排在内置页面与其它插件之后;行 id 为 archive-manager)。
  • 运行时依赖:无额外 npm 运行时依赖;浏览器半边仅 require('react')。
  • 与官方关系:非 DeepSeek 官方插件;依赖 Harness 内部接缝(如 workspaceRegistry、sessionPersistence 等),Harness 升级后可能失效。

核心功能

列表与统计

页面顶部展示汇总:已归档数量、可删除数量、运行中数量、磁盘占用、数据时间。

每条已归档会话显示:

  • 会话标题(来自 sessionQuery 的标题快照,超时或失败时可能显示「无标题」);
  • 所属项目;
  • 占用大小;
  • 创建时间、最后写入时间;
  • 磁盘目录(展示为 ~/.dsh/... 或 $DSH_HOME/...,不把本机绝对路径送到浏览器)。

若归档记录已无对应日志,仍会列出并标为「仅归档记录」,允许从归档列表移除而不删文件。

复原回工作区

点击 复原回工作区 时,Host 调用 ctx.workspaceRegistry.unarchiveSession(id):从归档集合移除该 id。会话在工作区中的记账槽位一直保留,因此会回到原来的项目与位置。此操作可再次归档,不是删数据。

永久删除

点击 永久删除 时,行内二次确认(非弹窗)。成功后操作结果条会列出本次真正被移除的路径,而不是笼统提示「已删除」。

删除步骤(资料中的确切含义):

  1. 删除会话日志目录 ~/.dsh/sessions/<项目键>/<会话 id>/;
  2. 删除投影缓存 ~/.dsh/storages/session_projcache/sessions/<会话 id>.json;
  3. 调用 unarchiveSession(id) 更新记账,并广播 api-session/removed,侧栏相应行会收起。

不能撤销:Harness 没有恢复入口。运行中的会话不能永久删除(界面会标「运行中」并禁用删除),需先关闭该会话或重启应用。

删除为何由插件自行实现

DSH 的 sessionPersistence 不提供文件路径与删除 API;workspaceRegistry 文档写明移除不会删磁盘数据。因此「永久删除」是插件按与 DSH JSONL 后端同一套规则(lib/layout.js 中的 projectKey、encodeSegment)推导路径后,在 Host 侧做的文件系统操作,并带有多条前置校验(例如 id 必须在归档集合中、不能 SESSION_LIVE、路径必须在 $DSH_HOME/sessions 内且与 header 推导一致等)。任一条件不满足则拒绝删除,不改动磁盘。

安装与启用

先安装 DSH 桌面端(deepseek.com/download)。本插件为标准 DSH bundle(package.json 声明 dsh.bundle.patch 与 dsh.client),任选下列方式之一。

方式一:DSH 桌面端内安装(推荐)

  1. 侧栏 插件 → 添加插件(Add plugin);
  2. 在输入框填写 spec,例如仓库地址 https://github.com/linanbuan/dsh-archive-manager,或该仓库的 Source code (zip) 链接、本机已存在的目录绝对路径,或将来可能的 npm 包名;
  3. 点 安装,确认包信息后完成安装;
  4. 点 立即启用。

安装由 Harness 插件管理器写入当前 profile 的 dsh.profile.bundles,无需命令行或手改 profile。

方式二:交给 Agent 安装

将会话中的 Agent 指向仓库 URL 或本机目录,由 Agent 调用 plugin_manager(action: install_bundle),与方式一走同一路径。

方式三:命令行

已安装 dsh CLI 时:

dsh plugin --profile <profile 名> add <spec>

<spec> 与方式一相同;具体参数以 dsh plugin --help 为准。

装上之后

  • 浏览器半边注册设置页,随启动图加载;HMR 更新时通常不必刷新页面。
  • Host 半边注册三条 /api/archive/* 路由。若安装提示需重启,应重启 DeepSeek Harness 应用(不是仅刷新浏览器)。
  • 确认运行:侧栏 插件 中找到该包,组件状态应为「运行中」。

临时停用可在 profile 的 cordis.patch.yml 或插件页开关中设置 archive-manager 的 disabled: true;彻底移除用插件页的 卸载。

插件管理器目前不支持自动更新;升级需先卸载再装新版。替换已安装包后,Host 半边需重启应用才会加载新代码。

典型用法

  1. 打开 DSH 设置,进入 归档会话管理。
  2. 浏览列表:根据标题、项目、大小与时间判断是否需要保留。
  3. 需要重新出现在项目里:点该行的 复原回工作区,侧栏项目会话列表会恢复该条。
  4. 确认不再需要且会话未在运行:点 永久删除,在行内确认;查看结果条中的路径列表,核对是否与预期一致。
  5. 若某条仅为「仅归档记录」、磁盘上已无日志:仍可从列表移除归档记账,而不删文件。

开发者在仓库内可用自检脚本验证 Host/Client 逻辑(不需要网络与真实 Harness):

node test/selfcheck.mjs

或 pnpm test;全部通过时输出 19/19 checks passed。

适用场景与注意

适合谁

  • 长期在单机使用 DSH、频繁归档旧会话的开发者;
  • 需要查看 $DSH_HOME 里归档占用、清理无用会话日志与投影缓存的用户;
  • 希望从 UI 复原误归档会话、而不是手改 workspace.json 或目录的人。

使用前请知悉

  • 插件以当前 DSH 进程的文件系统权限运行;$DSH_HOME 若位于需提权或受安全软件锁定的目录,删除可能报 EACCES/EPERM。
  • 永久删除无回收站;删前请确认会话内容不再需要。
  • 只影响本机这一份 $DSH_HOME,不同步其它设备或云端。
  • 资料记载的开发验证环境为 DSH 0.1.7-rc.2 桌面版(Windows);所依赖 API 为内部实现,非稳定契约。
  • 安装第三方插件前,建议自行查看 GitHub 源码 与 MIT 许可证,确认符合你的安全与合规要求。

社区插件目录 skillhub.cn 与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本插件是其中针对归档会话缺口的一个客户端扩展。

结尾

dsh-archive-manager 把本机已归档会话集中到设置里的一页:能看标题、项目、大小与时间,能复原回工作区,也能在严格校验后永久删除日志与缓存。若你正被「归档后找不到、删不干净」困扰,可按上文安装方式装入当前 profile,从 设置 → 归档会话管理 开始处理。

  • 目录页:https://www.skillhub.cn/plugins/linanbuan/dsh-archive-manager
  • 源码与说明:https://github.com/linanbuan/dsh-archive-manager
羽毛球分组比赛记分
小程序二维码

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

小夜