dsh-archived-sessions:在 DSH Web 里集中管理已归档会话

前言

用 DSH 跑了一段时间智能体任务后,本地会话会越积越多:列表里新旧会话混在一起,想找最近那一次对话要往下翻很久;哪些会话占了多少磁盘,也得手动去看记录目录。这些问题不涉及智能体本身的能力,但对日常使用影响不小。

下面介绍的 dsh-archived-sessions 插件,就是针对这件事:它在 DSH Web 左侧栏加一个「归档会话」入口,把旧会话收起来,同时提供搜索、批量操作、详情查看和删除本地记录的能力。

这是什么

dsh-archived-sessions 是一个 DSH Web 插件,作者为 lwklbb,采用 MIT 许可证,package.json 中的版本为 0.2.1,engines 要求 Node >= 20。

它解决的问题是:在 DSH Web 内集中管理已归档和未归档的本地会话,支持归档、移出归档、搜索、批量操作、查看详情、打开记录文件夹和删除本地记录。安装后不需要跳转页面,所有操作都在 DSH Web 界面内完成。

核心功能

左侧栏入口与统计

安装后,DSH Web 左侧栏会多一个「归档会话」按钮,按钮右侧显示已归档会话数量。点击后在中间区域打开管理面板,面板右上角提供「刷新」和「关闭」。

面板顶部有「归档会话」和「全部会话」两个标签页,统计区显示三项内容:已归档数量、未归档数量、已归档会话占用的记录空间。

列表、搜索与分组

列表中每个会话显示标题、记录大小和最近更新时间。搜索框支持按标题或会话 ID 过滤。

视图有两种:

  • 普通列表视图;
  • 按工作区分组(在「全部会话」页),没有工作区归属的会话归入「未分组」。

子代理会话会缩进显示在父会话下面;父会话不存在时,作为普通行显示。

批量操作

支持单选、全选和拖动连续勾选。在「全部会话」页可以把选中会话批量归档;在「归档会话」页可以把选中会话批量移出归档;也支持批量删除,删除前会弹出确认框。

需要注意批量操作的规模:一次请求最多处理 100 个会话,宿主端按顺序执行。

会话详情

点击行尾箭头可以展开详情,内容包括:

  • 记录目录占用空间、最后更新时间;
  • 轮次、步骤、用户消息、回复消息、工具调用、附件数量;
  • 工具使用统计,例如 pwshgrepwriteread
  • 网络获取 / 下载记录;
  • 下载或产出的文件;
  • 父会话和子会话 / 分叉关系。

这些统计对判断「哪些旧会话可以清理」很有用:记录大小和活动情况一目了然,不用再手动翻目录。

打开记录文件夹与产出文件删除

「打开记录文件夹」会调用系统文件管理器,直接打开该会话的记录目录,方便手动备份或检查原始记录。

详情里的产出文件可以勾选后删除。删除时会检查两件事:文件是否在已登记工作区内,以及是否属于该会话的产出文件列表。

删除规则

删除有明确的保护边界:

1、当前打开的会话不能删除。
2、运行中的会话不能删除。
3、删除是非级联的:只删除选中的会话记录,不会连带删除子代理、分叉会话或产出文件。
4、删除已失效的归档项时,会顺便清理归档列表里的无效 ID。

非级联意味着想彻底清理一组会话,需要分别勾选后再删,这一步不会「误伤」关联记录。

本地接口

插件宿主端使用 /archived/api/* 本地接口,只接受本机同源的 POST 请求。归档、移出归档、删除、打开文件夹等操作都在本机 DSH Web 进程内完成,不涉及外部服务。

安装与启用

先确认本机 Node 版本满足 Node >= 20,再执行下面的命令安装插件:

dsh plugin --profile web add https://codeload.github.com/lwklbb/dsh-archived-sessions/tar.gz/refs/heads/main

如果 pnpm 拦截构建脚本,可以加上 --ignore-scripts

dsh plugin --profile web add https://codeload.github.com/lwklbb/dsh-archived-sessions/tar.gz/refs/heads/main --ignore-scripts

本地开发调试时,在项目目录内安装:

dsh plugin --profile web add . --ignore-scripts

安装完成后重启 DSH Web,左侧栏即可看到「归档会话」入口。

典型用法

经过上面的步骤,插件已经可用。日常使用流程如下:

1、打开左侧栏的「归档会话」。
2、在「全部会话」里搜索和勾选要隐藏的旧会话,点击「归档」。
3、在「归档会话」里查看已归档内容;需要恢复时点击「移出归档」。
4、展开会话可以查看记录大小、活动统计、工具使用和产出文件。
5、确定不再需要的会话,可以勾选后删除。

适用场景与注意

这个插件适合两类人:

  • 长期使用 DSH、本地会话数量增长明显,希望把旧会话收起来又不丢失记录的用户;
  • 关心磁盘占用,想看清各会话记录大小、工具调用和产出文件,再决定是否清理的用户。

使用前有几点需要留意:

1、插件以当前 dsh 进程的权限运行,宿主端可以读取会话记录和磁盘状态、调用系统文件管理器。安装前建议先检查仓库源码和许可证。
2、批量操作一次请求最多处理 100 个会话,超大清理任务需要分批进行。
3、删除是非级联的,子代理、分叉会话和产出文件不会被连带删除;反过来,想彻底清理时也要分别勾选。
4、删除操作有确认框,且当前打开和运行中的会话受保护,但仍建议对不确定的会话先归档而不是直接删除。

结尾

dsh-archived-sessions 做的事情不复杂:给 DSH Web 补上会话归档这一层管理能力,归档、恢复、统计、删除都在本机完成。对会话积累较多的用户,这是一个直接改善使用体验的小插件,也符合 DSH「一切皆插件」的设计思路。

DSH 插件目录页:https://www.skillhub.cn/plugins/lwklbb/dsh-archived-sessions
GitHub 仓库:https://github.com/lwklbb/dsh-archived-sessions

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

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

小夜