dsh-desktop-context-menu
Verifieddsh-desktop-context-menu · v0.4.9 · MIT · Web UI
DeepSeek Harness Desktop 专属右键实用工具菜单:编辑、网页/Agent 搜索、站点搜索、Agent 快捷动作、文本工具、翻译、复制整条消息、导出对话(Markdown/JSON/PDF)。纯客户端 DOM 实现,随应用更新不丢失。
Install
dsh plugin add dsh-desktop-context-menu Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Creators
Readme
dsh-desktop-context-menu
专为Deepseek Harness 桌面端开发的右键实用工具菜单插件:页面任意位置选中文本后右键,弹出常用实用工具菜单(可配置替换原生菜单或同时显示),并提供可驻留的浮动工具条与居中可拖拽的设置模态。
功能
- 编辑:剪切 / 复制 / 粘贴 / 全选(一级按钮点击即执行,默认 = 当前消息;hover 展开二级菜单:当前消息 / 本轮对话 / 所有消息)· 复制为(Markdown 引用 / 纯文本 / 无序列表 / 代码块 / 行内代码)
- 搜索:快捷搜索(Bing / 百度 / Google / DuckDuckGo / 自定义 URL)+ Agent 搜索(路由到会话输入框,可配置自动发送)
- Agent 快捷动作:解释 / 总结 / 翻译中英 / 润色改写 / 找 Bug(找 Bug 为代码专用,选中代码时出现)
- 文本工具:字数统计 · 大小写转换(AA / aa / Aa)
- 翻译 / 站点搜索:Google 翻译 · DeepL(复制到剪贴板 + 打开翻译器,弹窗提醒粘贴)· 站点搜索(Wikipedia / Stack Overflow / GitHub / MDN / Google / Bing / 掘金 / CSDN / V2EX / Hugging Face / arXiv,均带 hover 说明)
- 复制整条消息(无选中时禁用)· 导出对话(Markdown / JSON / PDF 打印另存,自动展开分页历史并剔除工具调用/思考块等元数据)
- 设置:居中可拖拽模态,五个分组卡片,分段控制 + 开关,所有项即时保存(详见下方「设置」)
- 剪贴板兜底:与系统剪贴板双向同步(页面内复制/剪切、任何
clipboard.writeText调用、窗口聚焦时尽力读取),外部复制的内容右键粘贴可用
主题与视觉
建议与 dsh-claude-style 一并使用,以获得最佳的视觉体验。
- 视觉层按 dsh-claude-style 皮肤的弹层规范构建:12px 卡片圆角、1px 发丝线边框、6px 内边距、32px 行高(6px 行圆角)、中性 hover wash、单一强调色、0.15s 一次性入场动画(尊重
prefers-reduced-motion) - 16px 内联线性 SVG 图标(stroke 跟随
currentColor),大小写转换项使用等宽字体字形,明暗自动适配 - 两级配色解析(随宿主
body[data-ds-dark-theme]标记自动切明暗):- 装了 dsh-claude-style → 跟随皮肤变量:Claude 象牙/暗色卡片 + clay
#d97757强调色 - 未装皮肤 → 内置固定调色板:亮色白卡片;暗色黑灰卡片(
#202124)+ DeepSeek 蓝#4d6bfe强调色,发丝线与阴影可见(不经过宿主灰阶 alias,观感稳定)
- 装了 dsh-claude-style → 跟随皮肤变量:Claude 象牙/暗色卡片 + clay
纯客户端 DOM 实现(inject: [],零 React/内部结构依赖),随 DSH 应用更新不会丢失——插件只活在用户 profile(~/.dsh)与浏览器 localStorage,不修改应用安装目录。已对照 DSH 0.2.0-rc.2 逐一核实:window.__ModuleLoader__.load 注册机制与全部 DOM 锚点(data-chat-flow-kind、data-turn-tail、Lexical 输入框 [contenteditable="true"][data-phase]、分页按钮等)。
安装
插件发布到 npm registry,使用 DSH 官方安装通道(底层 pnpm,装完自动把声明了 dsh.bundle 的依赖登记进 dsh.profile.bundles):
# 标准方式:从 npm registry 安装
dsh plugin --profile desktop add dsh-desktop-context-menu
卸载
# 标准方式:从 npm registry 卸载(与安装对称)
dsh plugin --profile desktop remove dsh-desktop-context-menu
设置
右键菜单 → 菜单设置:打开居中模态(带遮罩),头部整条可拖拽,点遮罩 / ✕ / Esc 关闭,所有设置即时生效并持久化(localStorage dsh.desktopContextMenu.settings)。
选项按五个分组卡片组织(组内行以发丝线分隔);2~5 个选项的设置为分段控制,布尔项为开关:
| 分组 | 设置项 | 说明 |
|---|---|---|
| 通用 | 菜单模式 | 替换原生(默认):吞掉原生菜单;与原生共存:插件菜单始终显示,原生菜单在宿主有可执行项(输入框 / 选中文本)时同时显示 |
| 形态 | 右键菜单(默认,点外部关闭)/ 浮动工具条(可拖动驻留) | |
| 显示文本工具 | 关闭后隐藏 字数统计 / 大小写 | |
| 气泡时长 | toast 显示秒数(1–10,默认 3) | |
| 全选 | 一级按钮行为 | 点击一级「全选」执行:当前消息(默认)/ 本轮对话 / 所有消息 |
| 搜索 | 搜索引擎 | Bing(默认)/ 百度 / Google / DDG / 自定义 |
| 自定义 URL | 引擎选「自定义」时就地出现,{q} 为查询占位 |
|
| 显示翻译与站点搜索 | 关闭后隐藏 翻译 / 站点搜索 两组 | |
| Agent | 搜索提示语 | 默认 请搜索并总结:{text},{text} 为选中文本 |
| 空闲时自动发送 | 开(默认):填入后自动发出;关:仅预填输入框 | |
| 快捷动作 | 六个动作独立开关(解释 / 总结 / 翻译成中文 / 翻译成英文 / 润色改写 / 找 Bug),两列排布 | |
| 导出 | 用户 / 助手称呼 | 自定义导出对话时的角色显示名 |
文件
lib/client.js—— 浏览器端全部逻辑与视觉(window.__ModuleLoader__.load格式,宿主经/plugins/dsh-desktop-context-menu/client.js提供)lib/index.js—— 宿主侧:激活 cordis 条目(空实现 + name 防呆警告)cordis.patch.yml—— 注册条目desktop-context-menu→dsh-desktop-context-menuCHANGELOG.md—— 完整更新日志
更新日志
完整日志见 CHANGELOG.md。
v0.4.9(2026-10-13)
- 修复(代码审查驱动):导出 2 秒死窗(
downloadBusy移除,重入统一由exportBusy把守);PDF 导出防重入 + 失败提示(exportPdfFlow,取消 / 保存后「正在导出…」不残留);打印层跨实例误删;「复制为 / 字数统计」不再吃 2000 字截断;全选重写复制改 copy 事件同步通道优先(消除剪贴板竞态);Agent 动作保护输入框草稿(另起一行追加、合并结果不自动发送;含换行填充改逐段插入修复失效);粘贴异步重定位;「复制整条消息」改resolveTargetRow精确行定位;插件卸载清理补齐(模态 / 打印层 / toast);遮罩改click关闭防点击穿透;自定义引擎 URL 协议白名单(仅http(s)://)。 - 文档:CHANGELOG 补记 host-patch 移除事实;
package.json补LICENSE/CHANGELOG.md进files、新增dsh.engines;新建 MITLICENSE。
v0.4.8(2026-10-10)
- 修复:「与原生共存」模式下右键无任何菜单——壳侧原生菜单对 0 项不弹窗 × 旧逻辑无选中文本主动退让,双双缺席;现在共存模式插件菜单无条件显示。
v0.4.7(2026-10-10)
- 修复:「大小写」触发按钮与二级项共用同一可用判定并同步禁用;Lexical 输入框明确禁用;禁用的触发按钮不再响应 hover 展开。
v0.4.6(2026-10-10)
- 文档:README 新增与 dsh-claude-style 搭配使用建议。(代码无变化)
v0.4.5(2026-10-09)
- 变更:仓库瘦身——移除
install.ps1/uninstall.ps1/preview/开发预览页,安装卸载统一走dsh plugin --profile desktop add/remove标准通道(插件运行四件套与文档不变)。
v0.4.4(2026-10-09)
- 修复:对话流空白处(消息间隙 / 末条消息下方留白)右键时「当前消息 / 本轮对话」不可用——落点在对话区域内但未命中消息行时,回退到最近的消息行;远离对话区域仍禁用。一级「全选」与二级菜单共用同一解析器。
- 修复:未启用 Claude Style 时界面一片死灰——当前宿主运行时 alias 调色板为中性灰方案,配色解析改为两级(有皮肤走皮肤变量、无皮肤走固定调色板:亮色白卡片,暗色黑灰
#202124+ 蓝强调),观感稳定。 - 修复:Agent 搜索 / Agent 动作失效——当前输入框已换为 Lexical contenteditable(
data-phase+data-placeholder),旧的 textarea 匹配全部落空导致按钮一直禁用;现优先匹配可见 contenteditable,填充走execCommand事件链,发送按钮回退匹配更新为「发送消息」。 - 变更:「翻译」子菜单中经 Agent 路由的两项更名「由Agent 翻译成中文 / 由Agent 翻译成英文」,与站点直达区分。
- 变更:菜单重排——搜索相关聚为一组(快捷搜索 → 站点搜索 → Agent 搜索 → Agent 动作),文本工具组为 字数统计 → 大小写 → 翻译;「站内搜索」更名「站点搜索」。
v0.4.3(2026-10-09)
- Claude 主题视觉重写:12px 圆角卡片、1px 发丝线边框、6px 内边距、32px 行高、中性 hover wash、clay
#d97757强调色、0.15s 一次性入场动画(尊重prefers-reduced-motion);16px 线性 SVG 图标(大小写项为等宽字形);主题 token 三级回退(皮肤 → 宿主 → DeepSeek 白/蓝兜底,随body[data-ds-dark-theme]自动切明暗);补齐:focus-visible焦点环与accent-color。 - 设置模态重做:⚙ 打开居中可拖拽模态(带遮罩,✕ / 点遮罩 / Esc 关闭,即时生效);字段按「通用 / 全选 / 搜索 / Agent / 导出」五分组发丝线卡片组织;分段控制替换下拉框、开关替换复选框;动态字段(搜索引擎切「自定义」时 URL 输入框就地出现)。
- 修复:设置模态滚动闪退(捕获级
scroll监听误伤模态自身滚动面);✕ 关闭按钮被拖拽setPointerCapture+preventDefault吞掉 click;贴边翻转与居中定位改用offset*布局值。 - 兼容性:DSH
0.2.0-rc.2(Desktop 44.0.0)client-modules 注册机制与全部 DOM 锚点逐一核实;元数据过滤补充新版data-variant="others";功能、设置项、存储键全部不变。