前言¶
在 DeepSeek Harness(DSH)里整理侧栏会话时,内置的「归档」只会把会话 id 记入 archivedSessionIds,从分组界面里藏起来,并不会删掉磁盘上的会话日志和投影缓存。长期开发、反复开新会话时,硬盘里会堆着大量已不再需要的 session.v4.jsonl.zstd 与 session_projcache 文件,只能靠手动找路径清理。
社区插件 dsh-delete-sessions(仓库 Linusteller/dsh-session-delete)在侧栏会话的「…」菜单里补上「删除会话」:确认后按固定顺序停活动、摘掉归档/置顶/工作区记账、删缓存与日志,并通知界面刷新。下面介绍它是什么、怎么装、怎么用,以及删除时实际会发生什么。
这是什么¶
- 定位:DSH 客户端插件(
dsh.client.platform为web),在侧栏为每个会话增加「删除会话」菜单项,实现永久删除,不是归档。 - 维护者:Linusteller(npm 包作者字段为
linusteller)。 - 包名与版本:npm 包名为
dsh-delete-sessions,当前资料中版本为0.2.2;Cordis 插件 id 为dsh-session-delete。 - 分类:客户端;在 SkillHub 等社区目录中归类为客户端类插件,与 DeepSeek / 幻方无官方从属关系,属于「一切皆插件」生态里的社区贡献。
核心功能¶
插件只做一件事:从 UI 触发一次完整的会话移除流程,避免「列表里没了、磁盘还在」的半完成状态。README 中描述的顺序如下。
- 停活动 — 走
workspace/session-stop(与归档时的「停止并归档」同路径,含agent.cancel),并短暂等待最后一次事件落盘。 - 摘除记账 — 调用
unarchiveSession、unpinSession,并对各工作区执行detachSession(均幂等)。 - 删投影缓存 — 通过 storage-domain 的
session_projcache域同步清理内存与磁盘;域未挂载时跳过(派生数据,冷读会重建)。 - 删日志目录 — 优先用
sessionPersistence.locate()定位路径(session id 经 DSH 编码,无路径穿越);带重试以应对 Windows 上反病毒/索引短暂占用。 - 广播移除 — 发送
api-session/removed,界面立即去掉该行。
安全方面:删除接口只接受回环来源的 POST,body 仅携带 sessionId;会先 sessionPersistence.stat() 校验会话存在再删。
安装与启用¶
推荐用 bundle 方式安装,安装后 cordis.patch.yml 会自动插入加载项。
dsh plugin --profile desktop add dsh-delete-sessions
若手动安装:将插件目录放到 profile 的 node_modules/dsh-delete-sessions(或使用 link: 依赖),在该 profile 自己的 cordis.patch.yml 中加入:
- insert:
- id: dsh-session-delete
name: 'dsh-delete-sessions'
注意:手动加行后不要再应用本仓库自带的 cordis.patch.yml,否则同一插件会因 id 冲突被加载两次。完成后重启 DeepSeek Harness。
运行环境要求 Node.js >=18;peer 依赖 @deepseek-ai/cordis >=4(optional)。许可证为 MIT。
典型用法¶
- 在侧栏任意会话上点击「…」。
- 在「归档会话」下方会出现「删除会话」(带删除图标,风格与其余菜单项一致)。
- 点击后在确认对话框中确认;删除成功后该行立即从列表消失。
删除不可撤销。任何一步失败会整体报错,不会只清 UI 而留下磁盘文件。
适用场景与注意¶
适合:需要定期清理试验会话、敏感对话或占用空间的旧日志,且希望操作集中在侧栏、不必手写 shell 删 ~/.dsh/sessions 的开发者。
局限(来自 README):
- 若 profile 未挂载
session_projcache域,或无法定位~/.dsh/sessions,投影缓存或日志目录可能残留;缓存可在下次冷读时重建,日志需自行清理。 - 插件以当前 DSH 进程的权限运行;安装前建议阅读 GitHub 源码 与 MIT 许可证,确认行为符合预期。
内置归档仍适用于「暂时藏起来、保留文件」;需要真正腾出磁盘或彻底去掉会话记录时,用本插件的「删除会话」。
链接¶
- 社区目录页:https://www.skillhub.cn/plugins/Linusteller/dsh-session-delete
- 源码与说明:https://github.com/Linusteller/dsh-session-delete