DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-session-delete

d

dsh-session-delete

Manifest valid

DSH plugin: permanently delete cold sessions from a Settings page (Settings -> Session Management).

UI (client)hasBundlePatch

dsh-session-delete

DeepSeek Harness (DSH) 插件:在 设置 → 会话管理 中列出所有会话,并永久删除不需要的会话。

功能

删除语义

  • 删除该会话的持久化日志(~/.dsh/sessions/<项目>/<session-id>/)
  • 从所有工作区的会话账目中摘除(workspaceRegistry.detachSession)
  • 搜索索引(SQLite FTS)在下一次查询时自动同步清理
  • 两步确认防误删;删除前后都会校验,删除后验证持久化列表不再包含该会话
  • 每次删除都写日志(成功 info、异常 warn);工作区账目摘除失败会作为 warnings 回传界面,而不是被静默吞掉

活动会话限制:本次启动中打开过的会话(包括正在查看的当前会话)会被拒绝删除——活动 Agent 会重写日志,删除不彻底。重启应用后这些会话变成冷会话,即可正常删除。历史会话(此前运行留下的)随时可直接删除。

列表与批量操作

  • 子代理会话:DSH 的会话列表默认隐藏 origin: "subagent" 的会话。勾选 「显示子代理会话 (N)」 即可列出它们(N 是当前被隐藏的数量)。
  • 侧边对话隔离:better-sidebar 的 Side Chat 线程同样带 subagent 标记,但它们不是子代理。本插件按 Side: 标题前缀识别,永远不显示——删掉它会让侧边栏那个对话标签页变成孤儿。
  • 搜索:匹配标题、会话 ID、类型标签(子代理 / subagent、主会话 / main)、工作区路径、以及 agent preset(qq-chat、cordis 等)。输入 子代理(或其前缀 agent)会自动放开隐藏,一次列出全部子代理会话。
  • 分组:下拉切换 按时间(今天 / 近 7 天 / 近 30 天 / 更早)或 按工作区(会话创建时的 cwd,按会话数量降序;无 cwd 的归入「未知工作区」)。
  • 批量选中:整组勾选 / 全选 / 单行勾选三级。选中范围严格跟随屏幕上可见的条目——被搜索词或隐藏开关过滤掉的会话不会混进批量删除。分组标题右侧显示该组数量与合计占用。
  • 批量删除:逐个串行请求并显示进度(删除中 12/357),单条失败只计入失败数、不中断整批,结束后汇总成功与部分失败。
  • 占用大小:每行显示该会话日志文件的体积,便于判断先清理哪个。

安全设计

  • 删目录有守卫:递归删除会话目录前校验「目录名 == 会话 id」(DSH 一直如此命名)。一旦路径形态变化导致不匹配,就只删日志文件并记一条 warn,绝不盲目 rm -r——那可能带走整个工作区分组。
  • 定位失败不再假装成功:sessionPersistence.locate() 抛错时返回失败,而不是当成「没有产物」。
  • 状态未知即禁用:host 列表接口不可用时,界面显示错误提示并禁用所有删除按钮,不会把「拿不到活动状态」当成「全都是冷会话」。
  • 请求有超时:前端请求 20 秒超时(AbortController),host 无响应不会把界面永久锁死。

兼容性

宿主状态
DSH Desktop 2.0.10 / 内核 0.1.5-rc.2✅ 已验证(sessionPersistence.list() 返回 snapshot,本插件按 snapshot.header 读取)
DSH Desktop 2.0.9 / 内核 0.1.5-rc.1⚠️ 未验证。若该版本的 list() 返回的是裸 header 而非 snapshot,列表会取不到 id

这条分界线来自 2.0.10 的服务语义变化:sessionPersistence 改为按 SessionHandle(create/open)寻址,list() 返回 { header, sizeBytes, revision } 快照。若你的 DSH 更老,请先确认 list() 的返回结构再装。

安装

在目标 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 应用。

使用:设置(齿轮)→ 会话管理。

本地开发(file: 依赖)

"dependencies": {
  "dsh-session-delete": "file:D:/workspace/repos/dsh-session-delete"
}

pnpm install 后改 lib/ 里的代码,重启应用即可生效。

