前言¶
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 用户。安装前请确认宿主版本兼容性。