DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Baisbt /

Baisbt/dsh-session-manager

Verified

This plugin has no description yet.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@a3831b49

会话管理 · Session manager

DeepSeek Harness(DSH)左侧栏的一个选项卡:把所有工作区和会话摊成一张可筛、可排、可批量处理的表,顺手解决"谁占了 3.2 MB""哪些会话早该归档了""这十个旧会话能不能一次清掉"这类问题。除了这个页面,它还在宿主原生的会话菜单和工作区菜单里各追加一项(永久删除 / 隐藏工作区),让这两件事在原地就能做。

宿主自带的侧栏是按会话一条条往下排的,工作区多了、会话多了以后,磁盘占用和归档状态基本看不出来。这个页面把它们放在一起,并把会写盘的操作(归档、删除、隐藏工作区)都做成需要确认的显式动作。

会话管理页面

截图中的标题、工作区路径、会话 ID 已打码。

侧栏入口

装好后左侧栏多出一个「会话管理」条目,点开即在本页签打开管理页(与「插件」「自动化任务」「上下文洞察」并列)。

侧栏入口

侧栏菜单里多了两项

插件不替换宿主的任何界面,只在自己该在的位置追加两个菜单项 —— 原生的那几项(重命名、在文件夹显示、置顶、分叉、复制 Session ID、归档…)一个都没动,图标、快捷键提示、危险色也都沿用原生规则。

工作区菜单:隐藏工作区

工作区右键菜单

插在「在文件夹显示」之后、「删除工作区」之前,带一个斜杠眼睛图标。点下去会把该工作区名下的会话归档,并把它从工作区注册表里摘除(原生侧栏随之不再列出);它不会删任何数据,恢复入口在管理页左侧树的「已隐藏」分组里。

会话菜单:永久删除

会话右键菜单

插在「在应用中打开」之后、「归档会话」之前,红色、单独分组,不和归档这种可逆动作混排。点下去会先把管理页打开,再在页面里走与批量删除完全相同的确认流程(勾选"我已备份需要保留的内容",一次超过 10 个还要输入数量)。

菜单里的灰色快捷键提示属于宿主原生项,插件新增的这两个菜单项没有绑定快捷键。

页面里有什么

页头:标题,以及一行汇总(工作区数 · 会话数 · 总占用 · 其中已归档数);右侧是搜索框与「列设置」。

筛选栏:状态(全部 / 正常 / 已归档,数字随其它筛选实时联动)、「包含已隐藏工作区」开关;右侧是时间范围(不限 / 近 7 天 / 近 30 天)、大小区间(不限 / 小于 1 MB / 1–100 MB / 大于 100 MB)、排序字段、升降序按钮、刷新。

左侧工作区树:全部会话 / 各工作区 / 未分类;每个节点显示路径与占用大小;页头有折叠全部、展开全部;底部是「已隐藏」分组,可一键恢复。

右侧会话表:

列 内容
勾选框 批量选择;表头那个是全选当前视图
会话 标题(最多三行,超出省略,悬停看全文)+ 相对时间 · 会话 ID 前缀
工作区 工作区短名,隐藏状态的工作区会标记出来
创建 绝对时间(今天 HH:mm / MM-DD)
最后活动 相对时间,每分钟自动重算
大小 该会话整个目录的占用,含日志历史代与投影缓存;悬停会拆开显示「日志 x · 投影缓存 y」
状态 正常 / 已归档 / 运行中
操作 打开会话、归档或取消归档、永久删除

批量栏:勾选任意一条即浮出,显示条数与总大小,可按选择内容提供归档、取消归档、永久删除、取消选择。

脚注:当前显示条数 / 总数。

交互细节

这些是刻意设计成这样的,值得先看一眼:

  • 单击行 = 切换这一行的勾选(再点一次取消,焦点环一起消失);行首勾选框只切换自己。其它已勾选的行不受影响。
  • 方向键只移动焦点环,不改勾选;空格切换光标行的勾选。这样不会"一路按 ↓ 就勾满一屏"。
  • 打开会话只有两条路:行尾的「打开」按钮,或键盘 Enter。双击行不做任何事。
  • 左侧树:单击工作区 = 只看这个工作区的会话;展开后单击某个会话叶子 = 在右侧表里定位并闪一下(不跳转);双击叶子 = 直接跳到该会话对话。
  • 拖动列边界只影响相邻两列:左边加多少、右边就减多少,第三列一动不动;邻居到了自己的最小宽度就停,不会把表挤破。"状态"列负责吃掉剩余宽度,所以表格永远正好填满面板。
  • 列宽有个可读下限:会话列不能窄于 160 像素(再窄标题只能竖排);其它列的下限按表头文字长度算。
  • 列设置里可以拖动排序、勾选显隐(会话列与操作列不可隐藏)、恢复默认,还有一个「按字段名分配宽度」——把可用宽度按各字段名的视觉长度比例分给每一列,字段名越长分得越多,每列保底,差额由"状态"列吸收。
  • 排序:点可排序的表头(会话、创建、最后活动、大小)即按该列排序,再点一次翻转方向;当前列会显示 ↑/↓。工具栏的下拉和升降序按钮与表头是同一份状态。
  • 搜索会同时匹配标题、工作区路径与会话 ID 前缀,命中的片段在标题和工作区名上高亮。
  • 刷新是"重新测量":请求绕开宿主 30 秒的缓存,重新统计每个会话的磁盘占用,完成后用 toast 回报条数。
  • 深色 / 浅色两套配色各自调过对比度:深色靠提亮分层,浅色用更实的线、更深的文字和可见的勾选框边框;切换主题即时生效,原生下拉与滚动条也跟着变。

