dsh-session-delete

DSH PLUGIN会话与消息

仓库 hakulat2023/dsh-session-delete

会话与消息 L4 · 沙盒安装通过 安全审查:低风险 可信度:银 可安装插件
安装这个插件

dsh-session-delete 是 hakulat2023 维护的 会话与消息 类 DSH 可安装插件, 仓库为 hakulat2023/dsh-session-delete,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

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

分类会话与消息 收录类型可安装插件 验证等级L4 · 沙盒安装通过 安全审查低风险
验证等级 L4 L4 · 沙盒安装通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-13 创建于 2026-10-12
README 12.1 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:hakulat2023/dsh-session-delete#v0.2.0
  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 查看包信息

能做什么

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注

适用场景

存储

上游标签

deepseek-harnessdshdsh-pluginsessiontrash

验证等级与安全审查

L4 · 沙盒安装通过
自动化流程结论,不是人工审核
验证等级L4 · 沙盒安装通过安装命令在隔离沙盒内真实执行成功,无依赖错误
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度银综合仓库活跃度与验证结果

选择建议

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

值得选的地方

  • 验证等级 L4:在沙盒里真实装过,依赖能装上,不是纸面声明。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

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

更适合

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

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-session-delete当前 L4 · 沙盒安装通过 低风险 0 未标注 有
dsh-desktop L3 · 安装规范通过 低风险 3.0 万 未标注 无
openpets L4 · 沙盒安装通过 低风险 1,274 未标注 有
deeptide L4 · 沙盒安装通过 低风险 1,104 0.1.1-rc.2 有
jingyun-dsh L3 · 安装规范通过 低风险 1,004 未标注 有
study-mate 未做沙盒验证 未标注 856 未标注 无

仓库档案

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

README 全文

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

dsh-session-delete

English | 中文



给 DeepSeek Harness 补上会话删除。

DSH 只能「存档」——存档只是隐藏,并没有办法真正摆脱一个会话。这个插件补上这个缺失的动作:
会话行 “…” 菜单里的 删除会话、宿主命名空间 remote.sessionDelete,以及
session_delete / session_restore 两个 Agent 工具。

删除刻意做成可恢复的:会话日志被移动到本机回收站目录,误删的代价是一条 mv,而不是一段对话。

  • 功能
  • 要求
  • 安装
  • 使用
  • 配置
  • 语义与边界
  • 开发
  • 已验证的行为
  • License

功能

一次删除做四件事:

  1. 准入检查。 用存档同一套 workspace/session-activity 瀑布询问该会话的状态。正在运行的
    工作在没有停止授权时会被拒绝;授权后由 workspace/session-stop 取消该回合,插件在预算内等待
    会话空闲。仍驻留在宿主进程内存中的会话会在任何副作用之前被拒绝,只有再次显式确认才会删除。
  2. 把日志交给系统回收站。 会话自己的目录被交给平台自带的回收站 —— macOS 的废纸篓、
    Linux 的 XDG trash、Windows 的回收站 —— 条目名为 -<时间戳>,目录内带一份
    trash.json(标题、cwd、原始目录、字节数、文件数、删除时间);purge: true 直接永久删除、
    不经过回收站。同时在 $DSH_HOME/session-delete/entries/ 留一条小记录(条目路径 + 原始目录,
    不含任何会话内容),因为 macOS 不允许进程枚举 ~/.Trash(TCC):没有它,删掉的会话就
    再也找不回来。详见 docs/architecture.md。
  3. 清理登记。 从每个工作区的 sessionIds 账户中摘除该会话,清掉全局存档集合与置顶集合中的
    条目,并删除投影缓存记录。
  4. 通知界面。 发出 api-session/removed,所有已连接的浏览器立即移除该行。

会话目录优先通过持久化后端自己的 locate(header) 定位,后端换布局时插件无需跟着改;没有
locate 时回退到文档化的 sessions// 布局。

要求

DeepSeek Harness 0.2.x(针对 0.2.0-rc.2 开发与验证)
Node.js >= 20
表面 任何挂载了会话存储、JSONL 持久化后端、工作区注册表与 Web 客户端的 profile(dsh-web-app / 桌面版)

插件没有任何 npm 依赖、没有构建步骤:浏览器半边是按 Web 客户端本就消费的
window.__ModuleLoader__.load({ id, factory }) 形状手写的模块,宿主半边除了 node:* 不导入任何东西。
原因见 docs/plugin-packaging.md。

安装

这个包是一个 DSH bundle:package.json 声明 dsh.bundle.patch 与 dsh.client,
cordis.patch.yml 插入宿主行。

