DeepSeek Harness 插件:dsh-delete-session

DSH 的 Web 模式为智能体开发提供了图形界面,但在会话管理上,用户往往只能查看或归档,缺乏直接删除会话日志和工作区登记的入口。这会导致目录膨胀,影响检索效率。dsh-delete-session 插件解决了这个问题,它将“删除”能力直接集成到会话列表的溢出菜单中。

插件简介

这是一个 DeepSeek Harness (DSH) Web 模式的客户端与主机插件。它由 SMWHff 维护,旨在为 Web 界面的会话列表提供“删除会话”的功能。操作时会彻底清理磁盘上的日志目录和引用该会话的工作区记录。

核心功能

  1. 菜单集成:在会话列表每行右侧的省略号菜单末尾追加“删除会话”选项。
  2. 安全确认:点击后弹出产品级风险确认对话框,必须勾选“我了解此操作不可恢复”后方可确认。
  3. 清理机制:彻底删除会话日志目录(sessions/<project>/<sessionId>/),并从工作区记录中移除会话登记。
  4. 状态反馈:提供 Toast 成功/失败反馈;若删除当前打开会话,会清空选择回到空态。
  5. 运行时保护:运行中拒绝删除,提示等待完成;执行顺序为先 flush 缓冲事件落盘,再 detach。
  6. 事件转发:detach 发布的 session/disposed 由 host API proxy 转发为 host/session-removed,已打开的客户端列表自动移除该会话。

安装与启用

使用 pnpm 安装插件:

pnpm dsh plugin --profile web add file:/path/to/dsh-delete-session

安装后需重启 web 表面,并刷新页面以获取新的 window.__DSH_BOOT__ 图。

典型用法

  1. 在 DSH Web 界面的会话列表中,找到目标会话行,点击右侧的省略号菜单。
  2. 在菜单末尾选择“删除会话”。
  3. 在弹出的确认对话框中勾选“我了解此操作不可恢复”,点击确认。
  4. 等待会话 agent 运行完成后再尝试删除。

工作原理

  • 主机端:插件按 dsh-open-in-vscode 同款模式注册了 deleteSession/delete 的严格 Typert Remote,Gateway 无需 @Remote 标记表即可解析调用。
  • 客户端:由于当前构建的会话行菜单没有原生 slot,插件使用 legacy 适配器模式。它识别会话行省略号按钮(通过 aria-label 模板匹配),并在 portal 菜单弹出时使用 MutationObserver 将“删除会话”行注入菜单中。会话身份解析优先级为:显示标题唯一匹配 -> 同名会话按 DOM 位置消歧 -> 仅当解析失败且该行是当前选中行时才回退到当前会话。

注意事项

  • 依赖项:插件依赖运行时会话列表快照(displayTitle、blank、current)以及 workspace locale 的 actions.session.aria 和 menu.archiveSession 模板。它也依赖会话行 [role="treeitem"] 的 aria-selected 标记。
  • 维护:官方后续版本若调整这些契约,需更新 src/client/session-menu.ts 顶部的识别逻辑。
  • 权限与审查:插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

该插件为 DSH Web 模式提供了会话清理能力,减少了人工维护负担。更多细节与源码可参考:

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

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

小夜