dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness plugin: right-click inside the composer to paste the clipboard straight into the current draft (like cmd / PowerShell).
DeepSeek Harness 插件:在输入框区域内右键,直接把剪贴板文本追加进当前会话草稿——像 cmd / PowerShell 的「粘贴」那样,不弹菜单。
| 操作 | 结果 |
|---|---|
| 在输入框区域内右键 | 不弹任何菜单,剪贴板文本直接追加到草稿末尾 |
| 在输入框以外右键 | 完全不接管,DSH 原生菜单照旧(复制、检查元素等) |
| Shift + 右键(输入框内) | 放行原生菜单,作为逃生口 |
| 点在内层节点 / 卡片空白处 | 同样算「输入框区域内」 |
| 点在输入卡片里的按钮上 | 不接管,走原生菜单 |
dsh-quote-to-input 正交:那个插件负责「选中 → 引用」,本插件负责「右键 → 粘贴」,两者互不干预,本插件对前者零改动。# 安装:<插件目录> = 本仓库在你机器上的绝对路径(link 方式,改代码即时生效)
dsh plugin --profile desktop add link:<插件目录>
# 卸载
dsh plugin --profile desktop remove dsh-rightclick-paste
DSH 开着 HMR:改 profile 清单即热重组,不必重启 App,但需要刷新一次 GUI 才能加载新增的客户端模块。
node verify-client.mjs
用假 DOM / 假 window / 假 navigator / 假 ctx 跑完整行为矩阵:bundle 协议、框内接管并写入正确文本、框外不接管、Shift 放行、剪贴板缺失或抛错不崩、超长截断、HMR 反复加载不叠监听器,以及一批内存纪律静态断言。退出码 0 = 全绿。
本插件按「零常驻」写:加载后除了一个 contextmenu 监听器之外,不占任何常驻内存。
require('react')、不建任何 DOM,反馈只走 console。setInterval、setTimeout、requestAnimationFrame、MutationObserver。ctx.effect(...) 注册并返回 disposer。DSH 开启 HMR,缺 disposer 会导致每次热重载叠加一份监听器——这是真正会涨内存的地方,泄漏测试覆盖了它。{ chars: 1234 }),避免 DevTools 控制台历史强引用正文。setDraft → 状态机 → contenteditable → React state 复制多份,故设上限。[data-composer-input](Lexical 的 contenteditable 宿主)与 [data-composer-card](输入卡片)。命中不了就退让,绝不误接管。navigator.clipboard.readText()。桌面端 inside main.js 的 setPermissionCheckHandler / setPermissionRequestHandler 对非 media 权限一律放行,因此不会被权限拦;右键前必有 mousedown,transient activation 也在。ctx.conversation.input.for(binding.ctx).setDraft(text)(全文替换语义,所以先读草稿再拼接)。preventDefault():Blink 只在 DOM contextmenu 未被取消时才向浏览器进程请求菜单,而 DSH 的菜单是主进程硬编码的(app.asar 内 lib/main.js 的 webContents.on('context-menu')),插件无法扩展它。event.defaultPrevented,页面上别的组件仍有机会先消费事件。data-composer-input / data-composer-card 锚点,插件会静默失效(既不接管也不报错),不会干扰原生菜单。用 verify-client.mjs 与新 GUI 一起回归即可。readText),不处理图片或富文本。