# 本地目录
plugin_manager install_bundle   target: /absolute/path/to/dsh-session-delete

# 或从 GitHub 按 tag 安装(自带 CLI)
dsh plugin --profile desktop add github:hakulat2023/dsh-session-delete#v0.1.0

# 或发布到 registry 之后
dsh plugin --profile desktop add dsh-session-delete

被挂载的 bundle 补丁只有一行:

- insert:
- id: session-delete
name: dsh-session-delete

安装后请重启一次应用。宿主半边是 Node ESM 模块,运行中的进程保留它已经加载的模块代
(DSH 自身的限制:被替换的包需要重启才能加载新的 JavaScript);浏览器半边从磁盘读取,只需刷新页面。

使用

界面

会话行 → “…” → 删除会话 → 确认。

  • 运行中的会话会先被停止:首次确认就已经是这个意图。
  • 仍然驻留在内存中(通常是你正打开的那个)的会话会被明确提示,需要第二次确认;第一次点击
    不产生任何副作用。
  • 成功后该行在所有地方消失,提示里会给出回收站目录;日志本就不存在的会话会明确说明,而不会
    谎称已移动。

Agent 工具

工具 参数 作用
session_delete session_id(必填)、stop_activity(默认 true)、force(默认 false)、purge(默认 false) 把会话移入回收站;purge: true 直接永久删除字节。
session_restore session_id(必填) 把回收站里的会话目录放回原位。

Remote 命名空间

remote.sessionDelete.delete({ sessionId, stopActivity?, force?, purge? }) 与
remote.sessionDelete.restore({ sessionId }) —— 界面弹窗用的就是这两个方法。

手动恢复

回收站里的会话就是一个普通目录:

平台 位置 说明
macOS ~/.Trash/-<时间戳>/ 访达里可见;不会出现"放回原处"(不是访达移的),但 session_restore 可用
Linux $XDG_DATA_HOME/Trash/files/… 及其 .trashinfo 桌面环境的"还原"同样可用
Windows 回收站 插件读不回回收站,需要手动还原
cat ~/.Trash/-*/trash.json      # originalDirectory、title、cwd、大小

session_restore(session_id) 会把它放回原位并撤回两条记录;工作区注册表下一次索引已存储 header
时(重载应用,或下次启动),该会话会重新出现在列表里。

配置

字段 默认值 含义
trash "system" 目的地:"system" 用平台自带回收站;"directory" 用 trashRoot;其它字符串按绝对路径当作目录。
trashRoot $DSH_HOME/session-trash trash: directory 使用的目录(只写 trashRoot 时等价,兼容 0.1)。
restoreIndexRoot $DSH_HOME/session-delete 恢复记录(entries/<条目名>.json)的位置;只存元数据,绝不含会话内容。
# 默认就用系统回收站,无需配置
- id: session-delete
name: dsh-session-delete

# 或者自己指定目的地(例如机器的 ~/.Trash 不合适时)
- id: session-delete
name: dsh-session-delete
config:
trash: directory
trashRoot: /Volumes/big/dsh-session-trash

语义与边界

  • 回收站是你的,清空也由你决定。 删除的会话进入平台回收站并一直留到你清空它;插件不会自动
    清理,也不会自建任何回收站目录。
  • macOS 不允许进程列举 ~/.Trash。 移入、按已知路径读取、再移出都可用,但 readdir 会被
    TCC 拒绝。这正是需要那条恢复记录的唯一原因:session_restore 沿记录直达条目,而不是搜索回收站。
    清空回收站会让记录过期,而过期记录会被静默剪除,不会变成假失败。
  • Windows 的恢复是手动的。 回收站没有面向消费者的"按条目找回"API,所以 session_delete 会
    返回 trashedTo: null,session_restore 会明确提示去回收站手动还原。平台没有可用系统回收站时
    会记一条警告并退回到 trash: directory。
  • 驻留内存的会话无法被第三方释放。 会话存储自己持有写句柄且没有删除动词,因此删除一个仍被
    存活 Agent 持有的会话会破坏该 Agent 的追加写入。插件选择拒绝,只有显式 force 才继续
    (日志消失,内存副本随之失效)。
  • 停止是有预算的。 等待运行中的工作结束的预算为 15 秒,并尊重调用的 AbortSignal;工作超出
    预算时以 session/delete-active 失败,且不会移动任何东西。
  • 目的地不可用就明确失败。 回收站拒收时以 session/delete-failed 结束,日志原样保留 —— 为这
    次尝试写下的记录会被撤回。
  • 只动会话自己的目录。 附件与 spill 是内容寻址的全局存储,不做回收,可能留下孤儿文件。
  • 搜索索引无需清理。 当前组合里的会话查询索引是内存索引,会自动丢弃消失的会话。
  • Subagent 会话也是会话。 可以用同一个工具删除,界面通过同一个事件移除它。

