前言¶
在 DeepSeek Harness(DSH)里,侧栏会积累大量会话记录。官方会话持久化方案在文档中说明 seam 层没有删除接口,日志会一直累积,直到外部手段移除。若只想清掉某次对话的聊天记录、又不想动工作区里的项目文件,单靠隐藏列表项也解决不了磁盘上的会话目录问题。dsh-session-trash 是社区维护的客户端插件,在侧栏会话「…」菜单里补上「真删」能力,并在删前备份、删后可撤销。
这是什么¶
插件名 dsh-session-trash(npm 包名同),维护者 ozjxnxh,分类为客户端。它在 DSH 侧栏每条会话的「…」菜单中增加两个入口:删除单条会话,以及带搜索与全选/清空的多选批量删除。删除的是聊天记录本身(会话日志目录与相关元数据),不是仅从列表里隐藏;工作区目录中的项目文件与内容寻址的上传附件不会被改动。
核心功能¶
菜单与交互¶
侧栏(含归档行)会话「…」菜单新增:
- 删除会话:危险色样式并带分隔线,点击后弹出确认框,确认后删除该条会话。
- 多选批量删除…:弹出带复选框的列表,支持搜索、全选与清空,一次删除多条。
删除完成后,界面右下角出现提示条,可一键撤销(将备份移回原位)。单条删除会连带其全部子代理会话,确认文案中用一行汇总子代理数量,而不是逐条平铺。
删什么、不删什么¶
| 数据 | 处理 |
|---|---|
会话日志 ~/.dsh/sessions/<项目>/<会话id>/ |
删除(删除前先整目录迁入备份) |
投影缓存 session_projcache 记录 |
删除 |
工作区记账(workspace 域的 sessionIds / 置顶 / 归档) |
摘除 |
该会话的定时提醒(schedule 域) |
删除 |
| 工作区目录里的项目文件 | 不动 |
| 上传附件(内容寻址、跨会话共享) | 不动 |
备份默认位于 ~/.dsh/trash-backup/<时间戳>/,内含 manifest.json;默认保留最近 20 批,也可手工从备份目录拷回。
多选列表与子代理¶
侧栏主列表本身不展示 origin === "subagent" 的会话;多选批量删除对话框会按树形展示主会话与子代理关系。默认收起子节点;选中主会话时可一并选中其家族内的子代理;展开/收起仅影响展示,与选中态分离。分叉会话(fork)仍留在主列表,判定子代理只认 origin,与侧栏过滤规则一致。
宿主侧行为¶
插件在 DSH 0.2.1-alpha.2 缺少官方删除会话 API 的前提下,自建 Remote 面 trash,经 typertGateway 的 SRC 接收路径注册。删除前会请求各 workspace/session-stop 提供方停会话并落盘;若日志仍被占用则退避重试最多 6 次,仍失败则回滚备份并在对话框报错,避免半删。成功后广播 api-session/removed,并配合工作区 domain/changed 与 sessions.refresh() 刷新侧栏。
当前版本在 package.json 中为 0.1.0,许可证 MIT。
安装与启用¶
DSH 生态采用「一切皆插件」的思路;社区目录由独立站点维护,与 DeepSeek / 幻方无官方从属关系。本插件被 awesome-dsh-plugin 目录 收录后,可在 DSH 设置 → 插件市场 一键安装。命令行等价形式如下(资料原文,走 bundle 层 patch,勿在 profile 层重复插入同一条 loader 条目):
dsh plugin --profile web add github:YuJunZhiXue/dsh-session-trash
若在本机 desktop profile 手工安装(Windows 示例),需要:
- 将插件目录链接到 profile 的
node_modules:
junction C:\Users\<你>\.dsh\profiles\desktop\node_modules\dsh-session-trash <本目录>
-
在 profile 的
cordis.patch.yml中增加 insert:id: session-trash,name: 'dsh-session-trash'。 -
重启 DSH(客户端 bundle 与 loader 条目均在启动时组合;改 patch 或插件文件不会热加载)。
重启后可在 ~/.dsh/logs/desktop-next-<日期>.0.jsonl 中搜索 session-trash,应看到类似:
session-trash 就绪(日志根:…\sessions,备份:…\trash-backup)
若出现 启动降级 或 loader 报错,需按 README 排查 apply(ctx, config) 与 package.json exports 等问题。卸载时删除 profile patch 中的 insert 并去掉链接,再重启即可。
插件目录页:https://www.skillhub.cn/plugins/ozjxnxh/dsh-session-trash
源码:https://github.com/ozjxnxh/dsh-session-trash
典型用法¶
- 打开 DSH 客户端,在侧栏找到要清理的会话,点击该行「…」。
- 选 删除会话,在确认框中核对「将删除」说明(含子代理汇总),确认后等待提示条;若误删,在提示条上点撤销。
- 若要一次清理多条,选 多选批量删除…,搜索或全选目标会话,确认批量删除;同样可通过提示条撤销最近一批操作。
上述步骤只影响会话日志与相关 DSH 元数据,不会删除仓库或工作区内的项目产物。
适用场景与注意¶
适合需要定期清理会话磁盘占用、又希望保留工作区文件与共享附件的 DSH 用户。批量整理归档区或测试产生的会话时,多选入口比逐条操作更省事。
使用前请注意:
- 插件以当前 DSH 进程的权限读写
~/.dsh/sessions与备份目录;安装前应自行查看源码与 MIT 许可证,确认可接受其行为。 - 正在运行的会话删除前会先尝试停止;极端占用情况下可能整次操作失败并回滚,不会留下半删状态。
- 若启用了 SQLite 全文搜索索引(非默认的
:memory:配置),索引会在 reconcile 中跟进,必要时需重启后重建。 - 撤销依赖默认保留的最近 20 批备份;更早的批次会被轮转丢弃,无法通过内置撤销恢复。
结尾¶
dsh-session-trash 补上了侧栏「真删会话」与多选批量删除,删前自动备份、删后可撤销,并明确不动工作区项目文件。需要安装或细节时,可查阅 SkillHub 目录页 与 GitHub 仓库 中的 README。