dsh-archived-sessions
Verified@yuuu0109/dsh-archived-sessions · v0.1.0 · MIT · Web UI
DeepSeek Harness web plugin to view, unarchive, and permanently delete archived sessions
Install
dsh plugin add @yuuu0109/dsh-archived-sessions Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-archived-sessions
一个 DeepSeek Harness Web 插件:把被隐藏的归档会话找回来。在设置页浏览所有已归档会话,支持恢复(移出归档)、永久删除记录日志,单个或批量操作。
功能
- 在 DSH 设置中新增「归档会话」分区。原生界面会把归档会话从所有列表中隐藏,本插件让它们重新可见。
- 列表展示:标题、项目路径、最后更新时间、日志大小、所属工作区,以及徽标(子代理 / 空会话 / 运行中 / 日志缺失)。
- 恢复:把会话移回正常列表,不动日志。
- 删除:永久删除该会话的事件日志目录;通过公开 API 从工作区记账中摘除;并从全局归档集合中移除该条目。
- 批量删除:复选框多选 + 批处理条;所有破坏性操作均为两段式行内确认。
- 幽灵清理:日志文件已被手动删除的残留归档记录会被标记为「日志缺失」,可一键清理这些记录。
- 搜索框按标题 / 路径 / ID 实时过滤;工具栏显示总会话数与磁盘占用合计。
- 修改后侧边栏自动同步:写入走 registry 自身的状态原语,官方
host/archived-sessions-changed推送会到达每个打开的标签页。
实现原理
- 查看只使用公开 API(
workspaceRegistry.archivedSessionIds、sessionPersistence.list()、sessionPersistence.locate()),标题与更新时间来自客户端session.list的投影摘要。 - 恢复与删除通过 registry 内部的
requireState/setState原语改写归档集合(官方archiveSession同款原语),并在插件自己的串行队列内做读改写,避免并发丢失更新。 - 删除流程:拒绝正在运行的会话 →
locate()解析物理日志 → 校验会话目录布局后才触碰文件系统 → 删除日志 → detach 工作区记账(公开detachSession)→ 最后改写归档集合。 - 删除不会级联:子代理会话、分叉与会话产出文件全部保留。
安全提示
- 删除不可撤销。 所有删除按钮都是两段式确认,没有回收站。
- 正在运行/打开中的会话不允许删除——请先关闭再删。
- 若未来 Harness 移除了 registry 状态原语,变更会以
registry-unavailable显式报错;查看功能走公开 getter 不受影响。
从源码安装
git clone https://github.com/Yuuu0109/dsh-archived-sessions.git
cd dsh-archived-sessions
pnpm install
pnpm build
dsh plugin --profile web add .
重启 dsh web 进程并刷新浏览器,设置页出现「归档会话」分区。
卸载
dsh plugin --profile web remove @yuuu0109/dsh-archived-sessions
开发
pnpm build # tsc + tsdown → lib/
pnpm test # vitest 单元测试
pnpm typecheck # 双 tsconfig 类型检查
兼容性:面向 DSH 0.1.x 开发(peer 包锁定 ^0.1.0-rc.8,已在捆绑 0.1.1-rc.2 运行时上验证)。
许可证
MIT — © 2026 Yuuu0109