前言¶
DeepSeek Harness(DSH)的会话记录落在 $DSH_HOME/sessions 下的 JSONL 目录里,侧栏里还能置顶、归档、复制 Session ID。若只想清掉某条不再需要的对话,官方菜单并没有「从磁盘删掉」这一项;长期堆积只能依赖归档和筛选,磁盘占用并不会因此减少。下面介绍的 dsh-remove-session 由维护者 NN-0101 发布,属于客户端插件,在会话「…」菜单末尾增加红色「删除会话」,二次确认后从侧栏和磁盘一并移除该会话,无需外部服务,也不收集遥测。
这是什么¶
dsh-remove-session 面向带 Web UI 的 DSH profile(如 web、desktop)。它在 sidebar.workspaces.session.menu.item 槽位注册菜单项(order: 500,排在「复制 Session ID」之后),Host 侧注册同源接口完成真正的目录删除与 Workspace 清理。能力归类为会话与消息;许可证 MIT;当前 npm 包版本为 0.1.4(README 验证输出中可见)。
DSH 的 JSONL 持久化后端没有删除 API,因此插件在 Host 中直接删除该会话独占的目录,并同步清理 Workspace registry 中的归属、置顶与归档记录。
核心功能¶
- 红色删除入口:侧栏会话行「…」菜单最后一项为红色「删除会话」,中英文界面均支持。
- 二次确认:自定义确认框,标题为「删除这个会话?」,正文展示会话标题并说明聊天记录会从磁盘移除、无法恢复;确认前不写盘。
- 真删除:删除
$DSH_HOME/sessions/--<项目>--/<会话ID>/下的 JSONL 目录;先从 Host 内存 store 摘除会话(触发session/disposed),再删磁盘,避免「侧栏仍在、磁盘已空」或掉进未分组后删不掉的幽灵会话。 - 运行中保护:Agent 回合仍在运行,或存在进行中的子智能体/后台任务/定时提醒时,删除会被拒绝并提示;会话目录保持完好。
- 删除后的界面行为:若主视图正显示被删会话,成功后只清空主视图(
clearMain),不会新建空白会话;删除被拒绝时不导航、不新建会话。 - 范围边界:不删除附件、其他会话或 Workspace 目录本身;不级联删除子 agent 会话(它们默认不出现在侧栏)。删除不可恢复,没有回收站。
诊断用只读接口(同源):
GET /plugin/dsh-remove-session/inspect?sessionId=<会话ID>
可查看会话是否 live、磁盘目录、置顶/归档、Workspace 归属及 orphaned 等状态,便于排查「为什么删不掉」。
安装与启用¶
插件以当前 dsh 进程权限 读写 $DSH_HOME/sessions 与 Workspace registry;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。--profile 需换成你实际使用的 profile 名(示例里是 web,本机可能是 desktop)。
方式一:npm(推荐)¶
已发布到 npm,可在 DSH 内置「插件中心」搜索并一键安装;命令行等价于:
dsh plugin --profile web add dsh-remove-session
方式二:GitHub 源码¶
无构建步骤,适合跟最新提交或二次开发:
dsh plugin --profile web add github:NN-0101/dsh-remove-session
方式三:本地目录¶
在 设置 → 插件 中选择安装本地 bundle,指向仓库目录;加载器读取 cordis.patch.yml 挂载插件。
安装完成后刷新一次 DSH Web 页面,侧栏会话「…」菜单末尾应出现红色「删除会话」。
环境要求(来自 README):DSH 0.2.x(已在 0.2.1-rc.2 实测);需 webServer、sessionPersistence、sessions、agents、workspaceRegistry 等同代能力;Node ^22.15.0 || >=24.0.0。
典型用法¶
- 在侧栏将鼠标移到任意会话行,点击右侧「…」。
- 选择菜单最后一项红色 删除会话(在「复制 Session ID」之后)。
- 在确认框中核对标题与说明,点击 删除 或 取消(也可按
Esc或点遮罩取消)。 - 确认删除后,该行从侧栏消失,磁盘上该会话目录及对应 Workspace 记录被清理。
菜单示意(README 摘录):
┌─────────────────────────────┐
│ 置顶会话 │
│ 重命名 │
│ 分叉会话 │
│ 归档会话 │
│ 复制 Session ID │
│ ────────────────────────── │
│ 🗑 删除会话 │ ← 红色
└─────────────────────────────┘
若只需「眼不见」且可能还要找回记录,应继续使用官方「归档会话」,不要用本插件替代归档。
适用场景与注意¶
适合:确定不再需要的会话,希望侧栏与 $DSH_HOME/sessions 同步清理干净,减少无用 JSONL 占用。
不适合:可能还要恢复的对话(请归档);正在跑回合或仍有后台工作的会话(会被拒绝);期望一并删掉子 agent 会话或 $DSH_HOME/storages 里投影缓存的场景(已知限制:投影缓存可能残留,但删除后不会被展示)。
安全与权限:仅注册两个同源本地 HTTP 接口;删除只接受 POST + JSON,并做 Origin 与 Host 同源校验。插件无遥测、无外网访问。
卸载时在插件管理中停用或移除 bundle 即可;不会恢复已删除的会话。
结尾¶
dsh-remove-session 把「删聊天记录」式的操作接到 DSH Web UI 上,并在 Host 侧按正确顺序摘掉内存再删目录,避免幽灵会话。社区目录页(与 DeepSeek / 幻方无官方从属关系):
- 目录页:https://www.skillhub.cn/plugins/NN-0101/dsh-remove-session
- 源码与文档:https://github.com/NN-0101/dsh-remove-session