dsh-session-archive:给 DeepSeek Harness 归档会话一个管理出口

DeepSeek Harness (DSH) 支持归档会话,但官方不支持删除。sessionPersistence 只有 create/open/flush/stat/list 接口,ctx.fs 也没有删除动词。归档之后想清掉一个会话,没有出口。dsh-session-archive 插件把出口补上。

核心功能

给归档会话一个管理页面。它可以列出归档会话,按最后活动时间排序;将已归档会话恢复到侧边栏;以及彻底删除已归档会话。

插件运行在 DSH 的 Host 进程中,Host 半边通过两个同源路由处理请求:GET /dsh-session-archive/archived 和 POST /dsh-session-archive/delete。Client 半边不引用任何宿主包,样式只使用 --dsw-* 主题令牌,因此深浅色模式自动跟随。

安装

插件已发布到 npm。

安装前请确保 DeepSeek Harness 完全退出。应用运行时 profile 的 package.json 是被锁住的,命令行操作拿不到锁。

dsh plugin --profile desktop add dsh-session-archive

如果 profile 不叫 desktop,请替换后面的名字。不想用命令行,也可以走界面:侧边栏 → Plugins → Add plugin,填包名。

安装完成后刷新页面。以后更新时,只改 client.js 刷新页面即可;如果修改了 index.js(Host 半边),需要重启应用——插件的 Host 模块不会因为重新组合而重新加载。

从源码安装

克隆仓库后,按目录安装。装进去的是 link: 依赖,所以安装目录别挪走:

git clone https://github.com/meowyuho/dsh-session-archive.git
dsh plugin --profile desktop add link:<clone 下来的绝对路径>

路径必须是绝对路径。link: 也可以写成 file:,或者直接裸给绝对路径。

也可以不 clone,直接按仓库装:

dsh plugin --profile desktop add github:meowyuho/dsh-session-archive

这两种方式都会把插件注册进 profile 的 bundle 层栈。本包没有构建步骤,不会碰到 git 安装那种 allowBuilds 提示。

使用

设置 → 左侧导航 → 归档会话。

  • 恢复:会话回到侧边栏原来的位置。
  • 彻底删除:点击行内「彻底删除」,展开一张确认卡片(写明是哪个会话、日志在哪儿)。确认之后才动手。卡片可以按 Esc 取消。

删除机制

删除操作会移除以下内容:

  • 会话的日志目录:<dsh home>/sessions/<项目目录>/<会话 id>/。里面可能并存 v0–v4 多个格式世代,所以删的是整个目录。
  • 投影缓存记录:<dsh home>/storages/session_projcache/sessions/<id>.json。
  • 工作区里的会话占位,以及归档集合、置顶集合里的记录。

插件不会触碰以下内容,以避免连带破坏其他会话:

  • attachments/ 及其请求缓存(内容是寻址的,可能被多个会话共用)。
  • spill 临时文件。
  • 会话查询索引。
  • workspace.json 整体。
  • 工作区目录里用户自己的文件。

删除过程分三步:删文件 → 让浏览器重拉一次会话目录 → 最后才移出归档集合。

这样设计是为了避免 UI 闪烁。如果一次性做完,中间会出现一个瞬间:它已经不在归档集合里了,但客户端目录还记着它——侧边栏就会把它画成一行,点开报 session/not-found。分三步走,中间那步做完时它仍然处于归档状态,没有任何界面会画它;等身份从客户端清掉之后再移出归档集合,就一帧都不露。任何一步失败都停在可以直接重试的状态。

注意事项

  • 排序:列表按「最后活动」时间从新到旧排,而不是归档时间。dsh 的归档集合里只有一个 id 数组,不带时间戳。
  • 删除限制:有活儿在跑(turn / job / subagent / schedule)或正开在主视图里的会话不能删除。被加载过但闲着的会话可以删。早期版本把两者混为一谈,结果一大批本该能删的会话都删不掉。
  • Subagent:subagent 世系的会话不能单独删,它的日志归拥有它的那个会话管。
  • 不可逆:没有回收站,删除不可撤销。
  • 侧边栏:侧边栏那边插件一点没动。dsh 默认就隐藏归档会话;宿主的「全部会话(显示已归档)」「仅显示已归档」开关由用户自己控制,插件不会改回去。
  • 异常清理:日志已经不在、但归档记录还在的行会被标出来,可以直接点删除把登记清干净。

验证

插件包里附带 node _verify-session-archive.mjs 验证脚本。它只依赖 Node 内置模块,全程把 DSH_HOME 指到一个临时目录,不会碰你真实的会话数据。

脚本会覆盖 bundle 声明、浏览器半边的注册契约、同源与各类拒绝路径、真实的文件删除(在临时 HOME 里核对磁盘结果)、活动判据、分步协议,以及样式只用主题令牌。失败以非零退出码结束。

许可

MIT 许可证。

  • GitHub 仓库:https://github.com/meowyuho/dsh-session-archive
  • 生态目录:https://www.skillhub.cn/plugins/meowyuho/dsh-session-archive
羽毛球分组比赛记分
小程序二维码

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

小夜