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

侧栏会话删除 jingkun05/dsh-session-delete-native

DeepSeek Harness
jingkun0526 天前有提交已提供中文文档扫描:无法判定

在侧栏菜单里一键永久删除指定会话记录

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

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

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

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · browser
装得上吗
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 26 天前
档位由哪些信号合成

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

验证判据与等级说明 →
⚠︎ 实装验证未通过(unknown · 2026/11/3) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
⚪ 扫描:无法判定尚无人工评估
展开查看扫描说明与证据 ↓

已尝试扫描但取不到可分析的源码:仓库或包不存在、已删除,或为非 JS/TS 实现、未随包发布源码。无法判定,不代表安全。

  • · 取源不可用(Error: github tarball HTTP 404 @ https:
  • · api.github.com
  • · repos
  • · jingkun05
  • · dsh-session-delete-native
  • · tarball)
扫描于 2026/11/4(0 天前)

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

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

功能亮点

  • 侧栏菜单删除会话
  • 永久删除指定会话
  • 纯UI无智能体工具

DeepSeek Harness 侧边栏会话删除——会话「…」菜单里原生「删除会话」一行。纯 UI,不注册任何智能体工具。

README

由 DeepSeek 最新模型翻译生成
dsh-session-delete-native 给 DeepSeek Harness 侧栏补上会话删除——每个会话的 … 菜单里多一行原生 Delete session,确认后永久删除该会话的本地记录。不注册任何智能体工具。 给 DSH(DeepSeek Harness)侧栏补上官方缺失的会话删除:在每个会话行的 … 菜单里用官方 Slot 原生多出一行「删除会话」,确认后从磁盘永久删除该会话的全部本地记录。 本包不注册任何 agent 工具:删除只能由界面点击触发。 与「克隆 DOM 注入菜单」做法的区别 本包占用官方 Slot sidebar.workspaces.session.menu.item(list / root scope / replaceRisk: none),由 ui-workspace 自己把这一行渲染进菜单: - 菜单的键盘走查、复制、焦点归还由菜单本身负责,不依赖 DOM 结构猜测; - DSH 升级侧栏结构时不会静默失效(Slot 消失会明确报错,而不是悄悄不注入); - 菜单行复用宿主组件 MenuItemButton;确认框用宿主 Modal(红色确认按钮 + 必须先勾选的不可恢复确认),外观/深浅色/焦点行为与内置的 pin/rename/fork/archive 一致。
展开完整文档(README 剩余 1 节)
dsh-session-delete-native

给 DeepSeek Harness 侧栏补上会话删除——每个会话的 … 菜单里多一行原生 Delete session,确认后永久删除该会话的本地记录。不注册任何智能体工具。

给 DSH(DeepSeek Harness)侧栏补上官方缺失的会话删除:在每个会话行的 … 菜单里用官方 Slot 原生多出一行「删除会话」,确认后从磁盘永久删除该会话的全部本地记录。

本包不注册任何 agent 工具:删除只能由界面点击触发。

与「克隆 DOM 注入菜单」做法的区别

本包占用官方 Slot sidebar.workspaces.session.menu.item(list / root scope / replaceRisk: none),由 ui-workspace 自己把这一行渲染进菜单:

- 菜单的键盘走查、复制、焦点归还由菜单本身负责,不依赖 DOM 结构猜测;
- DSH 升级侧栏结构时不会静默失效(Slot 消失会明确报错,而不是悄悄不注入);
- 菜单行复用宿主组件 MenuItemButton;确认框用宿主 Modal(红色确认按钮 + 必须先勾选的不可恢复确认),外观/深浅色/焦点行为与内置的 pin/rename/fork/archive 一致。

若你已安装 npm 上的 dsh-session-delete(DOM 注入版),两者只能启用一个:它不依赖 Slot,会与本包在同一个 … 菜单里出现两个「删除会话」。

功能

| 入口 | 菜单项 | 行为 |
| 会话行 … 菜单 | 删除会话 | 永久删除该会话的日志目录 ~/.dsh/sessions/<项目目录>/<会话 id>/,不可恢复 |

位置:order: 500,排在 archive(400) 之后,并带一条分组细线(separatorBefore)。

安全设计

准入判定以「是否有在跑的工作」为准,而不是「是否已载入内存(live)」—— 把会话打开看一眼会让它 live,但不会让它有在跑的回合,这种情况应当可以删除。

