dsh-session-batch-manager:Batch Session Management in DSH Sidebar and Session Dashboard

前言

在 DeepSeek Harness(DSH)里用 Web UI 管本地会话时,侧栏默认只能逐条归档,没有批量操作,也没有把会话删掉的主入口。会话一多,想一次性归档或清理旧记录,只能一条条点;想对比各会话用了哪个模型、token 和缓存、上下文还剩多少,也缺少一张总览表。社区维护者 mars401 的 dsh-session-batch-manager 针对这两块空白:侧栏多选后批量归档、恢复与物理删除,并提供一个全屏 Session management 面板,把模型、token 分桶、缓存读写和上下文压力可视化出来。

这是什么

dsh-session-batch-manager 是面向 DSH 的 Web 客户端插件(仓库 mars401/dsh-session-batch-manager),在 host 侧提供删除路由与统计扫描,在 GUI 侧扩展侧栏与会话管理面板。插件以 MIT 许可证发布,当前 package 版本为 0.1.1,要求 DSH >= 0.2.1;README 注明在 DSH 0.2.2-alpha.2(Web UI、dev sandbox)上做过验证。仓库内已提交 lib/ 预构建产物,安装时无需本地 build。

核心功能

侧栏批量管理

侧栏底部有两个入口按钮:Batch(清单图标)切换多选模式;Session management(仪表图标)打开或关闭全屏管理面板。

进入 Batch 模式后,每行会话会出现复选框(默认隐藏)。在该模式下点击整行即可切换选中;打开会话、双击重命名、拖拽排序以及 Enter/Space 等行为会被批量选择接管。退出 Batch 模式后,已选中的高亮和底部浮动工具栏仍会保留;执行任意批量操作(归档 / 恢复 / 删除)完成后会自动清空选择,也可用工具栏上的 Clear 手动清空。

只要至少选中一条会话,侧栏底部会出现浮动工具栏(不限于 Batch 模式),显示选中数量,并提供 Select all、Clear、Archive(若所选全部已归档则变为 Unarchive)、Delete(先确认)以及在 Batch 模式下才有的 Exit。

批量归档时若遇到仍在运行的会话,结果提示会单独列出,并提供与 DSH 原生归档对话框类似的 Stop and archive N running sessions 一键重试。

Delete 会先弹出确认框列出目标会话,确认后走 host 物理删除 JSONL 日志目录,并广播 api-session/removed,各已连接 GUI 会立即移除对应行;客户端另有 tombstone 机制避免已删行短暂复现(详见仓库「Safety and behavior」一节)。

部分 DSH 构建若自带上下文菜单服务,插件会贡献 Batch select sessions 菜单项;在缺少该服务的 0.2.2-alpha.2 上该入口不会出现,其余功能不受影响。

Session management 面板

全屏 Session management 面板会扫描本机全部本地会话,呈现六列表格:复选框 / 会话标题(含 running、subagent、archived、pinned 等标记)/ 模型(provider/model)/ token 用量(四桶合计,单元格 tooltip 可展开 uncached input、cache read/write、output)/ cache read · write / 上下文压力百分比(进度条,≥ 90% 时警告色)。

顶部有四个筛选 chip:All / Main / Subagents / Archived,并显示实时数量;切换筛选会清空面板内独立的选择集(与侧栏选择无关)。面板内可复用与侧栏相同管线的批量归档、恢复与删除。

首次加载会对全部日志做一次扫描:先显示骨架行,再按从新到旧追加行,待处理数量递减并显示细进度条;之后仅重放 revision 变化的会话。统计路由采用 fire-and-forget 扫描,不阻塞响应。面板打开时每约 5 秒轮询一次(可通过 bundle 层配置项 statsPollIntervalMs 覆盖);浏览器标签隐藏时可暂停;面板关闭时 host 无额外轮询开销。单条日志损坏时该行显示警告图标,数值列显示「—」,不拖垮整张表;若 host 的 sessionQuery 不可用,面板会降级为列表加批量操作。

安装与启用

Web 侧通过 CLI 从 GitHub 安装(desktop profile 由官方 Desktop 应用管理,不宜用常规 dsh CLI 改;Desktop 用户应在应用内 Plugins 安装):

dsh plugin --profile web add github:mars401/dsh-session-batch-manager

安装后重启 DSH Web。若浏览器仍加载旧客户端包,用 Ctrl+Shift+R 强制刷新。

可用 status 路由自检(端口换成你的 DSH Web 端口):

curl -s http://127.0.0.1:<your-dsh-web-port>/dsh-session-batch-manager/v1/status
# {"ok":true,"service":"dsh-session-batch-manager","version":"0.1.1"}

可选配置写在 bundle 的 cordis.patch.yml 中,例如:

Key 默认值 说明
routeBase /dsh-session-batch-manager/v1 Host 路由前缀,注入页面为 window.__DSH_SESSION_BATCH_MANAGER__
maxBatchSize 200 单次删除请求允许的会话 ID 上限
trustedHosts [] host fence 额外信任域名(非 loopback 部署时可能需要)
statsPollIntervalMs (见仓库配置表) 管理面板统计轮询间隔

具体默认值以仓库 README 与 cordis.patch.yml 为准。

典型用法

  1. 在 DSH Web 侧栏底部点 Batch,勾选要处理的会话;在浮动工具栏选 Archive、Unarchive 或 Delete,按提示确认。若归档被运行中会话阻塞,在结果通知里使用 Stop and archive 重试。
  2. 点 Session management 打开全屏表,用 All / Main / Subagents / Archived 缩小范围,查看模型与 token、缓存、上下文压力;在表内勾选后做批量归档或删除。
  3. 将鼠标悬停在 token 用量单元格上,查看各 bucket 的 tooltip 明细。

本地开发时可在仓库内 pnpm install、pnpm build,再用本地路径代替 GitHub spec 安装:

dsh plugin --profile web add <path-to-this-repository>

适用场景与注意

适合长期在 DSH Web 上维护大量本地会话、需要批量归档或物理删除、或需要横向对比 token 与上下文占用的开发者。批量删除不可恢复,操作前务必核对确认框中的会话列表。

DSH 生态强调「一切皆插件」;SkillHub 目录页 是社区索引站点,与 DeepSeek / 幻方无官方从属关系。插件在 当前 dsh 进程权限 下运行,安装前请自行审阅 GitHub 源码 与 MIT 许可证。

结尾

dsh-session-batch-manager 补上了 DSH 原生 GUI 在侧栏批量归档/删除与会话级资源可视上的缺口:多选工具栏加全屏 Session management 仪表盘,并与 host 删除、统计扫描打通。目录页:https://www.skillhub.cn/plugins/mars401/dsh-session-batch-manager;源码与完整说明:https://github.com/mars401/dsh-session-batch-manager。

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

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

Xiaoye