DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Top Drag — DeepSeek Harness 插件(DSH Plugin)
← Plugins
T

dsh-top-drag

Top Drag

DSH Desktop 客户端插件(仅限 Windows):通过将随附的窗口拖动覆盖层替换为会让位于其下方所绘制 UI 的测量带,使窗口顶部同时支持拖动和点击。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:Mo3ter/dsh-top-drag#58ab39dd836913382e3504135cd7ee32a27ae8b7
README兼容性版本

兼容性与来源证明

Top Drag 以 dsh-top-drag 发布,当前版本为 1.7.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

1.7.1stable
2026/9/22

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

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

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Ab Chartdsh-ab-chart带有绘制其调用的浏览器卡片的图表渲染工具,封装在一个可发布的插件包中Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义

README

dsh-top-drag

DSH Desktop 客户端插件(仅 Windows):窗口顶部既能拖动、又不挡点击。

DSH Desktop client plugin (Windows only): keep the top of the window draggable and clickable at once.

这是 DSH Desktop 客户端专用插件 —— 它针对的是桌面端 preload 注入的那条窗口拖动条。 在 DSH Web / 命令行环境里它什么都不做(脚本会先判断平台,然后保持惰性)。

This is a DSH Desktop client plugin: it targets the drag overlay the desktop preload injects. In DSH Web or a CLI harness it stays inert.

中文说明

它修什么问题

DSH Desktop 在 Windows 下是自绘标题栏:窗口顶部 36 像素是一条窗口拖动条,而程序自己的顶部内容(会话标题行、子代理按钮、插件自己画在顶部的工具栏)就压在这条上。拖动条永远是最上层元素,点击先被它吃掉,所以:

  • 窗口最上方一片点不到
  • 会话标题 / 面包屑、子代理按钮点不到
  • 插件(例如记忆系统)在顶部画自己的界面时,按钮同样点不到
  • 给这些按钮加 -webkit-app-region: no-drag 也没用 —— 上面还盖着一层

它怎么做

把顶部这一条切成 16 个小格子,每格只看自己那一条竖条:

  • 那条里有可点元素(按钮、链接、输入框,以及带 role / tabindex / aria-label 的元素)→ 这一格让位,只留到元素上边缘(点击优先)
  • 那条里什么都没有 → 保留整条 36px(拖动优先)

app 的布局一个字都不改,插件也不需要任何配合;以后新装的插件在顶部画界面一样会被自动避让。弹出对话框时整条让位。

开销

按需测量,不轮询:鼠标进入顶部 44px 内、切换主面板、缩放窗口、手动触发 dsh-top-band-rescan 事件,外加 10 秒一次兜底。一次测量约 4 毫秒(一次元素查询 + 纯几何计算)。桌面端原有的蒙层保留作兜底,只有测量带成功跑起来才会隐藏它。

安装

  • 插件市场(收录后)一键安装
  • 从 GitHub:dsh plugin add github:Mo3ter/dsh-top-drag

调参:lib/index.js 顶部的 COLUMNS / STRIP / SELECTOR / MIN_GAP_MS / SAFETY_TICK_MS。


English

On Windows, DSH Desktop draws its own title bar: the window's top 36 px is a window-drag overlay and the session header sits underneath it. The overlay wins the hit test, so anything the app — or any plugin — draws there (session breadcrumbs, the subagent chip, a plugin's own toolbar) cannot be clicked. This plugin replaces the single overlay with a small measuring band: it yields exactly where UI needs clicks and keeps dragging everywhere else.

Windows only. On any other platform the plugin stays inert.

The problem it fixes

The desktop preload injects

#dsh-desktop-windows-drag-region
  position: fixed; top: 0; left: 0; right: calc(caption + 44px)
  height: 36px; -webkit-app-region: drag; z-index: 10

and pulls the app's own top content up into that strip (padding-top: 6px on the sidebar root and the conversation header), so the session header's title row starts at y = 6 — under the overlay. -webkit-app-region: no-drag on the buttons does not help: the overlay is the topmost element and wins the hit test. The same happens to any plugin that paints a toolbar or panel at the top of the window.

Narrowing the overlay fixes the clicks but makes the window impossible to grab; shaping it into a fixed handle turns that handle into a click dead zone. Both are the same mistake — drag area and content sharing one set of pixels.

How it works

  1. The layout is left exactly as shipped. No padding is added or removed.
  2. The band is split into 16 cells. Each cell looks at its own vertical slice of the top of the window:
    • something clickable in the slice → the cell collapses to just above it (clicks win),
    • nothing there → the cell keeps the full strip (drag wins).
  3. The preload's own overlay stays as the fallback and is hidden only once the band reports ready, so a broken script degrades to the shipped behaviour instead of losing window dragging.

"A clickable thing" is measured from real geometry: one querySelectorAll over button, a[href], input, select, textarea, summary, label, [role], [tabindex], [aria-label], [contenteditable], [data-dsh-no-drag], then a rect per candidate. No plugin has to opt in, and no per-surface patch is involved.

Cost

Measurement needs geometry, so it is on demand only — nothing polls:

triggerwhy
pointer within 44 px of the topthe answer is fresh before a click or drag can land
main panel switcha plugin page usually brings its own top bar
window resizethe columns move
window.dispatchEvent(new Event('dsh-top-band-rescan'))manual, from any button or script
one 10 s safety tickcatches changes no pointer movement announces

A sweep over 385 candidates measures ~4 ms on a long session (one query ~1.5 ms, rects ~2.4 ms). Hit-testing per point was tried first and cost 245 µs per point — ~37 ms per sweep — which is why the band measures rects instead, and why MutationObserver is deliberately absent (it fires during chat streaming).

Install

  • Through the DSH plugin market, once listed.
  • From GitHub: dsh plugin add github:Mo3ter/dsh-top-drag
  • From npm: dsh plugin add dsh-top-drag
  • Locally from a checkout: dsh plugin add file:./dsh-top-drag

Harness restart required for a host-plane plugin; the DSH Desktop app picks it up on its next launch.

Configuration

Everything lives at the top of lib/index.js:

constantmeaning
COLUMNSband cells (16)
STRIPband height in px (36)
PILL_*the small centred hint handle drawn when the middle column is free
MIN_GAP_MSminimum gap between two sweeps (700)
SAFETY_TICK_MSthe safety tick (10000)

Caveats

  • Windows only, and it targets the desktop preload's own overlay id and the dsh-desktop-windows-titlebar-layout body class. If a future DSH Desktop version changes either, the plugin simply stays inert rather than breaking anything — it adds no padding and hides no element it did not measure.
  • Dialogs (dialog[open], [role=dialog], [aria-modal=true]) suppress the whole band, so a modal always keeps every click.
  • It adds no telemetry, no network access, and no client-side bundle: the whole plugin is one host file that contributes one <style> and one <script> row to the served index.html through webserver/index-inject.

Uninstall

dsh plugin remove dsh-top-drag, or remove the row from the profile's cordis.patch.yml. Nothing is written outside the profile.

License

MIT