前言¶
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归属、archivedSessionIdsuseSessions:标题、更新时间
分组规则:有归属的会话落在对应工作区下;找不到归属的进「无项目」。组内按更新时间倒序。
搜索与工作区筛选¶
搜索框可过滤列表。搜索框右侧是自绘 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 路由上:分组浏览、搜索筛选、恢复与带自检的硬删除,并尽量同步工作区账本与前端会话列表。