前言¶
在 DeepSeek Harness(DSH)里,左侧栏会列出工作区与会话。对工作区做重命名、删除,或把目录交给 VS Code、资源管理器打开,原先往往要点行尾的「…」菜单,其它操作则没有统一入口。下面介绍社区插件 dsh-sidebar-context-menu:在工作区行上右键即可弹出与官方风格一致的菜单,并补充「在新标签中打开」等能力(需配合 dsh-project-tabs)。
这是什么¶
dsh-sidebar-context-menu 由维护者 miao-ge 发布,分类为客户端插件。它在 DSH 左侧菜单的工作区行上挂载右键菜单,复用官方重命名与删除流程,并通过宿主侧接口在本机打开 VS Code(新窗口)与 Windows 资源管理器。插件以 MIT 许可证发布,当前资料中的包版本为 0.2.0。
DSH 官方工作区 UI 包没有「工作区行」级别的菜单插槽,本插件通过在 Web 客户端捕获 contextmenu、结合 data-row-key 与 React fiber 识别 ProjectRowItem,在不改内置包的前提下介入;菜单组件来自 @deepseek-ai/dsh-client-ui-primitives 的 Menu。
核心功能¶
右键仅作用于真实工作区行(data-row-key 以 workspace: 为前缀);会话行、未分组区域不会弹出本菜单,其它区域的右键行为不受影响。
| 菜单项 | 行为 |
|---|---|
| 重命名 | 与原先「…」按钮相同,打开官方重命名对话框 |
| 删除工作区 | 与原先「…」按钮相同,打开官方删除确认框 |
| 使用 VS Code 打开 | 执行 Code.exe --new-window <路径>,新开窗口,不占用当前 DSH 所在窗口 |
| 在资源管理器中打开 | 宿主执行 explorer.exe <路径>,进入该目录 |
| 在新标签中打开 | 仅当已安装 dsh-project-tabs 时出现,将该项目在新标签中打开 |
原先「…」里的重命名、删除并未移除,只是多了一条右键路径。
环境说明: 「打开资源管理器 / VS Code」由宿主 POST /dsh-sidebar-context-menu/open 处理,仅接受本机 loopback 调用。VS Code 启动器优先使用环境变量 DSH_SCM_VSCODE,其次注册表与常见安装路径;若 PATH 上第一个 code.cmd 指向 Cursor,可通过 DSH_SCM_VSCODE 指定目标可执行文件。排查时可在浏览器 F12 查看宿主实际使用的命令日志。
兼容性: 资料作者对照 DSH 0.2.0 的 dsh-client-ui-workspace 核对过工作区行 props 与宿主注册契约;0.2.0 起工作区行带 data-row-key="workspace:<id>",便于前置过滤。插件只在浏览器端 Web 客户端生效(桌面端同样使用该客户端);VS Code 扩展 mrtsels.dsh-for-vs-code 使用自带打包 UI,不读取 profile 插件。
安装与启用¶
推荐:使用 dsh 自带插件安装器(桌面 profile):
dsh plugin --profile desktop add dsh-sidebar-context-menu
桌面端也可在界面操作:左侧栏「插件」→「添加插件」→ 填写包名 dsh-sidebar-context-menu → 安装 → 立即启用。
从源码安装(开发用): 在仓库根目录执行(默认装进 desktop profile;浏览器版可加 -Profile web,两边都装用 -Profile both):
powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\install.ps1
安装脚本在 C 盘建立指向源码的 junction 发布点并写入 dsh.profile.bundles,避免跨盘符 link: 在 pnpm 10 下解析失败。完成后重启桌面端或硬刷新页面(Ctrl+Shift+R)。卸载:.\scripts\install.ps1 -Uninstall,再重启并硬刷新。
插件以当前 dsh 进程权限运行;安装前请自行查看 GitHub 仓库 源码与 MIT 许可证。
典型用法¶
- 按上文命令或界面完成安装并启用 bundle。
- 重启 DSH 桌面端,或对 Web 客户端硬刷新。
- 在左侧工作区行(非会话行、非未分组标题)上点击右键。
- 在官方样式的菜单中选择:重命名、删除工作区、使用 VS Code 打开、在资源管理器中打开;若已装 dsh-project-tabs,还可选「在新标签中打开」。
与工作区数据的关系(与插件无关但易混淆): 「删除工作区」仅删除 ~/.dsh/storages/workspace.json 中的登记与会话分组关系,不删除磁盘目录与会话日志;会话会进入「未分组」,可重新添加同目录工作区后拖回会话。
适用场景与注意¶
适合: 经常在 DSH 左侧栏切换多个本地工作区,希望用右键快速重命名、删除登记,或一键用 VS Code 新窗口、资源管理器打开项目目录的开发者;已与 dsh-project-tabs 联用时,可从同一菜单进新标签。
注意:
- 依赖 React 18/19 在 DOM 上的
__reactFiber$识别工作区行;DSH 大版本升级后若识别失败,右键会静默不生效,需按新版本 UI 结构调整插件。 - profile 重置、禁用所有插件或 junction 因目录移动失效后,需重跑安装脚本或重新
dsh plugin add。 - 未分组(Ungrouped)段没有工作区实体,无右键菜单,属预期行为。
链接与延伸¶
- 社区目录页:miao-ge/dsh-sidebar-context-menu
- 源码与完整说明:GitHub — miao-ge/dsh-sidebar-context-menu
- 配套标签栏插件:dsh-project-tabs
DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。本插件补的是左侧工作区行的操作入口,不改变 DSH 对工作区与会话数据的底层语义。