dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
Delete DeepSeek Harness sessions from the UI: header danger button + sidebar session-row menu item (no conversation jump), risk-consent dialog with session name/id, stops running agents first, in-place list refresh without page reload. Works in web and the desktop client.
简体中文 · English
在 DeepSeek Harness 界面里彻底删除会话。 归档只是隐藏,损坏的会话又删不掉 —— 这个插件补上最后一步:删掉就是真的删掉。
适用于 DSH 0.2.x(Web 端与桌面端);当前版本按 0.2.1-rc.3 逐项核对验证。
界面入口(两处,同一个确认弹窗)
确认弹窗:显示会话名与会话 id;运行中的会话额外给出警告;必须勾选「我已了解后果,确认删除」才能点下删除按钮。
删除链路:会话日志 + 投影缓存 + 工作区记账一起清掉,经活动的 storageDomain 操作,内存状态与磁盘一致 —— 不会出现下次 flush 又把会话「复活」回来的情况。
Agent 工具:workbench_session_delete,让 agent 也能删除会话。
中英双语:所有文案跟随界面语言(设置里的语言或浏览器语言)实时切换。
插件页展示:插件列表里显示本地化标题「删除会话」与一句说明(locale/zh.json / locale/en.json),不再是包名。
插件只发布在 GitHub 上(没有发布到 npm),装法和其他 GitHub 插件一样 —— 一行命令,不用 clone 到本地,也不用填本地路径。
换成你的 profile 名:Web 端是 web,桌面端是 desktop;#v1.0.2` 是要装的版本。
dsh plugin --profile <profile> add github:SUKJG1052/DSH-Plugin-Session-Delete#v1.0.2
dsh --profile <profile> --dump-config # 可选:确认配置树里出现 chameleon-session-deletedsh 命令,用应用自带的那一个:安装目录下的 resources\runtime\cli\bin\dsh.cmd(macOS / Linux 为 resources/runtime/cli/bin/dsh),参数完全一样。desktop profile 初始化出来),并在执行命令前完全退出它。--profile;漏了 CLI 会直接报 required option '--profile ' not specified。装不上,或者机器上没有 git? github: 形式由本机 git 拉取仓库,需要机器上有 git、且能连上 github.com。改用压缩包直链就不需要 git —— pnpm 直接下载,同时也跳过 DSH 对 GitHub 的连通性预检:
dsh plugin --profile <profile> add https://codeload.github.com/SUKJG1052/DSH-Plugin-Session-Delete/tar.gz/refs/tags/v1.0.2想装默认分支上的最新代码:github: 形式把 #v1.0.2 换成 #main(或整个去掉),直链把 refs/tags/v1.0.2 换成 refs/heads/main。
在界面里装:侧边栏 →「插件」页 →「添加插件」→ 在「包名或地址」里粘贴 github:SUKJG1052/DSH-Plugin-Session-Delete#v1.0.2(或上面那条直链)→「安装」→ 重启 DSH。
升级:界面里「卸载 → 再装新版」(安装对话框自己会提示:安装后暂不支持自动更新);命令行把版本号换成新版再 add 一次即可 —— 只要包名不变,pnpm 会替换成新版本。
从旧版本升级(0.5.x 及更早):v1.0.0 换了包名(@huanlin/… → @sukjg1052/…),要先卸旧包再装新包:
dsh plugin --profile <profile> remove @huanlin/dsh-plugin-session-delete
dsh plugin --profile <profile> add github:SUKJG1052/DSH-Plugin-Session-Delete#v1.0.2卸载
dsh plugin --profile <profile> remove @sukjg1052/dsh-plugin-session-deleteworkbench_session_delete(参数 sessionId:裸 id 和 session- 前缀两种写法都认,UUID、计数器 id 与自定义 id 都能删)。0.2.1-rc.3 实测):支持。v0.5.0 按 0.2.1 逐项核对过插件依赖的全部接口 —— 三个插槽的契约(conversation.session.header.actions、sidebar.workspaces.session.menu.item、shell.overlay)、ui-primitives 的 Modal / MenuItemButton / IconTrashOutlineRegular、客户端模块加载协议(window.__ModuleLoader__.load)与 host 侧服务(defineTool、ctx.tools.register、storageDomain、agents、sessions、webServer.register),均与 0.2.0 一致。v1.0.2 又按 0.2.1-rc.3 重新核对:dsh.client 声明解析(platform / inject / external / immediately)、平台基线模块表(react、@deepseek-ai/dsh-client-ui-primitives)、上述三个插槽契约、ui-primitives 的 Modal / MenuItemButton / IconTrashOutlineRegular、客户端模块加载协议与 host 服务均未变;rc.3 新增的头部 View 标签 / More 菜单(conversation.session.header.views.actions)与 ui-primitives 的增量项(IconAppsAddOutlineRegular / Medium、MenuItemButton.current、Menu.minWidthFromAnchor)不冲突。兼容范围只以 engines.dsh(>=0.2.0-rc.1 <0.3.0-0,即 0.2.x 全系)声明 —— DSH 0.2.1 起按它判定。v1.0.1 起不再声明 peerDependencies:^0.2.0-rc.1 这样的 peer 范围在 npm 的预发布规则下匹配不到 0.2.1-rc.2,会让插件市场(dshmarket)的诊断页误报一条不兼容,pnpm 也会跟着打 unmet peer 警告,而 0.2.1 起宿主本来就忽略 peer。不匹配时 DSH 会拒绝安装并打印一条按版本豁免的命令(dsh plugin allow-version ... --accept-risk)。除非你清楚风险,否则不要豁免 —— 正确的做法是换用对应 DSH 版本的插件版本。
现象 · 原因与处理 「连接 GitHub 超时」/「无法访问 GitHub」 · DSH 对 GitHub 的连通性预检没过。改用 codeload .tar.gz 直链(跳过该检查)。 github: 形式报 git 相关错误(如 getRepoRefs 失败) · 机器上没有 git,或 git 不在 PATH 上。装上 git,或改用压缩包直链。 「该插件已安装。如需升级,请卸载后重新安装」 · 界面里先卸载再装新版;命令行把版本号换成新版再 add 一次即可。 「这个包没有声明组合包,无法作为插件安装」 · 装错包了 —— 本插件的包名是 @sukjg1052/dsh-plugin-session-delete。 桌面端 dsh plugin --profile desktop 报 profile 未初始化 · 先启动一次桌面端把 profile 建出来,再完全退出应用重试。 装完界面里没有变化 · 重启 DSH(对话框会提示「已安装,下次启动后加载」)。 插件列表显示「异常」/ 不兼容 · 版本不匹配,见上面的「兼容性」。
engines.dsh(>=0.2.0-rc.1 <0.3.0-0)本就覆盖 0.2.1-rc.3,实测安装、加载与门禁判定均正常。dsh-tools / dsh-host-webserver / dsh-app-boot / dsh-client-locale 只变了依赖清单,defineTool、ctx.tools.register、storageDomain、agents、sessions、webServer.register 未变。dsh.client 声明解析与客户端模块系统运行时未变(client-modules 只换了 release commit);react 与 @deepseek-ai/dsh-client-ui-primitives 仍在平台基线模块表里;三个插槽契约未变。rc.3 的 ui-conversation 头部新增 View 标签 / More 菜单与 ui-primitives 的新增导出都是纯增量,不影响现有实现。DSH_HOME 的 web profile 上启动 0.2.1-rc.3 实例 —— boot graph 含本插件条目(inject 列表正确)、客户端 bundle 经 /plugins 正常下发并以 __ModuleLoader__.load 注册、apply 注册三个插槽;host 工具 workbench_session_delete 正常注册。peerDependencies(@deepseek-ai/dsh-tools ^0.2.0-rc.1)。npm 的预发布规则下,^0.2.0-rc.1 的上界是 <0.3.0-0,而 0.2.1-rc.2 只有在「同一 major.minor.patch 的比较项自身带预发布标记」时才会被接纳 —— 这里没有任何一项落在 0.2.1 上,于是判定为不匹配。插件市场 dshmarket 的诊断页因此报 peer range @deepseek-ai/dsh-tools@^0.2.0-rc.1 does not match resolved 0.2.1-rc.2,pnpm 每次 profile 安装操作后也会打一条 unmet peer 警告。DSH 0.2.1 起本就优先按 engines.dsh 判定、并忽略同时存在的 peer,所以删掉这条声明不改变宿主的兼容门禁,只是消除这两处误报。engines.dsh 的上界从 <0.3.0 收紧为 <0.3.0-0:按 npm 的 includePrerelease 语义,<0.3.0 会接纳 0.3.0 的预发布版本(如 0.3.0-rc.1),<0.3.0-0 才是「只到 0.2.x」的正确上界;0.2.x 的所有预发布与正式版仍然全部通过。@huanlin/dsh-plugin-session-delete 改为 @sukjg1052/dsh-plugin-session-delete(@huanlin 是上游的命名空间);cordis.patch.yml 的行名与客户端 bundle 的注册 id 同步更新。从 0.5.x 升级需要先卸旧包再装新包(命令见「安装 → 从旧版本升级」)。. / ..,以及结尾的点或空格),计数器 id、自定义 id 和带不带 session- 前缀的写法都能删。LICENSE(MIT,保留上游 lsz-asd 与本仓库的版权声明);README 中的仓库身份从「fork」改为「源自上游的独立维护版本」。engines.dsh(>=0.2.0-rc.1 <0.3.0):0.2.1 起 DSH 优先按它判定,同时保留 peerDependencies 供更早版本读取。locale/zh.json / locale/en.json 的 meta.title / meta.description 让插件列表显示「删除会话」与一句说明(不再是包名);exports 补 ./locale/*.json,files 收录 locale/。dsh.client.inject 删掉 0.2.1 已不存在的 @deepseek-ai/dsh-client-ui-slots:ui-slots / ui-primitives 已并入 Web 外壳的共享模块表,插件里的 require 依旧可用。Modal / MenuItemButton / 图标导出、客户端模块加载协议、host 侧服务)确认一致;同一套 host 行为测试全部通过(跨站围栏、两种 id 写法的删除、400 / 404 / 405、agent 工具);线上实例的 session 列表端点与客户端 bundle 均正常加载。github: 简写。dsh plugin --profile add github:SUKJG1052/DSH-Plugin-Session-Delete#v0.4.2,并紧跟一行 dsh --profile --dump-config 自检(确认配置树里出现 chameleon-session-delete)。github: 形式由本机 git 拉取仓库,机器上必须有 git;直链由 pnpm 直接下载,既不需要 git,也跳过 DSH 对 GitHub 的连通性预检。file:C:/path/to/... 移出安装章节并注明它只适合本人调试,正文只保留「界面里添加插件」和「命令行 dsh plugin add 」两种真正可用的方式,补上固定 tag / main 分支两种直链、升级与卸载步骤、桌面端自带 CLI 的路径与注意事项,以及常见报错对照表。/__chameleon/session/list 与 /__chameleon/session/delete 注册在 webServer 上,而这一层不做浏览器鉴权(DSH 只在 /api 的 Host Connection 通道上做 Host/Origin 检查与 Cookie 校验),此前任何能访问到该端口的人都能调用删除接口。现在 Sec-Fetch-Site: cross-site、或 Origin 与请求 Host 不同源(含 Origin: null)的浏览器请求一律 403;应用页面是同源请求,CLI / curl / 进程内工具不带这两个头,删除链路行为不变。IconTrashOutlineRegular(0.2.x 已移除 IconTrashOutline16 这类 16 后缀命名),并保留 Regular → Medium → 旧名 回退链,避免组件为 undefined 时整块 UI 崩掉。[class*=sessionRow],该标识在 0.2.x 已不存在、会静默失效)改为官方槽位 sidebar.workspaces.session.menu.item:用宿主 MenuItemButton 获得一致的样式与危险色,直接取该行的 sessionId/displayTitle,不再依赖标题匹配;order: 500 排在宿主自带固定组(pin 100 / rename 200 / fork 300 / archive 400)之后。peerDependencies 由 @deepseek-ai/dsh-tools ^0.1.0-rc.6 提升到 ^0.2.0-rc.1:旧声明会被 0.2.x 的兼容门禁直接拒绝安装。dsh.client.inject 换成真实存在的客户端包(@deepseek-ai/dsh-client-runtime 在 0.2.x 已不存在),并补上 dsh.manifestVersion: 1。defineTool、ctx.tools.register、agents、sessions.flush、storageDomain 的 table/global、webServer.register 在 0.2.x 中签名一致。session- 前缀两种 id 形式;先删除磁盘日志并确认成功后再解除工作区记账,避免半删除会话脱离原分组;删除前先 flush 活动会话,防止 dispose 阶段回写/重建日志目录。MIT,完整文本见 LICENSE。本仓库源自 lsz-asd/dsh-plugin-session-delete 的初始实现,自 v0.4.0 起按 DSH 0.2.x 的接口独立维护;上游与本仓库的版权声明都保留在 LICENSE 中。