前言¶
在 DeepSeek Harness(DSH)里,Session 会长期占用本地磁盘:对话日志落在持久化目录,侧栏还会缓存视图状态。官方侧栏已有归档等操作,但若你想彻底清掉某条 Session 的本地数据并从列表里消失,默认界面里往往缺少一条明确的「删除」入口。维护者 The932 的客户端插件 dsh-session-delete 就是在 Web 侧栏每条 Session 的「…」菜单中增加 Delete session,经确认对话框后永久删除该 Session 的日志与相关缓存。下面介绍它做什么、怎么装、使用时要注意什么。
这是什么¶
dsh-session-delete 是 DSH 社区插件(分类:客户端),仓库 The932/dsh-session-delete,目录页见 SkillHub 插件页。当前 package 版本为 0.1.0,许可证 MIT。它不改变 Agent 工具集,只给用户提供侧栏菜单动作和确认流程,解决「本地 Session 数据需要不可逆清除」这一具体缺口。
核心功能¶
侧栏菜单与确认¶
每条 Session 的「…」菜单会多出一行红色的 Delete session(顺序 500,位于 archive 之后)。点击后弹出确认对话框;确认后会永久移除该 Session 的本地数据,并通过既有 relay 让各已连接页面的侧栏行消失。若当前对话面板正在显示该 Session,面板会被清空。
实际删除的数据¶
插件只动两类路径,其余(例如 Workspace 排序、pin/archive 集合里的 id)不会被改写;集合里若仍保留已删 id,只是找不到对应 Session 时会跳过。
| 数据 | 位置 |
|---|---|
| Session 日志 | <sessionPersistence.root>/<project-encoding>/<sessionId>/(整目录) |
| 缓存视图状态 | <DSH_HOME>/storages/session_projcache/sessions/<sessionId>.json[*] |
运行中与 Host 内的 Session¶
正在 运行 的 Session 会被拒绝并提示先停止。若 Session 仍在本 Host 进程内活跃(例如本次运行中刚打开过),列表会立刻去掉该行;日志目录在 Host 能释放锁后删除。若暂时删不掉,会写入 durable tombstone,每 15 秒重试一次,并在下次启动时再试一次。
Host API(供理解行为,非 Agent 工具)¶
浏览器侧通过同源请求调用:
POST /dsh-session-delete/api,body 为 {"sessionId": "..."}。请求经 ctx.connection.requestRejection() 把关(trust fence 不可用时 fail closed)。sessionId 先按 ^[A-Za-z0-9][A-Za-z0-9._-]{0,199}$ 校验,再构造路径,删除范围限制在 <root>/<one-level>/<id> 内。
实现上 Host 侧在 index.js(端点与延迟清扫),浏览器侧在 client.js(菜单、对话框、样式),存储逻辑在 core.js(测试共用)。bundle 通过 cordis.patch.yml 注入 Host 行;客户端注入 @deepseek-ai/dsh-client-ui-workspace,平台为 web。
安装与启用¶
依赖:使用 Web profile 的 DSH Desktop 或 Web 构建,且自带 Session Controller、Workspace、Locale 插件(默认组合即满足)。README 注明在 Windows Desktop 上开发与测试。
官方 README 给出的安装方式如下(第二行的 <repo path> 换成本机 clone 后的目录):
git clone https://github.com/The932/dsh-session-delete
dsh plugin --profile desktop add "link:<repo path>"
也可以在 Harness Plugin Manager 里 Add → install from a local package directory,指向 clone 后的目录,启用 dsh-session-delete bundle。安装后 重启 Harness 一次;若菜单行未出现,刷新页面。
典型用法¶
1、在 DSH Web 侧栏找到要清除的 Session,打开该行「…」菜单。
2、选择 Delete session,在确认对话框中确认。
3、若 Session 仍在运行,先按提示停止再删。
4、成功后侧栏行消失;若多标签页连着同一 Harness,各行会通过 api-session/removed 同步更新。
维护者在仓库中提供了 Node 测试(需在可执行 node 的环境里直接跑文件,而非 node --test):
node tests/core.test.mjs
node tests/host.test.mjs
core.test.mjs 覆盖身份校验、目录发现、选择性删除、投影缓存、越 root 拒绝、tombstone 等;host.test.mjs 覆盖 trust fence、请求体、各类拒绝码、存储删除、tombstone 清理、激活时延迟清扫与 removal 事件转发。
适用场景与注意¶
适合谁:经常在本地积累大量 Session、需要按条清理磁盘和侧栏列表的 DSH Web/Desktop 用户;不需要把「删 Session」暴露给 Agent 的场景(插件刻意不提供 Agent 工具,避免误删)。
权限与安全:插件以当前 DSH 进程权限读写本机 Session 存储;删除不可恢复。安装前请阅读 源码与 MIT 许可证,确认路径约束与 trust fence 行为符合你的环境。
生态说明:DSH 采用「一切皆插件」的扩展方式;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系,本文介绍的是社区维护的客户端插件,而非官方应用商店条目。
结尾¶
dsh-session-delete 用一行侧栏菜单和确认对话框,补上了 DSH Web 侧栏缺失的 Session 删除能力,并限定删除范围在 Session 日志与 projcache 条目。需要安装或源码细节时,可参考 SkillHub 目录页 与 GitHub 仓库。