前言¶
DeepSeek Harness(DSH)在 Web 侧边栏里管理多项目、多会话时,原生能力以归档为主,并没有面向日常整理的「删除会话」入口。会话 JSONL 和投影缓存会长期留在 <DSH_HOME> 下,列表里删不掉、误操作也难有缓冲。社区插件 dsh-safe-session-delete(维护者 tz-Wang510,分类:记忆)在菜单、悬停按钮和「设置 → 会话管理」里补上删除流程:确认后由宿主端移入回收站并刷新列表,默认保留 30 天,便于手动找回。
这是什么¶
一句话:给 DSH Web 侧边栏提供真正可用的删除会话能力,日志进回收站而非直接抹掉。
- 仓库:tz-Wang510/dsh-safe-session-delete
- 目录页:SkillHub 插件页
- 当前版本(资料):0.2.0,许可证 MIT
- 目标 DSH:
>=0.2.1-rc.5 <0.3.0-0;Node.js>= 20
核心功能¶
下面介绍插件在界面与宿主端分别做了什么(均来自 README 说明)。
界面入口¶
- 会话行
...菜单新增「删除会话」。 - 会话行悬停时右侧出现红色
×,无需展开菜单。 - 「设置 → 会话管理」列出所有会话,每行一个「删除会话」按钮。
- 中英文界面自适应;删除前确认框会显示会话标题。
宿主端删除流程¶
确认后,宿主按会话 id 定位 <DSH_HOME>/sessions/<项目目录>/<session-id>,并依次:
- 归档会话并停止正在运行的工作;
- 摘除内存中的 live 会话;
- 移动日志到回收站,避免运行中写入把文件重新创建。
同时会:
- 删除投影缓存
<DSH_HOME>/storages/session_projcache/sessions/<id>.json,防止列表刷新复用旧标题; - 递归处理该会话的 subagent 子会话目录(侧边栏本就不显示它们);
- 调用浏览器端
sessions.refresh(),侧边栏立即更新。
当前正在主视图打开的会话也可删除:确认框会额外提示,删除后对话关闭、清除保存的选择并刷新页面。
回收站与保留策略¶
日志移动到:
<DSH_HOME>/session-trash/<时间戳>/<项目目录>/<session-id>/
Windows 上常见路径为 C:\Users\<你>\.dsh\session-trash\。
- 默认 30 天保留;过期批次在 DSH 启动时及之后每 24 小时自动清理。
- 设置页可查看当前保留天数,并用「清理过期回收站」立即执行一次清理。
retentionDays: 0表示关闭自动清理,仅手动清理。
profile 插件配置示例:
- id: dsh-safe-session-delete
name: dsh-safe-session-delete
config:
retentionDays: 30
应用内无法撤销;恢复需把回收站中的会话目录移回原项目目录下,再重启 DSH。
安装与启用¶
从 GitHub Release 的预构建 tarball 安装(<profile> 换成 desktop、web 等):
dsh plugin --profile <profile> add "https://github.com/tz-Wang510/dsh-safe-session-delete/releases/download/v0.2.0/dsh-safe-session-delete-0.2.0.tgz"
若本机 pnpm 报 UNABLE_TO_VERIFY_LEAF_SIGNATURE,在命令前设置:
$env:NODE_OPTIONS="--use-system-ca"
再执行安装命令。安装后重启 DSH(插件在启动时加载)。README 注明 npm 包发布后还会补充 dsh plugin add dsh-safe-session-delete 的安装方式。
从本地插件目录安装到其他 profile:
dsh plugin --profile <profile> add "<插件目录>"
确认 package.json 的 dsh.profile.bundles 中出现 dsh-safe-session-delete 后重启 DSH。
典型用法¶
经过上面的安装与重启,可按任一路径删除:
- 鼠标移到会话行,点
...→「删除会话」; - 或直接点悬停时的红色
×; - 或打开 设置 → 会话管理,在列表中点「删除会话」。
确认后,该行从侧边栏消失。若确认不再需要回收站内容,可手动清空(示例为 PowerShell):
Remove-Item "<DSH_HOME>\session-trash" -Recurse -Force
宿主 HTTP 路由(与内置 API 一样受启动令牌 / 签名 Cookie 保护)包括:
POST /api/dsh-safe-session-delete/delete
Content-Type: application/json
{ "sessionId": "session-xxxx" }
另有 POST /api/dsh-safe-session-delete/status 与 POST /api/dsh-safe-session-delete/purge-trash,供设置页与清理逻辑使用。
适用场景与注意¶
适合谁: 长期在 DSH 里开大量会话、需要侧边栏和设置页统一删除入口,又希望误删能在 30 天内从 session-trash 手动恢复的用户。
权限与安全: 插件以当前 DSH 进程权限读写 <DSH_HOME>;安装前应阅读仓库 SECURITY.md 与源码。路由非 owner Peer 会被拒绝。
已知限制(README):
- 依赖 DSH 默认 JSONL 布局(
dshHomePath('sessions'));若 profile 修改了session-persistence-jsonl.root,需自行适配。 - 删除是宿主端文件操作,非 DSH 官方持久化 API;DSH 升级若改存储布局,需同步适配插件。
- 自动清理仅在 DSH 运行时执行;长期不启动则过期批次保留到下次启动。
- 侧边栏入口依赖官方 slot;设置页是相对更稳定的入口。
兼容性说明:已在 DSH 0.2.1-rc.5(Desktop / Windows)上通过真实浏览器点击验证;DSH 插件 API 仍处预览阶段,升级 DSH 后建议在隔离 profile 试装并运行 npm test。
结尾¶
dsh-safe-session-delete 补上了 DSH 原生缺失的删除路径,并把日志放进带保留期的回收站,同时清理投影缓存与子会话目录,列表可立即刷新。需要安装包、截图与变更记录时,以 GitHub 仓库为准。
- 目录页:https://www.skillhub.cn/plugins/tz-Wang510/dsh-safe-session-delete
- GitHub:https://github.com/tz-Wang510/dsh-safe-session-delete