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

会话彻底删除 Adolanium/dsh-session-delete

DeepSeek Harness
Adolanium15 天前有提交已提供中文文档扫描:未发现敏感能力

从侧边栏永久删除会话及其日志与缓存

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · browser
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 15 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
  • 发起网络请求
    lib/client.js:286
    const response = await fetch(API, {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

为 DeepSeek Harness 提供永久删除会话功能:侧边栏新增「Delete session...」,删除时清掉日志、投影缓存和工作区记账,而不是归档。社区插件,非官方。

README

由 DeepSeek 最新模型翻译生成
归档只是把对话藏起来。删除才是真正移除。 社区插件 · 非官方 · MIT · DSH 0.2.x 安装 · 使用 · 工作原理 · 安全 · 常见问题 这是社区插件,不是 DeepSeek 官方产品。 Session Delete 是独立项目,与 DeepSeek AI 没有隶属关系,未获其认可,也不由其提供支持,不属于 DeepSeek Harness。DeepSeek Harness 和 DeepSeek 是各自所有者的名称与商标。你要安装的代码会主动删除文件。请先读安全。 为什么做这个 DeepSeek Harness 会归档会话。归档有用——那一行从侧边栏消失,会话还能回来——但它不是移除。压缩日志仍留在 ~/.dsh/sessions/ 下,投影检查点仍留在 ~/.dsh/storages/session_projcache/ 下,工作区也还在为一个你可能再也不会打开的 id 记账。 Session Delete 补上了缺失的那个动词。 | | 归档 | 删除 | | 那一行从侧边栏消失 | ✅ | ✅ | | 磁盘上的对话日志 | 永久保留 | 移除 | | 投影缓存 | 保留 | 移除 | | 工作区记账 / 固定 / 归档条目 | 保留 | 移除 | | 能否恢复 | 取消归档 | 不能 | 归档功能原样未动。
展开完整文档(README 剩余 1 节)
归档只是把对话藏起来。删除才是真正移除。

社区插件 · 非官方 · MIT · DSH 0.2.x

安装 · 使用 · 工作原理 · 安全 · 常见问题

这是社区插件,不是 DeepSeek 官方产品。

Session Delete 是独立项目,与 DeepSeek AI 没有隶属关系,未获其认可,也不由其提供支持,不属于 DeepSeek Harness。DeepSeek Harness 和 DeepSeek 是各自所有者的名称与商标。你要安装的代码会主动删除文件。请先读安全。

为什么做这个

DeepSeek Harness 会归档会话。归档有用——那一行从侧边栏消失,会话还能回来——但它不是移除。压缩日志仍留在 ~/.dsh/sessions/ 下,投影检查点仍留在 ~/.dsh/storages/session_projcache/ 下,工作区也还在为一个你可能再也不会打开的 id 记账。

Session Delete 补上了缺失的那个动词。

| | 归档 | 删除 |
| 那一行从侧边栏消失 | ✅ | ✅ |
| 磁盘上的对话日志 | 永久保留 | 移除 |
| 投影缓存 | 保留 | 移除 |
| 工作区记账 / 固定 / 归档条目 | 保留 | 移除 |
| 能否恢复 | 取消归档 | 不能 |

归档功能原样未动。删除是同一个菜单底部的第二个明确选项,点下去还要确认。

新条目排在自带操作之后,用一条细线隔开。

安装

需要 DeepSeek Harness 0.2.x(已在 0.2.1-rc.1 上测试)。桌面端和 Web UI 都支持。

安装单位是仓库。里面的 npm 包叫 dsh-plugin-session-delete;你粘贴的 spec 是 GitHub 地址。

1. 从插件页面安装(推荐)

1. 打开侧边栏,选择 Plugins。
2. 安装插件,粘贴:

github:Adolanium/dsh-session-delete

3. 安装。bundle 默认启用。
4. 刷新 DeepSeek Harness 窗口(Ctrl+R / Cmd+R)。浏览器那一半是懒加载的,所以菜单条目要刷新后才出现。

不需要构建权限:包里是纯 JavaScript,没有 prepare 脚本,也没有运行时依赖。

2. 用 dsh 命令行

如果你自己启动配置档(Web、无头模式,或者已停止的桌面端),同一个 spec 可以装进指定配置档:

dsh plugin --profile desktop add github:Adolanium/dsh-session-delete

dsh 会把 bundle 追加到配置档的 dsh.profile.bundles,因为包声明了 dsh.bundle。之后启动 DeepSeek Harness,再刷新窗口。

如果想把安装固定在这个版本,可以这样锁定:

dsh plugin --profile desktop add github:Adolanium/dsh-session-delete#v0.1.0

卸载用:

dsh plugin --profile desktop remove dsh-plugin-session-delete

Desktop 应用运行时,对 desktop 配置档执行命令行操作由配置档锁支持,但 Plugins 页面是更顺手的路径——它执行同样的操作,还会报告激活状态。

3. 从本地检出安装(开发)

git clone https://github.com/Adolanium/dsh-session-delete.git
cd dsh-session-delete
pwsh -File scripts/install-dev.ps1

这条命令把本地检出链接到 ~/.dsh/profiles/desktop/node_modules,并把 Loader 条目写入配置档补丁(附带带时间戳的备份)。用 scripts/uninstall-dev.ps1 撤销。

配置档会实时重载配置,所以链接进来的包无需重启即可激活。HMR 不监听模块根目录,因此改代码后需要重启。

使用

打开某个会话行的 ⋯ 菜单,选择 Delete session…。

对话框会显示对话名称,并说明日志及其缓存的投影将被删除。Delete 执行删除;Cancel 什么都不动。

接下来发生什么取决于会话状态:

| 会话状态 | 结果 |
| 冷——没有活跃智能体占用 | 立即删除。该行从列表消失,对话框关闭。 |
| 活跃——在本应用中打开,或有正在运行的回合占用 | 对话框说明日志仍在使用中,并提供 Delete on next start。 |
| 未知 id | 拒绝。不做任何改动。 |

下次启动时删除

活跃会话不能从它的智能体脚下直接抽走,所以第二个选项改为排队:

- 把 id 写入 ~/.dsh/plugin-session-delete/pending.json;
- 归档该会话(尽力而为),让该行从默认列表消失;
- 下次启动 DeepSeek Harness 时重试删除,此时写句柄已空闲;
- 取消归档该会话会取消它排队的删除——归档就是可见的「待删除」状态。

排队的 id 如果对应会话已经不存在,会被静默丢弃。排队的 id 如果仍在使用中,会继续排队等下次启动。

Delete 会删掉什么

对单个会话 id,Host 会删除:

- 会话目录,位于 ~/.dsh/sessions/<project>/<session-id>/,包括所有格式代次(session.vN.jsonl.zstd)和锁文件;
- 投影缓存记录,从 session_projcache 域中删除,走域本身,这样内存中的行不会在删除后残留;
- 工作区记账槽位、全局 pin 和归档条目。

它会刻意保留:

- 附件——按内容寻址存放在 ~/.dsh/attachments 下,可能与其他会话共享;
- 子代理子会话——id 独立,按设计从侧边栏隐藏;逐个删除;
- SQLite 搜索索引,前提是你的组合使用 dsh-session-query-sqlite —— 下次搜索时它会核对已删除的来源;
- 其他域中的派生行(遥测、标题)—— 它们以已无法解析的 id 为键,会被忽略。

安全模型

删文件很容易。难的是在应用运行时删掉正确的文件。插件围绕四条规则构建:

1. 单一写入者。 动手之前,Host 先取得会话的持久化写句柄,并立即关闭它。活跃的 Agent、另一个 DSH 进程,或崩溃后仍被持有的锁,都会让这次打开失败,删除随即被拒绝。句柄就是「没人在用」的证明。
2. 仅限回环。 非回环对端发来的请求会被拒绝。请求若带 Origin,必须是 Web 客户端的 origin 或 Desktop shell 的 dsh-app://app;跨站 fetch 无法到达(JSON 内容类型会强制预检,而路由不响应预检)。
3. 严格身份校验。 id 必须匹配 ^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$,目标目录名必须恰好是该 id,且其中必须包含规范的 session[.vN].jsonl[.zstd] 日志。格式错误的 id 无法指向其他路径。
4. 不出意外。 如果实际落盘的日志不在配置的根目录下,Host 会拒绝并说明原因,而不是删掉账目却把日志留下。清理失败会记入日志;响应会报告实际发生了什么。

没有网络访问,没有遥测,也没有后台进程。插件通过 Host 自身的服务读写本地文件。

配置

所有字段均可选。默认值与标准安装一致。

| 字段 | 默认值 | 含义 |
| dshHome | $DSH_HOME,否则 ~/.dsh | 数据根,用于推导下面两个根。 |
| sessionsRoot | <dshHome>/sessions | 会话持久化根 —— dsh-session-persistence-jsonl 的 root。 |
| storagesRoot | <dshHome>/storages | 存储根,仅在 storageDomain 服务缺失时作为回退。 |

如果你使用非默认的持久化根,在配置档条目里设置这些字段:

- id: session-delete
name: dsh-plugin-session-delete
config:
sessionsRoot: /srv/dsh/sessions

卸载

- 插件页面: 打开插件并移除它。
- 命令行: dsh plugin --profile desktop remove dsh-plugin-session-delete。
- 开发链接: pwsh -File scripts/uninstall-dev.ps1。

排队中的移除记录留在 ~/.dsh/plugin-session-delete/pending.json;想忘掉它们就删掉该文件。

工作原理

Session row menu
│ "Delete session…"
▼
Confirmation dialog (browser half, shell.overlay)
│ POST /plugin-session-delete/api { sessionId, mode }
▼
Host half
├─ write-handle gate ────────► live? → 409 session/in-use
├─ remove session directory
├─ drop session_projcache record
└─ detach / unpin / unarchive
▼
客户端刷新会话基线 → 该行消失

Host 这一半是一个 Cordis 插件(lib/index.js),注入 sessionPersistence 和 workspaceRegistry,并在 webServer 上注册一条精确路由。浏览器这一半(lib/client.js)是手写的模块加载器 bundle:sidebar.workspaces.session.menu.item 里一个条目,shell.overlay 里一个对话框,别的没有。

兼容性

- DeepSeek Harness 0.2.x(在 0.2.1-rc.1 上测试,Desktop 和 Web)。
- Windows、macOS、Linux。
- 无依赖,无构建步骤,无原生模块。
- 插件使用公开的 Host 服务(sessionPersistence、workspaceRegistry、storageDomain)和公开的客户端插槽。它不改动、不分叉、不修改 DeepSeek Harness。

开发者预览意味着会有破坏性变更。如果某个版本改动了这些接缝之一,插件会软失败:缺少服务时保持不激活,删除失败时返回错误,而不是把会话清理到一半。

开发

node --test

十九个测试,无依赖:

- Host(test/host.test.mjs)—— 真实插件跑在临时 DSH home、假的持久化接缝、假的工作区注册表和直接的 HTTP 请求/响应对象上。覆盖冷/活/排队路径、id 和 origin 检查、位置守卫,以及取消归档会取消删除的规则。
- 浏览器(test/client.test.mjs)—— 真实的 lib/client.js 通过模块加载器契约的桩加载;渲染菜单项和对话框,用桩 fetch 驱动请求/刷新流程。

美术资源用图像模型生成,再用 sharp 合成;源 banner 放在 assets/。

FAQ

这会取代 Archive 吗? 不会。Archive 及其取消归档流程不变。删除是额外的显式操作。

能撤销删除吗? 立即删除不能。排队删除的,在下次启动前取消归档该会话即可。

为什么提示会话仍然打开? 该会话在这个 Host 里有活跃的 Agent。用 Delete on next start;下次启动时会删除。

为什么找不到我的会话? 你的持久化根不是 ~/.dsh/sessions。把 sessionsRoot 设为 dsh-session-persistence-jsonl 使用的 root。

会删除 ~/.dsh 之外的文件吗? 不会。只删配置根下该会话自己的目录、它的 session_projcache 记录和它的注册表条目。

在纯浏览器 Web UI 里能用吗? 能。浏览器这一半调用同源路由;Host 强制回环和 origin 检查。

License

MIT。

Session Delete
A community plugin for DeepSeek Harness. Not official. Not reversible.

Community project

Session Delete is an independent community plugin. It is not affiliated with,
未获 DeepSeek AI 或 DeepSeek Harness 项目背书、赞助或官方关联。DeepSeek、DeepSeek Harness 和 dsh 是其各自所有者的名称与商标。使用风险自负;它按设计就会删除数据。
预览分享卡片长什么样 ↓Adolanium/dsh-session-delete
分享 · DeepSeek Harness Hub
Adolanium/dsh-session-delete

从侧边栏永久删除会话及其日志与缓存

回到顶部