dsh-session-context-menu:为 DSH 应用封装端补齐原生右键菜单

前言

在 Tauri、EAC、Electron 等应用封装端里运行 dsh web 时,WebView 自带的右键菜单往往不完整:会话侧栏缺少常用操作,对话正文和输入框的编辑项也不齐全,和桌面原生客户端的体验有差距。DeepSeek Harness 官方组件已覆盖部分会话操作,但归档之外没有公开的永久删除接口,封装端用户仍需要一套可预期、可扩展的上下文菜单。

下面介绍社区插件 baihejiangnan/dsh-session-context-menu(更好的右键)。它面向承载 DSH Web UI 的桌面封装端,在会话、工作区、设置页、对话正文、链接与输入框等场景提供接近原生客户端的右键体验,菜单与提示文案支持中英文并自动跟随宿主 UI 语言。

这是什么

dsh-session-context-menu 由维护者 baihejiangnan 发布,分类为客户端插件,在 SkillHub 目录与 GitHub 上均可查阅。插件通过 Cordis patch 注入 DSH Web 客户端,不修改 @deepseek-ai/* 核心包或其他社区插件;卸载后不留下补丁。

需要特别说明的是:当前版本不适配原生 Web 端。 直接在 Chrome、Edge、Firefox 等普通浏览器中打开 dsh web 不在支持范围内,浏览器原生右键行为也不是兼容目标。插件只面向 Tauri、EAC、Electron、WebView2、CEF、Qt WebEngine 等承载 Web UI 的应用封装端。

核心功能

会话与工作区

会话行右键菜单复用官方重命名、分叉、归档能力,并额外提供带确认框和路径保护的永久删除。工作区及其「新会话」入口支持新建会话、打开目录、重命名、复制路径、归档会话和安全移除工作区。还可打开目录、复制目录路径和会话 ID。

官方已有的会话操作转交官方组件;永久删除通过插件宿主路由处理,因为 Harness 当前仅公开归档而没有删除会话 RPC。

文本、链接与输入框

普通文本支持复制所选内容;全选严格限定在当前对话内容 slot 或设置弹窗,不包含应用侧边栏。链接或选中的网址可使用系统默认浏览器打开、复制链接。输入框提供撤销、重做、剪切、复制、粘贴、全选。所有插件菜单均提供「刷新当前 Harness 页面」。

永久删除会话

永久删除不可恢复。点击「删除会话」后会显示插件内置确认框,只有点击「确定删除」才会继续;点击取消、遮罩空白处或按 Esc 均视为取消。

删除运行中的会话时,插件会先取消任务、等待 Agent 停止并脱离 live session,避免日志被后台重新写回。删除当前正在查看的会话后,内容区进入与顶部「新建会话」一致的默认状态;删除其他会话不会改变当前内容区。递归删除仅允许作用于当前 DSH_HOME/sessions 下、目录名与会话 ID 完全一致的 JSONL 会话目录。

扩展协议

其他 Web 插件可通过全局注册表登记扩展菜单项。run 在点击时执行,visible 可按会话决定是否显示:

const menu = globalThis[Symbol.for('dsh.session-context-menu.extensions')]
const dispose = menu.register({
  id: 'example.session-details',
  order: 100,
  label: '会话详情',
  visible: ({ session }) => Boolean(session),
  run: ({ session }) => console.log(session),
})

每次打开右键菜单还会派发 dsh:session-context-menu 事件,detail 包含 row、官方菜单 actionsession、原始 target、鼠标坐标 x/y 和当前 extensions。扩展插件应在卸载时调用注册返回的 disposer。

兼容策略

插件通过会话行的无障碍语义定位目标,通过 sessionsworkspaces 公开服务执行业务;无法确认目标时保留浏览器默认菜单。与 dsh-better-sidebar 共存时(v0.2.14+),「在资源管理器中打开」直接调用宿主 RPC host.openPathPOST /api/host.openPath),目录始终交给系统文件管理器,避免 better-sidebar 包装 workspaces.openPath 后把目录当文件打开。

安装与启用

要求已安装 DeepSeek Harness,并使用承载 Web UI 的 Profile(例如 webtauri)。推荐跟随 GitHub main 分支安装,以获取最新功能并可直接执行更新命令:

dsh plugin --profile web add github:baihejiangnan/dsh-session-context-menu

如果希望锁定到当前稳定版本,不自动跟随后续更新,可以安装 Git 标签。当前最新稳定标签为 v0.2.14

dsh plugin --profile web add github:baihejiangnan/dsh-session-context-menu#v0.2.14

安装后重启 dsh web 或承载它的 Tauri、EAC 等应用封装端。开发者也可以克隆仓库后使用本地路径链接:

git clone https://github.com/baihejiangnan/dsh-session-context-menu.git
dsh plugin --profile web add ./dsh-session-context-menu

更新

通过未锁定的 GitHub 地址安装后,执行下面的命令获取 main 上的最新稳定版本:

dsh plugin --profile web up @baihejiangnan/dsh-session-context-menu

更新完成后重启 dsh web 或应用封装端。使用 #v0.2.14 等标签锁定安装的用户,需要先把依赖目标改成新的稳定标签,或重新执行对应新标签的安装命令。

卸载

dsh plugin --profile web remove @baihejiangnan/dsh-session-context-menu

适用场景与注意

适合在 Tauri、EAC、Electron 等封装端日常使用 DSH 的开发者:需要完整右键菜单、永久删除会话、或在封装端内打开目录和外部链接时,可以安装本插件。

安装前应注意:

  1. 插件以当前 dsh 进程权限运行,安装前应检查源码与许可证(MIT)。
  2. 不支持在普通浏览器中直接使用;若你的环境是 dsh web 裸跑在 Chrome 里,本插件不会改善右键体验。
  3. 同名会话无法从公开 DOM 语义中唯一识别时,插件不接管该会话行的默认菜单,以免操作错误会话。
  4. Clipboard API 不可写时会回退到浏览器复制命令;宿主禁止读取剪贴板时会提示使用 Ctrl+V
  5. 本插件不提供「置顶会话」:Harness 当前没有独立的 pin 状态和公开操作接口,强行模拟会干扰全局排序偏好。

main 分支已包含将在下一版本发布的中英文适配和永久删除会话功能;稳定版 v0.2.14(2026-08-18)主要修复了与 dsh-better-sidebar 共存时打开目录报错的问题。

结语

dsh-session-context-menu 为 DeepSeek Harness 应用封装端补上了会话、工作区、对话与输入等场景的原生风格右键菜单,并在官方归档之外提供可控的永久删除能力。若你使用 Tauri 或 EAC 等封装端运行 DSH,可按上文命令安装试用。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