Chuyển đến nội dung chính

dsh-archived-sessions

Đã xác minh

@yuuu0109/dsh-archived-sessions · v0.1.0 · MIT · Giao diện web

DeepSeek Harness web plugin to view, unarchive, and permanently delete archived sessions

Cài đặt

dsh plugin add @yuuu0109/dsh-archived-sessions

Xác nhận layer đã áp bằng dsh --profile default --dump-config — xem hướng dẫn cài plugin.

Mã nguồn

Thẻ

Tác giả

Readme

dsh-archived-sessions

一个 DeepSeek Harness Web 插件:把被隐藏的归档会话找回来。在设置页浏览所有已归档会话,支持恢复(移出归档)、永久删除记录日志,单个或批量操作。

English

功能

  • 在 DSH 设置中新增「归档会话」分区。原生界面会把归档会话从所有列表中隐藏,本插件让它们重新可见。
  • 列表展示:标题、项目路径、最后更新时间、日志大小、所属工作区,以及徽标(子代理 / 空会话 / 运行中 / 日志缺失)。
  • 恢复:把会话移回正常列表,不动日志。
  • 删除:永久删除该会话的事件日志目录;通过公开 API 从工作区记账中摘除;并从全局归档集合中移除该条目。
  • 批量删除:复选框多选 + 批处理条;所有破坏性操作均为两段式行内确认。
  • 幽灵清理:日志文件已被手动删除的残留归档记录会被标记为「日志缺失」,可一键清理这些记录。
  • 搜索框按标题 / 路径 / ID 实时过滤;工具栏显示总会话数与磁盘占用合计。
  • 修改后侧边栏自动同步:写入走 registry 自身的状态原语,官方 host/archived-sessions-changed 推送会到达每个打开的标签页。

实现原理

  • 查看只使用公开 API(workspaceRegistry.archivedSessionIdssessionPersistence.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