前言¶
在 DeepSeek Harness 里处理敏感对话或调试草稿时,侧栏常见的「归档」只是把会话从导航里藏起来,磁盘上的会话日志仍在。持久化组件 @deepseek-ai/dsh-session-persistence-jsonl 的文档也说明:没有内置逻辑会删除会话文件,接口侧也没有删除 API。若需要让某次会话及其子代理遗留从本机彻底消失,需要额外手段。下面介绍社区插件 dsh-session-deleter(维护者 sczHiccup,目录分类 admin-security),它在用户明确确认风险之后,停止仍在运行的工作,并删除该会话自身的日志与投影缓存。
这是什么¶
dsh-session-deleter 是面向 DeepSeek Harness 的本地 bundle 插件(包名 @local/session-deleter,当前版本 1.1.0)。一句话定位:在确认不可撤销之后,永久删除指定会话,并级联处理子代理会话。
插件以 MIT 许可发布,源码仓库:https://github.com/sczHiccup/dsh-session-deleter。社区目录页:https://www.skillhub.cn/plugins/sczHiccup/dsh-session-deleter。DSH 生态强调「一切皆插件」;SkillHub 等目录由社区维护,与 DeepSeek / 幻方无官方从属关系。
核心功能¶
核实自 README 与仓库说明的能力如下。
界面入口
- 会话顶部的垃圾桶按钮,位于会话头部右侧工具区。
- 侧栏会话行
...菜单中的「删除会话」,与内置「重命名 / 归档 / 固定」同菜单,带危险样式与分隔线。
风险确认
- 弹窗说明不可撤销、显示目标会话名,必须勾选确认项才能继续。
- 支持
Esc、点遮罩、取消关闭,关闭后焦点回到原控件。 - 若会话仍在运行,会先额外警告;用户仍确认时,先停止该回合、子代理、后台任务与提醒,再执行删除。
删除范围
会删除:
| 内容 | 路径 |
|---|---|
| 会话日志(含历史格式代) | <DSH_HOME>/sessions/--<cwd>--/<sessionId>/session[.vN].jsonl[.zstd] |
| 子代理后代会话日志 | 同上,对 parentSession 指向的子会话递归处理 |
| 投影检查点缓存 | <DSH_HOME>/storages/session_projcache/sessions/<sessionId>.json(含子会话) |
| 侧栏导航入口 | 通过 Workspace 归档移出导航 |
不会删除共享附件(内容寻址,可能被其他会话引用)与全文检索派生库(dsh-session-query-sqlite 会随来源消失自行清理)。
级联与结果
- 会话日志头里
parentSession链上的子代理会话会一并删除;这些子会话在 UI 中往往没有独立入口。 - 成功后展示服务端返回的结果摘要;若删除的正是当前停留的会话,会自动切到新会话。
安全侧设计(Host)
删除仅在 Host 侧执行:停止运行走 workspaceRegistry.archiveSession(id, { stopActivity: true }),与用户点「停止并归档」同一套 provider。目录守卫只接受符合文档布局的会话目录;非递归 rmdir;删除后再次读取持久化状态,仍有残留则报错。面向模型的工具不暴露删除能力,只能由用户在 UI 确认后触发。README 还描述了归档标记寿命、补写清扫(1.2s / 5s / 20s / 60s / 180s)与启动回收等细节,用于应对仍驻留内存的 Agent 可能把日志写回的情况。
兼容性
- 面向 DeepSeek Harness
0.2.2-rc.1编写,使用公开服务:commands、sessionPersistence、workspaceRegistry、storageDomain,以及客户端slots、contextMenus、sessions、remote.commands。 - 不 import Harness Client 包;样式使用
--dsw-alias-*主题令牌。
安装与启用¶
插件是本地 bundle,需要先具备已安装的 DeepSeek Harness 环境。安装步骤以仓库 README 为准。
先把仓库放到本机(README 给出的命令):
git clone https://github.com/sczHiccup/dsh-session-deleter.git
再让当前 Harness Agent 把该目录装进当前 profile:
plugin_manager → action: install_bundle → target: <本仓库目录的绝对路径>
安装后 Harness 会按仓库内 cordis.patch.yml 插入插件行,对当前 profile 的每个会话生效,重启后仍保留。若按钮未立刻出现,刷新页面一次即可。
注意: 插件以当前 DSH 进程权限读写 <DSH_HOME> 下的会话与缓存;安装前应自行审阅 index.js、client.js 源码并确认 MIT 许可证是否符合你的合规要求。README 写明仓库使用 git clone 获取源码,并无 dsh plugin add github:… 一类一行式安装命令。
卸载(README 原文):
plugin_manager → action: set_plugin → target: include:session-deleter → enabled: false
plugin_manager → action: remove_bundle → target: @local/session-deleter
典型用法¶
- 打开任意会话,点顶部垃圾桶;或在侧栏将鼠标移到某会话行,打开
...→「删除会话」。 - 在弹窗中核对会话名与删除范围,勾选确认项。
- 点「删除会话」。
高级用户可在输入框执行与 UI 共用实现的命令:
/delete-session <sessionId>
适用场景与已知限制¶
适合谁
- 需要在本地彻底移除某次对话痕迹(含子代理会话)的 Harness 用户。
- 已理解归档与「永久删除」差别,并愿意在确认弹窗中承担不可撤销操作的人。
限制(README 已列出)
- 删除时若该会话的 Agent 仍驻留内存,Host 会话列表里可能仍能看到该 id,直到进程结束;归档过滤与 Workspace 记账的完全清理依赖 Agent 释放或下次启动清扫。
- 「运行中」提示依赖会话列表投影里的
running;取不到时只是少一条警告,删除逻辑不变。 - 若未来 Harness 改动日志目录布局,守卫会拒绝删除而不是误删。
结尾¶
dsh-session-deleter 补上 Harness 默认归档无法完成的「磁盘级」会话清理,并把删除放在显式风险确认与 Host 侧守卫之后。若你在本机长期跑 Agent、又需要管控敏感或试验性会话的残留文件,可从目录页或 GitHub 获取源码,按 install_bundle 流程装入当前 profile。