DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Clipboard Menu — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
C

dsh-clipboard-menu

Clipboard Menu

为在未提供上下文菜单的桌面壳中运行的 DeepSeek Harness 添加右键菜单:在编辑器中提供剪切、复制、粘贴和全选,在其他位置选中文本时提供复制和复制为纯文本。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:wuwaka/dsh-clipboard-menu#4b8633969d6005c17309ee289fe0b08c135441bc
README兼容性版本
在输入框上右键弹出的菜单:剪切 / 复制 / 粘贴 / 全选

兼容性与来源证明

Clipboard Menu 以 dsh-clipboard-menu 发布,当前版本为 0.3.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/9/12

版本

0.3.0stable
2026/9/12
0.2.0stable
2026/9/11
0.1.0stable
2026/9/11

相关插件

正在加载相关插件…

最新版
0.3.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/12
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 productivity-workflow 分类下经过校验的插件。

Acp App@deepseek-ai/dsh-acp-appdsh ACP 配置文件包:基于 dsh-base 的仅限自动化的 JSON-RPC stdio 和进程生命周期管理Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Web All@linxin666/dsh-web-allDSH Web UI 全家桶聚合插件:一键安装全部功能插件(task-board / git-graph / pet / remote-web-ui / web-ui-settings / skin-center / community-plugins / compat shim)。compat 桥接层已并入本包(src/client),无需独立 compat npm 包。Agent Teams@nanmicoder/dsh-agent-teamsAgentTeams for DeepSeek Harness:通过自然语言驱动多智能体团队协作(队长、成员、具有依赖关系的任务、消息传递),并在 Web GUI 中提供树状监视器

README

dsh-clipboard-menu — DeepSeek Harness 右键剪贴板菜单插件

给 DeepSeek Harness 的输入框补上缺失的右键菜单

简体中文 | English

这是什么

在 DeepSeek Harness 的输入框上右键,弹出一个顺手的菜单:

在输入框上右键弹出的菜单:剪切 / 复制 / 粘贴 / 全选
菜单项说明
✂️ 剪切剪切选中的文字
📋 复制复制选中的文字
📥 粘贴把系统剪贴板的内容粘到光标处
🗂️ 全选选中输入框全部内容
🌐 搜索用默认浏览器搜索选中的文字,右侧标出当前引擎(无选区时置灰)
🌐 搜索引擎…鼠标悬浮即在它正下方展开引擎列表:百度 / Bing / Google / DuckDuckGo / 自定义

在 AI 回复、文档预览、代码块等只读区域里选中文字后右键,则给出三项:

菜单项说明
📋 复制保留格式复制(粘进 Word 等会带样式)
📝 复制为纯文本只复制文字,粘进终端或编辑器更干净
🌐 搜索用默认浏览器搜索选中的文字
🌐 搜索引擎…切换搜索引擎

搜索引擎是怎么定的

网页读不到浏览器的默认搜索引擎——Web 平台不暴露这个 API(防止网页探测用户画像)。所以按下面的顺序决定:

  1. 你选过的那个 —— 鼠标移到「搜索引擎…」上,在展开的列表里点一次,记进 localStorage,以后一直用它
  2. 没选过就按界面语言猜:中文 → 百度,其他 → Google
  3. window.__DSH_CLIPBOARD_MENU_SEARCH__ 可显式覆盖(开发者用)

列表里的「自定义」会展开一个小表单,可以加任意多个供应商:

字段说明
名称显示在列表与「搜索」右侧;不填则用网址的域名
网址搜索地址,用 §{query}§ 表示关键词;不写则把关键词拼在末尾

§§§ https://search.example.org/find?q={query} §§§

按 回车 或点「保存」新增一个供应商。两个输入框里右键会弹出同样的剪切/复制/粘贴/全选菜单(独立浮层,不会冲掉表单),所以表单里没有单独的粘贴按钮。Esc 只退回上一层,不会把整个菜单关掉。

