前言¶
在 DeepSeek Harness(DSH)里用 Web GUI 跑智能体时,侧边栏会积累大量会话。如果只是从列表里「看不见」某条记录,往往并不等于磁盘和运行时状态已经清干净:Harness 会把同一会话同时落在 live store、workspace 记录、注册表残留(pin / archive)以及磁盘目录里,只动其中一层容易留下幽灵行、过期 workspace 或仍占空间的目录。
社区插件 dsh-dialogue-cleanup(维护者 Winnie-0721,SkillHub 分类为客户端)针对的是「删除会话应当真的删掉」这件事:在不重启进程、不离开当前窗口的前提下,从正在运行的 Web 运行时里发起删除,并由 Host 侧统一实现删除逻辑,避免单删与批量两条路径行为不一致。
这是什么¶
一句话定位:从运行中的 Web GUI 删除 DSH 会话——包括 live store 条目、workspace 记录、注册表残留与磁盘产物。一个 npm 包同时包含 Host 半部(Cordis 插件)与 Web 客户端半部,按官方插件规范安装进 Host。
- 仓库:Winnie-0721/dsh-dialogue-cleanup
- 目录页:SkillHub 插件页
- 许可证:MIT(资料中的 README 与
package.json) - 与 DSH 0.2.0-rc.2 兼容(README 徽章与说明)
核心功能¶
下面介绍插件在资料中明确写出的能力,不涉及未在 README / package.json 中出现的配置项。
单条删除与批量管理¶
- 单条删除:在侧边栏会话行悬停,打开
...菜单,选择 Delete session(注册在order: 500,位于官方 Archive 项之后)。确认后会移除 live 条目、workspace 记录、注册表残留与磁盘产物。 - 批量删除:打开 Settings → Dialogue Cleanup,可搜索、按项目 / 状态 / 会话类型 / 归档筛选、排序与分页;勾选可删行或使用「Select all deletable」,一次请求批量删除。
Host 侧删除语义¶
删除实现集中在 Host 的 lib/service.js(deleteSession),经 HTTP 与 slot UI 两条薄适配器接入,使单删与批量不会各自演化出一套逻辑。资料中描述的删除顺序要点包括:
- 运行中的会话拒绝删除(409
refused),由 Host 判定deletable,UI 不自行猜测是否安全。 - 从 live store detach,避免删后仍出现幽灵行。
- 清理 workspace 记录及后续步骤(README 在截断处继续描述注册表与磁盘产物;路径与审计分别由
lib/artifacts.js、lib/audit.js承担)。
与上游「总是返回 200」不同,本插件对错误使用真实 HTTP 状态码(如 400 / 403 / 404 / 405 / 409 / 429 / 500)。结果行会报告 ok / failed / degraded、已移除目录数等;若 live store 无法 detach,会标明 detached: false 而非假装成功。
客户端展示上的设计选择¶
- 已归档会话默认仍显示:归档不等于删除,默认隐藏会挡住需要清理的磁盘占用;面板提供三态筛选(hide archived / all / archived only),默认展示含归档。
- 子代理行显式标注:官方侧栏会隐藏
origin: 'subagent'行;在本插件列表里出现时以徽章区分(资料示例:空闲/运行中(不可选)/子代理/已归档)。 - 不可逆确认:使用原生
<dialog>+showModal(),仅 Cancel 或Esc关闭,点击遮罩不会关闭,避免误点不可逆删除。
客户端通过官方 slot 注册,且不直接操作 DOM:
sidebar.workspaces.session.menu.item→ 单删菜单项。settings.section(id: dialogue-cleanup,order: 25)→ 设置页入口与批量面板。
安装与启用¶
在已具备 DSH CLI 的环境中,按 README Quick Start 安装 Web 侧插件:
dsh plugin --profile web add dsh-dialogue-cleanup
说明:
- 包名与 npm 发布一致:
dsh-dialogue-cleanup(当前资料中package.json版本为 1.1.2)。 - 运行环境要求 Node >= 20.0.0(
package.json的engines)。 - Host 侧代码变更需要重启 DSH 进程;纯客户端变更不需要(细节见仓库
docs/RELEASING.md)。
典型用法¶
经过上面的安装步骤后,可按 README 中的两条路径操作:
- 清理当前对话:侧边栏目标会话 →
...→ Delete session → 在确认层阅读警告与会话 id → 确认永久删除。 - 集中清理历史:Settings → Dialogue Cleanup → 用筛选缩小范围 → 勾选可删会话 → 执行批量删除;运行中的行不可选,需先结束或切换会话后再删。
批量面板截图与确认层截图由仓库内 scripts/render-shot.mjs 基于实际组件树与 CSS 生成(README 的 Honest limitations 一节说明其并非手工 mock,也不是实拍 live GUI)。
适用场景与注意¶
适合谁:长期在本地或单机 Web GUI 使用 DSH、会话与 workspace 目录堆积、需要可核对结果的批量清理,且希望删除路径与 Host 权限模型一致的开发者。
使用前请知悉:
- 插件以当前 dsh 进程权限执行文件系统删除与 API 调用;安装前应阅读 源码 与 MIT 许可证,确认符合你的安全与合规要求。
- 删除不可逆;对运行中会话的删除会被拒绝,这是刻意设计而非缺陷。
- SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;星标与 fork 数以目录/GitHub 当时展示为准(线索中为 GitHub 2 stars)。
结尾¶
dsh-dialogue-cleanup 把「删会话」做成一次 Host 侧可审计、UI 双入口(侧栏单删 + 设置页批量)的操作,并尽量如实反馈 detach 与磁盘清理结果。若要查看说明、发布链与限制,可从 GitHub 仓库 或 SkillHub 目录页 进入。