dsh-archive-trash

DSH PLUGIN工具与能力

仓库 hongdougao111/dsh-archive-trash

工具与能力 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

DSH 归档会话清理:把已归档的会话移进可还原的回收站,或彻底删除。

一句话选型结论

按资料字段整理

dsh-archive-trash 是工具与能力类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类工具与能力 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 2 复刻 0 · 未关闭 issue 1
最近更新 2026-10-26 创建于 2026-10-24
README 9.3 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:hongdougao111/dsh-archive-trash
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

工具与能力
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

文件读写存储

上游标签

archivedeepseek-harnessdshdsh-pluginsession-management

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在工具与能力场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-archive-trash当前 L5 · 运行验证通过 低风险 2 未标注 有
huashu-design 未做沙盒验证 未标注 3.0 万 未标注 有
loopx 未做沙盒验证 未标注 6,233 未标注 无
agy-staff 未做沙盒验证 未标注 870 未标注 有
dsh-startup-screen 未做沙盒验证 未标注 633 未标注 有
minara-skills L4 · 沙盒安装通过 中风险 360 未标注 有

仓库档案

工具与能力
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方hongdougao111仓库 dsh-archive-trash · 默认分支 main
分类工具与能力tools
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue2 / 0 / 1收录时的数值,非实时
创建 / 更新2026-10-24 · 2026-10-26最后推送 2026-10-26
本站收录2026-10-30首次进入本站目录的时间

README 全文

9.3 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-archive-trash 🗑️

> DSH 没做「删除会话」。这个插件补上 —— 而且删错了能捡回来 👋

你的 sessions/ 里住着一窝僵尸 🧟

DeepSeek Harness 的「归档」很温柔:从侧边栏消失,文件原地不动。温柔到有点问题——那些你再也不会打开的会话,日志会永久躺在 $DSH_HOME/sessions/ 里,一天天攒,几十个、上百个目录,每个都还在偷偷占地方。

官方的按钮叫「归档」,不叫「删除」。因为删除这件事,它没做 😅

这个插件来补上:任意会话都能删,删错了还能捡回来 🪄

能干什么 🎁

  • 任意会话,行上直接删 — 鼠标划到会话行尾就冒出一个小垃圾桶 🗑️,点一下变 ✓/✕ 二选一。不用先归档 🎯
  • 立刻生效 — 删完会话马上从侧边栏消失,还原马上回来。不用重启 DSH ⚡
  • 正在跑的会话不给删 — 包括你此刻正打开的这个。按钮会变灰,鼠标悬停说明原因 🛡️
  • 多选批量删 — 设置页里逐条勾选,支持全选 / 反选,工具栏实时显示「已选 N 项 · 12.4 MB」 📦
  • 批量清空 — 「全部移入回收站 (N)」一键搞定,不用一个个勾
  • 移入回收站 — 整个会话目录搬进 $DSH_HOME/.trash/sessions/,原位置立刻腾空 🧹
  • 后悔药管够 — 回收站里勾一下就能放回原位,可以只还原其中几条。目标位置被占了?它会明确拒绝,而不是悄悄覆盖 💊
  • 彻底删除 — 单选删,或者一键清空整个回收站。都要二次确认,防手滑 ✋
  • 自动清理幽灵条目 — 归档集合里指向已删文件的失效 id 会被自动摘掉,不会再显示成「日志已不在磁盘上」的僵尸行 👻➡️🚫
  • 中英双语 — 跟着 DSH 的界面语言走 🌏
  • 跟皮肤不打架 — 只用 --dsw-alias-* 主题 token,亮色暗色都服帖 🎨

它不干什么 🙅

  • 不碰你的工作目录 — 只动会话日志目录,项目文件一根头发都不动
  • 不重写持久化后端的目录编码规则 — 会话位置是按 sessionId 反查出来的,后端哪天改了编码,它也不会跟着坏
  • 不删正在跑的会话 — 运行中的会直接拒绝
  • 不在归档时自动删除 — 归档还是归档。删除永远是你主动点的那一下 👆

安装 📦

方式一 · npm(推荐)

