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

前言

DeepSeek Harness(DSH)侧栏里的会话可以归档:条目会从列表里消失,需要时还能恢复。但归档并不等于从磁盘上清掉数据。压缩日志仍留在 ~/.dsh/sessions/,投影检查点仍在 ~/.dsh/storages/session_projcache/,工作区也会继续为可能再也不会打开的会话 id 记账。若你关心本地留存、隐私或磁盘占用,需要的是「删除」而不是「隐藏」。

社区插件 dsh-session-delete(仓库 Adolanium/dsh-session-delete)在 DSH 0.2.x 上补了这一动作:在会话行菜单底部增加 Delete session…,经确认后由 Host 清理日志、投影缓存与工作区记账,而不是仅归档。插件由 Adolanium 维护,分类为客户端;MIT 许可,非 DeepSeek 官方产品。

这是什么

dsh-session-delete 的定位是:为 DeepSeek Harness 提供永久会话移除能力。npm 包名为 dsh-plugin-session-delete(当前资料中版本为 0.1.0)。它在不改变内置归档行为的前提下,在同一菜单里增加第二条、需二次确认的路径。

归档(Archive) 删除(Delete)
侧栏行消失 是 是
磁盘上的会话日志 保留 移除
投影缓存 保留 移除
工作区记账 / 置顶 / 归档项 保留 移除
可恢复 可取消归档 不可

环境与安装

依赖:DeepSeek Harness 0.2.x(README 写明在 0.2.1-rc.1 上测试)。Desktop 与 Web UI 均支持。包为纯 JavaScript,无 prepare 脚本、无运行时依赖,Node >= 20。

下面介绍两种常用安装方式;安装规格均为 GitHub 地址,而非凭名称拼接。

从 Plugins 页面安装(推荐)

  1. 打开侧栏,进入 Plugins。
  2. 选择安装插件,粘贴:
github:Adolanium/dsh-session-delete
  1. 完成安装;bundle 默认启用。
  2. 刷新 DeepSeek Harness 窗口(Ctrl+R / Cmd+R)。浏览器端懒加载,菜单项需在刷新后出现。

使用 dsh CLI

若你自行启动 profile(Web、headless 或已停止的 Desktop),可对命名 profile 安装同一规格:

dsh plugin --profile desktop add github:Adolanium/dsh-session-delete

dsh 会把 bundle 写入 profile 的 dsh.profile.bundles(包声明了 dsh.bundle)。启动 Harness 后同样建议刷新窗口。

若需固定到某一发布版本,可带标签安装(README 示例):

dsh plugin --profile desktop add github:Adolanium/dsh-session-delete#v0.1.0

卸载:

dsh plugin --profile desktop remove dsh-plugin-session-delete

在 Desktop 已运行时对 desktop profile 执行 CLI 受 profile 锁支持,但 Plugins 页面通常更省事且会报告激活状态。

典型用法

打开某条会话行右侧 ⋯ 菜单,选择 Delete session…。对话框会显示会话名称,并说明将移除日志及其缓存投影。Delete 执行删除;Cancel 不做任何改动。

不同会话状态下的结果如下。

状态 行为
Cold — 无存活 Agent 占用 立即删除;行从列表消失,对话框关闭。
Live — 本应用打开或仍有运行中的 turn 对话框说明日志仍在使用,可提供 Delete on next start。
Unknown id 拒绝;不改动任何数据。

Delete on next start

存活会话无法从 Agent 底下强行摘掉,因此可排队删除:

  • id 写入 ~/.dsh/plugin-session-delete/pending.json;
  • 会话会尽力归档,使行从默认列表消失;
  • 下次启动 DeepSeek Harness 时在写句柄空闲时重试删除;
  • 若你取消归档该会话,则取消排队删除 — 归档即可见的「待删除」状态。

已不存在的排队 id 会静默丢弃;仍在使用的 id 会保留到下一次启动再试。

删除范围与安全

对单个会话 id,Host 会移除:

  • ~/.dsh/sessions/<project>/<session-id>/ 下的会话目录(含各代 session.vN.jsonl.zstd 与锁文件);
  • session_projcache 域中的投影缓存记录(经域 API,避免内存残留);
  • 工作区记账槽、全局置顶与归档项。

故意保留的内容包括:~/.dsh/attachments 下按内容寻址的附件(可能与其他会话共享);子 Agent 子会话(独立 id,需单独删除);若组合了 dsh-session-query-sqlite,SQLite 搜索索引会在下次搜索时 reconcile;其他域中的派生行(遥测、标题等)因 id 无法解析而被忽略。

插件围绕四条规则设计删除安全性:单写者(先取得 persistence 写句柄并立即关闭,失败则拒绝删除);仅 loopback(非本机来源拒绝);严格 id 与目录校验;日志不在配置根下则拒绝删除而非只清记账。无网络、无遥测、无后台进程。

可选配置(均可省略,默认与标准安装一致)包括:dshHome(默认 $DSH_HOME 或 ~/.dsh)、sessionsRoot(默认 <dshHome>/sessions)、storagesRoot(默认 <dshHome>/storages,README 配置表在资料中截断,其余字段以仓库文档为准)。

适用场景与注意

适合需要在 DSH 侧栏明确「删掉这条会话及其本地持久化痕迹」的开发者或自用环境,例如清理试验会话、减少 ~/.dsh 占用,或在归档仍不够时做不可逆移除。

安装前请知悉:这是会主动删除本地文件的社区代码,以当前 DSH 进程权限运行;应先阅读仓库 Safety 与源码、确认 MIT 许可。DeepSeek Harness 生态强调「一切皆插件」;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系,亦非官方应用商店。

结尾

归档适合「先藏起来还能回来」;dsh-session-delete 提供与之并列、需确认的 Delete session…,在 Host 侧一并清理日志、投影缓存与工作区记账。安装规格为 github:Adolanium/dsh-session-delete,装好后刷新界面即可在会话菜单中使用。

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

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

Xiaoye