Remote 命名空间会暴露这些失败码:session/not-found、session/delete-live、
session/delete-active、session/delete-failed、session/restore-missing、
session/restore-conflict。

开发

node test/verify.mjs      # 或 npm test

自测不需要 DSH 运行时、不需要网络、不需要任何依赖:它搭一个临时会话根目录,用假的宿主适配器
驱动真实的回收站逻辑,用假的 Cordis context 挂载真实的插件主体,并检查最容易出错的地方——

  • Typert 清单的形状以及严格编解码器的边界校验;
  • Gateway 的兜底(「SRC」)发现契约:原型上的 Remote 标记 + 由方法签名推导的参数名;
  • 回收站、恢复、永久删除、目录缺失、强制、拒绝、中断各分支;
  • 各平台后端:~/.Trash 命名、XDG 的 files/info 与 .trashinfo、PowerShell 回收命令;
  • 无法枚举的回收站上的恢复(依赖恢复记录)、过期记录、以及"目的地不可用也不能半删日志";
  • 每个工具返回值都是无损的纯 JSON(宿主会拒绝其它东西);
  • 同一次页面内重复挂载:用真实的浏览器 bundle,对一个「重复注册即抛错」的 locale 注册表挂载两次
    (一次有 teardown、一次没有),必须既不报错也不重复注册;
  • 宿主行被挂载两次时必须保留第一个服务,而不是抛错。

目录结构:

路径 作用
lib/session-trash.js 注入式宿主适配器之上的准入、清理与恢复逻辑(可单测)
lib/trash.js 平台回收站后端:macOS ~/.Trash、XDG trash、Windows 回收站,或自建目录
lib/restore-index.js 让"无法枚举的回收站"仍可恢复的元数据记录
lib/index.js 宿主插件:sessionDelete 服务、它的 Typert 绑定、两个 Agent 工具
lib/typert.host.js 手写 Typert 清单(严格编解码;由 typert-loader 注册)
lib/client.js 浏览器半边:菜单项、确认弹窗、remote.sessionDelete 调用
cordis.patch.yml bundle 补丁:插入宿主行
test/verify.mjs 上面的自测
docs/ 架构与打包笔记

已验证的行为

项目 证据
真实 macOS 回收站 把目录 rename 进真实 ~/.Trash,按路径读回,再 rename 出去;全程 readdir('~/.Trash') 被拒(TCC)—— 这正是恢复记录要覆盖的场景
打包应用内的删除 macOS / 桌面版 / DSH 0.2.0-rc.2,重启后宿主半边确为 0.2.0:一次性会话 13,241 字节的日志落到 ~/.Trash/-<时间戳>/,带 trash.json(backend: "macos-trash"、标题已记录)与恢复记录;原目录、投影缓存记录、workspace.json 账户里的 id 均已消失
打包应用内的恢复 session_restore 把日志放回原位并撤回两条记录,恢复后的目录只剩 session.lock 与日志
打包应用内的永久删除 session_delete(purge: true) 返回 deleted permanently,回收站无残留
客户端 会话菜单占用者含 session-delete(order 500, active),且只有一个实例(0.1.1 的幂等挂载修复)
自测 32 项(node test/verify.mjs):各平台后端、只能靠恢复记录的不可枚举回收站、过期记录、目的地不可用时不半删日志、Typert 清单与 SRC 兜底、无损 JSON 工具结果、浏览器半边重复挂载
CI Node 20/22/24 × Ubuntu/macOS/Windows

社区插件

DeepSeek Harness 目前不接受外部 PR,
并明确鼓励插件放在各自的仓库里。因此本仓库带上
dsh-plugin topic 以便被发现;针对这个插件的
issue 与 PR 欢迎提到本仓库。

License

MIT © 2026 hakulat2023

常见问题

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

在 DSH 里执行 `dsh plugin --profile web add github:hakulat2023/dsh-session-delete#v0.2.0` 即可。

dsh-session-delete 的验证等级是什么意思?

L4 · 沙盒安装通过。安装命令在隔离沙盒内真实执行成功,无依赖错误

dsh-session-delete 安全吗?

低风险。

dsh-session-delete 装之前要先确认什么?

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

dsh-session-delete 用的是什么许可证?

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

这条记录的数据可靠吗?

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

同名或近似条目

8 条
不同作者的仓库分开列,请确认你要装的是哪一个
会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

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