安装

方式一:从 GitHub 安装

在 插件 面板里添加插件,粘贴仓库地址:

github:Baisbt/dsh-seesion-manager

装好后在插件列表里启用 dsh-session-manager,新会话中生效。

方式二:本地目录

把仓库克隆到任意目录,然后在 插件 → 添加插件 里选择该目录(需要绝对路径)。本地目录安装是"链接"关系,改了文件重载插件即可看到效果,适合改代码。

前置条件

  • DSH 0.2.2-rc.3(Electron 桌面版)上开发并实测;Web 端界面。
  • 无第三方运行时依赖,不需要构建步骤,也没有安装脚本。

它会写盘的地方

这部分请务必读完再操作。

永久删除会话:宿主没有任何会话删除 API,所以本插件直接删文件 —— 会话的日志目录(含历史代 session.v1..v3.jsonl[.zstd])、它的投影缓存文档,以及工作区注册表里的引用。不可恢复,也不进回收站或"已归档"。

  • 正在运行的会话会被拒绝,需要先停止。
  • 附件是内容寻址共享的,删会话不会释放附件空间。
  • DSH 内存里的投影缓存不会自动失效,删完可能需要重启一次。
  • 确认框要求勾选"我已备份需要保留的内容";一次删 10 个以上还要输入数量。

隐藏工作区:工作区记录没有 hidden 字段,原生侧栏也不接受插件过滤,所以"隐藏"的做法是 —— 把它名下的会话全部归档,再把工作区从注册表摘除(这样原生侧栏也不再列出),同时在本机记住路径、标题与会话 ID。点「恢复显示」会重建工作区并把这些会话接回去、取消归档。

  • 隐藏期间这些会话处于归档状态。
  • 当时正在运行的会话会被跳过,留在"未分类"里,不会丢数据。

已知限制

  • 无法让原生侧栏按插件意图隐藏单个工作区(除非整体替换侧栏浏览区,那会在宿主升级时碎掉)。所以隐藏是"归档 + 摘除注册表"这一套。
  • 全文检索不可用:本机 SQLite 后端是内存库(openAt: never),会话内容检索会直接报 SESSION_QUERY_SEARCH_DISABLED,因此搜索只做前端的标题 / 路径 / ID 前缀匹配。
  • 批量操作是 N 次单条调用:宿主没有 bulk 接口,归档和删除都是逐条执行,插件侧限了并发并逐条汇报结果。
  • 排序方向与筛选条件不持久化:刷新页面回到默认(最后活动·降序、不限时间/大小);只有列的顺序、宽度与显隐会记住。
  • 隐藏工作区的记录存在本机浏览器存储里(localStorage),换浏览器或清缓存就丢了(数据本身没丢,工作区会以归档态重新出现)。
  • 刷新是全量重测:一次请求重算所有会话的磁盘占用(上限 500 条),会话很多时需要几秒。

开发

client.js            Web 半:整页 UI(React,模块加载器 CJS 形态)
index.js             Host 半:connection.fetch 路由(统计 / 删除 / 隐藏 / 恢复)
cordis.patch.yml     bundle 的 Loader 补丁,插入一行 Host 插件
package.json         dsh.bundle.patch + dsh.client 声明
locale/{zh,en}.json  界面词条与插件显示元数据
icon.svg             插件图标
scripts/smoke.mjs    离线渲染测试
docs/                设计稿、交互规格、可行性评估与各轮方案记录
design/              早期布局与状态稿(HTML + 预览图)

离线自检(不需要浏览器):

node --check client.js
node scripts/smoke.mjs

scripts/smoke.mjs 会用一套假的模块加载器与 React 桩把页面渲染一遍,跑 20 条断言:服务依赖、两个槽位、字典完整性、列模板与单元格数量、列宽下限、浅色分支、排序与筛选、勾选切换、键盘行为、树叶子跳转等。

改完之后:用插件的关闭/开启重载 bundle(Host 半即时生效),前端改动需要刷新页面。

接口与约束的完整分析在 docs/FEASIBILITY.md,交互规格在 docs/UI-DESIGN.md。

许可

尚未声明许可证。在明确之前,请勿直接再分发或用于商业项目;需要授权可以开 issue 联系作者。

—/ 5

No ratings yet

Verified DSH bundle

Commit a3831b49af72

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout