DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

DoggyHU /

DoggyHU/dsh-archive-manager

Verified

归档对话面板:列出全部已归档的对话,批量选中后一起取消归档或永久删除

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@345c6164

归档对话(dsh-archive-manager)

侧边栏多一个归档图标:点进去就是全部已归档的对话,可以勾选若干条,一起取消归档或者永久删除。

装进实例

# 在 DSH 里用插件管理器安装本目录(bundle),或:
dsh plugin --profile desktop add "D:\Coding_Plan\DSH_Plugin_insNdev\dsh-archive-manager"

安装后刷新页面(客户端 bundle 带 immutable 缓存,看到旧界面时用 Ctrl+Shift+R 硬刷新)。 Host 半边改了要重启 DSH Desktop 才重新导入。

用法

  1. 点侧边栏的归档图标(工具提示「归档对话」),主区打开归档列表。
  2. 每条显示标题、所属工作区和最后活动时间;最上面是「共 N 个」。
  3. 勾选若干条(或点「全选」),然后:
    • 取消归档(N):走官方 uiWorkspace.unarchiveSession,这些对话回到侧边栏原来的位置。
    • 删除(N):二次确认后,由 Host 半边把会话存档从 <DSH_HOME>\sessions\<项目>\<会话> 移除。

归档本身仍然走 DSH 自带的入口:会话行尾的「⋯」菜单 →「归档」。

删除的安全边界

删除是真的删文件,所以 Host 半边每次都会:

  • 拒绝仍在运行 / 仍挂在内存里的会话(先重启客户端再删更稳);
  • 只碰 <DSH_HOME>\sessions 下正好两层的目录,符号链接一律跳过;
  • 目录里必须有 session[.vN].jsonl[.zstd] 存档,否则不动;
  • 会话 id 不能含路径分隔符或控制字符;单次请求最多 500 条;
  • 请求走同源 fetch,并由 connection.requestRejection 做信任校验。

删除后,会话档案里残留的归档 id 只是看不见的死条目;面板也会按不存在过滤掉。 真要找回,只能自己从备份恢复 sessions 目录。

限制

  • 删除是永久的,没有回收站。
  • 只能管理已归档的对话(未归档的请用侧边栏自己的菜单)。
  • 如果某个归档会话在别的进程里还活着,删除会返回「还挂在内存里」,重启后再试。

文件

  • index.js — Host 半边:/archive-manager/api/{inspect,delete} 路由与磁盘删除。
  • client.js — 浏览器半边:sidebar.panellist 图标 + main 面板;数据读官方标准 hook 快照。
  • locale/*.json、icon.svg — 插件列表里的标题、描述与图标。

自测

两个测试都只碰临时目录和假 ctx,不会动真实会话:

node tests\host-smoke.test.mjs      # Host 路由:定位/删除/路径穿越/无存档目录
node tests\client-contract.test.mjs # 客户端契约:模块 id、inject、两个 slot、三种渲染状态

(node --test 在本机沙箱下会因 spawn 管道被拒而失败,直接跑文件即可。)

/archive-manager/api/inspect 是只读诊断端点:贴一组会话 id 进去,返回它在磁盘上的目录、是否在内存里活着、为什么不能删。

—/ 5

No ratings yet

Verified DSH bundle

Commit 345c6164a137

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout