@xrn1997/dsh-session-delete

sessiontested: passnpmApache-2.0

Adds a trash for DSH sessions: nothing expires automatically. Delete or batch delete moves sessions there, where you can read, restore, or permanently delete them.

下载量 / Downloads
3,196
依赖体积 / node_modules
1.74 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add @xrn1997/dsh-session-delete

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

@xrn1997/dsh-session-delete

![CI](https://github.com/xrn1997/dsh-session-delete/actions/workflows/ci.yml)

![npm version](https://www.npmjs.com/package/@xrn1997/dsh-session-delete)

![License: Apache-2.0](LICENSE)

![Tested with DSH 0.2.0-rc.2 … 0.2.2-rc.1](#安装)

给 DeepSeek Harness(DSH)加一个删除会话的能力。DSH 官方有归档、没有删除——归档只是把会话从列表里挪走,文件还在。本插件补上删除,并且让删除可恢复:删除 = 移入回收站,另有一个显式的「彻底删除」。

  • 安装:dsh plugin --profile <profile> add @xrn1997/dsh-session-delete
  • 许可:[Apache-2.0](LICENSE)
  • 数据:回收站本体留在本机 $DSH_HOME/session-trash/(默认 ~/.dsh/session-trash/),不联网、不上传

目录

  • [功能特性](#功能特性)
  • [安装](#安装)
  • [用法](#用法)
  • [回收站与数据](#回收站与数据)
  • [可调项](#可调项)
  • [界面语言](#界面语言)
  • [常见问题](#常见问题)
  • [开发](#开发)
  • [贡献](#贡献)
  • [许可](#许可)

功能特性

  • 删除 = 移入回收站:会话行「⋯」→「删除」,可随时恢复;删完有一条停 6 秒的撤销提示。删的是当前正打开的会话时,对话会随删除关闭(不会停在「会话不可用」),点撤销会把它重新打开
  • 按整组删:父会话在盘上的子会话与更深后代一起走;任一成员在跑 ⇒ 整组拒绝、零副作用
  • 批量删除:宿主会话列表「⋯」→「多选」,一次确认、一次执行;失败的留在框里可重试,成功的整批撤销
  • 回收站面板:左清单右详情,按项目分组、可折叠、可拖分栏;看得见正文再决定恢复不恢复
  • 详情看得到附件:消息里的图片内联、可点开放大,普通文件给下载 chip;图片加载失败换成占位,不把破图留在屏上(文件下载失败没有页面内提示,浏览器可能把错误响应存成文件)
  • 恢复:单条即点即回,批量带确认;回到各自的原项目目录(删除前你自己归档过的仍保持归档)
  • 显式彻底删除:单条「彻底删除…」与页脚「清空回收站…」共用同一个二次确认;不自动过期
  • 手动清理残留:插件设置页有一张「维护」卡,随时检查两类残留——父会话已不在的子会话,和 .dsh 里已没有任何引用的图片副本;看过数量与体积再由你决定清不清,不自动检查、不自动清理
  • 失败不吞:宿主读不到时把原文上屏并给「重试」;不可用时不注册任何入口
  • 文案随宿主语言:中文 / English 挂在宿主 locale 服务上

安装

dsh plugin --profile <profile> add @xrn1997/dsh-session-delete
dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete

装完重启宿主(Node 半不走 HMR)。卸载只移除插件,$DSH_HOME/session-trash/(默认 ~/.dsh/session-trash/)下已有的目录不会被自动清理。

装法:

  • npm 安装(推荐):使用预构建产物,秒装、无需构建授权。
  • GitHub Release 装(不依赖本包在 npm 上的发布,也不需要构建工具链):发版工作流在 V* tag 上产出预构建 tarball。装最新 Release:

dsh plugin --profile <profile> add https://github.com/xrn1997/dsh-session-delete/releases/latest/download/dsh-session-delete.tgz

钉版本就换成 https://github.com/xrn1997/dsh-session-delete/releases/download/V<版本>/xrn1997-dsh-session-delete-<版本>.tgz;tarball 自带 lib/,装的是预构建产物,宿主能否挂载仍由兼容闸与真机验证决定。宿主不认 URL 形态的参数时,把 .tgz 下到本地再按下面离线分发那条装。Releases 页还没有对应版本时,用 npm 或离线分发。

  • 离线分发:pnpm pack 出 tarball 后 dsh plugin --profile <profile> add ./xrn1997-dsh-session-delete-<版本>.tgz(scoped 包的文件名带作者段)。包里带预构建产物(prepack 会替你跑 build),这条路不需要为构建脚本授权。

兼容性分两层,别混:

  • 装得上由 package.json 的 engines.dsh 决定:宿主拿运行中的版本比这个区间,不满足即拒绝并回滚。窗口是 >=0.1.7-rc.2 <0.3.0-0(预发布版本参与匹配)。地板由两件硬依赖定:sidebar.session.row.leading(0.1.7-rc.2 首现)与 workspaceRegistry.unarchiveSession;0.1.7-rc.2 是第一个同时具备全部所需槽位与服务方法的代次,CLI 台架验过四个槽位齐全、激活零错误。更低的 0.1.7-rc.1 缺行首勾选槽位;0.1.7-alpha、0.1.6、0.1.5 还缺会话行菜单/行尾槽位或 unarchiveSession,不要装。
  • 真跑过由 dsh.compatibility.dshReleases 记录,只列桌面真机实测过的宿主:DSH Desktop 0.2.0-rc.2、0.2.1-rc.1、0.2.1-rc.2、0.2.1-rc.3、0.2.1-rc.5、0.2.2-rc.1(均 compatible)。窗口内的其他代次装得上但没在桌面真机上验过,不作为推荐目标;窗口外的一律拒装。
  • 部署注意:exact Fetch 路由的 owner principal 校验(非 owner 回 403)自 0.2.1-alpha.3 起才有;更早的代次(含 0.2.0-rc.2)只有宿主 /api 的 trusted-host / 浏览器认证。单机 web / 桌面标准组合可用;要跑多 Peer 部署,优先名单里带这道校验的实测代次(0.2.1-rc.1 起)。

用法

删一条:会话行「⋯」→「删除」→ 确认框。确认框在点之前就说明这一组的规模(「含 N 个子会话,将一起移入回收站」,N>0 才出现),删完那条提示点「撤销」即恢复。

删除按整组走:父会话在盘上的子会话与更深后代一起移走(传递闭包,一层层取到底)——那些行宿主本来就不显示。这里的子会话只指宿主 origin:"subagent" 的会话;用「在新对话中分支」产生的普通 fork 是独立会话,删父、恢复都不动它。任一成员在跑(包括列表里看不见的子会话)⇒ 整组拒绝、零副作用,报的是那个运行中的 id;本插件不替用户终止正在进行的活。

删一批:会话行「⋯」→「多选」进入显式模式。模式内点整行勾选/取消且不切换会话,行首出勾选框,浮条常驻(0 条也给退出入口),同一位置在「全选 / 取消全选」之间切换。确认框逐条列出这批会话,执行是一次批量请求:部分失败不关框、原文落在失败那一行,按钮变成「重试这 N 条」,成功的 6 秒内可整批撤销。

管回收站:侧栏面板里的「回收站」一行(与「插件」同层)。左清单右详情(中央列更窄时改成下钻,「← 返回清单」回来),按项目分组、组头可折叠、两栏之间那根线可拖。详情按块展示这条会话的对话全量:你的提问、宿主注入的上下文、助手文字与思考、工具调用与结果、系统消息与压缩摘要。注入、思考、工具等默认折叠,可逐块或一键展开;长会话顶部有「加载更早」。助手文字与思考按 Markdown 排版,你的提问保持原话。跟着父会话一起进来的子会话不占清单行,入口在父详情的「子会话」段:点一条即切到那个孩子的详情(元信息、正文与分页同一套),头部「← 返回父会话」回到父。

  • 恢复:单条不需要确认框,放回原项目目录(删除前你自己归档过的仍保持归档;旧版本留下的归档态条目会迁移式取消归档)。原工作区已被删掉也照常恢复(跳过账本挂接,归入「未分组」),清单行在点之前就说这句。
  • 批量恢复 / 批量彻底删除:工具栏「多选」进入,页脚换成两颗动作按钮。组头那颗是三态勾选框,点它选上这个项目的全部会话(含折叠起来看不见的)。两者都先确认,逐条执行、失败不连坐,失败的原文留在它自己那行。
  • 彻底删除 / 清空:共用同一个二次确认。单条那张卡片报的是这一次会释放多少(父 + 跟着进来的孩子 + 仍留在盘上的后代,与头部合计共用同一算式)。「清空回收站…」先把回收站目录与清单对账一遍再清,所以手工搬进 session-trash/ 的认得出的目录也归它管;认不出的外人目录不动也不列。
  • 残留维护在插件设置页:父会话已不在(既不在会话列表、也不在回收站清册)的子会话宿主客户端整排不显示,回收站里也不会有;.dsh 附件库里也可能留下没有任何引用的图片副本。插件详情页的「维护」卡分「孤儿会话」「孤儿附件」两段,都是手动:点「检查」只读,看过数量、体积与图片缩略图再确认清理,清完自动重查;永久删除、不搬进回收站、绝不自动跑。回收站面板不再扫描残留,顶上只保留彻底删除 / 清空之后的附件清理提示。

回收站与数据

东西 · 位置

回收站本体 · $DSH_HOME/session-trash/<时间戳>-<原目录名>/(默认 ~/.dsh/session-trash/…)

回收站清单 · 本插件自己的 storage domain(介质在 $DSH_HOME/storages/,默认 ~/.dsh/storages/)

  • 回收站与 $DSH_HOME/sessions/(默认 ~/.dsh/sessions/)同卷:搬进搬出靠整目录 rename,原子、瞬时。
  • 一格目录 = 一个会话:父会话与跟着它进来的子会话各占一格,面板上折成一行。手工翻回收站目录时看到比清单多的目录,那是子会话。
  • 清单丢了不致命:会话文件自描述,解压后第一行即 header,含 id 与 cwd;读取回收站列表(以及清空、恢复、彻底删除与清理无主子会话前)会先与回收站目录对账。
  • 不自动过期:不设天数上限,清空是显式动作;界面显示条数与共可释放量(与彻底删除确认同一口径)。
  • 附件:宿主把对话里的图片/文件副本存在 $DSH_HOME/attachments/v1。彻底删除会话时,只清理只被这些会话引用的图片副本;共享副本保留,你磁盘上的原图不受影响。普通文件附件目前只渲染、不代删。设置页「维护」卡的「孤儿附件」段可以手动清掉 .dsh 里已经没有任何引用的图片副本,同样只动这些副本、源文件不受影响、共享引用保留。
  • 无主子会话不在回收站里:它们的父会话已不存在;清理只清会话目录与会话独占的图片副本(宿主投影缓存不包含在内,共享图片保留,你磁盘上的原图不受影响)。检查与清理都在插件设置页的「维护」卡里手动发起。
  • 回收站本体留在本机、不联网、不上传。

可调项

三只旋钮都有默认值,在宿主 profile 的 cordis.patch.yml 里改;不需要改代码:

键 · 默认值 · 作用

`orp

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::13,最后更新 2026-11-05

Links

GitHub · Homepage · npm

Same category