🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI
广告☁️ 云服务器特惠阿里云首购 8 折 · 腾讯云合作特惠
DeepSeek Harness Hub
← 返回列表

kaelorvyn/dsh-archived-sessions

DeepSeek 客户端兼容 / 相关生态spec-screened扫描:中风险在 GitHub 查看 ↗
⚠ 装前注意

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

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(kaelorvyn)的其他插件

💬 加入社群

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

DPharness QQ 群二维码,QQ 扫码进群
QQ 扫码进群
DPharness 飞书群二维码,飞书扫码进群
飞书扫码进群