dsh plugin --profile web add dsh-archive-trash

桌面端把 web 换成 desktop。

方式二 · 下载预构建包(免构建授权)

格式 链接 用途
.tgz dsh-archive-trash-0.4.0.tgz 给 dsh plugin add 吃
.zip dsh-archive-trash-0.4.0.zip 手动解压丢进 node_modules

tgz 本地装:

dsh plugin --profile web add ./dsh-archive-trash-0.4.0.tgz

zip 手动装:解压出 dsh-archive-trash/ 整块,粘进 profile 的 node_modules/ 里,再在 profile 的 cordis.yml 里启用(zip 里多带了 selftest.mjs,装完可以自己跑一遍验证):

cd /node_modules/dsh-archive-trash && node selftest.mjs

> 也可以直接在 DSH 里点 设置 → 插件 → + 添加插件,把 dsh-archive-trash 粘进去 🖱️

装完重启 dsh web(桌面端重开应用),Host 半边才会上线 ⚡

怎么用 🕹️

最快的路子:侧边栏里把鼠标划到任意会话行上 → 行尾垃圾桶 🗑️ → ✓ 确认。不用先归档。

多选批量:设置 → 归档清理 → 逐条勾选 → 工具栏会显示「已选 N 项 · 12.4 MB」→ 移入回收站 🧹 (N)。

精细操作:

  1. 打开 设置 → 归档清理
  2. 「已归档」里能看到所有归档会话——标题、cwd、时间、占了多少空间
  3. 勾选(可全选 / 反选)→ 移入回收站 🧹 (N)
  4. 反悔了?切到「回收站」→ 勾选 → 还原 💊 (N)
  5. 确定不要了?彻底删除 🔥 (N) 或 清空回收站 🔥

> ⚠️ 正在运行的会话不能删 —— 按钮会变灰并提示原因。

磁盘布局 🗂️

$DSH_HOME/
├── sessions///session.v4.jsonl.zstd   ← 会话日志
└── .trash/sessions/<时间戳>-/
├── payload/                    ← 原会话目录整体搬过来
└── meta.json                   ← { sessionId, originalPath, title, cwd, deletedAt }

meta.json 里的 originalPath 是还原的唯一依据——所以回收站条目别手工改名,改了它就不认得回家的路了 🏠

本地 API 🔌

Host 半边注册了 POST /dsh-archive-trash,body 是 { action, ... }:

action 参数 作用
list — 返回 { items, trash, missingRegistry, prunedOrphans }
delete sessionIds: string[] 或 all: true 移入回收站;sessionIds 不限归档状态,all: true = 当前全部归档会话
restore entryIds: string[] 从回收站还原
purge entryIds: string[](空数组 = 清空全部) 彻底删除
prune — 只做一致性维护:清掉归档集合里指向已删文件的幽灵 id

delete 的批量上限是 2000 条,超出会被截断(返回里带 truncated: true)。

所有请求都过一道信任栅栏 🛡️:跨站标记(Sec-Fetch-Site: cross-site)一律拒,Origin 与 Host 不同源一律拒,非回环地址交给宿主的 connection.requestRejection 判。

自检 🧪

仓库里带一个不碰真实 $DSH_HOME 的自检脚本——临时目录搭一套假会话布局,加载 Host 半边,用假 req/res 打真实 handler:

node selftest.mjs

18 组场景全绿 ✅:列表 / 跨站拒绝 / 空选择 / 移入回收站 / 回收站列表 / 还原 / 目标占用拒绝 / 彻底删除 / 清空回收站 / 不存在的会话 / 未知 action / 幽灵条目自动清理 / 批量清空 / 同毫秒批量不撞 entryId / prune 一致性维护 / 非归档会话也能删 / 多选批量(没勾的不动) / 批量截断标记

踩过的坑 🕳️

这些都是这个插件自己修掉的真 bug,记下来省得以后又踩:

① 删完会话冒出个「未分组」工作区

DSH 前端 groupByWorkspace 的算法是:按各 Workspace 的 sessionIds 记账,凡是「在会话列表里、但没被任何 Workspace 记账」的会话都会掉进 stray,渲染成一个额外的「未分组」分组。

