DeepSeek Harness 插件

dsh-delete-session-smwhff

Delete a session (and its durable log) from the DSH Web GUI: a Delete session row in every session's overflow menu(英文原文)

跳到安装方式

来源信息

GitHub 仓库
SMWHff/dsh-delete-session
最近更新
2026年8月17日
分类
记忆
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/SMWHff/dsh-delete-session
插件名:dsh-delete-session-smwhff
作者:SMWHff

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-delete-session

Delete a session from the DSH Web GUI — DeepSeek Harness (dsh) Web 模式的主机 + 客户端插件。

在会话列表每行右侧的省略号菜单(重命名 / 分叉会话 / 归档会话)末尾追加一行 「删除会话」:点击后弹出产品级风险确认对话框(RiskConfirmation, 勾选「我了解此操作不可恢复」后方可确认),随后彻底删除该会话——包括 磁盘上的会话日志目录(sessions/<project>/<sessionId>/)与工作区记录中的 会话登记;成功 / 失败均有 Toast 反馈。

删除行为

1. 运行中拒绝:该会话的 agent 正在运行时拒绝删除(提示等待完成)。 2. 空闲存活实例:先 flush 把缓冲事件落盘,再 detach;detach 发布的 session/disposed 由 host API proxy 转发为 host/session-removed, 已打开的客户端列表自动移除该会话。 3. 持久日志:通过 sessionPersistence.findLog 定位日志文件,整目录移除。 4. 工作区登记:从所有引用了该会话的工作区记录中 detach(触发 host/workspace-changed 帧)。 5. 客户端收尾:刷新会话基线;若删除的是当前打开会话,清空选择回到空态。

工作原理

  • 主机端:按 dsh-open-in-vscode 同款模式注册严格 Typert Remote

deleteSession/delete),主机 Gateway 无需 @Remote 标记表即可解析调用。

  • 客户端:当前构建的会话行菜单没有原生 slot,因此按 legacy 适配器模式

注入:识别会话行省略号按钮(aria-label 模板匹配),在 portal 菜单弹出时 用 MutationObserver 把删除行挂进菜单。会话身份解析优先级:显示标题唯一 匹配 → 同名会话按 DOM 行位置消歧(点击哪一行就删哪一行)→ 仅当解析失败 且该行是当前选中行时才回退到当前会话。解析彻底失败则不注入(宁缺毋滥)。 确认对话框由独立 React root 渲染(RiskConfirmation + Toast,均来自 dsh-client-ui-primitives)。

安装

从 GitHub 安装:

# 克隆后以本地路径安装
git clone https://github.com/SMWHff/dsh-delete-session
pnpm dsh plugin --profile web add file:/path/to/dsh-delete-session

或手动:把包链接进 profile 的 node_modules,并在 profile manifest 登记:

"dependencies": { "dsh-delete-session": "file:/path/to/dsh-delete-session" },
"dsh": { "profile": { "bundles": [..., "dsh-delete-session"] } }

bundle 层增删需重启 web 表面,并刷新页面让浏览器拿到新的 window.__DSH_BOOT__ 图。包内 lib/ 已随源码提交,file: 安装无需重新构建。

构建

npm install     # esbuild(一次性)
npm run build   # 产出 lib/index.js(host ESM)与 lib/client.js(浏览器 bundle)

文件结构

dsh-delete-session/
├── package.json        # dsh.bundle + dsh.client 声明
├── cordis.patch.yml    # bundle 层:insert 一行挂载本插件
├── dsh.plugin.json
├── build.mjs           # esbuild 构建脚本
├── tsconfig.json
├── src/
│   ├── index.ts        # host half:注册 Typert manifest
│   ├── contract.ts     # 共享 wire 契约(zod codec)
│   ├── typert.ts       # TYPERT_MANIFEST
│   ├── runtime.ts      # DeleteSessionRuntime:分层删除逻辑
│   └── client/
│       ├── index.ts    # browser half:remote 挂载 + 菜单注入
│       ├── remote.ts   # client Remote contribution
│       ├── locales.ts  # zh/en 字典
│       └── session-menu.ts  # 会话菜单 DOM 适配器
└── lib/                # 构建产物

兼容性

依赖运行时会话列表快照(displayTitle / blank / current)、workspace locale 的 actions.session.aria / menu.archiveSession 模板,以及会话行 [role="treeitem"]aria-selected 标记。官方后续版本若调整这些契约, 更新 src/client/session-menu.ts 顶部的识别逻辑即可。