前言¶
在 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。
典型用法¶
- 安装并重启 Web 服务后,打开 DSH Web 界面,在左下侧栏设置行上方应看到批量删除与回收站入口。
- 需要整理侧栏时,点 Batch delete,按工作区勾选会话,确认移入回收站;侧栏中对应行会隐藏,会话内容未删。
- 误删或临时隐藏后,点 Recycle bin,选择恢复一条或全部;若确定不再需要,使用永久删除或清空回收站(永久删除走宿主
deleteSession())。
适用场景与注意¶
适合长期在本地 Web 端使用 DSH、会话数量多、希望与宿主「归档」分开做「软隐藏 + 可恢复」的用户。插件以当前 DSH 进程及浏览器同源策略运行;安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。
回收站列表保存在当前源(例如 http://127.0.0.1:<port>)的 localStorage 中。清除站点数据或更换端口会清空回收站列表,后果只是那些会话重新出现在侧栏,不会丢失会话内容本身。
DSH 生态强调「一切皆插件」;社区插件目录托管在独立站点,与 DeepSeek / 幻方无官方从属关系。本插件星标数为 0(以目录页信息为准),不代表功能不可用,使用前仍以 README 与源码为准。
链接¶
- 目录页:https://www.skillhub.cn/plugins/4wgtty4zm7-a11y/dsh-session-recycle-tools
- GitHub:https://github.com/4wgtty4zm7-a11y/dsh-session-recycle-tools
经过上面的步骤,你可以在 Web 侧栏用独立于归档的回收站批量隐藏会话,并在需要时恢复或按宿主方式永久删除。