把删除会话改成可还原的归档,并能彻底清理磁盘日志
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Afgkwyp/dsh-session-recycle-bin该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 会话回收站插件:头部垃圾桶按钮与侧栏「删除会话」先归档、可还原;设置页集中管理归档会话,可真正删除磁盘日志并支持批量清理。Session recycle bin for DSH.
README
由 DeepSeek 最新模型翻译生成dsh-session-recycle-bin
DeepSeek Harness 的「会话回收站」插件 —— 把「删除会话」做成可还原的两步操作:先移入回收站(只是归档,日志一个字节都不删),需要时一键还原,确认不要了再真正删除磁盘日志。
中文 · English
零依赖、零构建、单文件宿主 + 单文件客户端。适用 DeepSeek Harness 0.2.1-rc.2(Desktop / Web profile)。
为什么需要它
DSH 自带的会话菜单只有 重命名 / 分叉 / 归档:归档只是把会话从侧栏藏起来,磁盘上的日志原封不动;而想真正删掉一条会话,官方没有提供入口——sessionPersistence 的契约里明确写着「没有删除或保留 API,清理会话属于带外维护」。
于是想清理磁盘的人只能手动去 %USERPROFILE%\.dsh\sessions\ 里删目录,既容易误删,也容易把会话列表、投影缓存、工作区注册表搞得半死不活——而且删完还会留下一串空的 --C-Users-...-- 项目文件夹。
这个插件补上这一环。
展开完整文档(README 剩余 1 节)
dsh-session-recycle-bin
DeepSeek Harness 的「会话回收站」插件 —— 把「删除会话」做成可还原的两步操作:先移入回收站(只是归档,日志一个字节都不删),需要时一键还原,确认不要了再真正删除磁盘日志。
中文 · English
零依赖、零构建、单文件宿主 + 单文件客户端。适用 DeepSeek Harness 0.2.1-rc.2(Desktop / Web profile)。
为什么需要它
DSH 自带的会话菜单只有 重命名 / 分叉 / 归档:归档只是把会话从侧栏藏起来,磁盘上的日志原封不动;而想真正删掉一条会话,官方没有提供入口——sessionPersistence 的契约里明确写着「没有删除或保留 API,清理会话属于带外维护」。
于是想清理磁盘的人只能手动去 %USERPROFILE%\.dsh\sessions\ 里删目录,既容易误删,也容易把会话列表、投影缓存、工作区注册表搞得半死不活——而且删完还会留下一串空的 --C-Users-...-- 项目文件夹。
这个插件补上这一环。
功能一览
| 位置 | 新增的东西 |
| 会话头部(标题右侧工具行) | 垃圾桶按钮:把当前会话移入回收站 |
| 侧栏会话「⋯」菜单 | 删除会话(红色,order 500,排在官方 pin / 重命名 / 分叉 / 归档 / 会话 ID 之后) |
| 设置 → 会话回收站 | 归档会话集中管理:多选还原、永久删除、清空回收站、清理 30 天前;显示工作区路径、删除时间、日志体积、子代理会话数、「运行中」标记 |
- 软删除:头部按钮或菜单项 → 确认 → 会话从侧栏消失,进入回收站。
日志、子代理会话、投影缓存都还在,随时可以还原。
- 回收站:成员 = 官方归档集合(workspaceRegistry 的 archived set)∪ 插件记录,所以通过官方「归档会话」归档的会话也会集中显示在这里。
- 还原:一键移出归档集合,会话回到侧栏原来的位置——磁盘文件从未被触碰。
- 永久删除:真正删除磁盘数据(见下一节),并从归档 / 置顶 / 工作区成员中摘除引用,最后广播 api-session/removed 让侧栏当帧移除该行。
- 批量清理:多选批量还原 / 批量永久删除;「清空回收站」;「清理 30 天前」。
- 不留空文件夹:删除后若该会话所在的「项目目录」(sessions/--C-Users-...--/)已经空了,会一并删掉;插件激活时也会顺手清理历史遗留的空项目目录(只删真正为空的,sessions 根本身永不删除)。
回收站的附加记录(删除时间 / 标题 / 工作区路径)写在 $DSH_HOME/session-recycle-bin.json;它只是展示用的旁路记录,删掉也不影响归档状态。
永久删除会删除什么
| 位置 | 内容 |
| $DSH_HOME/sessions/<项目>/<会话 id>/ | 整个会话目录(session.jsonl.zstd 日志与写租约) |
| 同一项目目录下的子代理会话 | 该会话名下每一层子代理 / 团队会话的日志目录 |
| $DSH_HOME/sessions/<项目>/ | 若删除后已空,连项目目录一起移除(1.0.1+) |
| session_projcache 存储域 | 该会话及其子代理会话的投影检查点行 |
| storages/workspace.json | 归档 / 置顶 / 工作区成员里的引用 |
| 页面 | 广播 api-session/removed,侧栏该行当帧消失 |
不删除:附件对象(内容寻址、跨会话共享)、会话工作区里的文件(工作区可能被多个会话共用)、分叉(fork)会话——它是独立对话,不会随源会话消失。
安全边界
| 情况 | 行为 |
| 会话仍在运行(回合 / 子代理 / 后台任务 / 定时提醒) | 归档时拒绝,并提供「停止并删除」;走官方 workspace/session-stop 通道 |
| 会话仍被当前进程持有(界面打开着) | 永久删除拒绝,提示先切换会话(避免活着的写句柄把日志写回来) |
| 存储后端没有提供路径 | 按文档化的 JSONL 布局 <sessions>/<项目>/<会话 id>/session.jsonl 扫描定位 |
| 目录名与会话 id 不匹配 | 直接跳过并报告,绝不猜路径 |
| 待清理的项目目录不为空 | 保持原样,只删空目录 |
| 子代理会话 | 随父会话一起删除 |
永久删除的执行顺序是有意编排的,不能交换:
释放驻留会话 → 停止仍在跑的工作并等待清零 → 持久化 flush 屏障 → 删除日志目录/子代理目录/投影缓存 → 清理注册表引用 → 广播 api-session/removed
先释放再停止,否则被停止的会话会唤醒 agent 重新干活,那份新工作会活过删除变成孤儿;先释放再删文件,否则写句柄会在下一次 flush 把刚删掉的日志写回来。
安装
方式 A:图形界面(推荐)
1. 克隆本仓库到任意目录:
git clone https://github.com/Afgkwyp/dsh-session-recycle-bin.git
2. 侧栏 → 插件 → 添加插件 → 填本地目录的绝对路径,例如 C:\Users\<你>\Documents\dsh-plugins\dsh-session-recycle-bin。
3. 宿主半即时生效;浏览器半刷新页面一次生效。
方式 B:CLI
dsh plugin --profile <profile-name> add "C:/path/to/dsh-session-recycle-bin"
方式 C:手工写行(等价于插件管理器做的事)
<DSH_HOME>/profiles/<profile>/cordis.patch.yml
- insert:
- id: session-recycle-bin
name: 'dsh-session-recycle-bin'
并在同名 profile 的 package.json 依赖里加入 "dsh-session-recycle-bin": "file:C:/path/to/dsh-session-recycle-bin"。
更新:git pull 后,在插件页把本插件关掉再打开(重新装载宿主模块),再刷新页面;替换已安装包时重启应用最稳妥。
卸载:插件页移除本插件即可;如需手工清理,删除 cordis.patch.yml 里的 session-recycle-bin 行、profile 依赖,以及 $DSH_HOME/session-recycle-bin.json (回收站旁路记录,删掉不影响会话本身)。
验证安装是否生效
- 会话头部出现垃圾桶图标;侧栏「⋯」菜单出现「删除会话」;
- 设置 → 会话回收站能列出已归档会话(底部显示 $DSH_HOME 与日志定位方式);
- 宿主半激活后会在 $DSH_HOME/plugin-session-recycle-bin.json 写一条激活记录(构建号、seam、时间戳),排查「改了代码没生效」时先看它。
配置(可选)
写在插件行的 config 下,全部可省略:
- id: session-recycle-bin
name: 'dsh-session-recycle-bin'
config:
home: 'C:/Users/me/.dsh' # DSH 数据根目录,默认取 $DSH_HOME 或 ~/.dsh stopWaitMs: 8000 # 停止后等待工作清零的上限(毫秒)
界面与实现
| 文件 | 职责 |
| index.js | 宿主半:/api/session-recycle-bin.{health,list,archive,restore,purge} 五条精确路由,注册在 Connection 的 /api 鉴权围栏内(没有该 seam 时退回 webServer) |
| client.js | 浏览器半:头部按钮、菜单行、归档确认浮层、设置页;只用 --dsw-alias- 主题变量,按钮/复选框按官方 ui-primitives 复刻 |
| locale/.json | 插件管理器里显示的标题与说明 |
| icon.svg | 插件图标(原创) |
| test/host-test.mjs | 宿主半 fixture 自测(假 Cordis 服务 + 临时 $DSH_HOME) |
浏览器半调用宿主半的方式与官方插件一致:同源 fetch + 自定义围栏请求头 x-dsh-session-recycle-bin: 1,并校验 Origin 只允许回环地址。
自测
node test/host-test.mjs # 或 npm test
纯 Node、无依赖、不需要启动 Harness:用假服务跑真实 index.js,覆盖路由注册、回收站列表、归档、还原、永久删除(含子代理目录、投影缓存、工作区摘除、 api-session/removed 广播)、空项目目录清理,以及后端提供/不提供 locate() 两条定位路径。
常见问题
删除了会话,为什么还留着一个空文件夹? 1.0.1 之前只删会话目录,不处理变空的「项目目录」;1.0.1 起删除后会自动收掉空项目目录,插件激活时也会清理历史遗留的空目录。升级后若仍看到,重载一次插件即可。
点了删除,侧栏没马上消失? 永久删除成功会广播 api-session/removed,正常当帧移除;若页面版本较旧或列表未刷新,切一下会话或刷新页面即可。
能删正在运行的会话吗? 可以,但需要先停止它的工作——确认框会提供「停止并删除」,走官方停止通道(注意它会丢弃该会话排队中的输入,与官方归档一致)。
会删掉附件或工作区里的文件吗? 不会。附件是跨会话共享的内容寻址存储;工作区可能被多个会话共用,两者都不动。
支持多个 profile 吗? 支持。装到哪个 profile,就只在那个 profile 生效;插件按 $DSH_HOME 解析日志位置。
兼容性
- 实测于 DeepSeek Harness 0.2.1-rc.2(Desktop,web profile,Windows);
- 需要组合中存在 connection、sessionPersistence、workspaceRegistry 三个服务;
- 需要客户端存在 sidebar.workspaces.session.menu.item、 conversation.session.header.utilities、shell.overlay、settings.section 四个 slot;
- 不依赖任何第三方 npm 包,也不 import 任何 Harness 客户端包。
更新日志
- 1.0.1 — 永久删除后会清理变空的会话项目目录;插件激活时清理历史遗留空目录;仓库加入 fixture 自测。
- 1.0.0 — 首个公开版本:头部垃圾桶、侧栏删除会话、回收站设置页(还原 / 永久删除 / 批量清理)。
许可
MIT
给 DeepSeek Harness 会话用的「回收站」。 删除会话变成两步、可撤销的操作:先移入回收站(只是普通归档——日志一个字节都不删),随时可以还原,只有再执行一次明确的动作,才会把数据从磁盘上抹掉。
新增了什么
| 界面 | 功能 |
| 会话标题栏(右侧工具区) | 一个垃圾桶按钮,把当前会话移入回收站 |
| 侧边栏会话「…」菜单 | 一行删除会话(危险操作,order 500,排在自带的 pin / rename / fork / archive / session-id 各行之后) |
| 设置 → 会话回收站 | 集中管理已归档会话:多选恢复、永久删除、清空回收站、删除超过 30 天的会话;每行显示工作区路径、删除时间、日志大小、子代理数量和「运行中」标签 |
「删除」指的是归档,所以永远可以撤销。只有「永久删除」会动磁盘,而且会先询问。
永久删除会移除什么
- 整个会话目录 <DSH_HOME>/sessions/<project>/<session-id>/ (session*.jsonl.zstd 日志及其写入租约);
- 它下面存放的每个子代理会话(每个子代理会话都是独立存储的会话,日志就在父会话日志旁边,删掉父会话后就再也访问不到);
- 现在已空的项目目录 <DSH_HOME>/sessions/<project>/(1.0.1+);旧版本遗留的空目录会在激活时清扫——只删真正为空的目录,绝不删 sessions 根目录;
- 会话的 session_projcache 检查点行;
- 它的归档 / pin / 工作区成员引用;
- 并广播 api-session/removed,侧边栏那一行不用刷新就消失。
绝不删除:按内容寻址的附件对象(跨会话共享)、会话工作区里的文件(一个工作区可能被多个会话共用)、以及 fork 出来的会话(独立对话)。
安全模型
- 有任务在跑(turn / 子代理 / 后台任务 / 提醒)时,拒绝归档,并提供停止并删除,走官方的 workspace/session-stop 准入。
- 会话仍被进程持有(在 UI 里打开)时,拒绝永久删除,这样活跃的写入句柄永远无法重建已删除的日志。
- 日志位置优先取自持久化后端的 locate();取不到就扫描文档中约定的 JSONL 布局;目录名必须与会话 id 完全一致,否则插件直接拒绝,不做猜测。
- 项目目录只在为空时才删除。
- 顺序是刻意安排的,不可调换:释放 → 停止 → 冲刷屏障 → 删除文件 → 清理注册表 → 发出 api-session/removed。
安装 / 更新 / 卸载
git clone https://github.com/Afgkwyp/dsh-session-recycle-bin.git
然后二选一:在 GUI 里添加(Plugins → Add plugin → 克隆目录的绝对路径),或者:
dsh plugin --profile <profile-name> add "C:/path/to/dsh-session-recycle-bin"
Host 部分立即激活;Client 部分需要刷新页面一次。更新时先 git pull,再把插件关掉再打开(重新生成 Host 模块),然后刷新。卸载时在 Plugins 页面移除即可。
测试
bash
node test/host-test.mjs
用假的 Cordis 服务和一次性的 $DSH_HOME 跑真实的 index.js,不需要 Harness,也不需要任何依赖。覆盖路由注册、回收站列表、归档、恢复、永久删除(会话目录和子代理目录、投影缓存、工作区解绑、api-session/removed)、空项目目录清理,以及两条日志查找路径(locate() 存在 / 不存在)。
兼容性
已在 DeepSeek Harness 0.2.1-rc.2(桌面端、web 配置档、Windows)上测试。需要 connection、sessionPersistence 和 workspaceRegistry 这三个 Host 服务,以及 sidebar.workspaces.session.menu.item、conversation.session.header.utilities、shell.overlay 和 settings.section 这四个 Client 插槽。无依赖,无构建步骤,也不导入任何 Harness Client 包。
更新日志
- 1.0.1 —— 项目目录里最后一个会话被删除后,清理该目录;激活时清扫残留的空项目目录;新增 fixture 测试套件。
- 1.0.0 —— 首个公开版本:标题栏垃圾桶按钮、侧边栏删除行、回收站设置页(恢复 / 永久删除 / 批量清理)。
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Afgkwyp/dsh-session-recycle-bin
把删除会话改成可还原的归档,并能彻底清理磁盘日志
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,270已汉化DSH
70.8
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。