
Zephyr-vibe/dsh-archived-sessions
dsh-archived-sessions
DSH Session Manager: manage conversations, archive/restore, delete safely, open record folders.
Install
npx @deepseek-ai/dsh plugin --profile web add https://codeload.github.com/Zephyr-vibe/dsh-archived-sessions/tar.gz/refs/heads/mainRestart `dsh web` after install. Bundle APIs can change during the developer preview.
README badge
[](https://dshhub.dev/plugins/dsh-archived-sessions)Paste this into your README. The star count updates with every catalog sync.
From the README
Excerpt from Zephyr-vibe/dsh-archived-sessions, cleaned of badges and images.
dsh-archived-sessions(DSH 会话管理)
中文
一个 DSH Web 插件:在「设置」中提供会话管理,统一管理本机上的所有对话。
功能
- 双标签页:所有对话(未归档)与归档会话
- 视图切换:单列表或按工作区分组(无工作区归属的会话兜底归入「未分组」)
- 按标题 + 相对时间浏览对话,最近的排在最前
- 搜索框:按标题或 ID 实时过滤会话列表
- 勾选 / 拖动批量勾选 / 全选 / 批量归档(记录保留)/ 批量删除(永久删除,带确认弹窗)
- 「删除会话」入口已移至会话头部(适配 DSH 0.1.0-rc.8):rc.8 起官方侧边栏行菜单(⋮)不再开放插件注入点(只剩 重命名/分叉/归档),删除按钮改放在打开的会话标题栏(🗑 垃圾桶图标)——确认弹窗可细粒度勾选删除其下子对话 / 下载·产出文件 / 整个文件夹,默认只删会话本身
- 归档页支持移出归档(回到所有对话)
- 打开记录文件夹按钮:在系统文件管理器中打开所选会话的记录目录,跨平台(
explorer/open/xdg-open) - 每行可展开详情(默认收起):占用空间、最后更新、活动统计(轮次、步骤、消息数、工具调用分布、fetch 记录)、产出/下载文件、父会话与子会话(分叉)
- 子代理会话嵌套显示在父会话下方(缩进 + 「子代理」徽标);父会话被删除或缺失时自动浮出为顶层行
- 删除父会话不会级联:子代理、分叉、下载/产出文件均保留,除非你显式勾选它们——避免误删
- 当前打开的会话显示「当前会话」徽标,且不可删除
截图
<p>归档会话视图 / 子代理会话嵌套在父会话下</p> <p>详情面板(含活动统计、产出文件、关联对话)</p> <p>会话头部「删除会话」入口(rc.8 起删除入口移至会话头部)</p> <br /> <p>删除确认弹窗——可勾选删除其下子对话 / 下载·产出文件 / 整个文件夹</p>安装
方式一:直接 tarball 安装
dsh plugin --profile web add https://codeload.github.com/Zephyr-vibe/dsh-archived-sessions/tar.gz/refs/heads/main
如果 pnpm 拦截构建脚本,在命令末尾加 --ignore-scripts:
dsh plugin --profile web add https://codeload.github.com/Zephyr-vibe/dsh-archived-sessions/tar.gz/refs/heads/main --ignore-scripts
方式二:让 agent 安装
告诉你的 DSH 智能体:
帮我把这个项目安装为插件:https://github.com/Zephyr-vibe/dsh-archived-sessions
agent 会下载项目、放入 profile 的 node_modules 并注册到 dsh.profile.bundles。
安装后重启 web 端,即可在「设置」中看到「会话管理」入口。
兼容性
- 零配置:会话目录按官方 DSH 布局(
$DSH_HOME/sessions/<project-key>/<session-id>/)自动识别,无需核心补丁 - 归档 / 恢复:基于官方
archiveSession相同的registry状态原语实现 - 删除不级联:只删除所选会话,子代理、分叉与文件均保留;运行中的会话拒绝删除(409)
- API 仅信任本机请求(127.0.0.1 / localhost / ::1);仅使用官方公开 API(
workspaceRegistry、sessionPersistence)
更新日志
0.1.5
背景:适配 DSH 核心 0.1.0-rc.8 更新。 rc.8 移除了官方
workspaceRegistry.deleteSession与sessionPersistence.remove,官方侧边栏会话行菜单(⋮)也只保留 重命名/分叉/归档 且不再开放插件注入点——本版本针对这些变化重做删除链路、补回删除入口,并修复升级过程中暴露的若干问题。
- 修复:删除后 live 会话残留(核心 rc.8 兼容)——rc.8 移除官方删除原语后,旧版删除只做工作区 detach + 磁盘清理,会漏掉仍挂在 sessions store 里的 live 会话:删除后它依旧出现在列表,且因工作区已 detach 而落入「未分组」(重启后才会消失);现在删除前先 flush 全部目标会话日志,删除后用官方公开原语
SessionStore.liveEntryFor + detachEntered摘除 live 会话(广播session/disposed,持久化状态同步清理),并保持 0.1.3 的「只删自己 / 不级联」语义不变 - 修复:删除会话后残留空文件夹——「删除文件」模式(filePaths)与「保留文件」模式(deleteFiles=false)之前只删记录 log、会话目录残留为空壳;现在所有删除分支最终都会清理会话目录(工作区产出文件不受影响),并等待 persistence retire 落定后兜底重删(防尾部 flush 自动 mkdir 重建目录)
- 修复:点开会话详情面板崩溃变空——文件分组代码引用了浏览器端不存在的 node
sep变量(0.1.4 回归),当会话产出文件位于工作区内子文件夹时抛ReferenceError: sep is not defined,被错误边界捕获后整个会话管理区域空白;已改为字面分隔符拼接 - 「删除会话」按钮从行菜单移到会话头部(rc.8 适配)——rc.8 侧边栏行菜单(⋮)不再开放插件注入点(只剩 重命名/分叉/归档),删除入口改放到打开的会话头部操作区(官方
conversation.session.header.actionsslot,自动携带 sessionId),带确认弹窗走/archived/api/delete,发布后任何导入本插件的部署都能获得删除能力 - 头部删除弹窗带细粒度选项:与设置面板一致——可勾选删除其下子对话(子代理,含孙级)与下载/产出文件(可展开查看具体列表、显示路径开关),默认都不勾选(只删会话本身)
- 增强:头部删除弹窗显示可整删的文件夹节点——文件按父目录归组,工作区根以下的子文件夹显示为 📁 节点(可展开、可勾选整删),工作区根本身绝不可整删;details API 新增返回
cwd作为根判断依据(取不到 cwd 时宁可不推导文件夹) - 修复:头部删除弹窗展开详情崩溃——
baseName原本定义在设置面板组件闭包内,头部删除弹窗访问不到(ReferenceError: baseName is not defined,slot 入口崩溃导致删除按钮消失);已提升为模块级函数,两处共用 - 增强:检测 shell 命令创建的产出文件——详情/删除的文件列表原先只认
write/edit工具的file_path;现在也解析pwsh/bash的Set-Content/Add-Content/Out-File/New-Item及>/>>重定向中的路径(经 stat+isFile 存在性过滤,排除目录与残留 token)
0.1.4
…
