DSH 的 Web 模式为智能体开发提供了图形界面,但在会话管理上,用户往往只能查看或归档,缺乏直接删除会话日志和工作区登记的入口。这会导致目录膨胀,影响检索效率。dsh-delete-session 插件解决了这个问题,它将“删除”能力直接集成到会话列表的溢出菜单中。
插件简介¶
这是一个 DeepSeek Harness (DSH) Web 模式的客户端与主机插件。它由 SMWHff 维护,旨在为 Web 界面的会话列表提供“删除会话”的功能。操作时会彻底清理磁盘上的日志目录和引用该会话的工作区记录。
核心功能¶
- 菜单集成:在会话列表每行右侧的省略号菜单末尾追加“删除会话”选项。
- 安全确认:点击后弹出产品级风险确认对话框,必须勾选“我了解此操作不可恢复”后方可确认。
- 清理机制:彻底删除会话日志目录(
sessions/<project>/<sessionId>/),并从工作区记录中移除会话登记。 - 状态反馈:提供 Toast 成功/失败反馈;若删除当前打开会话,会清空选择回到空态。
- 运行时保护:运行中拒绝删除,提示等待完成;执行顺序为先 flush 缓冲事件落盘,再 detach。
- 事件转发: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__ 图。
典型用法¶
- 在 DSH Web 界面的会话列表中,找到目标会话行,点击右侧的省略号菜单。
- 在菜单末尾选择“删除会话”。
- 在弹出的确认对话框中勾选“我了解此操作不可恢复”,点击确认。
- 等待会话 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 模式提供了会话清理能力,减少了人工维护负担。更多细节与源码可参考: