dsh-session-batch:DSH 会话批量清理与真实运行状态

前言

在 DeepSeek Harness(DSH)里长期使用,会话日志会堆积在 $DSH_HOME/sessions 下:官方持久化层提供归档能力,但没有提供删除 API。侧边栏也说不清某个会话是「真的在跑任务」,还是进程里仍留着 Session 对象——只打开过一次、刷新页面也不会消失,只有重启宿主才会释放。

若还要连同某次对话在工作区里产出的文件一起删掉,归属判定本身很复杂;社区里 dsh-session-artifacts 已经用创建证据、命令时间窗等规则做了解决。本文介绍的是维护者 ajsney764-blip 在 SkillHub 分类「记忆」下的插件 dsh-session-batch(GitHub):在侧边栏做批量删除会话记录,可选联动删除产出文件,并用徽章区分 Running 与 In memory。删除是永久性的,不进回收站。

这是什么

dsh-session-batch 是面向 DSH 0.2.x 的插件(当前仓库 package.json 版本为 0.2.2,许可证 MIT)。它不重新实现产物归属逻辑;安装可选同伴插件 dsh-session-artifacts(>= 0.7.0)时,产物删除直接调用对方导出的函数。

核心功能

批量删除会话记录

在单个面板里勾选任意数量的会话,一次请求删除:会话日志、子智能体记录、工作区成员关系、置顶与归档标记等。

可选删除工作区产物

确认对话框里可勾选「同时删除这些对话产出的文件(含子会话产物)」;执行前会展示文件列表与总大小。未安装 dsh-session-artifacts 时,该复选框隐藏,仅删聊天记录。

诚实的运行状态

  • Running:当前轮次、owned jobs、子智能体或定时提醒等仍活跃,数据来自宿主 workspace/session-activity 瀑布流。
  • In memory:宿主仍持有 Session 对象;刷新页面不会改变,重启应用才会消失。

可信赖的删除流程

文档描述的行为包括:忙碌会话先尝试停止,仍忙则整次操作中止且零副作用;日志目录删除后会在磁盘上复查;已清理的 id 写入墓碑文件并从面板隐藏;未能删除的项记入队列,下次启动重试。单次请求最多处理 200 个会话。

环境与依赖

  1. DSH 0.2.x,且需具备 connection、sessionQuery、workspaceRegistry 服务(官方发布的 web 组合均包含)。
  2. 可选:dsh-session-artifacts >= 0.7.0,用于产物删除。
  3. Node:开发/测试侧要求 >= 20(见 package.json 的 engines)。

安装与启用

官方 README 给出的安装方式为 npm 包(发布后)或本地路径;安装后须完全重启 DSH,宿主侧代码仅在启动时加载。

# from npm (once published)
dsh plugin --profile <profile> add dsh-session-batch

# from a local checkout
dsh plugin --profile <profile> add <absolute-path-to-this-repo>

Desktop 应用独占 profile 时,CLI 的 dsh plugin 无法直接改其配置;README 提供在应用完全退出后执行的 PowerShell 脚本 scripts/install-when-closed.ps1,并可用 scripts/rollback-when-closed.ps1 回滚。

# fully quit DeepSeek Harness first
pwsh -ExecutionPolicy Bypass -File scripts/install-when-closed.ps1 -WaitForExit

插件以当前 DSH 进程的权限运行;安装前建议阅读仓库源码与 MIT 许可证,确认删除范围符合你的数据安全要求。

典型用法

  1. 在侧边栏打开 Batch purge。
  2. 点 Select,勾选会话(或用 Select all),再点 Delete records of N selected。
  3. 在对话框中:
    - 默认 Chat records only——日志、子智能体记录、工作区成员关系。
    - 勾选 Also delete the files these conversations produced (N · size) 可同时删产物;会先展示文件列表。
  4. 确认执行。不进入选择模式时,也可在单行上单独删除某个会话。

删除顺序在文档中概括为:先停作业 → 脱离工作区 →(经同伴插件)移除产物 → 移除日志并校验 → 清理缓存 → 墓碑。正在运行的会话若拒绝停止,整批删除会被拒绝。

适用场景与注意

适合谁:本地或自托管 DSH 长期试用、实验性对话很多,需要定期清空 $DSH_HOME/sessions 下日志,又希望在同一界面区分「真在跑」和「只占内存」的会话;在已安装 dsh-session-artifacts 的前提下,需要「连产物一起清」的批量操作。

与同伴插件的关系:dsh-session-batch 与 dsh-session-artifacts 不争夺 Cordis 插槽;两者都能删会话记录,谁先执行谁生效。产物删除遵循同伴插件规则:仅 创建 的文件可删,仅交付、仅编辑、时间窗冲突或 $DSH_HOME 内的路径不会删。

已知限制(README 原文要点):

  • 已打开的 Session 无法被宿主释放;删记录后本插件面板会隐藏该行,但 DSH 自带侧边栏可能要重启应用才不再显示。
  • 日志删除后,队列中的产物只能按路径重试。
  • 另一个仍打开该会话的浏览器标签可能在删除后重建日志,应先关闭标签页。
  • 含 /、\、. 或 .. 的 id 会被拒绝。

结尾

dsh-session-batch 补的是 DSH 默认「能归档、不能删」与侧边栏状态不透明之间的缝隙:批量、可校验的会话清理,可选委托 dsh-session-artifacts 做产物删除,并用 Running / In memory 减少误判。

SkillHub 为社区维护的插件目录,与 DeepSeek / 幻方无官方从属关系;安装与删除操作均在你本机 DSH 权限下执行,请自行评估风险。

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

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

小夜