前言¶
在 DeepSeek Harness(DSH)里日常开发时,对话区、侧栏和输入框都会频繁用到右键:复制代码、打开文件位置、整理工作区与会话。宿主自带菜单项较多,部分英文标签也不直观;社区里还有一些右键插件会叠加 AI 提示或圆盘交互,未必符合「只要复制和系统操作」的预期。
下面介绍维护者 xsllo425 发布的客户端插件 dsh-agent-menu(仓库 xsllo425/dsh-agent-menu,社区目录 SkillHub 条目)。它的定位是:菜单只做复制、文件与系统操作,不插入 AI 提示词、不发送消息。
这是什么¶
dsh-agent-menu 是 DeepSeek Harness 的右键菜单增强插件,当前 package 版本为 0.8.3,许可证 MIT,要求宿主 dsh >= 0.2.1-rc.2。
它解决两类问题:一是在对话区、链接、文件路径、代码块、图片和输入框上提供克制的复制与打开操作;二是在侧栏工作区行、会话行上保留 DSH 原生能力的同时,补充复制目录、打开位置、新建会话顺序调整、会话删除,并对部分原生菜单项做中文显示。
核心功能¶
对话区与输入框¶
| 右键位置 | 菜单项(摘要) |
|---|---|
| 对话中的选中文字 | 复制;若点中链接或文件,再显示对应操作 |
| 超链接 | 复制链接地址 / 复制为 Markdown 链接 / 在浏览器中打开 |
| 文件路径 | 复制路径 / 打开文件位置 / 用默认应用打开 |
| 代码块(未选中文字) | 复制代码 |
| 对话图片 | 复制图像 / 另存为…;本地图片另有打开位置、默认应用打开 |
| 输入框 | 剪切、复制、粘贴、撤销、重做、全选(按是否有选区显示) |
| 输入框图片 | 图片操作,以及从输入框移除 |
相对文件路径必须能取得当前会话目录才会显示文件操作;图片的 blob: / data: 地址通过宿主字节路由复制或另存,不伪造本地路径。其他未覆盖的位置会放行系统原生菜单。
侧栏工作区与会话¶
- 工作区行:保留原生重命名、删除;「新建会话」插在最上;「复制目录」「打开位置」插在删除之前(删除工作区沉底)。
- 会话行:保留原生置顶、重命名、分叉、归档、复制会话 ID(就地汉化);追加复制目录、打开位置、删除会话。
路径来源有明确约定:工作区目录来自官方 workspaces.list 快照;会话目录来自对应会话的 cwd,不会猜测路径。
删除会话由插件宿主路由 POST /agent-menu/session-delete 实现:删除 ~/.dsh/sessions 下该会话的日志目录并清除归档标记。DSH 没有公开的会话删除接口,这是插件侧的等价做法;正在本应用打开的会话会被拒绝(HTTP 409),需等会话关闭或重启后再删。工作区删除仍使用官方对话框,会话会移到未分组。
工作区「新建会话」调用同一行已有的原生按钮;会话目录操作优先注册到官方 sidebar.workspaces.session.menu.item 插槽。若该插槽在当前环境不渲染插件项,右键会话行时会就地 DOM 兜底追加「删除会话」并汉化复制项(两条路径不叠加)。工作区原生菜单目前没有对应插槽,追加项仅在确认是工作区原生菜单时出现。
界面与共存¶
菜单使用宿主主题色,卡片圆角 12px、菜单项圆角 6px,无图标、弱分隔线与轻阴影。工作区和会话的原生菜单保留 DSH 自身样式。
与其他右键相关插件的约定(README 原文):
- dsh-file-menu:本插件有对应菜单项时接管其已打开的菜单;没有菜单项时保留对方的菜单。
- dsh-round-rightclick:圆盘遮罩存在时让行。
- dsh-session-deck:侧栏右键在 window 捕获阶段阻止后续抢占,再触发原生按钮。
在判定菜单项和调用 preventDefault() 时若发生异常,均放行原生菜单,避免出现「右键无反应」。
安装与启用¶
先做安装,再按需重启 DSH。安装或宿主代码更新后需要重启;不要仅为刷新客户端而反复重启。请将 --profile desktop 替换为实际使用的 profile。
dsh plugin --profile desktop add github:xsllo425/dsh-agent-menu
从本地目录或 tarball 安装时,将路径换成实际位置:
dsh plugin --profile desktop add <本目录或 tarball 路径>
典型用法¶
用法即在各支持区域右键,按菜单项操作即可,无需额外配置文件。下面是可以直接对照 README 复现的场景。
- 复制对话里的代码:在代码块空白处右键,选「复制代码」。
- 处理 Markdown 链接:在超链接上右键,可选复制地址、复制为 Markdown 链接,或在浏览器中打开。
- 打开磁盘上的文件:在可解析为路径的文本上右键,使用「打开文件位置」或「用默认应用打开」(需当前会话能解析相对路径)。
- 整理侧栏:在工作区行右键,使用重排后的「新建会话」「复制目录」「打开位置」;在会话行右键,使用汉化后的原生项,以及「删除会话」(勿对正在打开的会话删除,否则会 409)。
适用场景与注意¶
适合谁:长期在 DSH 桌面 profile 里写代码、管多工作区与会话,希望右键菜单精简、侧栏目录操作可落地、部分菜单中文可读的用户。
运行与信任:插件以当前 DSH 进程权限运行;删除会话会直接操作 ~/.dsh/sessions 下目录。安装前建议阅读 GitHub 仓库 源码与 MIT 许可证。
验证边界:维护者提供的 node --test tests/*.test.mjs(43 项)与 npm run verify 覆盖 DOM/服务桩、插槽注册和宿主路由,不能代替真实 DSH 界面的浏览器验收。
结尾¶
dsh-agent-menu 把 DSH 右键收成「复制 + 文件/系统操作」,并在侧栏补上真实的目录与删除会话能力,且明确不与 AI 提问混在同一菜单里。需要安装或 issue 时,可访问社区目录 https://www.skillhub.cn/plugins/xsllo425/dsh-agent-menu 与 GitHub https://github.com/xsllo425/dsh-agent-menu。