Vast-Unhurried/dsh-toolkit--packages-dsh-session-delete ↗★ 1
dsh-session-delete
为会话右键菜单(⋮)添加「删除会话」:彻底删除会话(JSONL 日志 + 工作区登记),不修改 DeepSeek Harness 核心。
安装
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Vast-Unhurried/dsh-toolkit#02a5c2046fab4dd227992c912edcc24e75da4656&path:packages/dsh-session-delete说明文档
阅读完整 README ↗dsh-session-delete
给 DeepSeek Harness Web 的会话列表(⋮ 菜单:重命名 / 分叉会话 / 归档会话)增加一个「删除会话」项,彻底删除会话:JSONL 会话日志、工作区登记、归档集合全部清理。不修改 Harness 核心,卸载插件即完全还原。
行为与安全边界
- 删除是无条件的:运行中的会话、子代理(子会话)、仍有子会话在跑的父会话都可以删除。唯一拒绝的情况是会话不存在(幂等)。
- 删除前先 flush 未落盘数据并让持久化写入路径退役,再移除内存中的会话/代理登记并发出
session/disposed,最后删除磁盘文件与工作区登记 —— 顺序保证不会把会话日志写成损坏状态。 - 删除运行中的会话后,其 agent 循环仍会在内存中继续直至自然结束,但写入路径已退役,不会重建已被删除的日志。
- 删除成功后页面自动刷新。
原理
- Host 半部:
POST /plugins/session-delete/api,{ method: 'delete', sessionId }。会话目录按dsh-session-persistence-jsonl相同的路径编码(projectKey/encodeSegment)定位,根目录取自持久化后端backend.root(默认~/.dsh/sessions)。 - 客户端半部:监听 ⋮ 按钮点击与原生菜单(
div[role="menu"])出现,注入删除项;按会话标题(displayTitle,空白会话用「新会话」)解析 sessionId,重名时按 DOM 行位置消歧;确认弹窗走shell.overlay槽位。
安装 / 卸载
# 在 dsh-toolkit 仓库根目录执行
dsh plugin --profile web add file:./packages/dsh-session-delete
# 卸载
dsh plugin --profile web remove dsh-session-delete
安装后需重启 dsh 服务生效(宿主路由 + 客户端 bundle)。
变更记录
- 1.0.0 首发。