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

会话彻底删除 Geralt4/dsh-plugin-session-delete

DeepSeek Harness
Geralt479 天前有提交已提供中文文档扫描:含敏感能力

从网页界面永久删除会话日志与附件

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Geralt4/dsh-plugin-session-delete
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · ui
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
数据截至 2026/09/26·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/05·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 79 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

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

验证判据与等级说明 →

可信度证据

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

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

读写/删除本地文件发起外部网络请求
查看扫描证据(共 2 处,展示前 2 条)
  • 删除本地文件
    lib/index.js:123
    await rm(dirname(path), {
  • 发起网络请求
    lib/client.js:106
    const response = await fetch(new URL(ROUTE_PATH, hostBase()), {
扫描于 2026/11/5(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 永久删除会话日志
  • 永久删除会话附件
  • 顶栏按钮确认弹窗

DSH 插件:在 Web UI 里永久删除某个会话的磁盘日志和附件(顶栏按钮 + 确认弹窗)。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-session-delete 一个 DeepSeek Harness 插件,为 Web UI 中的会话(聊天)添加真正的、永久性的删除功能——在对话头部添加一个“删除会话”按钮,并附带确认对话框。确认后,它会删除该会话在磁盘上的对话日志和附件,并将该行从侧边栏中隐藏,无需刷新页面。 目前,原生 UI 只能归档会话(将其隐藏;日志会永久保留在磁盘上)。核心没有 deleteSession RPC,因此该插件添加了一个小型的宿主端 HTTP 路由来执行持久删除,并添加了一个调用它的客户端头部操作。 ⚠️ 不可逆。已删除的会话无法恢复。删除会话前,请停止该会话上正在运行的任何 agent(该路由也会尽力取消 agent)。适用于 Web 配置文件和桌面客户端。
展开完整文档(README 剩余 1 节)
dsh-plugin-session-delete

一个 DeepSeek Harness 插件,为 Web UI 中的会话(聊天)添加真正的、永久性的删除功能——在对话头部添加一个“删除会话”按钮,并附带确认对话框。确认后,它会删除该会话在磁盘上的对话日志和附件,并将该行从侧边栏中隐藏,无需刷新页面。

目前,原生 UI 只能归档会话(将其隐藏;日志会永久保留在磁盘上)。核心没有 deleteSession RPC,因此该插件添加了一个小型的宿主端 HTTP 路由来执行持久删除,并添加了一个调用它的客户端头部操作。

⚠️ 不可逆。已删除的会话无法恢复。删除会话前,请停止该会话上正在运行的任何 agent(该路由也会尽力取消 agent)。适用于 Web 配置文件和桌面客户端。

安装

安装到 dsh web 配置文件中(dsh plugin 命令会转发到配置文件目录中的 pnpm),然后添加 Loader 条目行并重启配置文件:

从 npm 安装
dsh plugin --profile web add dsh-plugin-session-delete

或直接从 GitHub 安装(lib/ 已提交,因此无需构建)
dsh plugin --profile web add github:Geralt4/dsh-plugin-session-delete

然后将该插件的 Loader 条目追加到配置文件的 cordis.patch.yml($DSH_HOME/profiles/web/cordis.patch.yml)中,并重启 dsh web:

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

刷新页面后,对话头部会出现一个删除会话按钮。

工作原理

┌──────────────── browser ────────────────┐ ┌──────── host (Node) ────────┐
│ conversation.session.header.actions slot│ │ webServer.register(exact) │
│ DeleteSessionHeaderAction (button) │──> │ POST /api/session-delete │
│ DeleteSessionDialog (confirm modal) │ │ { sessionId } │
│ │ confirm() │ │ │ │
│ │ fetch POST /api/session-delete │ │ ▼ │
│ ▼ │ │ cancel agent (best-effort) │
│ on ok: ctx.workspaces.archiveSession() │ │ sessionPersistence.inspect │
│ (row disappears from sidebar now) │ │ → absolute log path │
└─────────────────────────────────────────┘ │ fs.rm(dir, recursive) │
│ (log + attachments) │
│ SQLite FTS rows auto-drop on │
│ next persistence observation │
└─────────────────────────────┘

为什么是插件而不是核心 PR

DeepSeek Harness 核心没有 session.delete / workspace.deleteSession RPC(只有 workspace.archiveSession,用于隐藏;以及 session.cancel,用于停止)。dsh-host-apiproxy 中的静态 UNARY_ROUTES 表无法由插件扩展,因此插件无法添加路由 RPC。但它可以,通过 webServer 服务(dsh-host-webserver)注册自己的 HTTP 路由,并通过公开的 sessionPersistence.inspect(id).path 访问相同的磁盘结果。这个插件正是这样做的。

这是对真正应属于核心的功能(持久化协调器负责实时会话退役和精确路径编码)的尽力近似。如果维护者将来添加了一等的 deleteSession,这个插件可以缩减为围绕它的薄 UI 包装。

项目布局

dsh-plugin-session-delete/
package.json # dsh.client manifest + peerDeps + tsdown scripts
tsdown.config.ts # two-entry build (host + client)
tsconfig.json
src/
index.ts # host half: webServer route + fs.rm
client.ts # browser half: header action + confirm dialog
lib/ # build output (index.js + client.js)

构建

pnpm install
pnpm bundle # tsdown -> lib/index.js, lib/client.js (+ .d.ts)

客户端 bundle 格式说明

浏览器通过 window.__ModuleLoader__.load({ id, factory }) 加载客户端部分(参见 @deepseek-ai/dsh-client-modules)。在 DSH monorepo 中,一个共享的 tsdown 插件将客户端入口包装成该形式;宿主入口是纯 ESM,构建时保持不变。

- 在仓库内(首次开发推荐):将此包放到 packages/ 下(例如 packages/plugin/session-delete),并复制 packages/session-query/session-log-export/tsdown.config.ts,以便客户端输出被包装。将该包添加到 web profile 的 bundle 列表中。
- 在仓库外:要么复制该仓库内的 tsdown 配置,要么直接以 factory 形式编写 src/client.ts,以便普通的外部化构建可以加载(参见下面的 Out-of-tree build)。tsdown.config.ts 中的 peer deps 必须保持外部化,以便加载器的 require 在运行时解析它们。

安装到 profile

仓库外插件通过 dsh plugin 命令添加到 profile,该命令会转发到 profile 目录中的 pnpm:

from a checkout of this plugin, or an npm tarball
dsh plugin --profile web add
dsh plugin --profile web install

然后重新构建 profile 的前端产物并刷新正在运行的 URL(shell 不是独立应用;dsh web 会注入 window.__DSH_BOOT__)。

要针对运行在 http://127.0.0.1:3080 的 GUI 进行开发:客户端部分无需刷新即可重新加载,仅当同时从同一 checkout 运行 pnpm run dev:web 以重新构建客户端 bundle 时。宿主部分和 shell 需要重新构建 + 刷新。

运行 / 验证

1. 启动 web profile:dsh web(或从源代码 checkout 运行 pnpm dsh web)。
2. 打开一个会话。对话标题栏中会出现一个“Delete session”按钮。
3. 点击它 → 确认对话框 → “Delete permanently”。
4. 该会话在持久化根目录下的磁盘目录被删除,该行从侧边栏中消失。

磁盘上的会话日志位于
///session.jsonl[.zstd]
(+ 同目录下的附件)。此插件从不重新计算该路径:它从
sessionPersistence.inspect(id) 读取绝对路径,并删除该
产物的目录。

树外构建(客户端工厂形式)

如果你无法使用仓库内的 tsdown 客户端插件,请将 src/client.ts 替换为工厂形式的等价实现,以便一个普通的外部化 ESM 构建可被加载。
其形态如下(与已发布的 @deepseek-ai/dsh-session-log-export/lib/client.js 一致):

window.__ModuleLoader__.load({
id: "dsh-plugin-session-delete",
factory: (require) => {
const { jsx, jsxs, Fragment } = require("react/jsx-runtime");
const { createSnapshotStore } = require("@deepseek-ai/dsh-client-runtime/client");
const { Modal, Button, IconTrashOutline16 } = require("@deepseek-ai/dsh-client-ui-primitives");
// …the controller, dialog, header action, and apply/inject from src/client.ts…
return { apply, inject };
},
});

在 tsdown.config.ts 中保持 react、react/jsx-runtime 和 @deepseek-ai/* 为外部依赖,以便这些 require(...) 调用在物化时由加载器解析,而不是被打包。

限制

- 活动会话:如果某个 agent 在你删除时正在积极写入,持久化协调器可能会在此插件删除日志后重新创建它。
该路由会尽力先取消该 agent;对话框会警告用户。
- 后代:此 v1 仅删除一个会话的目录。子 agent 子项不会被级联删除。(如果你想要级联的后续功能,请查看 session.export 的 includeDescendants 模式。)
- 工作区记账:该行通过 workspace.archiveSession 被隐藏,这会将该 id 保留在其工作区的 sessionIds 槽位中。过期的记账会在下一次持久化观察时由核心协调。从记账中真正移除应属于核心的职责。
- SQLite FTS 索引:一旦日志文件消失,会由核心的协调自动删除;此插件不会直接触碰该索引。

许可证

MIT
预览分享卡片长什么样 ↓Geralt4/dsh-plugin-session-delete
分享 · DeepSeek Harness Hub
Geralt4/dsh-plugin-session-delete

从网页界面永久删除会话日志与附件

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部