dsh-session-delete-next:为 DSH 0.2.0-rc.2 侧栏补上「删除会话」

前言

DeepSeek Harness(DSH)把界面与能力拆成 Cordis 插件,侧栏里每条会话行通常带有固定、重命名、分叉、归档等官方菜单项。若你本地积累了大量测试会话或误开的空会话,侧栏没有「删除」时,只能依赖归档或手动清理磁盘目录,既不方便,也容易和 workspace 账目不一致。

插件市场里的 dsh-session-delete 面向较早的 peer 范围(^0.1.0-rc.5),在 0.2.0-rc.2 运行时往往装不上。维护者 ljp888 在 GitHub 仓库 ljp888/dsh-session-delete-next 提供了重写版:走官方 slot,不再依赖 DOM 注入。社区目录页见 SkillHub(独立站点,与 DeepSeek / 幻方无官方从属关系)。

下面介绍它做什么、怎么装、怎么用,以及安装前需要知道的限制。

这是什么

dsh-session-delete-next 是 DSH 的客户端插件(宿主 + 浏览器各一半),在侧栏每条会话行的 … 菜单中增加 删除会话,永久删除该会话的全部本地记录,不可恢复。

  • 目标运行时:0.2.0-rc.2
  • 包版本(资料):1.0.0
  • 许可证:MIT
  • 本包未发布到 npm,安装方式以仓库 README 为准,不要用名称臆造 dsh plugin add github:... 一类命令。

核心功能

入口与行为

入口 菜单项 行为
会话行 … 菜单 删除会话 永久删除该会话的全部本地记录,不可恢复

要点如下:

  1. 危险操作用红色菜单项,并弹出独立确认对话框,明示「不可恢复」,并显示会话标题。
  2. 运行中的会话一律拒绝删除(含当前会话)。宿主返回 409 live,对话框给出提示。
  3. 删除成功后侧栏该行立即消失,无需刷新页面(复用官方已转发的 api-session/removed 事件)。
  4. 菜单文案跟随 GUI 语言(中文 / 英文),走官方 locale 服务。

与旧版的技术差异

0.2.0-rc.2 已开放官方扩展点,本插件通过标准 slot 注册,侧栏结构变动时不会像 DOM 注入那样静默失效:

  • Host(index.js):注册同源路由 POST /dsh-session-delete-next/delete,请求体 { sessionId };删除顺序为先删文件、后记账,避免「界面已隐藏但磁盘仍在」的半删状态;跨站 Origin 返回 403。
  • Client(client.js):注册 sidebar.workspaces.session.menu.item(order: 500,排在 pin/rename/fork/archive 之后)与 shell.overlay(确认框)。

安装与启用

最省事的方式是把仓库 clone 到 profile 的插件目录(<profile> 默认为 ~/.dsh/profiles/desktop):

git clone https://github.com/ljp888/dsh-session-delete-next.git \
  ~/.dsh/profiles/desktop/node_modules/dsh-session-delete-next

Windows PowerShell:

git clone https://github.com/ljp888/dsh-session-delete-next.git `
  "$env:USERPROFILE\.dsh\profiles\desktop\node_modules\dsh-session-delete-next"

也可以手动复制整个包目录到 <profile>/node_modules/dsh-session-delete-next/,然后:

  1. 在 <profile>/cordis.patch.yml 追加一行挂载(文件被 HMR 监听,保存后热加载):
- insert:
    - id: dsh-session-delete-next
      name: dsh-session-delete-next
  1. 浏览器刷新一次,侧栏会话 … 菜单中应出现「删除会话」。

不要把本包写进 profile 的 package.json 的 dependencies:包不在 npm 上,后续 pnpm install / dsh plugin 可能去 registry 拉取而失败;在 profile 里跑 pnpm install 也可能剪掉该目录,重装即可。

宿主加载成功时,可在 ~/.dsh/logs/desktop-next.log 看到类似:

[dsh-session-delete-next] host ready: POST /dsh-session-delete-next/delete

典型用法

  1. 在侧栏找到已结束、非当前运行的会话(正在运行或仍打开的会话会被拒绝)。
  2. 点击该行 …,选择红色 删除会话。
  3. 在确认对话框中核对会话标题,点击 永久删除(或取消)。
  4. 成功后该行从侧栏消失;磁盘上对应会话目录应被移除(路径形态为 ~/.dsh/sessions/<项目目录>/<会话 id>/ 整目录消失)。

若你只有一条活跃会话、无法做破坏性实测,可按 README 建议:新开一个测试会话 → 发一条消息 → 切回原会话 → 对测试会话执行删除。

适用场景与注意

适合谁

  • 已在 DSH 0.2.0-rc.2 上使用桌面 profile,需要单条清理本地会话记录的智能体开发者或日常用户。
  • 需要从侧栏安全入口删除,而不是手删目录导致账目不一致的场景。

已知限制(资料原文)

  • 不能删除 live 会话;需先关闭该会话或重启 DSH 后再删。
  • 子智能体会话可删;父会话侧栏会随 api-session/removed 收敛。
  • 附件不删:~/.dsh/attachments/** 为内容寻址、跨会话共享,删会话不会动附件。
  • Windows 上若其他进程持有 session.lock,删除可能报 EBUSY;对话框显示原始错误,磁盘状态不变,可重试。
  • 未实现按工作区批量删除,仅支持单会话。
  • index.js 中部分 fail-closed 加固不在 HMR 监听根内,需重启 DSH 后才能在运行实例中生效。

安装前请自行核对

插件在当前 DSH 进程权限下读写会话目录与 workspace 账目。安装前应阅读 index.js 与 client.js,确认行为与 MIT 许可证可接受。

结尾

dsh-session-delete-next 在 0.2.0-rc.2 上补上了侧栏「删除会话」,用官方 slot 与先删文件后记账的流程,替代因 peer 不兼容而难以安装的 dsh-session-delete。安装以 clone 到 profile 的 node_modules 并追加 cordis.patch.yml 为准。

羽毛球分组比赛记分
小程序二维码

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

小夜