dsh-session-recycle-tools:Web 侧栏会话回收站与批量删除

前言

在 DeepSeek Harness(DSH)Web 界面里,会话一多,侧边栏会变得难整理。宿主自带的归档会把会话写入工作区的 workspaces.archivedSessionIds,并共用一套「已归档」视图;若你只想临时从列表里清掉一批会话、稍后再恢复,又不想和归档逻辑搅在一起,就需要一套独立于宿主的机制。下面介绍的 dsh-session-recycle-tools(维护者 GitHub 用户 4wgtty4zm7-a11y,分类为客户端插件)在 Web 侧栏底部、设置行上方增加两个入口:批量删除与回收站,回收列表由插件自行维护,与宿主归档互不影响。

这是什么

一句话:为 DSH Web 侧栏增加「批量移入回收站」和「从回收站恢复或永久删除」两个按钮,数据存在浏览器 localStorage,不调用宿主归档 API。

插件不向 Cordis 注册 host 服务、路由或 tool,模型侧看不到它;宿主侧仅有一条 loader,用于让 dsh-client-modules 加载 client.js。当前 package 版本为 0.1.0,许可证 MIT。

侧栏大致顺序如下(设置行仍为宿主自带):

  ☑  Batch delete            <- 本插件
  🗑  Recycle bin            <- 本插件
  ⚙  Settings                <- 宿主

与宿主归档的区别

两者可以并存,彼此不知道对方的存在。

宿主归档 本插件回收站
记录位置 工作区记录里的 archivedSessionIds 插件自有列表,键名 dsh-session-tools.trash.v1(localStorage)
隐藏方式 宿主过滤行 包装 uiWorkspace.isSessionVisible,仅对本列表中的 id 返回 false
恢复 通过宿主取消归档 从列表中移除 id,会话立即回到侧栏
永久删除 依宿主流程 调用 uiWorkspace.deleteSession(),与会话上下文菜单中的永久删除相同

移入回收站不会发起归档请求;永久删除才是调用宿主 deleteSession() 的路径。正在运行的会话会被拒绝移入回收站,对话框会说明原因,避免会话仍在后台运行却从列表消失。若某 id 已从会话列表中完全消失,回收站会在约 60 秒宽限期后自动 prune 该条目。

核心功能

批量删除(Batch delete)

打开对话框:列出全部会话,按工作区分组,带搜索框。可勾选单个会话、整组或全选,确认后仅将选中项移入插件回收站(不是永久删除)。对话框宽度 1240px,标题 20px、描述与会话标题 16px、时间戳与路径 14px、按钮 15px,与宿主正文层级一致。

回收站(Recycle bin)

打开对话框:展示回收站中的会话,按工作区分组,最新在前。支持单条恢复、全部恢复、单条永久删除或清空回收站。

客户端实现要点

client.js 在 apply() 中取得 uiWorkspace,将 isSessionVisible 替换为 (id) => trash.has(id) ? false : original(id),并在 ctx.effect 清理时还原;宿主原有过滤(例如工作台会话过滤)仍经 original(id) 生效。列表变更后会 bump uiWorkspace.sessionVisibility,促使侧栏树重算。若当前 DSH 构建缺少 isSessionVisible,插件仍会记录列表,并在对话框中提示,而不是静默不隐藏。

安装与启用

在已配置 Web profile 的环境中执行官方安装命令:

dsh plugin --profile web add github:4wgtty4zm7-a11y/dsh-session-recycle-tools

安装后重启正在运行的 DSH Web 服务。不会新增 host tool、路由或配置文件。

兼容性:需要能通过 dsh-client-modules 提供 client 插件,且暴露带 isSessionVisible、sessionVisibility、deleteSession 的 uiWorkspace。Node 引擎要求 >=18;peer 依赖 @deepseek-ai/cordis ~4.0.5。

典型用法

  1. 安装并重启 Web 服务后,打开 DSH Web 界面,在左下侧栏设置行上方应看到批量删除与回收站入口。
  2. 需要整理侧栏时,点 Batch delete,按工作区勾选会话,确认移入回收站;侧栏中对应行会隐藏,会话内容未删。
  3. 误删或临时隐藏后,点 Recycle bin,选择恢复一条或全部;若确定不再需要,使用永久删除或清空回收站(永久删除走宿主 deleteSession())。

适用场景与注意

适合长期在本地 Web 端使用 DSH、会话数量多、希望与宿主「归档」分开做「软隐藏 + 可恢复」的用户。插件以当前 DSH 进程及浏览器同源策略运行;安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。

回收站列表保存在当前源(例如 http://127.0.0.1:<port>)的 localStorage 中。清除站点数据或更换端口会清空回收站列表,后果只是那些会话重新出现在侧栏,不会丢失会话内容本身。

DSH 生态强调「一切皆插件」;社区插件目录托管在独立站点,与 DeepSeek / 幻方无官方从属关系。本插件星标数为 0(以目录页信息为准),不代表功能不可用,使用前仍以 README 与源码为准。

链接

经过上面的步骤,你可以在 Web 侧栏用独立于归档的回收站批量隐藏会话,并在需要时恢复或按宿主方式永久删除。

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

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

小夜