dsh-session-delete:在 DSH 侧栏真正删除会话

前言

用 DeepSeek Harness(DSH)做智能体开发时,Web 侧栏里的会话会不断累积。宿主自带的会话菜单可以置顶、重命名、分叉、归档、复制 Session ID,但「归档」只是把会话从列表里藏起来,磁盘上的会话日志、投影缓存和工作区账本里的引用都还在。试错的会话、敏感内容或只想腾空间的场景里,需要的是从活存储和磁盘上一起清掉,而不是长期留着归档副本。下面介绍社区插件 dsh-session-delete(维护者 jsunon,目录分类:记忆),它在侧栏会话菜单里补一条「删除会话」,按宿主约定走完摘活存储、删磁盘产物、改 workspace 账本三步。

这是什么

dsh-session-delete 是给 DSH Web 侧栏会话菜单增加 删除会话 的 Cordis 插件。它与 DSH 内置的归档不同:确认后会话日志目录、投影缓存 JSON 以及各 workspace 对该会话的登记会被移除,列表刷新后该行消失。源码与说明见 GitHub,社区目录页:skillhub.cn/plugins/jsunon/dsh-session-delete。DSH 生态强调「一切皆插件」;skillhub 为独立社区目录,与 DeepSeek / 幻方无官方从属关系。

核心功能

与内置「归档」的差异

归档不会删除 ~/.dsh/sessions/ 下的日志,也不会删投影缓存或 workspace 里的会话引用。本插件在用户确认后执行完整删除流程,失败时按 README 描述返回相应 HTTP 状态(例如会话仍被占用时 409 session-live,磁盘未删净时 500 且账本不动以便重试)。

宿主侧三步

点「删除会话」并确认后,宿主依次:

  1. 从活存储摘下会话:调用 workspace/session-stop 取消正在跑的回合 → sessions.flush 落盘缓冲 → entry.detach() 并派发 session/disposed,持久化后端关闭文件句柄。若仍被占用则返回 409 session-live。
  2. 删除磁盘产物:删除 ~/.dsh/sessions/<项目键>/<会话 id>/(会话日志)与 ~/.dsh/storages/session_projcache/sessions/<会话 id>.json(投影缓存)。
  3. 更新 workspace 账本:对各 workspace 执行 detachSession,再 unarchiveSession / unpinSession,经 registry 正式写路径落盘并广播快照。

浏览器侧确认成功后刷新会话列表,对应行随即消失。

HTTP 接口

插件暴露两条路由,均经同源校验:拒绝 sec-fetch-site: cross-site、拒绝 origin: "null",且带 Origin 时其 host 须等于 Host。

  • GET /dsh-session-delete/api/health — 探活
  • POST /dsh-session-delete/api/delete — 请求体为 JSON:{ "sessionId": "<id>" },需 content-type: application/json

安装与启用

README 说明:宿主会热重载 profile 用户 patch 层($DSH_HOME/profiles/<profile>/cordis.patch.yml),将包装进 profile 的 node_modules 后插入 patch 即可,无需重启 DSH。

在对应 profile 的 cordis.patch.yml 中增加:

- insert:
    - id: dsh-session-delete
      name: 'dsh-session-delete'

具体如何把包放入 node_modules(例如 npm 安装路径或本地链接)以你当前 profile 的惯例为准;安装命令以 README 与仓库文件为准,勿凭插件名臆造 dsh plugin add 类命令。

典型用法

  1. 安装并启用 patch 后,打开 DSH Web 侧栏,在目标会话的右键(或会话)菜单中找到 删除会话。
  2. 在确认框中确认;成功后列表刷新,该会话不再出现。
  3. 若需排查插件是否加载,可对同源页面请求 GET /dsh-session-delete/api/health;程序化删除须走 POST /dsh-session-delete/api/delete 并携带合法 sessionId 与 JSON 头,且满足上述同源规则。

适用场景与注意

适合:需要彻底移除某次会话的本地痕迹(日志、投影缓存、workspace 登记),而不是仅归档隐藏;整理长期开发产生的冗余会话。

注意:

  • 删除不可通过归档恢复;操作前确认 Session ID 与内容无需保留。
  • 插件以当前 DSH 进程权限读写 ~/.dsh/;安装前应阅读 源码 与 MIT 许可证(package.json 版本 0.1.0)。
  • 会话仍活跃或磁盘删除不完整时,接口会按 README 返回错误,可修正条件后重试。

结尾

dsh-session-delete 补的是 DSH 默认菜单里缺的「真删」:活存储 detach、磁盘目录与投影缓存、workspace 账本一并处理。需要时在 profile 的 cordis.patch.yml 插入上述条目即可热加载。

  • 目录页:https://www.skillhub.cn/plugins/jsunon/dsh-session-delete
  • GitHub:https://github.com/jsunon/dsh-session-delete
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye