前言¶
在 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 及文件¶
菜单里只有一项「删除」,但会再问你想怎么走:
- 移到回收站 — Session 及其写过的工作区文件一并进入回收站,可恢复;原文件路径会记录,恢复时按原路径放回。
- 直接删除 — 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。
典型用法(可复现流程)¶
- 保护重要会话:在 Session 行打开
⋯,选择锁定;行尾出现锁定标记,误删/误移会被拒绝。 - 软删除待整理会话:
⋯→ 删除 Session 及文件 → 选择「移到回收站」;需要时在底部 Recycle bin 恢复或永久清理。 - 跨项目迁移上下文:
⋯→ 移动到另一工作区,选择目标;对话与关联文件随 Session 归属到新工作区,重启后仍在新处。 - 批量收尾:点 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