dsh-session-remove:在侧栏中停止并永久删除 DeepSeek Harness 会话

前言

DeepSeek Harness(DSH)侧栏的会话菜单目前仅提供重命名、分叉与归档功能。归档只是将会话隐藏,并不清理本地日志数据;若要停止一个会话的运行,用户往往需要先打开会话再点击停止按钮。这种操作路径增加了管理成本。

dsh-session-remove 插件将“停止工作”与“永久删除数据”这两个操作直接放回用户最常点击的位置——侧栏会话行的菜单中。

插件概览

  • 名称:dsh-session-remove
  • 维护者:BG0EXM
  • 许可证:MIT
  • 核心价值:在侧栏会话菜单中直接添加“停止”与“删除”选项,管理会话生命周期。

核心功能

  1. 菜单扩展:在侧栏会话菜单中添加“停止会话…”与“删除会话…”选项。
  2. 停止会话:取消运行中的回合、子代理、后台任务与定时提醒。
  3. 永久删除:删除会话的日志(session.v4.l.zstd)、投影缓存与工作区记录。
  4. 事件通知:通过官方事件 api-session/removed 通知侧栏移除该行。
  5. 更新提示:检查更新并提示(仅提示,不静默替换)。

安装与依赖

安装前请确保宿主 DSH 版本为 0.2.0-rc.2 或更高。

# 桌面版:侧栏 → 插件 → 添加插件 → 填包名
dsh-session-remove

# 其它 profile(web / tui / 自建)
dsh plugin --profile web add dsh-session-remove

安装后不需要重启 DSH,也不需要刷新页面。

典型用法

  1. 鼠标移到侧栏任意会话行。
  2. 点击 ⋯ 菜单。
  3. 选择 停止会话… 取消当前运行。
  4. 选择 删除会话… 永久移除本地数据。

实现原理与安全边界

该插件不使用 DOM 注入或 React Fiber 遍历,而是通过官方扩展点实现,以避免核心 UI 更新导致失效。

菜单注册

菜单项注册进官方 slot sidebar.workspaces.session.menu.item,与其他菜单项按 order 排序。

删除流程

删除操作通过 ctx.workspaceRegistry 与 storageDomain 的公开 API 完成。为确保数据一致性,执行顺序必须严格遵循:

  1. 释放会话:先释放会话的写句柄。
  2. 停止工作:调用 ctx.workspaceRegistry.stopSessionActivity()。
  3. 等待清零:确认所有任务已结束。
  4. 删除文件:移除会话目录与缓存。

若尝试删除仍在运行中的会话,插件会拒绝操作并提示“停止并删除”。停止操作会丢弃排队中的输入。

删除的内容

位置 内容
$DSH_HOME/sessions/<项目>/<会话id>/ 会话日志(session.v4.jsonl.zstd)与写租约
session_projcache 存储域 投影检查点记录
$DSH_HOME/storages/workspace.json 工作区成员位置、置顶、归档记录

注意事项

  • 零依赖、零构建:不需要额外环境,安装即用。
  • 不可恢复:删除操作不可撤销,没有回收站功能。
  • 更新生效:更新插件后需要重启宿主模块才能生效。
  • 附件处理:附件是内容寻址去重的,插件仅删除会话目录,不按会话回收附件。

排查

插件运行日志位于 $DSH_HOME/plugin-session-remove.log,可用于排查安装或执行问题。

生态链接

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

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

小夜