注意:file: 依赖在 profile 的 node_modules 下是副本而不是符号链接。改完仓库代码后需要重新 pnpm install(或手动把 lib/*.js 复制过去),否则运行的仍是旧代码。

结构

  • lib/index.js — Host 半部:在本地 webServer 注册两个路由
    • POST /api/session-delete/list → { sessions: [{ sessionId, live, running, sizeBytes?, agentPreset?, cwd? }] }
    • POST /api/session-delete/delete → { ok, code?, message?, warnings? }
    • 文件删除直接使用 node:fs/promises(rm),无需子进程
    • 列表结果带 5 秒缓存,避免反复刷新时重复扫描全部会话;删除成功后立即失效
  • lib/client.js — 浏览器半部:settings.section 的「会话管理」页,通过 fetch 调用宿主路由
  • cordis.patch.yml — 把宿主插件行插入组合(宿主半部)
  • package.json 的 dsh.client 声明让 Web 端自动发现 lib/client.js

更新记录

2026-09-14 — 兼容 DSH 2.0.10(内核 0.1.5-rc.2)

兼容

  • DSH 2.0.10 改动了 sessionPersistence.list() 的返回结构:从 header 数组变为 snapshot 对象数组({ header, sizeBytes, revision })。直读 snapshot 的 id 会拿到 undefined。现在改走 snapshot.header 取出 id/cwd/agentPreset,sizeBytes 则直接取 snapshot 自带的(后端已经 stat 好了,删掉了独立的 sizeOf 函数)。

修复

  • 递归删除会话目录缺少守卫:现在要求目录名等于会话 id,否则只删日志文件并记录警告
  • sessionPersistence.locate() 失败不再被当作「没有产物」而静默返回成功
  • 工作区账目摘除(detachSession)失败不再被吞掉,改为回传 warnings 并写日志
  • host 状态探测失败时,不再把全部会话渲染成可删除

新增

  • 「显示子代理会话 (N)」开关;Side Chat 线程始终隐藏
  • 批量选中(整组 / 全选 / 单行)与批量删除,带实时进度与失败计数
  • 搜索:标题、会话 ID、类型标签、工作区路径、agent preset
  • 分组:按时间或按工作区,均支持整组选中并显示组合计
  • 列表显示会话占用大小;host 列表接口新增 sizeBytes / agentPreset / cwd
  • 删除操作写日志(成功 info / 异常 warn)

改进

  • 前端请求加 20 秒超时,避免 host 无响应时界面锁死
  • host 列表接口加 5 秒缓存,删除后立即失效

License

MIT

Comments

Loading…

Similar plugins

dsh-session-manager

by SunshineR04

Settings-page manager for archived DeepSeek Harness sessions: restore an archived session to its previous workspace position or permanently delete it (direct physical deletion, no backup layer). Adds

Sessions & MessagesManifest valid

★ 1

↓ 1.6k/wk

MIT

JavaScript

Sep 25, 2026

dsh plugin --profile web add dsh-session-manager

Session management for DSH: archive or delete one session, archive/delete all sessions in a workspace, and restore archived sessions from the settings page — archiving backs up workspace metadata and

Sessions & MessagesManifest valid

★ 0

↓ 283/wk

dsh plugin --profile web add dsh-session-delete

by Vim0x3c

DeepSeek Harness 会话管理设置面板:列出本机全部会话(运行中/空闲/已归档),支持继续会话、预览大纲、删除会话 | Session management settings section for dsh web: resume, outline, and delete any session

UI & ExperienceManifest valid

★ 4

↓ 1.6k/wk

MIT

TypeScript

Aug 21, 2026

dsh plugin --profile web add dsh-session-manager

by TOBYCAI

DSH 会话管理插件:设置面板 + 侧边栏双入口,归档/恢复/跨工作区移动/软删进回收站;回收站可恢复·批量清空·7/30/90 天自动清理,按标题·会话 ID·工作区搜索,带磁盘与血统详情;已适配 DSH 0.1.5(v3 日志,被打开着的会话支持排队移动)。Session Manager for DeepSeek Harness — archive/restore/move/trash lif

Sessions & MessagesTools & CapabilitiesManifest valid

★ 17

↓ 321/wk

MIT

JavaScript

Sep 27, 2026

dsh plugin --profile web add dsh-sessions-manager

by wuxiangru915

Session manager for the DSH Web UI: browse all and archived sessions, restore/unarchive, delete with two-step confirmation, and preview conversation content from the Settings panel.

Sessions & MessagesManifest valid

★ 0

MIT

JavaScript

Sep 7, 2026

dsh plugin --profile web add @dshwp/dsh-session-manager

by dream12347

DSH 会话管理插件:删除(回收站恢复/彻底清除)、统计、继续/暂停、打开日志目录、对话顶部抽屉、工作区分组与排序、上下文压缩阈值设置。DSH session manager: delete with trash/restore/purge, stats, continue/pause, log folder, header drawer, workspace grouping, context

Terminal & ClientsSessions & MessagesMemory & ContextTools & CapabilitiesManifest valid

★ 68

MIT

TypeScript

Aug 27, 2026

dsh plugin --profile web add dsh-session-manager