前言¶
DeepSeek Harness(DSH)的会话行「…」菜单里自带置顶、重命名、分叉、归档,没有删除。会话数据落在 $DSH_HOME/sessions/ 下会持续累积,想清掉只能手工动文件。协议里虽有 session/delete,但按设计主要面向外部 ACP agent,宿主存储层并不提供「删掉会话目录」这一层 API。
@jackal-alex/dsh-session-delete(GitHub:jackal-Alex/dsh-session-delete,维护者 jackal-Alex)是社区目录上的客户端类插件,在侧边栏补上删除能力:先把会话目录移入可恢复的回收站,或经确认后彻底清除。
这是什么¶
一句话:从会话行菜单删除 DSH 会话——可逆进回收站,或永久清除。
插件不声明 @deepseek-ai/* 的 peerDependencies,客户端只用 ctx.slots,宿主只用 ctx.webServer,避免 DSH 0.2+ 因 peer 不匹配而整包跳过。README 写明在 DSH 0.2.0-rc.2(Windows 桌面版)上实测可用;npm 包版本为 0.1.3,许可 MIT。
实现方式是把 sessions/<工作区>/session-<id>/ 整目录移出 $DSH_HOME/sessions,在 $DSH_HOME/session-trash/<时间戳>/ 保留 meta.json 以便恢复;这与「宿主不提供删除 API、只能落在文件系统上」的现状一致。
核心功能¶
| 菜单项 | 行为 |
|---|---|
| 删除会话 | 目录移入 session-trash,附 meta.json 记录原工作区与目录名 |
| 彻底删除会话 | 先移入回收站,再立刻从回收站清除;红色危险样式,二次确认 |
补充行为(均来自 README):
- 正在使用的会话删不掉:例如 Windows 上日志被占用导致
rename失败时,会提示先切换到别的会话再删,不会出现半删状态。 - 删完自动刷新:通过
location.reload(),侧边栏不再显示该行。 - 菜单样式:字号、行高、内边距、悬停与危险色对齐 DSH 自带菜单单元格(13px / 20px / 34px / 6px 8px)。
宿主侧还提供 HTTP 接口(列出会话、回收站、删除、恢复、彻底清除),供脚本或后续 UI 使用;回收站列表与恢复的图形界面尚未提供,恢复目前可走 API。
安装与启用¶
安装命令以 README 为准。社区目录页:https://www.skillhub.cn/plugins/jackal-Alex/dsh-session-delete。
# 从 npm(发布后)
dsh plugin --profile desktop add @jackal-alex/dsh-session-delete
# 从 GitHub(需要本机有 git)
dsh plugin --profile desktop add github:jackal-Alex/dsh-session-delete
# 本地开发(软链,改完硬刷新即可)
dsh plugin --profile desktop add link:/path/to/dsh-session-delete
注意:npm 上另有第三方包名 dsh-session-delete(作者 vtxf,仓库 vtxf/dsh-session-delete),与本项目无关。本项目 npm 包名为 @jackal-alex/dsh-session-delete,安装时认准 scope 与作者名。
装完后重启 DSH(bundle 在启动时装配),再按 Ctrl+Shift+R 硬刷新页面以加载客户端半边。
典型用法¶
侧边栏删除¶
- 鼠标移到任意会话行,点右侧「…」。
- 选 删除会话 并确认。
- 会话从列表消失;文件在
~/.dsh/session-trash/(即$DSH_HOME/session-trash/)中。
若要 彻底删除会话,在同一菜单选对应项并完成二次确认。
从回收站恢复(API,暂无 UI)¶
向本机 DSH 的 web 服务发 POST,并带上约定请求头:
curl -X POST http://127.0.0.1:19387/api/session-delete/restore \
-H "content-type: application/json" -H "x-dsh-session-delete: 1" \
-d '{"trashId":"<回收站目录名>"}'
查询会话或回收站列表时,所有请求(含 GET) 都需要头 x-dsh-session-delete: 1,且仅接受回环地址(127.0.0.1 / ::1)。示例:
curl -s http://127.0.0.1:19387/api/session-delete/list -H "x-dsh-session-delete: 1"
宿主路由摘要:
| 方法 | 路径 | 作用 |
|---|---|---|
| GET | /api/session-delete/list |
列出磁盘上的会话 |
| GET | /api/session-delete/trash |
列出回收站条目 |
| POST | /api/session-delete/delete |
{sessionId, mode?},mode: "purge" 表示移入后立刻清除 |
| POST | /api/session-delete/restore |
{trashId} 放回原位置 |
| POST | /api/session-delete/purge |
{trashId} 彻底删除,不可恢复 |
适用场景与注意¶
适合谁:长期在 DSH 里开很多工作区会话、需要偶尔清理侧边栏和磁盘占用,又希望误删能靠回收站或 API 恢复的用户。
已知限制(README):
- 无批量删除;无回收站图形列表(接口已就绪)。
- 只处理
sessions/<工作区>/session-<id>/目录布局;平铺或单文件压缩布局不在本版范围。 - 彻底删除不是安全擦除(无 shred)。
- 删除后依赖整页刷新更新列表。
安全与信任:插件以当前 DSH 进程权限读写会话目录与回收站;安装前建议在 GitHub 查看源码与 MIT 许可证,确认符合你对本机数据的处理方式。DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
若你缺的是「侧边栏里多一个正经的删除,而不是手删 sessions」,dsh-session-delete 把文件层移动做成可逆删除,并可选彻底清除。更多信息见社区目录页与仓库 README。