插件的 detachSession() 恰好就是把 id 从记账里摘掉 —— 但此刻前端内存里的会话列表还没刷新,那条会话仍在,于是立刻变成 stray。重启后从磁盘重载,文件已经没了,stray 才消失(所以表现为「重启才好了」)。

修法:不 detach,保留记账,只摘归档集合;紧接着调 ctx.sessions.refresh() 让 Client 重拉基线。文件没了 → 列表里没了 → 记账里的残留 id 被跳过,stray 为空,不再出现「未分组」。

② 归档列表里挂着「日志已不在磁盘上」的僵尸行

archivedSessionIds 是持久化的,文件被删(或手工删掉)之后,那个 id 会永远留着。原来的实现老老实实把它列出来,标一句「日志已不在磁盘上」——看着像坏掉了。

修法:list 时顺手对账,磁盘上找不到的 id 直接从归档集合摘掉,不再渲染;返回值里带 prunedOrphans 计数。另外提供 prune action 做纯维护。

③ 删除按钮只对归档会话显示(v0.3.0 修正)

v0.2.0 把入口限制成「只有已归档的会话才显示删除按钮」——结果想删普通会话得先归档再删,多两步,还容易被当成插件坏了。

修法:删除按钮对所有会话开放。配套把 moveToTrash 的元数据来源从「只查归档集合」改成 describeSessions()(归档集合 → sessionQuery 回退),否则普通会话删进回收站后标题是空的。

④ 删了/还原了界面纹丝不动,必须重启(v0.3.2 修正)

这是最重要的一条。前端列表不是每次都从磁盘读的,它靠两条远端事件增量维护:

Host  ctx.emit('api-session/removed', id)     → 前端 handleSessionRemoved → 列表删掉这行
Host  ctx.emit('api-session/added', summary)  → 前端 handleSessionAdded  → 列表加回这行

宿主自己只在 session/created / session/disposed 时发这两个事件。插件只是搬文件、没有真的 dispose 会话,所以一个都没发 —— 界面当然不动,只有重启时列表从磁盘重建才"修好"。

修法:删除后补发 removed,还原后补发 added(载荷按 ApiSessionList.summaryFor 的结构构造:sessionId / updatedAt / agentAvailable / formatStatus / running / blank,冷会话就 running: false, agentAvailable: false)。

> 这个坑还有一个变体:v0.3.1 只补了删除方向的 removed,忘了还原方向的 added —— 于是「还原还是不行」。两个方向必须成对处理。

兼容性 📋

  • 需要 DSH 0.2.x(settings.section slot + workspaceRegistry 服务)
  • web 与 desktop 两种 profile 都适用

License

MIT

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-archive-trash 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:hongdougao111/dsh-archive-trash` 即可。

dsh-archive-trash 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-archive-trash 安全吗?

低风险。

dsh-archive-trash 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-archive-trash 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

工具与能力
按星标排序,可作替代方案

huashu-design

huashu-design

在 DeepSeek Harness 里说一句话,就能拿回可交付的设计:网页、App 原型、可编辑 PPTX、动画与信息图,自带 84 种风

未标注验证等级 3.0 万 星

loopx

loopx

LoopX 是面向长周期 Agent 的本地优先控制平面,作为 DSH plugin 为 DeepSeek Harness 提供持久目标、证

未标注验证等级 6,233 星

agy-staff

agy-staff

把 Google Antigravity CLI 作为快速 Gemini 员工接入 DSH,提供子代理侧边栏、编排模式与多种角色技能。

未标注验证等级 870 星

dsh-startup-screen

dsh-startup-screen

DeepSeek Harness 的启动界面与启动动画插件。

未标注验证等级 633 星

dsh-blender-plugin

dsh-blender-plugin

让 AI 模型通过直连 TCP 通道实时驱动 Blender 的 DSH plugin:15 个工具覆盖视口取帧、任意角度渲染、内循环搜索、

未标注验证等级 211 星

hongdougao111 的其它插件

2 个

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。