dsh-session-tools: Manage Sessions and Associated Files in the DSH Sidebar

前言

在 DeepSeek Harness(DSH)里,一个 Session 往往对应一长段对话,还会通过工具调用在工作区里留下 write、edit、apply_patch 等操作产生的文件。侧边栏只负责列出和切换 Session,自带的归档(Archive)主要是隐藏行,并不能按你的意图「锁住」「整包挪走」或「删了还能找回」。会话一多,误删、跨工作区整理、批量清理都会变得棘手。

下面介绍的 dsh-session-tools 是社区维护的客户端插件,在侧边栏上补齐 Session 级管理能力:锁定、回收站、跨工作区移动,以及按工作区分组的批量操作,并尽量带上该 Session 在工作区内写过的文件。

这是什么

  • 名称:dsh-session-tools(GitHub:panhaiyao1982-bit/dsh-session-tools)
  • 维护者:panhaiyao1982-bit
  • 分类:客户端(注入 DSH Web 侧边栏与叠加层 UI)
  • 定位:为 DeepSeek Harness 侧边栏提供 Session 管理:锁定、回收站、移动,以及批量处理;除你明确选择的「直接删除」外,其余路径在回收站中可恢复。

插件以当前 DSH 进程权限读写本机 ~/.dsh/ 下的 Session 存储与注册表。安装前建议自行查看仓库源码与 MIT 许可证,确认是否符合你的安全与合规要求。

界面里多了什么

位置 能力
Session 行 ⋯ 菜单 锁定/解锁 · 删除 Session 及文件… · 移动到另一工作区…
Session 行尾部 已锁定 Session 显示锁定标记
侧边栏底部(Settings 旁) Manage(批量管理)· Recycle bin(带数量)
全屏叠加层 批量面板、回收站、移动对话框、确认框

安装并重启应用后,底部应出现 Manage 与 Recycle bin。

四类核心操作

锁定(Lock)

锁定后,该 Session 不能被删除或移动。锁定状态写在 ~/.dsh/session-tools/state.json,重装插件后仍会保留。锁定不阻止正常对话,也不阻止 DSH 自带的 Archive(归档仅隐藏 Session)。

删除 Session 及文件

菜单里只有一项「删除」,但会再问你想怎么走:

  1. 移到回收站 — Session 及其写过的工作区文件一并进入回收站,可恢复;原文件路径会记录,恢复时按原路径放回。
  2. 直接删除 — Session 日志与相关文件从磁盘移除,不可撤销,因此是单独按钮且非默认。

回收站(Recycle bin)

可对条目执行:恢复、永久删除、清空。日志与文件存放在 ~/.dsh/session-tools/trash/<entry>/(含 session/,若连同文件删除则还有 files/)。

移动到另一工作区

Session 与其写过的工作区文件一起迁到目标工作区。这是真实的归属变更:头部帧的 cwd 改写为目标路径,日志目录迁入目标工作区的 Session 目录,工作区注册表中的 Session 记账会重指向。重启后侧边栏应仍显示在新工作区,而不会把行「弹回」原处。

批量管理(Manage)

按工作区分组展示 Session(默认折叠),支持单选、组内全选,再对选中项批量锁定/解锁/删除/移动。某一 Session 无法处理时不会中断整批:已锁定、运行中、已在回收站或已不存在的条目会被跳过,面板会说明拆分结果。

「运行中」如何判断

插件不依据「是否在内存里」——侧边栏会对打开过的 Session 长期驻留,单靠内存会把闲置 Session 误判为不可删。它查询 DSH 的 workspace/session-activity 通道(与内置归档同一信号):只有对话轮次、子代理、后台任务或计划任务等真正在跑时才拒绝删除,并会指明原因。仅打开但未活动的 Session 可以删除,页面会移除对应行。

会动到哪些路径

  • ~/.dsh/session-tools/ — 插件自有状态:锁定、回收站条目、移动历史、构建戳记等。删除该目录会清掉锁定与回收站,不影响其他 DSH 数据。
  • Session 存储 ~/.dsh/sessions/<workspace>/<session id>/ — 删除或移动时涉及的对话日志;除移动时改写头部 cwd 外,其余帧按字节复制。
  • 工作区注册表 ~/.dsh/storages/workspace.json — 移动或删除时更新双方工作区的 Session 账本。

「Session 写过的文件」指其日志里通过 write / edit / apply_patch 记录、且限定在当前 Session 工作区内的路径;不会动其他 Session 的文件,也不会动该 Session 从未写入的路径。

安装与兼容

环境要求(见仓库 package.json):

  • DSH:>=0.2.2-rc.1 且 <0.3.0-0
  • Node:>=22.15

安装(README 原文):

# 自 npm 发布后即可使用
dsh plugin add dsh-session-tools

# 或直接从本仓库安装(无需构建)
dsh plugin add github:panhaiyao1982-bit/dsh-session-tools

安装后需重启一次 DSH,侧边栏底部才会出现 Manage 与 Recycle bin。

平台:macOS、Linux、Windows 均可;插件内无平台分支。路径编码与 DSH JSONL 存储对齐,Windows 大小写不敏感比较、回收站清单中的相对路径统一用正斜杠等细节在 README 中有说明。跨盘移动(如 Windows C: → D:)在 fs.rename 失败时会回退为复制后删除。移动依赖 @deepseek-ai/dsh-workspace 的注册表能力;若注册表不可用,插件会失败关闭(registry/unavailable,不改动数据)。

当前仓库版本为 0.1.7,许可证 MIT。

典型用法(可复现流程)

  1. 保护重要会话:在 Session 行打开 ⋯,选择锁定;行尾出现锁定标记,误删/误移会被拒绝。
  2. 软删除待整理会话:⋯ → 删除 Session 及文件 → 选择「移到回收站」;需要时在底部 Recycle bin 恢复或永久清理。
  3. 跨项目迁移上下文:⋯ → 移动到另一工作区,选择目标;对话与关联文件随 Session 归属到新工作区,重启后仍在新处。
  4. 批量收尾:点 Manage,按工作区展开,勾选多条 → 统一锁定、删除或移动;注意面板对「跳过」条目的说明。

除「直接删除」与回收站内的「永久删除/清空」外,其余操作可在回收站中撤销。

适用场景与注意

适合:长期跑 DSH、多工作区、多 Session 的开发者;需要把某次智能体会话连同其改过的文件一起归档、迁移或分批清理的场景。

注意:

  • 插件与 DSH 同权限访问本机文件与 ~/.dsh 配置,安装前请审阅 GitHub 仓库 源码。
  • 移动功能依赖内部工作区注册表接口,非公开 API;大版本升级 DSH 后应重新验证插件是否仍符合 engines.dsh 范围。
  • 社区插件目录 SkillHub 条目 与 DeepSeek / 幻方无官方从属关系;生态理念是「一切皆插件」,以仓库 README 与发行说明为准。

结尾

dsh-session-tools 把 Session 从「只能切换和归档」推进到可锁定、可进回收站、可连文件搬家、可批量处理,并尽量让非直接删除的路径可恢复。若你正在用 DSH 0.2.x 线且 Node 满足要求,可按上述命令安装,重启后在侧边栏底部即可使用 Manage 与 Recycle bin。

  • 目录页:https://www.skillhub.cn/plugins/panhaiyao1982-bit/dsh-session-tools
  • 源码与文档:https://github.com/panhaiyao1982-bit/dsh-session-tools
羽毛球分组比赛记分
小程序二维码

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

Xiaoye