dsh-session-tidy:在 DSH 里删除整段会话或单轮对话

前言

DeepSeek Harness(DSH)的会话会长期留在本地日志与工作区列表里。试插件、跑失败任务或误发一轮输入后,常见做法是新建会话或手动翻日志,很少能「只删掉某一轮」或干净卸掉整条会话而不碰其它数据。社区里也有会话管理类插件,侧重点多在列表整理或隐藏;若你需要的是经确认后的物理删除,且单轮删除还要改 append-only 日志并校验引用,就需要专门工具。dsh-session-tidy(weiVc 维护,SkillHub 分类为「记忆」)面向的就是这类需求:删除整条 DSH 会话,或只删除会话中已完成的一轮对话,并在操作前二次确认。

这是什么

dsh-session-tidy 是 DSH 的轻量会话管理插件。作者 README 中署名为大肥鲸,许可证 MIT,适用于 DSH 0.2.x 与 v4 会话日志格式。它不在对话区增加常驻面板,删除入口只出现在会话列表菜单和已完成轮次末尾;所有删除都会弹确认框,并直接作用在宿主存储上,而不是隐藏或归档。

核心功能

删除整条会话

在左侧会话列表中,点某会话行「⋯」菜单里的 删除会话…(红色)。永久删除该会话的日志、投影缓存与工作区登记。会话删除会先隔离到 ~/.dsh/session-tidy-trash/ 再清除,并从工作区顺序、归档、置顶中摘除。

删除单轮对话

在任意 已完成 轮次末尾会出现低存在感小按钮 删除本轮。会从会话日志中移除该轮的用户消息、步骤、工具调用与回答;后续轮次保留并顺延编号。

DSH 会话日志是 append-only 的。单轮删除在宿主侧解压日志,删除该轮事件区间(含该轮排队输入的 add 事件),重映射后续 seq 与相关引用,再压缩写回。写前备份到 ~/.dsh/session-tidy-backups/,写后用官方 Session 做全量重放校验。若该轮之后存在无法安全重映射的引用(例如压缩或图片卸载记录),会拒绝删除并保持原样。

行为与安全(摘要)

  • 每个操作二次确认,危险按钮用错误色,忙碌时锁定。
  • 对正在运行的会话:先通过宿主 AgentHandle 取消本轮、等待静默、摘载 Agent,再动文件。
  • 路径与身份:会话目录 realpath 三级校验、日志 header.id 校验;拒绝 junction/符号链接指向其它会话;有分叉或子代理时,父会话须先删子会话。
  • 保守拒绝:分叉会话(含继承前缀)暂不支持删单轮;运行中的轮次不能删;同一会话并发删除会被拒绝。
  • 仅支持官方 JSONL 会话存储(@deepseek-ai/dsh-session-persistence-jsonl);其它后端返回「不支持」。

限制(使用前须知)

  • 单轮删除只改会话日志;已产生的附件、~/.dsh/spill/ 溢出文件、子代理会话等不在清理范围。
  • 删单轮可能使其它已开客户端窗口仍显示旧内容;当前窗口会自动重开会话,少数情况需刷新页面。
  • 除单轮删除前的备份外,删除不可恢复。

安装与启用

桌面 profile 下从 GitHub 安装:

dsh plugin --profile desktop add github:weiVc/dsh-session-tidy

也可在 Harness「插件 → 添加插件」中粘贴上述 github: 地址。安装后通常无需重启即可在页面生效;若宿主提示 restart-required,再重启 DSH。

本地开发调试:

dsh plugin --profile desktop add link:/absolute/path/to/dsh-session-tidy

卸载(不会删除任何会话数据):

dsh plugin --profile desktop remove dsh-session-tidy

~/.dsh/session-tidy-backups/ 可在卸载后自行清理。package.json 要求 Node >=22.15.0,插件当前版本为 1.0.0。

典型用法

  1. 清掉整条无用会话:左侧列表 → 目标会话「⋯」→ 删除会话… → 在确认框中确认。
  2. 去掉某一 completed 轮:滚动到该轮末尾 → 删除本轮 → 确认。若按钮不可用或操作被拒绝,对照 README:是否为运行中轮次、分叉会话、或日志中存在不可重映射记录。
  3. 恢复误删单轮:到 ~/.dsh/session-tidy-backups/ 查找该次操作前的原始日志备份,按 DSH 会话存储规则人工恢复(插件不提供一键还原)。

插件自带测试入口(合成用例默认可跑;真实日志需私有 fixture):

node --test host/log.test.mjs

适用场景与注意

适合需要在 DSH 桌面/Web 工作区里做「真删除」的开发者:清理实验会话、去掉错误一轮并保留后续对话、与工作区列表保持一致。不适合指望插件顺带清理 spill 附件或子代理目录的场景。

DSH 生态是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。插件以当前 DSH 进程权限读写 ~/.dsh/ 下会话与备份目录,安装前建议阅读 GitHub 仓库 源码与 MIT 许可证,确认行为符合你的安全策略。

结尾

dsh-session-tidy 把「删会话」和「删单轮」做成两处入口、统一二次确认,并在单轮删除上承担日志改写与校验成本。目录页:SkillHub · dsh-session-tidy;源码与完整说明:github.com/weiVc/dsh-session-tidy。

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

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

小夜