- 危险确认框:宿主 Modal + 警告图标 + 不可恢复说明 + 必须先勾选确认才能点主按钮;主按钮红色;Escape/取消/关闭都安全退出。
- 有在跑的工作就拒绝:删除前先取写租赁,再用归档准入用的同一个 workspace/session-activity waterfall 判定 turn / job / subagent / schedule 四族;非空返回 409 busy。这与「归档会话」用的是同一套「什么算在跑」标准。
- 写租赁是主闸门:ctx.sessionPersistence.open(id,'write') 只在没有其它写入者时成功 —— 有活 Agent 的会话因其自身持有写句柄而在此被拒(409 locked),其它进程的实例也由 Windows 文件锁/租赁挡住。
- 已打开但空闲的会话可以删:它不持有写句柄、也没有在跑的工作,因此正常通过上述两道闸门。
- 定位失败不猜测:无法唯一定位会话目录时返回 409 ambiguous 并不改动任何文件。
- 先文件、后簿记:删除成功后才做归档簿记;任何失败都返回结构化 code,不会留下「已隐藏但没删掉」的半状态。
- 同源且无 CORS:路由只在 Host 的 webServer 上注册精确路径,不设 CORS 头;跨源 JSON POST 需要预检,浏览器会在预检阶段拒绝。

删除后为什么侧栏立刻消失

Host 半删掉日志目录后,sessionController.list() → ctx.sessionQuery.listSessions() → SQLite _reconcile() 会用 sessionPersistence.list() 重扫,把消失的会话从索引里删掉;客户端再调 ctx.sessions.refresh()(remote.session.list)重新取基线,行就消失了。不需要手工清索引。

安装

把仓库 clone 到任意位置,然后把 clone 后的目录交给 dsh plugin add:

git clone https://github.com/jingkun05/dsh-session-delete-native.git
dsh plugin --profile <你的 profile 名> add ./dsh-session-delete-native

<你的 profile 名> 例如 web、desktop。安装会把本包加入该 profile 的 dsh.profile.bundles 层(包内 cordis.patch.yml 随该层生效,不要手动去改 profile 的 cordis.patch.yml),随后重启 DSH。

add 的参数必须是本机存在的路径(安装时会建立 link: 引用)。直接把仓库 URL 交给 add 不适用。

手动兜底(不使用 dsh plugin 时):把本目录 pnpm add 进 profile,然后在 profile 的 cordis.patch.yml 加入:

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

它对你的机器做了什么

删除是带外操作——DSH 官方没有会话删除 API(@deepseek-ai/dsh-session-persistence 明确写着 “No deletion or retention API”),所以本插件自己动文件系统。装之前请清楚这一点:

- 删除时递归移除 $DSH_HOME/sessions/<项目目录>/<会话 id>/ 整个目录(含全部世代日志文件)。这是唯一会被删除的东西。
- 不会删除:附件对象($DSH_HOME/attachments,内容寻址、可能与 fork 共享)、投影缓存($DSH_HOME/storages),以及工作区注册表里的顺序记录。搜索索引由 DSH 自己在下一次 reconcile 时收敛。
- 在 Host 上注册 3 条同源精确路由(/dsh-session-delete-native/{probe,delete,delete-many}),不设 CORS 头。仅由本插件的 Client 半调用。
- 不注册任何智能体工具:删除只能由界面点击触发。

兼容性

- 实测环境:DSH 0.2.0-rc.2 + Web 组合(@deepseek-ai/dsh-base + @deepseek-ai/dsh-web-app)。
- 依赖的 Host 服务:webServer、sessionPersistence、sessions、agents、workspaceRegistry。缺少任何一个该插件不会激活(在 inject 里声明)。
- 依赖的客户端能力:官方 Slot sidebar.workspaces.session.menu.item、shell.overlay,以及 Module Loader 的 baseline external @deepseek-ai/dsh-client-ui-primitives(Modal / Button / MenuItemButton 及图标)。
- 未声明 peerDependencies,因此不会因版本范围不匹配而被 DSH 拒绝加载;但也意味着 DSH 大版本升级后需要自行验证上述 Slot 与服务是否仍在。

配置

| 字段 | 默认 | 说明 |
| root | $DSH_HOME/sessions | 会话日志根目录。仅当你的组合把 dsh-session-persistence-jsonl 的 root 配到了非默认位置时才需要设置。 |

已知限制

