在侧边栏永久删除会话及其完整历史记录
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/10 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add rhl88/dsh-session-delete该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:需留意
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 侧边栏删除会话
- 永久移除会话记录
- 清除完整历史
README
由 DeepSeek 最新模型翻译生成dsh-session-remove
DeepSeek Harness (cordis) bundle 插件,为 Web GUI 加入永久删除会话功能。原版 DSH 只能归档会话:侧边栏会话菜单里多出一条破坏性的删除会话项(排在置顶/重命名/分叉/归档之后,带分隔线),一个确认对话框,以及一条宿主路由,用来物理移除会话的持久化产物。
中文说明
在侧边栏会话菜单里加入删除会话:永久移除会话记录与完整历史,补足官方只能归档的限制。菜单项排在 置顶/重命名/分叉/归档 之后,带分隔线与危险色,点击后弹出确认对话框。
安装(三种方式任选)
① 从 GitHub 仓库安装(推荐;插件目录里展示的就是这条)
dsh plugin add github:rhl88/dsh-session-delete
② 从本地目录 / 预构建 tarball 安装
dsh plugin add D:\path\to\dsh-session-delete
dsh plugin add D:\path\to\local-dsh-session-delete-1.0.0.tgz
③ 等价的手工方式(在 profile 目录里)
cd C:\Users\Administrator\.dsh\profiles\desktop
展开完整文档(README 剩余 1 节)
dsh-session-remove
DeepSeek Harness (cordis) bundle 插件,为 Web GUI 加入永久删除会话功能。原版 DSH 只能归档会话:侧边栏会话菜单里多出一条破坏性的删除会话项(排在置顶/重命名/分叉/归档之后,带分隔线),一个确认对话框,以及一条宿主路由,用来物理移除会话的持久化产物。
中文说明
在侧边栏会话菜单里加入删除会话:永久移除会话记录与完整历史,补足官方只能归档的限制。菜单项排在 置顶/重命名/分叉/归档 之后,带分隔线与危险色,点击后弹出确认对话框。
安装(三种方式任选)
① 从 GitHub 仓库安装(推荐;插件目录里展示的就是这条)
dsh plugin add github:rhl88/dsh-session-delete
② 从本地目录 / 预构建 tarball 安装
dsh plugin add D:\path\to\dsh-session-delete
dsh plugin add D:\path\to\local-dsh-session-delete-1.0.0.tgz
③ 等价的手工方式(在 profile 目录里)
cd C:\Users\Administrator\.dsh\profiles\desktop
pnpm add github:rhl88/dsh-session-delete
再把 dsh.profile.bundles 设为: ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-session-remove"]
装完重启 DeepSeek Harness,并刷新 GUI 页面
dsh plugin add 与插件页安装会默认启用该 bundle;只有手工 pnpm add 才需要自己改 dsh.profile.bundles。
删除内容:会话日志目录 ~/.dsh/sessions/<项目目录>/<会话id>/、投影缓存 ~/.dsh/storages/session_projcache/sessions/<会话id>.json,并从工作区记账、置顶集合、归档集合中清除该会话 id,随后广播 api-session/removed,侧边栏立即更新。不删除(v1):内容寻址的附件字节(跨会话共享)、子代理会话日志、全文检索索引行(下次搜索会自动对账剔除)。
安全侧设计:所有注册表调用都带超时且失败不致命——工作区操作队列卡住时仍会删除文件,并在响应里返回 degraded 说明;活动会话未释放句柄则返回 409 且不动文件,稍后重试即可。
两点注意:① 只装一份——行 id 与浏览器插槽 id 固定,同时选中两份安装会冲突;② 改宿主端代码需要重启应用——desktop 组合关闭了模块热重载(HMR root: []),且重新导入同一模块 URL 会命中 ESM 缓存。包内没有声明任何依赖(宿主只用 node 内置模块,客户端只用浏览器模块基线),因此没有版本兼容门槛。
中文详细说明见 INSTALL.zh.md;宿主逐步日志 session-delete.debug.log、浏览器进度标记 session-delete.client.log 都写在已部署的 index.js 同目录,便于排查。自测:node test/paths.test.js、node test/module-load.test.js、node test/delete-flow.test.js。
以下为英文文档 / English documentation follows.
删除会移除什么
1. JSONL 后端的会话目录
~/.dsh/sessions/<projectKey(cwd)>/<encodeSegment(sessionId)>/(所有格式代际、压缩变体与租约文件)。
2. 投影缓存记录 ~/.dsh/storages/session_projcache/sessions/<sessionId>.json。
3. 注册表记账:把该 id 从所属工作区记录中解绑,并从置顶集合与归档集合中剔除;发出 api-session/removed,让每个已连接的浏览器立即对账。
v1 中刻意不移除:内容寻址的附件字节(按设计跨会话共享)、后代子代理会话日志(本来就不在侧边栏显示)、全文索引行(SQLite 索引在下次搜索时与持久化对账——已删除的会话会自行消失)。
工作原理
宿主端(index.js,行 session-delete):在组合的 webServer 上注册 POST /session-delete/delete,位于 connection 信任围栏之后(Host/Origin + 浏览器认证——与随附应用路由同一道关卡)。一次删除:
1. 解析会话(先查实时存储,再查 sessionPersistence.stat);未知会话 → 404,不写入任何内容。
2. workspaceRegistry.archiveSession(id, { stopActivity: true }) —— 注册表自身的机制会停掉正在运行的回合、任务、子代理后代和提醒;归档集合会拦截这些停止动作引发的每一次唤醒。已归档时幂等。
3. 有界等待(timeoutMs,默认 20 秒),等实时会话离开 ctx.sessions —— 也就是等 session/disposed 排空并关闭持久化写入句柄(Windows 在句柄打开时会阻止删除文件)。超时 → 409 session-busy;会话保持归档状态,稍后重试。
4. rm -r 删除会话目录(路径函数逐字复刻 JSONL 后端的 encodeSegment/projectKey;每个候选项都要在配置的根目录内做包含性检查,针对瞬时锁做有界重试,当头部 cwd 与物理布局不一致时回退到项目目录扫描)。
5. 删除投影缓存记录文档。
6. 从工作区记录中分离、取消固定、取消归档 —— 每次写入都会发布常规的 feed 增量,所以侧边栏会实时移除该行。
7. 发出 api-session/removed。
客户端部分(client.js,web 平台):菜单项挂在 sidebar.workspaces.session.menu.item(顺序 500,danger + 分隔符),确认框是 shell.overlay 的 Modal。确认时先运行 ctx.uiWorkspace.archiveSession(id, { stopActivity: true })(停止工作,并在被删除的会话处于打开状态时清空主视图,释放让会话保持活跃的客户端引用),然后 POST 删除路由。失败时在对话框中显示宿主返回的消息;归档步骤之后删除失败会让会话保持归档状态 —— 已隐藏,但可以通过「取消归档」恢复。
只依赖基础浏览器模块(react、@deepseek-ai/dsh-client-store、@deepseek-ai/dsh-client-ui-primitives)和宿主上的 node 内置模块 —— 该包声明无依赖、无 dsh peer 范围,所以不会引发版本豁免摩擦,在任何 dsh 运行时都能解析。槽位所有者的 README 明确要求通过 loader require 解析 MenuItemButton;代价是与固定组合的 primitives 耦合。
安装
该包是 cordis bundle:package.json 声明 dsh.bundle.patch + dsh.client,cordis.patch.yml 插入 session-delete 行,配置档的 dsh.profile.bundles 选中它。
1. install (any of these)
dsh plugin add github:rhl88/dsh-session-delete # from this repository (recommended)
dsh plugin add D:\path\to\dsh-session-delete # from a local directory
dsh plugin add D:\path\to\local-dsh-session-delete-1.0.0.tgz # from a packed tarball
equivalently, by hand, from the profile directory:
cd C:\Users\Administrator\.dsh\profiles\desktop
pnpm add github:rhl88/dsh-session-delete
2. dsh plugin add and the Plugins page enable the bundle by default.
只有手动 pnpm add 这条路线,才需要把选择写进
"dsh": { "profile": { "bundles": [
"@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-session-remove" ] } }
3. 重启应用,然后刷新 GUI 页面
两点说明:
- 只安装一份。 行 id(session-delete)和浏览器插槽 id 都是固定的,所以同时选中两份这个插件就会冲突——比如已发布的 dsh-session-remove,加上一份带版本号的本地镜像,也就是这个桌面配置档验证时用的 -v2 副本。先移除另一份:pnpm remove @local/dsh-session-delete-v2。
- 宿主侧改动需要重启应用。 桌面组合把 HMR 行设为 root: []——模块监听关闭,只有配置档配置会重新加载——而重新导入同一个模块 URL 只会返回缓存副本。
这个工作区目录是权威源。实际桌面配置档验证时用的是它的带版本号镜像, C:\Users\Administrator\.dsh\local-plugins\dsh-session-delete-v2\(文件完全相同,包名加了 -v2 后缀,客户端模块 id 对应),这样做是为了在不重启应用的情况下加载修好的宿主侧。把配置档切回这个权威包,就是改一下 bundle 列表再加一次重启。
调试卡住的删除
两侧都会记录进度,所以不用浏览器控制台也能定位卡在哪里:
- session-delete.debug.log,放在部署后的 index.js 旁边——宿主每一步一行(request、fence、body、stat、locate、archive、dispose wait、rm、cache、accounting、response),外加一个 90 s 的请求看门狗。
- session-delete.client.log——浏览器侧的标记(confirm、archive、delete: posting、status),通过 POST /session-delete/trace 上报。
两者都是纯追加式调试产物,可以放心删除。删除路线刻意不依赖注册表:每次注册表调用都有超时保护,且失败不致命,所以工作区操作队列卡死也不会让删除搁浅——文件照样删掉,响应里会报告哪些步骤降级了。
测试 pwsh
node test/paths.test.js # 路径编码,对照真实的 ~/.dsh 目录结构检查
node test/module-load.test.js # 宿主/客户端模块形态,仅基线依赖
node test/delete-flow.test.js # 真实路线跑在 fixture 目录上:
普通删除、注册表卡死、会话忙、
信任围栏、未知 id、畸形请求体、
持久化 stat 挂起(扫描回退)
配置(cordis 行配置)
| key | default | meaning |
| timeoutMs | 20000 | 等待活动会话 dispose 的上限(钳制在 1 s–5 min) |
| sessionsRoot | $DSH_HOME/sessions | JSONL 后端根目录覆盖 |
| storagesRoot | $DSH_HOME/storages | 存储根目录覆盖(投影缓存) |
开发说明
- paths.js 存放纯路径辅助函数(不导入任何模块);test/paths.test.js 对它们做单元测试,包括针对本机真实 ~/.dsh 目录结构的抽查(只读)。
- 会话 id 从不直接落到文件系统上:encodeSegment 是单射,且能防目录穿越;记录文件名被限制在存储后端允许的路径安全键类里。
- 删除带子代理后代的会话时,只删除指定的那个会话;后代的日志仍留在磁盘上(它们的行在侧边栏隐藏)。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
rhl88/dsh-session-delete
在侧边栏永久删除会话及其完整历史记录
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。