DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

595708049 /

595708049/dsh-session-purger

Verified

彻底删除 DSH 会话记录 / Permanently delete DSH session records from the sidebar context menu — log directory, projection cache and workspace registration, with a confirmation dialog.

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@8ab859ba

dsh-session-purger

彻底删除 DSH 会话 —— 右键左侧会话列表中的任意一条,即可把该会话从磁盘上真正删掉。

A DSH plugin that permanently deletes session records (logs, projection cache, workspace registration) from the sidebar context menu.

用法 / Usage

  1. 刷新一次 Web GUI 页面(让客户端包加载)。
  2. 在左侧会话列表上右键任意会话 → 菜单底部的红色「删除会话」(一级菜单项,点它直接进确认框,没有二级菜单)。
  3. 弹出二次确认对话框,点「删除」才真正执行;点「取消」、按 Esc 或点空白处都会中止(不会发出任何请求)。
  4. 一个入口覆盖所有情况:正在跑一轮的会话也能删(删完当前页面会失去该会话,正在进行的对话无法继续),确认框正文对此有明确提示。

删除成功后侧栏立即消失,输入框的 @ 候选也会同步消失(两者都来自同一份会话存储列表)。

右键菜单 二次确认

清理空白会话 / Clean blank sessions

每次点「新建会话」都会留下一条只有记录头、从没输入过任何内容的空白会话,它们同样会出现在 @ 候选里(没有标题时显示成裸 session-id)。在左侧工作区标题上右键 → 紫色的「清理空白会话」,一次清掉当前工作区的所有空白会话,同样有二次确认。

紫罗兰配色(#a78bfa)的图标和文字用来和上面红色的「删除工作区」区分:它清掉的只是空壳记录,不是整个工作区。

Right-click a workspace header → the violet “Clean blank sessions” to remove every never-used session in that workspace at once.

清理空白会话

它到底删了什么 / What it deletes

位置 内容
~/.dsh/sessions/<项目目录>/<sessionId>/ 会话日志 session.v4.jsonl.zstd(整个目录递归删除)
~/.dsh/storages/session_projcache/sessions/<sessionId>.json 标题 / 统计等投影缓存
~/.dsh/storages/workspace.json 从工作区 sessionIds 摘除,并清除归档 / 固定标记

安全说明 / Safety

  • 删除不可恢复,没有回收站。重要会话请先备份 ~/.dsh/sessions/ 下对应目录。
  • 只有正在跑一轮的会话会被宿主阻止(接口返回 409 in-use);插件对这类会话同样直接带 force: true 请求,因此菜单里只有一个「删除会话」入口,不会因为会话在跑而失败。仅仅“打开过”不算占用。
  • 「清理空白会话」只删零事件会话:日志解压后除记录头外没有任何内容(且不超过 1 KB);运行中的会话会被跳过并在提示里注明。
  • 宿主侧接口:POST /dsh-session-purger/delete,body {"id": "<sessionId>", "force": true}(插件固定传 force: true,二次确认框是唯一的拦截点);GET /dsh-session-purger/list 列出可删除的会话(每行带 live 与 running);GET /dsh-session-purger/empty[?cwd=…] 列出空白会话;POST /dsh-session-purger/clean-empty body {"cwd": "<可选,限定工作区>"} 批量清理。

安装 / Install

从本地目录安装:

dsh plugin --profile desktop add file:<path-to-this-repo>

或从 GitHub 安装:

dsh plugin --profile desktop add github:595708049/dsh-session-purger

装好后重启 DSH 或重载插件,然后刷新页面。

本地 file: 依赖是文件复制而非符号链接,改完源码要把文件同步到 ~/.dsh/profiles/desktop/node_modules/dsh-session-purger/ 再重载插件。

开发备注

  • 宿主入口 index.js:注册 webServer exact 路由。注册是幂等的(先查 server.exact 再 mount),因为桌面端禁用插件时不会卸载已注册的路由,重复注册会抛 webserver: duplicate exact route 导致整个插件条目不激活。
  • 浏览器入口 client.js:window.__ModuleLoader__.load({ id, factory }) 外壳,通过 contextMenus.register({ target: 'session' }) 挂右键菜单,单个一级项「删除会话」(run 直接走确认框,不再有 children 子菜单),图标通过 keyed slot contextMenu.icon 注册(key dsh-session-purger.delete)。
  • 菜单项没有颜色字段:icon 走 keyed slot 自定义组件(外层 span 设 color,图标描边是 currentColor),文字则直接把带 style.color 的 React 元素传给 label —— 宿主用 children: action.label 渲染,不校验类型,所以不需要 MutationObserver。
  • 二次确认框是自己画的 DOM 模态框(confirmDialog(),z-index 2147483000),因为客户端插件 API 没有 dialog / confirm 服务;取消走 Esc、点背景、点「取消」三条路径,全部在发出请求之前返回。
  • 删除顺序很重要:先把 sessionId 从 workspace 摘除,再删日志目录 —— workspace.sessionIds 会按 candidateMatches 过滤,目录一删就无法再匹配,detach 会变成空操作。

License

MIT

—/ 5

No ratings yet

Verified DSH bundle

Commit 8ab859bad049

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