4e7c501b11a38e63cffb653396775cd9a62c78a5
会话彻底删除
DeepSeek Harness(DSH)插件:给会话加上真正不可逆的删除,并清理已删除会话遗留的临时文件。
DSH 原本只能归档会话——归档只是把会话从列表里移开,日志仍然留在磁盘上,越堆越多。这个插件补上的正是这一块:两处删除入口,以及插件页上的临时文件清理。
功能
1. 删除会话
两个入口,行为一致,都会先弹出确认弹窗(Esc 关闭、Tab 焦点圈定、打开时焦点进入、关闭后焦点归位):
- 会话行右侧 ⋯ 菜单 → 删除会话
- 会话行悬停时的 🗑 按钮(在官方的「归档」「置顶」之前,是悬停区的第一个按钮)
确认后一次性处理:
| 对象 | 处理方式 |
|---|---|
| 会话日志 | 整个删除 |
| 子智能体会话 | 递归找出它的全部子会话,连同日志与临时文件一并删除 |
| 工具输出的溢出临时文件 | 删除该会话(含子会话)对应的目录 |
| 工作区登记项 | 解除绑定、取消置顶、取消归档 |
| 会话列表 | 该行立即消失 |
有意不删除:
- 附件:同一份内容可能被多个会话共用,DSH 没有引用计数,跟着一个会话删除会破坏别的会话;
- 派生缓存:由日志生成,读取时带会话身份校验,不会串到别的会话。
2. 清理临时文件
设置 → 插件 → 会话彻底删除,打开插件页就能看到。它清理的是孤儿临时文件——那些属于已经不存在会话的工具输出溢出目录。判定偏保守:
- 只认 DSH 生成溢出目录时的固定命名(
session-加会话 id 哈希的前 12 位),形状不符的一概不动; - 该名字不属于任何已知会话(磁盘上的与正在运行的都算);
- 只在 DSH 的临时目录范围内操作;
- 符号链接一律跳过、不跟随;单项失败只记警告。
结果直接显示在页面上(清理了几个目录、几个文件、释放多少空间),可反复点击。
行为与边界
- 仍在运行的会话无法被插件从内存里移除:它会先被归档并停止,日志与临时文件在下次启动 DSH 时删除(界面会明确提示);在此之前取消归档就会取消这次删除。
- 删除不可恢复,但不是安全擦除:按普通文件删除处理,底层介质上可能有残留。
- 工作区里的代码文件不受影响。
- 临时文件被删除后,fork 出来的会话日志里若仍保留指向它的路径文本,那些路径会失效。
- 指针停在会话行上时,删除按钮的气泡可能和会话行自带的悬停预览卡同时出现。
安装
DSH 的 插件 → 添加插件 里有两个输入,含义不同:
- 上面那个输入框:装什么(包名 / Git 地址 / 本地 tgz 的绝对路径);
- 下面的「安装源」:只决定按包名安装时去哪个注册表查。填 Git 地址或 tgz 时它不参与拉取,保持默认(官方源)即可,不必切到「自定义地址」。
1. Git 仓库地址(推荐)
在上面的输入框里填:
https://gitea.iwake.top/dsh-plugin/session-delete.git#v2.0.2
# 后面可以跟标签或提交,用来锁定版本;不写则取默认分支。仓库是公开的,不需要凭据,也不需要改安装源。
想跟随 2.x 的最新版本,可以把后缀写成 #semver:^2.0.2——以后发了新版本,移除旧版本再装一次就能拿到。
2. 本地 tgz
把仓库打包成 tgz(得到 dsh-plugin-session-delete-2.0.2.tgz),把它在运行 DSH 那台机器上的绝对路径填进上面的输入框。
升级
DSH 暂不支持插件自动更新,升级就是用新标签重装一次(建议先移除旧版本)。装好后刷新页面即可生效。
兼容性
基于 DeepSeek Harness 0.2.0-rc.2 编写,其它版本与平台组合未逐一验证。
License
Languages
JavaScript
100%