dsh-session-delete:永久删除 DeepSeek Harness 冷会话

前言

DeepSeek Harness (DSH) 采用插件化架构,允许开发者扩展功能。随着使用时间的增加,会话产生的持久化日志、工作区账目以及搜索索引会占用磁盘空间并增加检索负担。dsh-session-delete 插件在「设置 → 会话管理」中提供了直接管理这些会话的界面,支持永久删除冷会话。

核心功能

删除语义

该插件在删除会话时会执行以下操作:
* 删除持久化日志(~/.dsh/sessions/<项目>/<session-id>/)。
* 从工作区账目中摘除会话引用(workspaceRegistry.detachSession)。
* 清理搜索索引(SQLite FTS),在下一次查询时自动同步完成。
* 包含两步确认机制,删除前后均进行校验,确保持久化列表不再包含该会话。
* 每次删除都会记录日志(成功为 info,异常为 warn),工作区账目摘除失败会作为警告回传界面,不会静默吞掉错误。

列表与批量操作

  • 子代理会话:默认隐藏 origin: "subagent" 的会话。勾选「显示子代理会话 (N)」开关即可列出它们。
  • 侧边对话隔离:Better-Sidebar 的 Side Chat 线程带 subagent 标记,本插件按标题前缀 Side: 识别,永远不显示。
  • 搜索:支持按标题、会话 ID、类型标签(子代理/主会话)、工作区路径、Agent Preset(如 qq-chat)搜索。输入 子代理 会自动放开隐藏并显示所有子代理会话。
  • 分组:支持按时间(今天/近7天/近30天/更早)或按工作区(会话创建时的 cwd)分组。
  • 批量选中与删除:支持整组勾选、全选、单行勾选。选中范围严格跟随屏幕可见条目。批量删除逐个串行执行,显示进度(如 删除中 12/357),单条失败不中断整批,结束后汇总成功与失败数。
  • 占用大小:每行显示会话日志文件的体积。

安全与限制

  • 目录守卫:递归删除会话目录前校验目录名等于会话 ID。若路径形态变化导致不匹配,只删日志文件并记录警告,防止误删整个工作区分组。
  • 活动会话限制:本次启动中打开过的会话(包括当前查看的会话)会被拒绝删除,因为活动 Agent 会重写日志,删除不彻底。重启应用后这些会话变成冷会话,即可正常删除。
  • 状态检测:Host 列表接口不可用时,界面会显示错误并禁用所有删除按钮。
  • 请求超时:前端请求设置 20 秒超时(AbortController),防止 Host 无响应导致界面锁死。

兼容性

  • DSH Desktop 2.0.10 / 内核 0.1.5-rc.2:已验证。
  • DSH Desktop 2.0.9 / 内核 0.1.5-rc.1:未验证。若该版本的 list() 返回的是裸 header 而非 snapshot,列表将取不到 id。

安装与启用

在目标 profile 的 package.json(例如 ~/.dsh/profiles/desktop/package.json)中加入依赖与 bundle:

{
  "dependencies": {
    "dsh-session-delete": "github:<你的用户名>/dsh-session-delete"
  },
  "dsh": {
    "profile": {
      "bundles": [
        "@deepseek-ai/dsh-base",
        "@deepseek-ai/dsh-web-app",
        "…其他插件…",
        "dsh-session-delete"
      ]
    }
  }
}

在 profile 目录执行 pnpm install,重启 DSH 应用。

典型用法

进入 设置(齿轮)→ 会话管理。使用搜索、分组或开关筛选会话,选中后点击删除即可。

总结

dsh-session-delete 提供了一个安全、可控的会话清理入口,适合需要定期整理会话数据、释放磁盘空间或维护工作区账目的 DSH 用户。安装前请确认宿主版本兼容性。

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

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

小夜