Saikel-Orado-Liu/dsh-archive-manager ↗★ 1
@gamegeek-saikel/dsh-archive-manager
Archived-session management plugin for the DSH Web GUI — show archived, unarchive, and permanently delete sessions with zero changes to official packages.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Saikel-Orado-Liu/dsh-archive-manager说明文档
阅读完整 README ↗DSH Archive Manager(归档会话管理)
English · 简体中文
DSH Archive Manager 是为 DeepSeek Harness(DSH)Web GUI 打造的归档会话管理插件——「显示归档」视图开关、归档会话的样式与守卫(红色标题、红色背景、「已归档」角标、不可打开)、取消归档,以及彻底删除会话(转录目录、workspace 记账、归档标记与投影缓存行全部清除;live 会话先 dispose,界面不崩)。
- Host 半区(内部
dsh-archive-manager-workspace/dsh-archive-manager-projcache):WorkspaceRegistry与SessionProjectionCache子类,新增unarchiveSession/deleteSession与delete(id)/whenIdle(),并以 Typert Remote 端点暴露。 - Client 半区(内部
dsh-archive-manager-client):fork 的dsh-client-ui-workspace浏览器 bundle——视图开关、归档行样式、守卫打开、行菜单、二次确认对话框与 Toast,内置简体中文与英文。
插件以单个 npm 包(@gamegeek-saikel/dsh-archive-manager)交付,三个实现作为包内子模块。根 cordis.patch.yml 禁用官方原行、插入 archive-manager 行。官方包文件零改动。
概述
DSH Web 内部维护着一个注册表全局的 archivedSessionIds 集合,但官方 UI 既无法在侧边栏看到归档会话、无法取消归档,也没有任何彻底删除会话的入口。简单地把归档会话从列表里藏掉会让它们在 GUI 里"不可恢复";而删除一个会话会牵涉多个相互独立的存储(转录目录、workspace 记账、归档标记、投影缓存),顺序稍有差池就会留下残留或复活数据。
Archive Manager 用一层小而严谨的 patch 解决:
- 一个可见性开关——
showArchived与分组/排序存放在同一持久化 store(dsh.workspace.view.v5),重启浏览器保持;旧偏好反序列化后按"关闭"处理,不破坏既有体验。 - 一条派生路径——分组、单列表、搜索共用
sessionVisible,归档会话在所有界面天然一致地出现(或一致地隐藏)。 - 一条串行化删除流程——
deleteSession在注册表操作队列内按严格顺序执行:flush → detach(session/disposed)→ 等待投影缓存 dispose 写回落盘(whenIdle)→ 删除转录目录 → 清除归档标记 → 移除 workspace 记账 → 删除缓存行 → best-effort 子代理级联与 spill 清理。每个失败步骤都幂等、可重跑,重试即可自愈半删除状态。
关键性质
| 性质 | 值 |
|---|---|
| 范围 | 显示归档开关、归档样式 + 守卫、取消归档、彻底删除 |
| 交付 | 单个 npm 包;官方包零改动;web profile patch 层() |