Files

84 lines
3.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 会话彻底删除
DeepSeek Harness(DSH)插件:给会话加上**真正不可逆的删除**,并清理已删除会话遗留的临时文件。
DSH 原本只能归档会话——归档只是把会话从列表里移开,日志仍然留在磁盘上,越堆越多。这个插件补上的正是这一块:两处删除入口,以及插件页上的临时文件清理。
## 功能
### 1. 删除会话
两个入口,行为一致,都会先弹出确认弹窗(Esc 关闭、Tab 焦点圈定、打开时焦点进入、关闭后焦点归位):
- 会话行右侧 **⋯** 菜单 → **删除会话**
- 会话行悬停时的 🗑 按钮(在官方的「归档」「置顶」之前,是悬停区的第一个按钮)
确认后一次性处理:
| 对象 | 处理方式 |
| --- | --- |
| 会话日志 | 整个删除 |
| 子智能体会话 | 递归找出它的全部子会话,连同日志与临时文件一并删除 |
| 工具输出的溢出临时文件 | 删除该会话(含子会话)对应的目录 |
| 工作区登记项 | 解除绑定、取消置顶、取消归档 |
| 会话列表 | 该行立即消失 |
有意**不**删除:
- **附件**:同一份内容可能被多个会话共用,DSH 没有引用计数,跟着一个会话删除会破坏别的会话;
- **派生缓存**:由日志生成,读取时带会话身份校验,不会串到别的会话。
### 2. 清理临时文件
**设置 → 插件 → 会话彻底删除**,打开插件页就能看到。它清理的是**孤儿**临时文件——那些属于已经不存在会话的工具输出溢出目录。判定偏保守:
1. 只认 DSH 生成溢出目录时的固定命名(`session-` 加会话 id 哈希的前 12 位),形状不符的一概不动;
2. 该名字不属于任何已知会话(磁盘上的与正在运行的都算);
3. 只在 DSH 的临时目录范围内操作;
4. 符号链接一律跳过、不跟随;单项失败只记警告。
结果直接显示在页面上(清理了几个目录、几个文件、释放多少空间),可反复点击。
## 行为与边界
- **仍在运行的会话**无法被插件从内存里移除:它会先被归档并停止,日志与临时文件在**下次启动 DSH 时**删除(界面会明确提示);在此之前取消归档就会取消这次删除。
- 删除**不可恢复**,但**不是安全擦除**:按普通文件删除处理,底层介质上可能有残留。
- 工作区里的代码文件不受影响。
- 临时文件被删除后,fork 出来的会话日志里若仍保留指向它的路径文本,那些路径会失效。
- 指针停在会话行上时,删除按钮的气泡可能和会话行自带的悬停预览卡同时出现。
## 安装
DSH 的 **插件 → 添加插件** 里有两个输入,含义不同:
- **上面那个输入框**:装什么(包名 / Git 地址 / 本地 tgz 的绝对路径);
- **下面的「安装源」**:只决定**按包名安装时**去哪个注册表查。填 Git 地址或 tgz 时它不参与拉取,保持默认(官方源)即可,不必切到「自定义地址」。
### 1. Git 仓库地址(推荐)
在上面的输入框里填:
```text
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
[MIT](LICENSE)