- 有在跑的工作的会话不能删:正在跑回合、等待审批/回答、有在跑的子代理/后台任务/定时提醒的会话会被拒绝(409 busy 或 409 locked)。先停止它再删。已打开但空闲的会话可以删。
- 不清理派生数据:附件对象(内容寻址、可能与 fork 共享)与投影缓存(~/.dsh/storages/...)保持原样;后者的孤儿条目无害,会在将来重写时消失。
- 不提供回收站:删除不可恢复。
- 未做视觉自动化验证(无浏览器控制能力),请在页面上实测一次外观。

给 DSH 侧边栏补上缺失的会话删除功能:通过官方 sidebar.workspaces.session.menu.item slot,在每个会话的 … 菜单里放一行 Delete session,确认后从磁盘上永久删除该会话的本地记录。

本包不注册任何智能体工具:删除只能从界面触发。

为什么不用 DOM 注入

本包占用官方 slot,所以 ui-workspace 自己渲染这一行:菜单保留自己的键盘走查、复制与焦点返回,将来 DSH 版本重构侧边栏时会直接报错,而不是悄悄丢掉这个入口。这一行复用宿主提供的 MenuItemButton;对话框复用宿主提供的 Modal,带红色确认按钮和必勾的确认复选框。

如果你已经在用 npm 上的 dsh-session-delete(DOM 注入)包,两个只启用一个。

行为

- 入口:会话行 … 菜单 → Delete session(order: 500,排在 archive 之后,带 separatorBefore 分组细线)。
- 递归删除 ~/.dsh/sessions/<project>/<session-id>/。不可恢复。

安全

准入判断依据是有没有在跑的工作,而不是会话有没有加载进内存:打开会话看一眼会让它变成 live,但不会给它跑回合,这样的会话可以删。
两道闸门:宿主先取进程内单写者租约(sessionPersistence.open(id,'write'))——会话若已有活跃 Agent,会在这里被拒,因为那个 Agent 已经持有写句柄(409 locked),而 Windows 文件锁是跨进程的守卫——然后它去问 workspace/session-activity 瀑布流,和归档路径用的是同一个,只要有 turn / job / 子代理 / schedule 在跑,就以 409 busy 拒绝。会话目录无法解析时直接中止,不碰任何文件。先删文件,再跑记账,所以失败绝不会留下删了一半的状态。路由是精确匹配、同源,且不发任何 CORS 头。

安装

把仓库克隆到任意位置,然后把克隆出来的目录交给 dsh plugin add:

git clone https://github.com/jingkun05/dsh-session-delete-native.git
dsh plugin --profile <your-profile> add ./dsh-session-delete-native

这会把包加到该配置档的 dsh.profile.bundles 层(它的 cordis.patch.yml 随后作为该层生效——不要手动编辑配置档补丁)。之后重启 DSH。add 的参数必须是你机器上真实存在的路径;把仓库 URL 传给 add 不管用。

它对你的机器做了什么

删除是带外的:DSH 没有提供会话删除 API(@deepseek-ai/dsh-session-persistence 写着「No deletion or retention API」),所以这个插件自己动手碰文件系统。

- 它递归删除 $DSH_HOME/sessions/<project>/<session-id>/(所有格式世代)。这是它唯一删除的东西。
- 它不删除附件对象($DSH_HOME/attachments,内容寻址,可能和 fork 共享)、投影缓存($DSH_HOME/storages),也不动工作区注册表的排序。搜索索引会在 DSH 下次 reconcile 时收敛。
- 它在 Host 上注册三条同源精确路由(/dsh-session-delete-native/{probe,delete,delete-many}),不带 CORS 头,只由本包的客户端半边调用。
- 它不注册任何智能体工具:删除只能从 UI 触发。

兼容性

- 已在 DSH 0.2.0-rc.2 上验证,使用 Web 组合(@deepseek-ai/dsh-base + @deepseek-ai/dsh-web-app)。
- 需要的 Host 服务:webServer、sessionPersistence、sessions、agents、workspaceRegistry(在 inject 中声明;缺了它们插件保持不激活)。
- 需要的客户端能力:官方 sidebar.workspaces.session.menu.item 和 shell.overlay 插槽,以及 Module Loader 基线外部依赖 @deepseek-ai/dsh-client-ui-primitives(Modal / Button / MenuItemButton 和图标)。
- 没有声明 peerDependencies,所以版本不匹配时 DSH 不会拒绝加载它——这也意味着 DSH 大版本升级后需要手动检查上述插槽和服务是否还在。

不是官方包

这是社区插件,不属于 DeepSeek Harness。配置字段和已知限制见中文部分。

许可证

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

在侧栏菜单里一键永久删除指定会话记录

这是你的仓库?认领条目

回到顶部