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

右键菜单增强 baihejiangnan/dsh-session-context-menu

DeepSeek Harness
baihejiangnan35 天前有提交已提供中文文档扫描:含敏感能力

更好的右键:DeepSeek Harness 应用封装端的完整原生风格上下文菜单

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

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

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add baihejiangnan/dsh-session-context-menu
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 35 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@baihejiangnan/dsh-session-context-menu(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 15:48:09

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 12 处,展示前 12 条)
  • 执行外部命令来自配置/变量
    lib/index.js:64
    const child = spawn(command, args, { detached: true, stdio: "ignore", windowsHide: true })
  • 删除本地文件递归
    lib/index.js:172
    await rm(sessionDir, { recursive: true, force: true })
  • 读取本地文件
    lib/index.js:175
    if (existsSync(sessionDir)) throw new Error(`session directory still exists: ${sessionDir}`)
  • 发起网络请求
    lib/client.js:333
    const response = await fetch("/api/session/openWorkspacePath", {
  • 发起网络请求
    lib/client.js:362
    const response = await fetch("/dsh-session-context-menu/open-url", {
  • 写入剪贴板
    lib/client.js:386
    async function writeClipboard(text) {
  • 写入剪贴板
    lib/client.js:388
    try { await navigator.clipboard.writeText(text); return } catch {}
  • 读取剪贴板
    lib/client.js:393
    async function readClipboard() {
  • 读取剪贴板
    lib/client.js:395
    try { return await navigator.clipboard.readText() } catch {}
  • 写入剪贴板
    lib/client.js:401
    await writeClipboard(text)
  • 发起网络请求
    lib/client.js:447
    await fetch("/dsh-session-context-menu/delete", {
  • 读取剪贴板
    lib/client.js:690
    add(root, t("paste"), async () => replaceSelection(editable, await readClipboard()), "Ctrl+V")
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-workspace
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

6 张 · 点击查看大图

功能亮点

  • 原生风格上下文菜单

README

由 DeepSeek 最新模型翻译生成
更好的右键 Better Context Menu for DeepSeek Harness [!WARNING] 当前版本不适配原生 Web 端。 本插件只面向承载 DeepSeek Harness Web UI 的应用封装端,包括 Tauri、EAC、Electron、WebView2、CEF、Qt WebEngine 等桌面客户端。直接在 Chrome、Edge、Firefox 等普通浏览器中打开 dsh web 不属于当前支持范围,浏览器原生右键行为也不作为本插件的兼容目标。 「更好的右键」为 DeepSeek Harness 应用封装端提供更完整、接近原生客户端的鼠标右键体验,覆盖会话、工作区、设置页、对话正文、链接与输入框。菜单与提示文案支持中英文并自动跟随宿主 UI 语言。官方已有的会话操作转交官方组件;插件额外提供带确认和路径保护的永久删除会话能力。 安装 要求已安装 DeepSeek Harness,并使用承载 Web UI 的 Profile(例如 web 或 tauri)。
展开完整文档(README 剩余 1 节)
更好的右键

Better Context Menu for DeepSeek Harness

[!WARNING]
当前版本不适配原生 Web 端。 本插件只面向承载 DeepSeek Harness Web UI 的应用封装端,包括 Tauri、EAC、Electron、WebView2、CEF、Qt WebEngine 等桌面客户端。直接在 Chrome、Edge、Firefox 等普通浏览器中打开 dsh web 不属于当前支持范围,浏览器原生右键行为也不作为本插件的兼容目标。

「更好的右键」为 DeepSeek Harness 应用封装端提供更完整、接近原生客户端的鼠标右键体验,覆盖会话、工作区、设置页、对话正文、链接与输入框。菜单与提示文案支持中英文并自动跟随宿主 UI 语言。官方已有的会话操作转交官方组件;插件额外提供带确认和路径保护的永久删除会话能力。

安装

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

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

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

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

当前最新稳定标签为 v0.2.14;main 已包含将在下一版本发布的中英文适配和永久删除会话功能。

更新

通过未锁定的 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

效果展示

会话与工作区

会话右键菜单工作区右键菜单

对话输入区

输出内容与侧边编辑器

输出内容右键菜单侧边编辑器右键菜单

设置界面

内置上下文

- 会话:官方重命名、分叉、归档;永久删除会话;打开目录、复制目录和会话 ID。
- 工作区及其“新会话”入口:新建会话、打开目录、重命名、复制路径、归档会话和安全移除工作区。
- 普通文本:复制所选文本;全选严格限定在当前对话内容 slot 或设置弹窗,不包含应用侧边栏。
- 链接或选中的网址:使用系统默认浏览器打开、复制链接。
- 输入框:撤销、重做、剪切、复制、粘贴、全选。
- 所有插件菜单:刷新当前 Harness 页面。

兼容策略

- 不修改 @deepseek-ai/*、Tauri 壳或其他社区插件。
- 通过会话行的无障碍语义定位目标,通过 sessions 和 workspaces 公开服务执行业务;无法确认目标时保留浏览器默认菜单。
- 常规操作继续使用 Harness 公开服务;永久删除通过插件宿主路由处理,因为 Harness 当前仅公开归档而没有删除会话 RPC。
- 插件卸载后不留下补丁。
- 与 dsh-better-sidebar 共存(v0.2.14+):better-sidebar 会包装宿主的 workspaces.openPath 把所有路径导向侧边栏编辑器。为避免目录被当文件打开(xxx is a directory),本插件"在资源管理器中打开"直接调用宿主 RPC host.openPath(POST /api/host.openPath),目录始终交给系统文件管理器; URL 不会传入文件路径接口,而由插件宿主路由交给系统默认浏览器。

永久删除会话

[!CAUTION]
永久删除不可恢复。确认后,会话日志、同目录附件、投影缓存以及工作区记账都会被清理。

- 点击「删除会话」后会显示插件内置确认框;只有点击「确定删除」才会继续。点击取消、遮罩空白处或按 Esc 均视为取消。
- 删除运行中的会话时,插件会先取消任务、等待 Agent 停止并脱离 live session,避免日志被后台重新写回。
- 删除当前正在查看的会话后,内容区进入与顶部「新建会话」一致的默认状态;删除其他会话不会改变当前内容区。
- 递归删除仅允许作用于当前 DSH_HOME/sessions 下、目录名与会话 ID 完全一致的 JSONL 会话目录。
- 宿主删除接口只接受同源 JSON 请求,拒绝跨域或不符合格式的调用。

更新日志

未发布(main)

- 新增:菜单、Toast、确认框和错误文案支持中英文,并自动跟随宿主 UI 语言。
- 新增:会话菜单提供永久删除,包含自定义危险操作确认框、运行中 Agent 停止、硬盘目录验证、投影缓存与工作区记账清理。
- 行为:删除当前会话后进入默认新建会话状态;删除非当前会话时保留当前内容区。
- 安全:限制递归删除路径,并拒绝跨域及非 JSON 删除请求。
- 修复:Windows 上「使用默认浏览器打开」不再把 URL 当作文件系统路径交给 PowerShell。

v0.2.14(2026-08-18)

- 修复:与 dsh-better-sidebar 共存时,右键菜单「在资源管理器中打开」目录报 xxx is a directory。目录打开改走宿主 RPC host.openPath,绕过 better-sidebar 对 workspaces.openPath 的包装;链接打开行为不变。

v0.2.13

- 完整上下文菜单(会话 / 工作区 / 设置页 / 对话正文 / 链接 / 输入框)。

GitHub Topics

本仓库使用 dsh-plugin Topic,发布为公开仓库后会由 GitHub 自动聚合到 github.com/topics/dsh-plugin。同时使用 deepseek-harness、context-menu、tauri 和 webview 等 Topic 描述用途与运行环境。

为什么不提供「置顶会话」

Codex 的「置顶聊天」不是简单地把某一行移动到列表第一位,而是由独立的 pin 状态驱动:被置顶的会话固定显示在置顶分区,未置顶的会话仍然可以继续按照最近更新时间排序。两套规则彼此独立,因此新消息、会话更新和应用重启都不会取消置顶,也不会改变其他会话的时间排序方式。

DeepSeek Harness 当前公开的会话与工作区状态中没有对应的 pinned 字段、置顶集合、置顶 RPC 或状态变更事件。Harness 侧栏目前只提供两种整体排序方式:

- 最近更新:所有会话统一按照活动时间调整顺序。即使插件通过 workspaces.insertSessionBefore() 把某个会话移动到工作区顺序顶部,侧栏仍会按照更新时间重新计算显示顺序。
- 手动排序:可以把某个会话移动到顶部,但会让整个会话列表停止按更新时间自动排序。这与 Codex「固定置顶,同时让其他会话继续按时间排序」的行为不同。

因此,本插件不提供「置顶会话」,也不会用切换全局手动排序、直接修改 Harness 本地存储、重排 React DOM 或修改会话日志等方式模拟置顶。这些方案会改变用户原有的排序偏好,且在 Tauri、EAC、搜索结果和不同版本的 Harness 中容易失效,不能作为稳定功能发布。

如果 Harness 后续增加独立的 pin 状态和公开操作接口,本插件可以在不干扰普通会话时间排序的前提下接入真正的置顶功能。

扩展协议

其他 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、官方菜单 action、session、原始 target、鼠标坐标 x/y 和当前 extensions。扩展插件应在卸载时调用注册返回的 disposer。

兼容性说明

- 同名会话无法从公开 DOM 语义中唯一识别时,不接管该会话行的浏览器默认菜单,以免操作错误会话。
- Clipboard API 不可写时会回退到浏览器复制命令;宿主禁止读取剪贴板时会提示使用 Ctrl+V。
- 撤销和重做受宿主编辑器能力限制;宿主不支持菜单调用时会提示使用对应快捷键。
预览分享卡片长什么样 ↓baihejiangnan/dsh-session-context-menu
分享 · DeepSeek Harness Hub
baihejiangnan/dsh-session-context-menu

更好的右键:DeepSeek Harness 应用封装端的完整原生风格上下文菜单

回到顶部