保存后的供应商会以你填的名称排在列表里,点它即可切换。把鼠标悬停到某一行,最右侧会浮现垃圾桶图标,点一下就删掉那个供应商(如果删的正是当前引擎,会退回按语言猜的默认值)。多个自定义供应商可以并存、各自独立删除。

浏览器本身不用配。 window.open 会经桌面端的 shell.openExternal 交给操作系统的默认浏览器——你在系统里设过哪个就用哪个。

没选中文字时剪切与复制自动置灰;只读区域若没有选区,插件完全放行给应用自己的菜单。菜单文字跟随界面语言(中文 / English),配色跟随系统明暗主题。

为什么需要它

Electron 本身不提供右键菜单,而 DSH Desktop 的外壳也没有补上,所以桌面窗口里右键输入框什么都不弹——只能用 Ctrl+C / Ctrl+V。

桌面主进程是打包好的 bundle(lib/main.js + electron-runtime),插件无法注入去挂 webContents 事件,所以这个插件把菜单做在渲染进程里。

🚀 安装

dsh plugin --profile <profile> add github:wuwaka/dsh-clipboard-menu

本地开发:

dsh plugin --profile <profile> add /path/to/dsh-clipboard-menu

装完重启宿主(或承载它的桌面端)即可生效。

🔒 生效范围

只在没有自带右键菜单的外壳里生效。

普通浏览器标签页本来就有原生菜单,而且比这个更好用(粘贴并匹配样式、搜索、检查元素……),所以插件在浏览器里完全不安装监听器,右键行为保持原样,不做降级。

判定依据:

信号来源
dsh-desktop-mode 等 URL 参数DSH Desktop 往渲染进程 URL 上打的标记
window.__DSH_DESKTOP_FILE_PATH__DSH Desktop 的 preload 桥
User-Agent 含 Electron/其他 Electron 外壳
__TAURI__ / __TAURI_INTERNALS__Tauri 外壳

以上都不满足(即普通浏览器)→ 不生效。想刻意在浏览器里用,可在插件加载前设置:

window.__DSH_CLIPBOARD_MENU_FORCE__ = true

⚙️ 实现方式

DSH 的输入框是 Lexical 富文本编辑器(contenteditable),不能简单地给 value 赋值,因此粘贴按目标类型分三条路径:

目标粘贴实现
contenteditable(Lexical 编辑器)合成一个真实的 ClipboardEvent('paste') 带上 DataTransfer,交给 Lexical 自己的 paste 监听处理;失败再退回 execCommand('insertText')
<input> / <textarea>(React 受控)走原生 value setter 写值 + 派发 input 事件(React 才认)
xterm 终端同样派发合成 paste 事件

剪切 / 复制使用 document.execCommand('cut' | 'copy'),执行前先恢复右键那一刻保存的选区(contenteditable 用 Range,输入框用 selectionStart/End);复制失败时退回 navigator.clipboard.writeText。

插件只拦截两类右键:可编辑字段(完整四项)与有选区的只读内容(仅复制两项);其余情况一律放行,应用与其他插件自己的右键菜单(JSON 复制按钮、侧边栏预览等)不受影响。

🧪 测试

npm install --no-save jsdom
node test/smoke.cjs

覆盖 83 项断言:菜单渲染、无选区时剪贴置灰、textarea 粘贴落点与 input 事件、合成 paste 事件抵达 contenteditable 监听、只读区域无选区时不拦截、只读选区的复制与复制为纯文本、复制不夺焦点、滚动不关菜单(但外部点击仍会关)、搜索项用选中文字打开浏览器、中文界面默认百度而英文默认 Google、悬浮展开引擎列表且不影响主菜单、自定义引擎可命名并在列表中显示、表单内右键弹出剪贴板菜单且不关闭表单、粘贴能把网址填进字段、选择过的引擎会被持久记住、自定义网址模板的 {query} 会被正确替换、每个菜单项各有一个图标、浏览器里不安装监听器、强制开关可反向启用。

⚠️ 已知限制

  • 若 navigator.clipboard.readText() 被拒绝,菜单会提示剪贴板不可用并建议用 Ctrl+V
  • 没有做「粘贴并匹配样式」

📄 许可证

MIT