dsh-archive-desk:为 DSH 补上归档会话的浏览、恢复与删除

前言

DeepSeek Harness(DSH)可以把会话归档:归档 id 写入 ~/.dsh/storages/workspace.json,日志仍留在磁盘,侧栏里也能通过 archivedFilter 翻到已归档条目。但宿主默认不提供完整的管理界面,也没有安全的删除路径——想清掉归档会话,往往只能手改注册表并手动删目录,还容易和运行中的宿主内存状态冲突。归档错了也谈不上回收站。

下面介绍社区插件 dsh-archive-desk(维护者 LumiDesk,分类:记忆)。它在 DSH 侧栏提供「归档工作台」整页管理,并注册 Agent 可调用的 archived_conversations 工具,把「看得见、恢复得了、删得掉」补在原生「归档」之后。

这是什么

dsh-archive-desk 是面向 DeepSeek Harness 的归档会话工作台:浏览带预览的归档列表、取消归档、删除(默认进回收站)、从回收站恢复或彻底删除,支持搜索、排序、分页与批量操作;删除走注册表 API 与事务化文件操作,并与 workspace/session-activity 对齐活动判定。

插件无 settings.json、无配置页、无环境变量开关;列表每页条数、排序等由页面控件决定,默认 20 条、按最近活动,且不持久化。

核心功能

界面与列表

侧栏点击「归档工作台」进入整页:「已归档」与「回收站」两个页签。列表展示标题、摘要、项目、时间、体积与状态;支持按标题 / 摘要 / 项目 / cwd / id 搜索,按最近活动、体积、标题或归档顺序排序;分页可选每页 10 / 20 / 50,删除后自动校正页码。多选支持当前页全选或「选择全部筛选结果」,可批量删除或取消归档。首次加载显示骨架屏,刷新时保留旧数据。

状态与删除边界

状态 判定 删除相关行为
运行中 DSH workspace/session-activity 报告有活动 可删,但会先停止 turn / job / 定时任务 / 子 Agent
失效 归档 id 存在,但 sessions/ 下无对应目录 只能移除归档引用,不动文件
正常 目录存在且无宿主活动 常规删除或取消归档

「运行中」不把「会话已加载进宿主进程内存」当作用户仍在使用;删除前对真有活动的会话会先发 workspace/session-stop。运行中的会话不参与批量勾选,需通过行内「…」菜单或 Agent 工具单独处理。

删除默认移入 ~/.dsh/archive-desk/trash/;彻底删除需主动切换模式并勾选「不可恢复」。回收站支持分页、批量恢复 / 彻底删除 / 清空;缺 meta 或 payload 的损坏条目仍可见,仅允许删除。顶部可一键清理「失效引用」(日志已删但归档 id 仍在)。

取消归档只从 archivedSessionIds 移除 id,不移动或删除会话文件,侧栏行回到原项目。已归档会话的「…」菜单多一行「删除」,会打开与管理页相同的确认弹窗。

删除执行顺序(概要)

确认删除后,插件按固定顺序处理,任一步失败会留下可解释状态:

  1. 有活动则 workspace/session-stop;
  2. 会话目录移入回收站或彻底删除;
  3. 删除 storages/session_projcache/sessions/<id>.json;
  4. 从 workspace 成员列表移除;
  5. 从 archivedSessionIds 移除;
  6. 发出 api-session/removed。

~/.dsh/attachments 永不触碰。停不下来的会话会被跳过并提示稍后重试。

Agent 工具

工具名:archived_conversations。支持 list、unarchive、delete(进回收站,需 confirm)、trash、restore。彻底删除不开放给工具,留给人在面板中操作。

{ "action": "list", "query": "登录", "limit": 10 }
{ "action": "unarchive", "ids": ["session-…"] }
{ "action": "delete", "ids": ["session-…"], "confirm": true }
{ "action": "trash", "limit": 20 }
{ "action": "restore", "trashIds": ["2026…-session-…"] }

依赖与兼容

依赖 DSH 的 workspaceRegistry 与 workspace/session-activity;宿主缺少相关能力时,破坏性操作会返回 archive/unsupported。插件为本地用户态:无账号、无网络请求、无遥测。

安装与启用

Web 端(推荐,DSH 会把参数转发给 pnpm):

dsh plugin --profile web add dsh-archive-desk

桌面端将 web 换成 desktop:

dsh plugin --profile desktop add dsh-archive-desk

也可从 GitHub 安装:dsh plugin --profile web add github:LumiDesk/dsh-archive-desk;从本地目录安装前需先 pnpm build(dist/ 不入库)。条目亦收录于 dsh-plugin.org 插件市场,安装命令与 README 一致。

安装后在「设置 → 插件」可见,侧栏出现「归档工作台」图标。

典型用法

  1. 侧栏打开「归档工作台」→「已归档」查看全部归档会话,「回收站」查看待清理项。
  2. 勾选会话 →「删除」→ 选择「放入回收站」或「彻底删除」→ 确认;或点「取消归档」仅移出归档集合。
  3. 关注顶部失效引用提示,按需一键清理。
  4. 在回收站单行或批量恢复、彻底删除,或清空回收站。
  5. 让 Agent 用 archived_conversations 列清单、取消归档或删到回收站;不可恢复的彻底删除仍由人在界面完成。

适用场景与注意

适合长期在 DSH 里积累大量归档会话、需要搜索排序与批量整理,或希望 Agent 在受控范围内管理归档(仅到回收站)的开发者。

插件以当前 dsh 进程的用户权限读写 ~/.dsh/sessions/、~/.dsh/storages/(经注册表 API)与 ~/.dsh/archive-desk/。安装前建议阅读源码与 MIT 许可证,确认行为符合你的数据保留策略。DSH 生态强调「一切皆插件」;skillhub、dsh-plugin.org 等为社区目录,与 DeepSeek / 幻方无官方从属关系。

结尾

原生 DSH 负责「归档」;dsh-archive-desk 补上预览、恢复、回收站与彻底删除,并把列表与删到回收站的能力交给 Agent。需要安装或源码时,见 目录页 与 GitHub 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