DimitriLIAN/dsh-archive-viewer ↗★ 0
dsh-archive-viewer
Archived sessions viewer for DeepSeek Harness: list archived conversations and restore them from the Web settings — no DSH core is modified.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:DimitriLIAN/dsh-archive-viewer说明文档
阅读完整 README ↗dsh-archive-viewer
English | 中文
一个 DeepSeek Harness(DSH)插件,在 Web 设置里新增「归档会话」页面:按文件夹分组列出所有被归档的对话,提供一键「恢复」和二次确认的「删除」。恢复会把该会话从全局归档集合中移除,使它无需刷新页面就回到侧边栏;删除会永久移除该会话的存储日志。
不修改任何 DSH 核心代码:host 半部分在 ctx.webServer 上注册两个 REST 接口(/api2/archive/unarchive + /api2/archive/delete),通过 live 的 workspaceRegistry 和 sessionPersistence 服务完成;browser 半部分用标准的 useSessions + useWorkspaces 座位组合列表,并注册一个 settings.section(id archive)。
为什么需要它
DSH 官方的 workspace 接口只暴露了 archiveSession——没有取消归档、也没有删除的 RPC,而且 Web 界面把归档会话从所有分组里隐藏,找不到、恢复不了、也删不掉。这个插件在不碰 DSH 核心的前提下补上了这个缺口。
安装
dsh plugin add --profile web github:DimitriLIAN/dsh-archive-viewer
然后重启 web profile(dsh --profile web)让 bundle 层加载。打开 设置 → 归档会话 即可查看、恢复或删除归档对话。
工作原理
| 层 | 机制 |
|---|---|
| Host 半部分 | ctx.inject(['webServer', 'workspaceRegistry', 'sessionPersistence']) → ctx.webServer.register() 注册 unarchive + delete |
| 恢复 | 通过 setState 把 id 从 archivedSessionIds 移除 → domain.global.set → 广播 host/archived-sessions-changed |
| 删除 | sessionPersistence.locate() → rmSync 删除会话目录,再把 id 从 archivedSessionIds 移除 |
| Browser 半部分 | settings.section 槽位(id archive),列表来自 useWorkspaces(archivedSessionIds) + useSessions(byId) |
构建
pnpm install
pnpm run build
build = host tsc + client tsc(声明文件)+ tsdown(__ModuleLoader__.load client 包)。
已知限制
- 调用了一个运行期可见的方法——官方 workspace RPC 没有取消归档,因此 host 半部分调用
workspaceRegistry.setState(类型中声明为private,运行期存在)来执行archiveSession的逆操作。它完全复刻了 自身的写入路径。