前言¶
DeepSeek Harness(DSH)默认提供归档能力,但不会从磁盘上移除已归档的对话:会话日志会一直留在 $DSH_HOME 下。长期本地开发或多会话并行时,侧边栏和存储里会堆积不再需要的历史对话,只靠归档无法真正腾出空间或去掉条目。
社区插件 dsh-plugin-conversation-delete(维护者 Marco77Cl)在每条对话的操作菜单里增加「删除对话」,经确认后永久删除会话日志、投影缓存行以及侧边栏登记;有任务仍在运行时则拒绝删除。下面介绍其能力、安装方式与使用时的注意点。
这是什么¶
dsh-plugin-conversation-delete 面向已使用 DSH Web UI(Desktop 或 dsh web)的开发者。它在 DeepSeek Harness 中为每条对话增加 删除对话 / Delete conversation 动作,与 DSH 自带的可逆归档互补:归档仍可恢复,删除不可撤销。
插件归类为「记忆」相关能力;在 SkillHub 目录页可查简介与来源。当前 GitHub 星标为 0,许可证为 MIT,版本 0.1.0,要求 DSH >= 0.2.2-rc.1 且带 Web UI。
核心功能¶
界面入口¶
- 每条对话行右侧
⋯菜单中出现 删除对话 / Delete conversation。 - 同一贡献也出现在该行右键菜单中。
确认与删除范围¶
确认对话框会标出对话名称,并提示操作无法撤销。通过校验后,插件会:
- 删除
$DSH_HOME/sessions/…下该对话的日志目录(含各格式代次与 writer 锁)。 - 在标准布局下,删除
$DSH_HOME/storages/session_projcache/sessions/…中对应的投影缓存行。 - 经 workspace 注册表先归档会话,释放打开中的视图、清除 pin,再从侧边栏移除;完成后刷新页面,使侧边栏立刻反映删除结果。
安全行为¶
- 运行中的工作不会被「删掉自己」:若对话仍活跃(turn、subagent、后台任务或 reminder 仍在跑),插件会拒绝并说明仍在运行的事项,需先停止再删。
- 删除路由仅所有者的浏览器可调用:经 Host Connection 的 exact-Fetch 注册,与
/api其余接口共用浏览器 cookie、Host/Origin 检查及 owner-Peer 门禁。 - 待删路径由 session-persistence 后端给出,而非浏览器随意指定;并校验路径落在持久化根目录内且 session id 一致。
- 删除为永久性;需要可逆时请继续使用归档。
实现概要(便于排查)¶
| 半边 | 文件 | 作用 |
|---|---|---|
| Host | lib/index.js |
注册 POST /api/session-delete/delete;归档会话、校验后端报告的日志路径、移除日志目录与缓存行。 |
| Client | lib/client.js |
经 ctx.contextMenus 贡献 session.delete;在 shell.overlay 挂载确认框、调用接口并刷新。 |
| Bundle | cordis.patch.yml |
将插件行写入 profile。 |
客户端与服务端均为纯 JavaScript,客户端为手写 __ModuleLoader__ 工厂,无需额外构建步骤。
安装与启用¶
依赖随 dsh-base + dsh-web-app 组装的 profile 通常已包含:workspace、session-persistence-jsonl、session-projection-cache、client-connection、ui-workspace。
从 npm(插件市场 / Discover)¶
dsh plugin --profile <profile> add dsh-plugin-conversation-delete
README 注明该包尚未发布到 npm(以仓库 release 说明为准)。若主机不会自动启用新 bundle,需在 Plugins 中启用并刷新页面。
本地打包安装¶
git clone https://github.com/Marco77Cl/dsh-plugin-conversation-delete.git
cd dsh-plugin-conversation-delete
npm pack
dsh plugin --profile <profile> add file:$(pwd)/dsh-plugin-conversation-delete-0.1.0.tgz
DSH Desktop 宜通过应用内插件管理器或插件市场安装,而非单独依赖 dsh CLI(Desktop 使用自己的 profile)。
安装前建议阅读仓库源码与 MIT 许可证;插件在当前 dsh 进程权限下执行删除文件与 API 操作,应与你对本机数据目录的信任程度一致。
典型用法¶
- 在 DSH 侧边栏找到不再需要保留的对话。
- 点击该行
⋯,或右键该行,选择 删除对话(或 Delete conversation)。 - 在确认框中核对对话名称,知悉无法撤销后确认。
- 若提示仍有任务运行,先结束对应 turn、子 agent、后台任务或 reminder,再重试。
- 成功后页面会重载,该对话从侧边栏消失,对应日志与标准布局下的投影缓存行被移除。
无可复现的独立 CLI 示例:能力完全绑定在 Web UI 的会话行菜单与确认流程上。
适用场景与注意¶
适合:需要在本地彻底清理测试会话、废弃分支对话或敏感内容,且已确认不再需要归档恢复的场景。
注意:
- 与 DSH「归档不删除」的默认策略不同,本插件执行的是永久删除;误删只能靠备份或副本恢复。
- 仅当会话空闲且通过 owner 浏览器调用时才会成功;多标签或多用户场景下需理解 owner-Peer 与 cookie 门禁。
- 生态上 DSH 奉行「一切皆插件」;SkillHub 目录为社区站点,与 DeepSeek / 幻方无官方从属关系,本文安装与能力描述以仓库 README 为准。
结尾¶
dsh-plugin-conversation-delete 补上了 DSH 长期缺失的「真删除」路径:在明确确认与多重校验下,同步清理会话日志、投影缓存与侧边栏条目,并与运行中任务保护、仅 owner 可调用的 API 设计对齐。若你更习惯可逆操作,请继续使用归档;确定要腾出磁盘并去掉条目时,再使用该插件。
- 目录页:https://www.skillhub.cn/plugins/Marco77Cl/dsh-plugin-conversation-delete
- GitHub:https://github.com/Marco77Cl/dsh-plugin-conversation-delete