dsh-session-manager:在设置页管理已归档 Harness 会话

前言

在 DeepSeek Harness(DSH)里长期跑智能体,会话会不断积累。归档能把侧边栏里暂时不用的对话收起来,但归档记录仍占磁盘,也缺少一个集中查看体积、批量恢复或彻底清理的入口。手动到 ~/.dsh/sessions/ 下翻目录既容易误删,又很难对照工作区与会话 id。

会话管理(@local/dsh-session-manager)是挂在 DSH 设置里的一页插件:只列出已归档会话,支持按标题、工作区路径或 session id 搜索,展示每条日志的占用体积与归档合计,并支持多选恢复或永久删除。下面介绍它的定位、能力与使用时的边界。

这是什么

  • 名称:会话管理(包名 @local/dsh-session-manager,社区目录 xiaobaga281/dsh-session-manager)
  • 维护者:xiaobaga281
  • 分类:记忆(社区目录归类)
  • 版本(资料中的当前包版本):1.1.0
  • 许可:MIT © 2026 xiaobaga281

插件在 Settings 中注册 Session Manager 页面:英文 README 将其描述为列出 archived Harness sessions、检查占用、恢复与永久删除,并带搜索与多选批量操作。

核心功能

以下能力均来自项目 README,未归档会话不会出现在该页。

仅归档视图

页面只管理已归档记录;未归档会话不在列表中显示。

搜索

对列表做过滤,匹配字段包括:标题、工作区路径、session id(字面匹配,不区分大小写)。README 说明:主查询服务未挂载全文检索后端(openAt: never),因此不能按对话正文搜索,仅 metadata。若要在归档日志上做字面内容搜索,需在 sessionQuery.filterEvents 之上自行扩展,代价是读取每条归档 log。

多选与批量操作

支持全选 / 逐行勾选,再对选中项执行恢复或删除。

恢复

对选中会话执行 unarchive,它们会回到对应工作区的对话列表。

永久删除

一次性移除 durable session log、其 session_projcache checkpoint,以及 Workspace 里的 sessionIds 成员关系。 destructive 操作会要求确认,并在完成后展示回收的体积。

删除涉及的路径包括:~/.dsh/sessions/<workspace>/<session-id>/ 下的 log 目录及相关 checkpoint 与成员项。

体积展示

每一行显示该会话 log 在磁盘上的大小;页面汇总当前已归档会话占用的总量。

安装与启用

官方 README 未给出 dsh plugin add github:... 一类 CLI 命令。安装方式为:

  1. 通过 DSH Plugin Manager 使用 install_bundle 安装插件包目录;或
  2. 将插件加入某个 profile 的 bundle 列表。

说明:

  • Host 侧(index.js 等)改动后需要 重启 DSH 应用 才会生效。
  • Client 侧(设置页 UI)在 host 重新提供 bundle 后,随页面刷新即可加载。
  • 运行环境要求 Node.js >= 20(见 package.json 的 engines)。

若自行打包分发,仓库 README 给出:

npm pack

产物示例为 dsh-session-manager-1.1.0.tgz(以 package/ 为根),tarball 内含 files 列表、README.md 与 LICENSE。

典型用法

  1. 在 DSH 中打开 设置,进入插件注册的 会话管理 / Session Manager 分区。
  2. 浏览已归档会话列表,查看各行体积与页脚/合计处的归档总占用。
  3. 在搜索框输入标题片段、工作区路径或 session id,缩小列表。
  4. 勾选需要处理的行(或全选),选择 恢复 或 永久删除,按提示确认。
  5. 删除完成后留意界面提示的回收体积;若侧边栏仍有个别残留条目,见下文「行为与限制」。

行为与限制

删除是即时且不可逆的

一次请求内移除 log 目录、projcache checkpoint 与 workspace 成员关系,确认后即执行。

正在跑 turn 的会话不能删

若会话当前正在执行一轮对话,需先停止再删。仅驻留在内存、处于 idle 的会话可以删除。

驻留会话与侧边栏残留

Harness 会把已打开的会话留在进程内存,且没有公开的 unload API。删除后记录已无法解析到数据,但插件仍保留 archive 条目(用于在 UI 中隐藏),直到下次启动;启动时的 drain 会去掉最后一条 archive 条目。若侧边栏归档组里仍看到已删会话的空壳,重启应用一次即可让该条目消失。

延迟删除重试

若请求时 log 因罕见原因无法删除(例如仍有句柄占用),对应 id 会写入:

~/.dsh/storages/session-manager/pending-deletions.json

并在下次启动时重试删除。

实现结构(便于审阅源码)

文件 作用
index.js Host:在 webServer 注册 /session-manager/{list,restore,delete};经 ctx.sessionQuery 读语料;改 live workspace 成员;删存储目录
client.js Web:注册 settings.section 页面、样式与导航图标
cordis.patch.yml 插入 session-manager Loader 行
locale/en.json、locale/zh.json Plugin Manager 与 Settings 展示文案
icon.svg 线型图标

适用场景与注意

适合:经常归档大量 Harness 会话、需要按 metadata 检索、想看清磁盘占用并批量恢复或彻底清理归档数据的开发者。

注意:

  • 插件以当前 DSH 进程权限读写 ~/.dsh/ 下会话与存储;安装前请阅读 GitHub 仓库 源码与 MIT 许可证,确认符合你的安全与合规要求。
  • 永久删除不可恢复;删除前务必确认选中项。
  • 社区目录 SkillHub 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系;DSH 生态强调「一切皆插件」,本文事实以仓库 README 与 package 元数据为准。

结尾

会话管理把「已归档 Harness 会话」收拢到设置页:搜索 metadata、看体积、多选恢复或永久删除,并在无法即时删盘时通过 pending-deletions.json 在下次启动重试。若你已在用 DSH 归档对话并关心磁盘与清理流程,可通过 Plugin Manager 的 bundle 安装方式启用该插件。

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

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

Xiaoye