← 返回列表
⚠ 装前注意
DSH 设置面板新增「已归档会话」页:列出全部已归档会话并一键恢复。Settings page listing…
基本兼容但装前注意:npm 同名包「dsh-archived-sessions」归属 jxy-hy/dsh-archived-sessions,装到的可能不是本插件 · 最近上游提交 2026/9/16 · 已提供中文文档
DSH 设置面板新增「已归档会话」页:列出全部已归档会话并一键恢复。Settings page listing archived sessions with one-click restore.
综合分
30.9
GitHub 分
30.9
用户评分
—
★ Stars
2
周下载量
—
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/kaelorvyn/dsh-archived-sessions.git信任档位:已验证本站已于 2 天前真实安装成功(L4 · 真实安装)
- 是什么
- 生态插件(可安装,未声明 dsh 能力)
- 装得上吗
- 本站已真实安装成功(L4 · 真实安装,非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 9 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/23
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/22(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-archived-sessions @ 0.1.1
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
npm 同名包「dsh-archived-sessions」归属 jxy-hy/dsh-archived-sessions,装到的可能不是本插件
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/22 11:30:35
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-archived-sessions dsh-plugin 设置面板新增一页「已归档会话」:列出全部已归档会话,可单条或批量恢复(取消归档), 也可以永久删除 —— 直接从电脑上删掉会话文件,把硬盘空间要回来。 为 DSH 设置面板新增一页 已归档会话:列出全部已归档会话,可单条或批量恢复(取消归档), 也可以永久删除 —— 直接从电脑上删掉会话文件,把硬盘空间要回来。 功能 / Features - 在 设置 → 已归档会话 中列出全部已归档会话,显示标题、工作目录与最近活动时间。 - 恢复:取消归档,该条立即从列表消失,会话重新出现在它原来的分组中。 - 永久删除:把会话文件从磁盘上删掉,并显示这次释放了多少空间。 - 多选与批量:点顶部「多选」后每行出现复选框,上方提供「全选 / 批量恢复 / 永久删除」。 - 实时生效:操作后无需刷新页面,侧边栏与列表同步更新。 - 归档数据持久化在 DSH 自己的工作区注册表里,重启后不反弹。 - 在 设置 → 已归档会话 中列出全部已归档会话(标题、工作目录、最近活动时间)。 - 恢复:取消归档;该行消失,会话重新出现在它原来的分组中。 - 永久删除:把会话文件从磁盘上删掉,并报告释放了多少空间。 - 多选与批量:点顶部的 多选,每行出现复选框,上方提供 全选 / 批量恢复 / 永久删除。 - 实时生效:无需刷新页面。 - 归档数据存放在 DSH 自己的工作区注册表里,因此恢复后重启也不会反弹。 安装 / Install dsh plugin --profile add github:kaelorvyn/dsh-archived-sessions 或从本仓库本地安装 / 或从本地检出安装: dsh plugin --profile add file: 安装后重启 DSH,打开 设置 → 已归档会话。 安装后重启 DSH,然后打开 设置 → 已归档会话。 使用 / Usage 1. 打开任意会话(两个动作都通过宿主命令执行,需要当前会话存在)。 2. 进入 设置 → 已归档会话。 3. 单条:点某行的「恢复」或「永久删除」。 批量:点顶部「多选」→ 勾选若干行(或「全选」)→ 点「批量恢复」或「永久删除」。 1. 打开任意会话(两个动作都在当前会话内通过宿主命令执行)。 2. 进入 设置 → 已归档会话。 3. 单条:点某行的 恢复 或 永久删除。 批量:点顶部的 多选 → 勾选若干行(或 全选)→ 点 批量恢复 或 永久删除。 命令方式 / 命令形式(等效,可一次给多个 id): /archive [more-ids…] /unarchive [more-ids…] /purge [more-ids…] 永久删除做了什么 / What "delete permanently" does 会话在磁盘上是 ~/.dsh/sessions///(内含 session.v3.jsonl.zstd)。 会话 id 本身就带 session- 前缀,目录名就是 id。 会话在磁盘上的位置是 ~/.dsh/sessions///(内含 session.v3.jsonl.zstd);会话 id 本身就带 session- 前缀,目录名就是 id。 - 整目录删除,并报告释放的体积。 删除整个目录,并报告释放的体积。 - 同一个 id 可能在多个分组目录下各有一份(会话移动过分组时会发生),所以会把所有同名目录都删掉,不留残留。 同一个 id 可能在多个分组目录下各有一份(会话在分组之间移动过时会发生),所以会把所有同名目录都删掉 —— 不留残留。 - 从 Codex 导入的会话,源文件也一并删掉。 DSH 里那些 session-codex- 是从 ~/.codex/ 导入的(sessions////rollout--.jsonl,或 archived_sessions/ 下平铺)。只删 DSH 的副本,下一次导入会把会话原样带回来 —— 用户看到的就是「永久删除了怎么又全回来了」。而且源文件那边通常大得多 (实测 605MB vs 191MB),不删也谈不上省空间。 从 Codex 导入的会话,其源文件也会被删除。 那些 session-codex- 条目是从 ~/.codex/ 导入的;只删 DSH 的副本意味着下一次导入会把会话原样带回来。而且源文件 通常大得多(实测:605 MB vs 191 MB)。 - 删除不改变可见性。 删完会话仍然留在归档集合里(否则就等于取消隐藏, 它们会当场全部回到侧边栏)。想让它重新可见,用「恢复」。 删除不改变可见性。 已删除的会话保持归档; 否则删除就等于取消隐藏,它们会当场全部回到侧边栏。用恢复让它重新可见。 - 磁盘上已经没有文件的条目按「幽灵条目」处理:保持归档,不报错。 磁盘上已经没有文件的条目按幽灵条目处理:保持归档,不报错。 - DSH 没有会话索引数据库(列表是扫磁盘得来的),所以删掉目录就是彻底消失。 DSH 没有会话索引数据库(列表是扫磁盘得来的),所以删掉目录就是彻底消失。 安全设计 / Safety 删除不可逆,所以做了这些防护: 删除不可逆,所以做了这些防护: 1. 会话 id 必须匹配 ^session-[A-Za-z0-9._-]+$ —— 从根上杜绝把 id 当路径用(目录穿越)。 id 必须匹配 ^session-[A-Za-z0-9._-]+$,从根上杜绝把 id 当路径用(目录穿越)。 2. 解析后的绝对路径必须仍在会话根目录之内(二次防线)。 解析后的绝对路径必须仍在会话根目录之内(二次防线)。 3. 只允许删除归档集合里的会话 —— 正在使用的会话结构上就删不到。 只允许删除归档集合里的会话 —— 正在使用的会话结构上就删不到。 4. 界面里正在使用的会话不参与多选,也不给删除按钮。 界面里正在使用的会话不参与多选,也不给删除按钮。 5. 删除按钮要点两次(「永久删除」→「确认删除」),中途可取消。 删除按钮要点两次(「永久删除」→「确认删除」),中途可取消。 6. 批量时只要有一个 id 不合法就整批拒绝,不做「删一半」。 批量时只要有一个 id 不合法就整批拒绝,不做「删一半」。 7. 单次最多 1000 个 id。 单次最多 1000 个 id。 实现说明 / How it works DSH 0.1.2-rc.1 没有公开的「取消归档」或「删除会话」API —— 归档集合是工作区注册表的持久状态 (storages/workspace.json 的 global.archivedSessionIds),只有 archiveSession() 一个写入口,没有反向方法。本插件的宿主半部注册 /unarchive 与 /purge 两个命令, 在 WorkspaceRegistry.enqueueOperation() 内用 setState() 修改该集合; 域变更会经工作区控制器的 feed 广播为 archived 增量,前端随即实时更新。 setState / requireState / enqueueOperation 是服务实例上的方法而非公开契约, 因此宿主半部在写入前用 typeof 守卫:若未来版本改变了这些内部接口,插件只返回 明确错误,不会修改任何数据。浏览器半部只用官方 remote.commands 通道,不含 自定义 Remote 清单。 批量是一条命令带多个 id,而不是循环调用:宿主侧一次校验、一次事务、汇总一个总体积。 DSH 0.1.2-rc.1 没有公开的「取消归档」或「删除会话」API:归档集合是工作区注册表的持久状态 (storages/workspace.json 的 global.archivedSessionIds),只有 archiveSession() 一个写入口,没有反向方法。本插件的宿主半部注册 /unarchive 与 /purge; 在 WorkspaceRegistry.enqueueOperation() 内用 setState() 修改该集合。 工作区控制器会把由此产生的域变更广播为 archived 增量,因此浏览器会实时更新。 setState / requireState / enqueueOperation 是服务实例方法,而非 公开契约,因此宿主半部用 typeof 检查来守护它们:如果未来的 DSH 版本更改了它们,插件会报告清晰的错误,而不是触碰数据。 浏览器半部只使用官方的 remote.commands 通道,并且不附带任何自定义 Remote manifest。 一个批次是一条携带多个 id 的命令,而不是一个循环:宿主只验证一次、只提交 一次,并报告一个总大小。 结构 / Layout cordis.patch.yml # 挂载宿主行的 bundle patch lib/index.js # 宿主半部:注册 /unarchive 与 /purge lib/client.js # 浏览器半部:设置页 + 恢复 / 永久删除 / 多选批量 test/purge.test.mjs # 宿主半部检查(含原子性、去重、目录穿越防护) test/client-smoke.mjs # 浏览器半部检查(真求值 bundle 并渲染多选模式) 跑测试 / Run the tests: node test/purge.test.mjs node test/client-smoke.mjs 两个脚本都不依赖任何测试框架,只用 Node 标准库;purge 那个会在 test/fakehome/ 下造一个临时的 DSH 主目录来真跑删除,结束后自行清理。 两个脚本都是纯 Node,不使用任何测试框架;purge 那个会在 test/fakehome/ 下构建一个一次性的 DSH 主目录,执行真实的删除操作,并在之后进行清理。 兼容性 / Compatibility 在 DSH 0.1.2-rc.1 上开发与验证(dsh-plugin-desktop 2.0.5)。 在 DSH 0.1.2-rc.1(dsh-plugin-desktop 2.0.5)上开发与验证。 许可 / License MIT