dsh-sidebar-row-menu

uitested: passnpmMIT

Right-click menus for DSH sidebar rows: on DSH 0.2.2+ both rows use the host menus — workspace rows follow the session grouping (new session, copy path and reveal, pinned open-with apps, an open-with submenu, bulk delete) and session rows extend the menu that opens at the pointer with pinned open-wi

下载量 / Downloads
1,369
依赖体积 / node_modules
0.35 MB
测试时间 / Tested
2026-11-06
DSH 版本 / Version
0.2.2-rc.1

Install

dsh plugin --profile web add dsh-sidebar-row-menu

Sandbox test results

StageResult
1 install✓
2 list✓
3 mount✓
4 boot—

Four stages run in an isolated sandbox: install (network on) → list → mount → boot (last three with no network).

README

dsh-sidebar-row-menu

<img src="https://raw.githubusercontent.com/TLEWA/dsh-sidebar-row-menu/main/assets/icon-180.png" width="96" align="right" alt="插件图标" />

![CI](https://github.com/TLEWA/dsh-sidebar-row-menu/actions/workflows/ci.yml)

![Release](https://github.com/TLEWA/dsh-sidebar-row-menu/releases)

[简体中文](README.md) · [English](README.en.md)

给 DeepSeek Harness(DSH)左侧边栏加右键菜单:

  • 工作区行:右键弹出菜单(DSH 0.2.2 起并入宿主原生菜单,条目按 order 与内置项交错);
  • 工作区下层的会话行:右键在指针处展开该行自己的菜单,并追加本插件的条目。

DSH 0.2.2 把侧栏右键改成数据驱动:工作区菜单由宿主统一渲染,本插件按 order 把条目混排

进去;会话菜单仍由宿主渲染 slot 内容,右键也由宿主开在指针处。所以 0.2.2 上菜单的视觉、

行高、图标、危险色、键盘导航,以及“点外部关闭 / Esc 关闭”全部与内置菜单一致,本插件只

提供条目。0.2.1 及更早的宿主没有这套服务:工作区菜单仍由本插件用官方 MenuSurface +

MenuItemButton 自绘,会话右键仍由插件把行尾「…」菜单搬到指针处。

会话菜单的内容来自

sidebar.workspaces.session.menu.item slot —— 内置动作和其他插件的动作都在里面,

本插件只追加自己的条目,不复制、不硬编码任何内置动作。

本插件的条目默认只在右键展开时出现;设置 →「行菜单」→「菜单显示位置」可以逐项改成
只进「…」菜单、或两边都进(至少保留一边)。
0.2.2 上右键与「…」共用同一份宿主菜单,插件按“右键手势”区分:右键时打标,等菜单面板
真正挂载后才收尾;点「…」的按下事件会立刻清标,所以那个菜单只带设为「…」或「两边」的条目。
右键展开的菜单不会因为鼠标移出而关闭,只有点击外部、选中条目或按 Esc 才关闭。

功能

工作区行右键

0.2.2 上这份菜单由宿主渲染,本插件条目与内置「重命名」(100)、「在文件夹显示」(200)、

「删除工作区」(300)按 order 交错,分组规则与会话菜单一致:新会话 90、在新标签打开 110、

归档会话开关 130、复制工作区路径 150、置顶应用 210、打开方式 220、新会话默认权限 225、

删除工作区及所有会话 310。这些条目默认只出现在右键菜单;行尾「…」里的菜单保持原生,

想让它也带上插件条目,可在设置 →「行菜单」→「菜单显示位置」里逐项选择「…」或「两边」。

0.2.1 上整份菜单由本插件自绘,「重命名」「删除工作区」由插件调用官方对话框。

菜单项 · 行为

新会话 · 展开该工作区并新建会话(等价于行尾 +)

重命名(内置) · 打开官方“重命名工作区”对话框;0.2.1 上由本插件代为渲染

在新标签中打开 · 仅在装有 dsh-project-tabs(暴露 openWorkspaceInTab)时出现

显示 / 隐藏已归档会话 · 只在该工作区有已归档会话时出现,文案随当前状态切换。点击「显示已归档会话」会把侧边栏的全局归档筛选切到「全部对话」,再藏起其他工作区(含「未分组」)的归档行,于是只有这个工作区的已归档会话露出来;点击「隐藏已归档会话」把它重新收回。逐工作区的选择存在本地、刷新后保持;在「视图选项」里改全局筛选则以全局选择为准

复制工作区路径 · 复制目录路径到剪贴板

在文件夹显示(内置) · 在资源管理器里打开工作区目录;0.2.2 由宿主提供,0.2.1 上不出现

置顶的打开方式 · 被置顶的应用直接显示在一级菜单(例如「用 Visual Studio Code 打开」),点击后用该应用打开工作区目录

打开方式 · 二级菜单列出宿主提供的外部应用(编辑器、终端、文件管理器);与会话菜单共用同一套应用列表、置顶与开关设置,鼠标悬浮自动展开。宿主的菜单项不画二级箭头,本插件把标签渲染成「文字 + 右对齐箭头」,与会话菜单同一位置;0.2.1 自绘菜单画的是箭头图标

新会话默认权限 · 二级菜单列出宿主原生权限预设(仅可查看 / 工作区内修改 / 完全权限)。选中的预设成为该工作区下以后新建会话的默认权限,当前生效项右侧打勾;「跟随全局默认」清除本工作区的设置。只改新会话,不动已有会话

删除工作区(内置) · 打开官方删除确认对话框;只删除工作区登记,会话保留并归入「未分组」。0.2.1 上由本插件代为渲染

删除工作区及所有会话 · 先永久删除该工作区下的每个会话及其日志,全部成功后再删除工作区登记;任一会话删除失败则保留工作区,便于重试。工作区目录本身不删除

会话行右键

右键会话行不会另起一套菜单:0.2.2 由宿主把该行的原生菜单开在指针处;0.2.1 由本插件触发行尾

「…」菜单,并临时把它的锚点移到指针。两种情况下菜单内容都来自同一份 slot:

来源 · 条目

DSH 内置 · 重命名、分叉会话、置顶 / 取消置顶、归档 / 取消归档、复制 Session ID

其他插件 · 它们注册进 sidebar.workspaces.session.menu.item 的条目

本插件 · 置顶的打开方式(一级)、打开方式(二级菜单)、永久删除会话 / 删除所有已归档会话(默认仅已归档会话显示;可在设置里允许删除未归档会话)

本插件追加的条目:

菜单项 · 行为

打开方式 · 二级菜单列出宿主提供的外部应用(编辑器、终端、文件管理器),用会话自己的 cwd 打开;取不到时退回所属工作区目录

置顶的打开方式 · 被置顶的应用直接显示在一级菜单(例如「用 Visual Studio Code 打开」);未配置时自动置顶检测到的第一个编辑器,没有编辑器则置顶第一个应用。鼠标悬浮到「打开方式」会自动展开二级菜单

永久删除会话 · 默认只在已归档会话的右键菜单里出现;确认后永久删除这一个会话及其日志,不可恢复。在设置里开启「允许删除未归档会话」后,未归档会话也会出现这一项

删除所有已归档会话 · 只在已归档会话的右键菜单里出现;确认后永久删除全部已归档会话及其日志,不可恢复

「打开方式」的应用列表来自 DSH 内置的 open-in-app 路由,与 DSH 自己的「打开方式」

能力同源;应用名和图标都由本插件展示,可在设置里逐个隐藏,也可以把常用应用置顶到

一级菜单。两个删除入口由本插件自己的宿主路由完成,默认不会删除未归档会话;

开启「允许删除未归档会话」后才会对普通会话开放。删除不会级联删除 fork 子会话。

这些条目默认出现在右键菜单。想直接使用行尾「…」菜单,可以在设置 →「行菜单」→

「菜单显示位置」里逐项选择:

  • 「…」菜单:条目只出现在行尾「…」打开的菜单里,右键菜单不再显示;
  • 「两边」:右键和「…」都显示;
  • 「右键菜单」:默认值,只在右键菜单里出现。

每个条目至少要保留一边,最后一边的开关会被锁住。会话条目与工作区条目(0.2.2)都走同一套

contextMenus provider,按手势标记决定当前是哪份菜单;工作区条目在 0.2.1 上由本插件接管

行尾「…」按钮自绘,规则一致。

草稿会话(还没有任何消息的空白会话)没有右键菜单,本插件同样不接管。

非工作区 / 非会话的侧边栏行(如“显示更多”)也不会被拦截。

会话正文右键

在会话正文里右键——空白处、思考过程、回复和工具摘要都可以(输入框、工具条和工具卡片

本身以外)——会弹出一份纵向菜单,把这排按钮按屏幕视觉顺序从左到右列出来,每项带

原按钮的图标:

  • 装了 dsh-sidebar-organizer 且调整过「会话头部工具条」时,菜单顺序跟随它的排序;

没装或没调整时就是 DSH 的默认顺序。organizer 用 CSS order 排序,DOM 顺序不等于

屏幕顺序,所以菜单是按 getBoundingClientRect() 的横坐标现算的;

  • 「打开方式」按工作区 / 会话右键菜单的同一套规则收纳:置顶的应用直接显示成一级行

(如「用 Visual Studio Code 打开」),其余应用收进「打开方式 ›」二级菜单,悬浮或

点击展开;设置里的「打开方式」总开关、逐应用开关和置顶都对它生效,总开关关闭时这

一组整体不出现;

  • 「更多操作」也不再点开右上角的「…」:和其它二级菜单一样在本菜单里展开,直接复刻

宿主那份菜单的条目(复制会话为 Markdown、下载 Session 日志、反馈……),选中即执行;

子菜单的行序同样跟随 dsh-sidebar-organizer——在「…」弹层里拖动过的顺序会写进

dsh.sidebar-organizer.host-menu-order.v1,这里按同一份顺序重排;

  • 不同分组之间自动加淡色分隔线,菜单项的高度、内边距、圆角、13px 字号和 14px 图标

都与 DSH 原生右键菜单对齐;

  • 「更多操作」一类的溢出入口固定放在最后一项(可在设置里关掉);被 organizer 收进

「更多操作」的按钮不会单独出现;

  • 会话栏左上角的状态组件(conversation.session.header.actions 槽位:费用明细、

后台任务计数等)整体不列进菜单,设置里打开「显示左上角状态组件」后才出现。这条规则

按槽位判断、不认识具体标签,所以宿主或插件以后往这个槽位加的状态组件也默认隐藏;

  • 点普通条目就是点原按钮:先关菜单,再把 click 派发给宿主工具条里的那个按钮,所以

「查找」「展开底部面板」等弹出的仍是原生面板;

  • 有选中文字时让位给浏览器的选区菜单;消息里的输入控件和链接也保留原生菜单;工具卡片、

输入框、工具条本身以及侧栏行同样保留各自的原生菜单;

  • 找不到任何可用的工具条按钮(比如草稿会话或按钮全被隐藏)时,不接管原生菜单。

设置

设置 →「行菜单」里可以开关本插件的每个新增项:

开关 · 作用

打开方式 · 关闭后工作区 / 会话菜单以及正文右键菜单里不再出现「打开方式」和置顶应用

打开方式 → 应用 · 逐个隐藏应用;旁边的「置顶」按钮把应用移到一级菜单

永久删除会话 · 关闭后会话菜单里不再出现单条删除入口

允许删除未归档会话 · 默认关闭;开启后未归档会话的右键菜单也会出现「永久删除会话」,需先开启上一项

删除所有已归档会话 · 关闭后不再出现批量删除入口

显示已归档会话 · 关闭后工作区菜单里不再出现「显示 / 隐藏已归档会话」(默认开启;该项只在当前工作区存在已归档会话时出现)

菜单显示位置 → 工作区 · 逐项选择工作区行条目出现在右键菜单、「…」菜单,或两边:新会话、新会话默认权限、打开方式、复制工作区路径、在新标签中打开、归档会话开关、删除工作区及所有会话

菜单显示位置 → 会话 · 逐项选择会话行条目的显示位置:打开方式、永久删除会话、删除所有已归档会话

启用空白处右键菜单 · 会话正文(空白处、思考过程、回复)的右键菜单总开关(默认开启);关闭后该区域恢复浏览器 / 宿主的原生菜单

「更多」固定在最右 · 默认开启;把「更多操作」一类的溢出入口固定在菜单最后一项,不受工具条当前顺序影响

显示左上角状态组件 · 默认关闭;打开后会话栏左上角 conversation.session.header.actions 槽位里的组件(费用明细、后台任务计数等)也会列进正文右键菜单

「菜单显示位置」默认全部是「右键菜单」,所以未改动时 … 菜单与 DSH 完全一致。

DSH 0.2.2 起行尾「…」与右键共用同一份宿主菜单,插件条目按手势标记区分当前是哪份菜单;

设为「…」或「两边」的条目才会进入「…」菜单。0.2.1 上工作区行没有宿主菜单可贡献,

改由插件接管「…」按钮自绘,显示规则相同。

开关存在浏览器 localStorage(dsh.sidebar-row-menu.items.v1、

dsh.sidebar-row-menu.open-with.v1、dsh.sidebar-row-menu.open-with.pinned.v1、

dsh.sidebar-row-menu.placement.v1 与 dsh.sidebar-row-menu.blank-menu.v1),

改完立即生效,不需要重启。旧版的 dsh.sidebar-row-menu.ellipsis.v1(布尔值)会在首次加载时

自动迁移成「两边 / 右键菜单」。置顶项在第一次配置前是自动推导的:优先置顶检测到的第一个

编辑器(通常是 VS

…(truncated)

Rendered from the README published on npm. Formatted only, not edited.

Versions

Published on npm::20,最后更新 2026-11-06

Links

GitHub · Homepage · npm

Same category