🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

会话回收站 xrn1997/dsh-session-delete

DeepSeek 客户端v0.0.1
xrn199710 天前有提交已提供中文文档扫描:含敏感能力兼容 / 相关生态

会话删除插件

32.1/100
综合分
3
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/xrn1997/dsh-session-delete.git

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
该类项目属生态应用(桌面端 / Web 外壳),不以 dsh plugin add 方式安装,请按仓库说明部署
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 10 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/10/30) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

engines.node 要求 >=24,不满足 Node 22.19.0

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✓npm 包@xrn1997/dsh-session-delete @ 0.0.1
✗Node 引擎要求 >=24 · 基线 Node 22.19 不满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 17:40:18

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件发起外部网络请求
查看扫描证据(共 19 处,展示前 13 条)
  • 发起网络请求
    src/client/remote.ts:152
    response = await fetch(path, init)
  • 写入本地文件
    src/ports/fs-port.ts:11
    rename(from: string, to: string): Promise<void>
  • 读取本地文件
    src/ports/fs-port.ts:20
    realpath(p: string): Promise<string>
  • 读取本地文件
    src/ports/fs-port.ts:22
    readFile(p: string): Promise<Buffer>
  • 读取本地文件
    src/ports/fs-port.ts:36
    for (const e of await readdir(p, { withFileTypes: true })) {
  • 读取本地文件
    src/ports/fs-port.ts:38
    total += e.isDirectory() ? await sizeOfDir(child) : (await stat(child)).size
  • 读取本地文件
    src/ports/fs-port.ts:45
    async exists(p) { return existsSync(p) },
  • 写入本地文件
    src/ports/fs-port.ts:46
    async ensureDir(p) { await mkdir(p, { recursive: true }) },
  • 写入本地文件
    src/ports/fs-port.ts:47
    async rename(from, to) {
  • 读取本地文件
    src/ports/fs-port.ts:52
    if (existsSync(to)) throw new Error(`目标已存在,拒绝覆盖:${to}`)
  • 写入本地文件
    src/ports/fs-port.ts:54
    await rename(from, to)
  • 删除本地文件递归
    src/ports/fs-port.ts:64
    async removeDir(p) { await rm(p, { recursive: true, force: true }) },
  • 删除本地文件
    src/ports/fs-port.ts:86
    async removeFile(p) { await rm(p, { force: true }) },
扫描于 2026/11/2(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 删除会话移入回收站
  • 恢复已删会话
  • 彻底清空回收站

README

由 DeepSeek 最新模型翻译生成
@xrn1997/dsh-session-delete 给 DeepSeek Harness(DSH)加一个删除会话的能力。DSH 官方有归档、没有删除——归档只是把会话从列表里挪走,文件还在。本插件补上删除,并且让删除可恢复:删除 = 移入回收站,另有一个显式的「彻底删除」。 回收站面板:左列是按项目分组的会话清单,右栏是选中那条的元信息与正文,页脚是整页唯一的实心红按钮「清空回收站…」 - 安装:dsh plugin --profile <profile> add @xrn1997/dsh-session-delete - 许可:Apache-2.0 - 数据:回收站本体留在本机 ~/.dsh/session-trash/,不联网、不上传 目录 - 功能特性 - 安装 - 用法 - 回收站与数据 - 界面语言 - 常见问题 - 开发 - 贡献 - 许可 功能特性 - 删除 = 移入回收站:会话行「⋯」→「删除」,可随时恢复;删完有一条停 6 秒的撤销提示。
展开完整文档(README 剩余 1 节)
@xrn1997/dsh-session-delete

给 DeepSeek Harness(DSH)加一个删除会话的能力。DSH 官方有归档、没有删除——归档只是把会话从列表里挪走,文件还在。本插件补上删除,并且让删除可恢复:删除 = 移入回收站,另有一个显式的「彻底删除」。

回收站面板:左列是按项目分组的会话清单,右栏是选中那条的元信息与正文,页脚是整页唯一的实心红按钮「清空回收站…」

- 安装:dsh plugin --profile <profile> add @xrn1997/dsh-session-delete
- 许可:Apache-2.0
- 数据:回收站本体留在本机 ~/.dsh/session-trash/,不联网、不上传

目录

- 功能特性
- 安装
- 用法
- 回收站与数据
- 界面语言
- 常见问题
- 开发
- 贡献
- 许可

功能特性

- 删除 = 移入回收站:会话行「⋯」→「删除」,可随时恢复;删完有一条停 6 秒的撤销提示。删的是当前正打开的会话时,对话会随删除关闭(不会停在「会话不可用」),点撤销会把它重新打开
- 按整组删:父会话在盘上的子会话与更深后代一起走;任一成员在跑 ⇒ 整组拒绝、零副作用
- 批量删除:宿主会话列表「⋯」→「多选」,一次确认、一次执行;失败的留在框里可重试,成功的整批撤销
- 回收站面板:左清单右详情,按项目分组、可折叠、可拖分栏;看得见正文再决定恢复不恢复
- 恢复:单条即点即回,批量带确认;回到各自的原项目目录(删除前你自己归档过的仍保持归档)
- 显式彻底删除:单条「彻底删除…」与页脚「清空回收站…」共用同一个二次确认;不自动过期
- 清理无主残留:父会话已不存在的子会话宿主根本不显示,面板扫描到后由你决定清不清
- 失败不吞:宿主读不到时把原文上屏并给「重试」;不可用时不注册任何入口
- 文案随宿主语言:中文 / English 挂在宿主 locale 服务上

安装

dsh plugin --profile <profile> add @xrn1997/dsh-session-delete
dsh plugin --profile <profile> remove @xrn1997/dsh-session-delete

装完重启宿主(Node 半不走 HMR)。卸载只移除插件,~/.dsh/session-trash/ 下已有的目录不会被自动清理。

也可以离线分发:pnpm pack 出 tarball 后 dsh plugin add ./xrn1997-dsh-session-delete-<版本>.tgz(scoped 包的文件名带作者段)。包里带预构建产物(prepack 会替你跑 build),这条路不需要为构建脚本授权。

兼容性分两层,别混:

- 装得上由 package.json 的 engines.dsh 决定:宿主拿运行中的版本比这个区间,不满足即拒绝并回滚。窗口是 >=0.1.7-rc.2 <0.3.0-0(预发布版本参与匹配)。地板是完整功能的最低代次:0.1.7-rc.2 在 CLI 台架上验过四个槽位齐全、激活零错误;更低的 0.1.7-rc.1 缺行首勾选槽位,0.1.5 起连会话行入口都没有。
- 真跑过由 dsh.compatibility.dshReleases 记录,只列桌面真机实测过的宿主:DSH Desktop 0.2.0-rc.2、0.2.1-rc.1、0.2.1-rc.2、0.2.1-rc.3(均 compatible)。窗口内的其他代次装得上但没在桌面真机上验过;窗口外的一律拒装。

用法

删一条:会话行「⋯」→「删除」→ 确认框。确认框在点之前就说明这一组的规模(「含 N 个子会话,将一起移入回收站」,N>0 才出现),删完那条提示点「撤销」即恢复。

会话行的「⋯」菜单:宿主原有动作之后,本插件加了「多选」与红色的「删除」两行

删除按整组走:父会话在盘上的子会话与更深后代一起移走(传递闭包,一层层取到底)——那些行宿主本来就不显示。任一成员在跑(包括列表里看不见的子会话)⇒ 整组拒绝、零副作用,报的是那个运行中的 id;本插件不替用户终止正在进行的活。

删一批:会话行「⋯」→「多选」进入显式模式。模式内点整行勾选/取消且不切换会话,行首出勾选框,浮条常驻(0 条也给退出入口),同一位置在「全选 / 取消全选」之间切换。确认框逐条列出这批会话,执行是一次批量请求:部分失败不关框、原文落在失败那一行,按钮变成「重试这 N 条」,成功的 6 秒内可整批撤销。

批量删除模式:两行已勾选,浮条显示「已选 2 条」与展开的已选清单,动作是「移入回收站 2 条」与「退出多选」管理回收站:侧栏面板里的「回收站」一行(与「插件」同层)。左边清单、右边详情(中央列更窄时改成下钻,用「← 返回清单」回来),按项目分组、组头可折叠、两栏之间那根线可拖。详情只列你真实发出的提问与助手的文字,宿主注入的上下文与工具调用不进正文;助手文字按 Markdown 排版,你的提问保持原话。

- 恢复:单条不需要确认框,放回原项目目录(删除前你自己归档过的仍保持归档;旧版本留下的归档态条目会迁移式取消归档)。原工作区已被删掉也照常恢复(跳过账本挂接,归入「未分组」),清单行在点之前就说这句。
- 批量恢复 / 批量彻底删除:工具栏「多选」进入,页脚换成两颗动作按钮。组头那颗是三态勾选框,点它选上这个项目的全部会话(含折叠起来看不见的)。两者都先确认,逐条执行、失败不连坐,失败的原文留在它自己那行。
- 彻底删除 / 清空:共用同一个二次确认。单条那张卡片报的是这一次会释放多少(父 + 跟着进来的孩子 + 仍留在盘上的后代,与头部合计共用同一算式)。「清空回收站…」先把回收站目录与清单对账一遍再清,所以手工搬进 session-trash/ 的认得出的目录也归它管;认不出的外人目录不动也不列。
- 无主残留:父会话已不在(既不在会话列表、也不在回收站清册)的子会话,宿主客户端整排不显示,回收站里也不会有。面板顶部只在扫描到时出现条件提示,预览后由你决定清不清;永久删除、不搬进回收站、绝不自动跑。

回收站与数据

| 东西 | 位置 |
| 回收站本体 | ~/.dsh/session-trash/<时间戳>-<原目录名>/ |
| 回收站清单 | 本插件自己的 storage domain(介质在 ~/.dsh/storages/) |

- 回收站与 ~/.dsh/sessions/ 同卷:搬进搬出靠整目录 rename,原子、瞬时。
- 一格目录 = 一个会话:父会话与跟着它进来的子会话各占一格,面板上折成一行。手工翻回收站目录时看到比清单多的目录,那是子会话。
- 清单丢了不致命:会话文件自描述,解压后第一行即 header,含 id 与 cwd;读取回收站列表(以及清空、恢复、彻底删除与清理残留前)会先与回收站目录对账。
- 不自动过期:不设天数上限,清空是显式动作;界面显示条数与占用。
- 附件不连坐:附件是全局内容寻址的,与会话不是父子关系——删除不连带,也不会回收;被删会话独享的附件会留成垃圾(要回收得先有引用计数,属另一件事)。
- 无主子会话不在回收站里:它们的父会话已不存在;清理只清会话目录,不包含宿主投影缓存和附件。
- 回收站本体留在本机、不联网、不上传。

界面语言

中文 / English 挂在宿主自己的 locale 服务上,跟随设置的界面语言;服务不可用时退回内置中文。

常见问题

装完侧栏没有「回收站」,会话菜单里也没有「删除」?

先重启宿主。若仍没有,确认这一代宿主上本插件激活过——取数通道探测不过时,本插件一个入口都不注册:页面上看不出它的存在,但也不会因此把宿主拖死。这是有意用「入口不出现」表达不可用,不是禁用态。

删完之后侧栏那一行怎么还在?

本插件只在宿主确实不再列它时才通告客户端把那一行去掉;拿不准时宁可沉默(那时说「已移除」是假话)。刚巧遇上就刷新页面,那一行会自己消失。本机运行期没打开过的冷会话走正常路径,删完即走。

正在运行的会话为什么删不掉?

判据用的是宿主自己的活跃检查(与官方归档的准入同源)。一律拒绝,不替用户终止正在进行的活——先停下这个会话再删。它正在跑的子会话也算:报告的是那个子会话的 id,而那一行宿主的列表里不显示,所以别看列表就以为删得掉。

批量删除/恢复为什么只成功了一部分?

执行是逐条的,失败不会连坐。批量删除的确认框不关,原文留在失败那一行,按钮变成「重试这 N 条」;批量恢复失败的条目留在清单自己那行,多选态保持,成功的已经消失。重试只处理失败名单。

把工作区删了,回收站里的会话还能恢复吗?

能。宿主的「删除工作区」只删注册、保留目录和每个会话日志;恢复照常回盘,只是跳过账本挂接,会话落在「未分组」。清单行和批量恢复确认框都会在点之前说明。

我把会话目录从回收站手工搬回 sessions/ 了,为什么列表里没有?

回收站目录只负责文件;恢复还要挂回工作区账本(旧版本留下的归档态条目会迁移式取消归档)。手工搬回不是恢复,下一次读清单会把对应行对账掉。请在面板里点「恢复」。

开发

构建、本地调试、门控、真机验证与发版见 docs/development.md;提交信息与 PR 约定见 CONTRIBUTING.md;架构地图与主人清单见 docs/architecture.md;界面规格见 docs/ui-spec.md;文档分层与放置见 docs/AGENTS.md;裁决见 docs/adr/;发布历史见 CHANGELOG.md。历史取舍在 git 历史里,README 不复述。

贡献

欢迎 Issue 与 PR。提交信息、PR 约定与发版边界见 CONTRIBUTING.md;提交前按 docs/development.md 的「复核门」跑 pnpm test 与 pnpm typecheck,并确认退出码;提交即表示你同意以 Apache-2.0 协议授权你的贡献。

许可

Apache-2.0
预览分享卡片长什么样 ↓xrn1997/dsh-session-delete
分享 · DeepSeek Harness Hub
xrn1997/dsh-session-delete

会话删除插件

这是你的仓库?认领条目

回到顶部