归档工作区 · dsh-plugin-workspace-archive
一键归档整个工作区,让侧边栏只留下你正在用的东西。

安装
方式一:从 GitHub 安装
dsh plugin --profile <profile> add "git+https://github.com/<你的用户名>/dsh-plugin-workspace-archive.git"
方式二:本地开发
git clone https://github.com/<你的用户名>/dsh-plugin-workspace-archive.git
dsh plugin --profile <profile> add "link:/path/to/dsh-plugin-workspace-archive"
安装后需要重启一次 dsh 宿主。 宿主侧的 JS 不热重载;浏览器半侧刷新页面即可。 如果你的 profile 由桌面应用独占管理,请在「设置 → 插件」中安装,或使用桌面版自带的 CLI。
卸载:
dsh plugin --profile <profile> remove dsh-plugin-workspace-archive
使用
| 操作 | 位置 |
|---|---|
| 归档工作区 | 工作区行右侧「…」→ 归档工作区 |
| 查看 / 恢复 | 侧边栏底部 已归档工作区(带数量角标) |
| 角标显示方式 | 面板标题右侧的三枚图标:常驻显示 / 首次显示 / 永不显示(悬停看名称) |
角标三档的含义:
- 常驻显示:只要有归档记录,就一直显示当前数量。
- 首次显示:只有出现新的归档时,才显示一个蓝色气泡;打开「已归档工作区」 面板即视为已确认,气泡消失,直到你再次归档新的工作区。
- 永不显示:角标始终隐藏,入口按钮仍在。
面板可直接按 Esc 或底栏「关闭」关闭。角标偏好只保存在本机浏览器(localStorage),不同步到宿主。
归档时发生了什么?
- 插件对该工作区下的全部会话逐个调用官方归档命令;
- 全部成功后,把「工作区 → 会话 ID 名单」写入宿主状态文件;
- 该工作区的会话全部归档后,工作区行随之从侧边栏消失——与它下面的会话 保持一致的可见性。插件只在 DOM 上给这样的行加隐藏标记, 不读写、不改写官方任何视图数据。
恢复时发生了什么? 按账本里的会话名单逐个还原,全部成功才删除记录。 恢复最后一条记录后,「已归档工作区」面板会自动关闭。
归档不会删除任何文件、会话或历史记录。正在运行的会话无法归档, 菜单会提示「有会话正在运行,请先停止」。
数据与隐私
- 插件只在本地一个位置写入数据:
$DSH_HOME/storages/dsh-workspace-archive.json - 写入采用「原子 rename + 跨进程文件锁」,多窗口并发不会丢失记录;
- 不联网、不上传、不收集任何信息;不读取会话内容,只记录 ID 名单。
删除该文件即等同于放弃恢复入口(已归档的会话仍在官方归档里,可从官方入口恢复)。
兼容性
| 项 | 要求 |
|---|---|
| dsh | 0.2.1-rc.2 及以上 |
| 依赖 | 无运行时第三方依赖 |
常见问题
Q:能不能只归档部分会话? 单条会话请用官方自带的「归档会话」;本插件处理的是整个工作区。
Q:归档后还能搜到这些会话吗? 它们处于官方归档状态,行为与官方「归档会话」完全一致。
Q:和别的插件冲突吗? 本插件不包装、不改写任何官方服务,只读取工作区快照,只在工作区行上添加一个 自带清理的隐藏标记,因此与其它插件无冲突。
Q:归档后我正在看的那个会话还会留在列表里吗? 会。官方不会把正在查看的会话藏起来,本插件也一样;切到别的会话再切回来, 该工作区行就和其他已归档工作区一样不再显示。
开发
package.json dsh.bundle / dsh.client / exports / locale / icon
cordis.patch.yml bundle 层(含幂等守卫,重复挂载不会注册两次路由)
lib/index.js 宿主半侧:状态文件 + /dsh-workspace-archive/{ping,state,archive,unarchive}
client/client.js 浏览器半侧:「…」菜单注入 + 已归档面板
locale/{zh,en}.json 插件元数据文案
icon.svg 图标
宿主半侧用 Cordis 服务(inject = ['webServer']),浏览器半侧通过 dsh.client
声明注入点,所有注册挂在 ctx.effect 上,可完整卸载。
许可
MIT
No comments yet. Be the first to write one.