dsh-session-ops:DSH Web 集中会话归档、还原与软删除

前言

在 DeepSeek Harness(DSH)Web 里长期跑智能体会积累大量会话。官方侧栏通常只提供单个会话的归档入口,没有一页集中查看「活动 / 已归档」会话,也没有把已归档会话一键放回侧栏的界面。若希望批量整理、或删除时保留日志以便手工恢复,就需要额外能力。社区插件 dsh-session-ops(维护者 lxl8182,分类:记忆)在 设置 → 会话管理 增加一页,提供一键归档、一键还原、一键删除;删除会把会话日志移入回收目录而非抹盘。

这是什么

dsh-session-ops 是面向 DSH Web 的会话管理插件:浏览器端调用官方归档 API,服务端提供还原与「软删除」接口。零构建、零额外依赖——lib/index.js 与 lib/client.js 为手写 JavaScript,宿主侧仅用 Node 内置模块,浏览器侧只 require('react')。

核心功能

设置页与会话页签

插件在设置中注册 dsh-session-ops 区块,展示 活动 与 已归档 两个页签,支持单行操作与批量操作。批量操作按顺序执行(删除会移动磁盘目录,避免并发导致错误难读),全部完成后只刷新一次列表。

归档

浏览器端直接调用官方 ctx.workspaces.archiveSession(id)。会话从侧栏消失,日志完整保留在 <DSH_HOME>/sessions/ 下对应目录。

还原

对已归档会话发起 POST /dsh-session-ops/restore。插件会将会话 id 从 workspace 域的 archivedSessionIds 中移除,并把 <DSH_HOME>/deleted-sessions/<会话 id>/ 中的日志目录搬回原位(若此前执行过删除)。优先使用新版宿主公开的 ctx.workspaceRegistry.unarchiveSession(sessionId);旧宿主无该接口时,会退回通过 storage 域更新并同步 registry 内存缓存的路径,形状无法识别时返回 registry-shape-unknown 且不写盘。

删除(移入回收目录)

POST /dsh-session-ops/delete 会先归档(列表立即更新),再把会话日志目录 rename 到 <DSH_HOME>/deleted-sessions/<会话 id>/,并写入 .dsh-session-ops.json 元数据(含 sessionId、originalPath、cwd、deletedAt 等),供还原时使用。磁盘上无日志目录、或已在回收目录等情况会返回明确 reason(如 no-artifact、already-deleted、log-in-use),页面有对应说明。

动作 实现要点
归档 官方 archiveSession,日志不动
还原 解归档 + 可选从回收目录搬回日志
删除 归档后移目录到 deleted-sessions,非抹盘

安装与启用

从 GitHub 安装(命令来自项目 README):

dsh plugin --profile web add github:lxl8182/dsh-session-ops

或从本地目录安装:

dsh plugin --profile web add /path/to/dsh-session-ops

安装后 重启 dsh web 即可。插件通过 cordis.patch.yml 注入宿主路由与客户端设置页。

典型用法

  1. 打开 DSH Web 设置 → 会话管理(插件注册的会话管理页)。
  2. 在 活动 页签选中会话,使用一键归档;需要时再在 已归档 页签一键还原。
  3. 确认不再需要保留侧栏入口、但仍希望保留日志时,使用一键删除;日志进入 <DSH_HOME>/deleted-sessions/。若要彻底清理磁盘,需手工删除该目录下对应文件夹。
  4. 运行中的会话 拒绝删除(session-running);若日志被进程占用无法移动,页面会提示重启后再删。

服务端接口(仅 POST,请求体 { sessionId },最多 8 KiB):

  • POST /dsh-session-ops/delete
  • POST /dsh-session-ops/restore

会话 id 须匹配 ^[A-Za-z0-9][A-Za-z0-9-]{7,127}$。失败时 ok: false 多为 HTTP 409,具体 error / reason 见 README 接口表。

适用场景与注意

适合:经常在 DSH Web 中开多会话、需要集中查看活动/已归档列表、希望删除可恢复而非直接删盘的开发者。

务必知晓:

  • 插件与 DSH 同进程、同本地 HTTP 面运行;端点 无鉴权,与 DSH 其它本地接口一致,任何能访问 127.0.0.1:<端口> 的进程都可调用。安装前请自行查看源码与 MIT 许可证。
  • 回收目录 无容量上限、无自动清理;workspace.json 里 sessionIds 在删除后可能仍保留 id(被 archivedSessionIds 屏蔽),属 README 记载的已知行为。
  • 若部署中通过 cordis.patch.yml 修改过 session-persistence-jsonl 的 root,会话扫描路径需与之一致。
  • 还原后侧栏是否立刻出现会话,取决于宿主持久化缓存;个别情况需重启 DSH。老版本删除留下的回收目录无元数据时,还原依赖日志头 cwd 反推,失败时需手工搬目录。

结尾

dsh-session-ops 补上了 DSH Web 侧栏之外的集中会话管理:归档、还原、以及移入 deleted-sessions 的软删除。DeepSeek Harness 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

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

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

Xiaoye