dsh-archived-chats:在设置里浏览、恢复与硬删除已归档会话

前言

DeepSeek Harness(DSH)可以把会话归档,相当于从侧边栏里藏起来,但官方持久化与会话工作区文档都写得很清楚:会话日志文件不会被自动删掉,也没有面向用户的「删除会话」能力。归档久了,磁盘上的 sessions 目录会一直涨;想彻底清掉某条归档记录,只能自己动文件,还容易和工作区账本不同步。

社区插件 dsh-archived-chats(维护者 uugvkbvkdjbsdbvwxxl,分类:记忆)在 设置 里增加一页「已归档的聊天」:按工作区分组浏览、搜索与筛选、恢复归档,或通过 Host 侧路由真正删除会话目录。下面介绍它解决什么问题、怎么装、页面上能做什么,以及删除时有哪些边界。

这是什么

一句话:在 DSH 设置中集中管理已归档会话的浏览与生命周期——恢复走官方 unarchiveSession,删除由插件在 Host 半完成,并附带工作区账本清理与页面事件通知。

DSH 自带归档(隐藏),但没有删除会话的能力;README 称本插件补上浏览与管理那半边,并且是唯一能真正删掉会话日志的实现(相对官方 seam 能力而言)。当前 package 版本为 1.0.3,许可证 MIT。

核心功能

设置页「已归档的聊天」

插件在 settings.section 注册分区,id = archived-chats,order = 12(模型之后、内置插件之前)。装完刷新窗口后,路径为 设置 → 已归档的聊天。

页面数据来自设置 slot 的标准 props:

  • useWorkspaces:工作区行、sessionIds 归属、archivedSessionIds
  • useSessions:标题、更新时间

分组规则:有归属的会话落在对应工作区下;找不到归属的进「无项目」。组内按更新时间倒序。

搜索与工作区筛选

搜索框可过滤列表。搜索框右侧是自绘 listbox(非原生 <select>),支持方向键、Home、End、Escape。选项只列出当前有归档会话的工作区并带条数;选中后只显示该工作区内容,标题统计变为「\<工作区> · N 个归档聊天」。工作区被清空时自动回到「所有工作区」。

恢复与删除

  • 恢复:调用 ctx.workspaces.unarchiveSession,与会话回到侧边栏可见范围。
  • 删除单条 / 全部删除:删除当前可见范围内的归档会话;确认在行内展开,不使用 window.confirm。删除是硬删除,无回收站。
  • 全部删除:对当前筛选结果范围内的归档会话批量删除。

列表依赖 workspace 流的 archived 增量刷新,不做轮询。冷启动时会话目录尚未返回时显示骨架占位;错误与成功分别用 role="alert" / role="status" 播报。

Host 侧 API(需 Connection 认证)

方法 路径 作用
POST /api/dsh-archived-chats/delete body { sessionIds: string[] },返回 { deleted, refused }
POST /api/dsh-archived-chats/prune 清扫工作区账本里已找不到日志的会话 id
GET /api/dsh-archived-chats/health 会话根目录、计数、Host 代码 revision 等

无 cookie 访问 health 等路由会 401(Connection 围栏),不是 404。

删除前有三道自检(路径规则对齐已安装的 dsh-session-persistence-jsonl):身份、目录名与 projectKey、路径必须落在会话根且存在 session.*.jsonl[.zstd]。若 workspace/session-activity waterfall 报告仍有 turn/job/subagent/schedule 等工作,则拒绝删除;刚归档、仅在内存驻留但未运行的工作不会误拦(1.0.1 起)。成功删除后会 unarchive、删目录、清理派生缓存,并从工作区账本 detachSession(1.0.2 起),1.0.3 起还会 emit('api-session/removed'),避免侧边栏客户端目录残留一行。

安装与启用

指定 profile 安装:

dsh plugin --profile <your-profile> add github:uugvkbvkdjbsdbvwxxl/dsh-archived-chats

也可以在插件市场(dsh-market)的「发现」里搜 Archived chats 一键安装。

安装后刷新窗口,打开 设置 → 已归档的聊天 即可使用。社区目录页:https://www.skillhub.cn/plugins/uugvkbvkdjbsdbvwxxl/dsh-archived-chats。

可选配置:apply(ctx, config) 读取 config.root;缺省为 $DSH_HOME/sessions,再缺省为 ~/.dsh/sessions。

典型用法

1、安装插件并刷新 DSH 窗口。

2、在 设置 → 已归档的聊天 查看按工作区分组的归档列表;用搜索框或工作区筛选缩小范围。

3、需要重新使用时,点对应会话的恢复;侧边栏归档集减少,会话回到可用状态。

4、需要释放磁盘且确认不可恢复时,对单条或「全部删除」完成行内二次确认;若历史上只删过文件未摘账本,可对 Host 调用 POST /api/dsh-archived-chats/prune 清扫幽灵 id(需已认证连接)。

5、若删除后旧页面仍偶发残留一行,README 说明可 刷新窗口(Ctrl+R) 清除客户端目录缓存,无需重启进程;Host 内存中可能短暂存在「已无日志的活会话」,重启进程后消失,不占磁盘列表。

适用场景与注意

适合谁:长期在多个工作区下归档大量会话、需要集中查看标题与时间、偶尔恢复旧对话,或必须永久删除会话日志的 DSH 用户。

权限与安全:删除操作以当前 DSH Host 进程权限写磁盘;安装前应阅读仓库源码与 MIT 许可证,确认路由与删除逻辑符合你的环境策略。插件运行在用户本机 Host,不是远程官方服务。

已知边界(摘自 README):

  • 删除无回收站,页面确认是唯一防线。
  • 删除后 FTS 等派生索引会在下次搜索时对账;工作区 sessionIds 里无 header 的 id 会在读取时过滤并在后续变更剪除。
  • 市场里的插件开关路径不一定会触发 profile 重组;改 Host 行为后若未生效,可参考 README 中通过 cordis.patch.yml 触发重组或配置 hmr 的做法。

结尾

dsh-archived-chats 把 DSH 官方「只能归档、不能删日志」的空缺补在设置页与 Host 路由上:分组浏览、搜索筛选、恢复与带自检的硬删除,并尽量同步工作区账本与前端会话列表。

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

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

小夜