🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

窗口置顶 jeremytenjo/dsh-plugin-always-on-top

DeepSeek Harness
jeremytenjo7 天前有提交已提供中文文档扫描:未发现敏感能力

一键把桌面窗口钉在其他应用之上,随时保持可见

30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/25 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add jeremytenjo/dsh-plugin-always-on-top
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · desktop
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 7 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 2 处,展示前 2 条)
  • 发起网络请求
    index.js:281
    const response = await fetch(`http://127.0.0.1:${String(port)}/json/list`, { signal });
  • 发起网络请求
    client.js:51
    `;function x(){if(typeof document>"u")return()=>{};let e=document.createElement("style");return e.dataset.dshAlwaysOnTop="",e.textContent=j,document.h
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

把 DeepSeek Harness 桌面窗口固定在其他所有应用之上,按钮就在源代码管理旁边。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-always-on-top 把 DeepSeek Harness 桌面窗口钉在所有其他应用之上,直接在输入区操作。 钉住按钮位于源码管理和待办触发器之间。窗口处于普通状态时,它显示为灰色轮廓。点击后图标变成实心白色图钉,Harness 窗口便浮在其他窗口之上。再点一次即可取消。 | 关闭 | 开启 | | Pin off | Pin on | 悬停时会显示原生标题,与其他输入区操作一致: Hover title 功能 - 输入区里一个 28 × 28 的按钮,就在源码管理旁边。 - 关闭时是轮廓图钉,开启时是实心白色图钉。 - 原生悬停标题(「Toggle always on top」)。 - 读取真实的 BrowserWindow.isAlwaysOnTop() 状态,而不是只存在于 UI 的标志。 - 窗口钉住时刷新页面,状态依然保留。 - 不改写 app.asar,不重新签名,插件加载后无需重启。 - 支持英文和中文标签。 安装 桌面应用不自带 dsh 命令,所以可靠的做法是本地检出再链接配置档。
展开完整文档(README 剩余 1 节)
dsh-plugin-always-on-top

把 DeepSeek Harness 桌面窗口钉在所有其他应用之上,直接在输入区操作。

钉住按钮位于源码管理和待办触发器之间。窗口处于普通状态时,它显示为灰色轮廓。点击后图标变成实心白色图钉,Harness 窗口便浮在其他窗口之上。再点一次即可取消。

| 关闭 | 开启 |
| Pin off | Pin on |

悬停时会显示原生标题,与其他输入区操作一致:

Hover title

功能

- 输入区里一个 28 × 28 的按钮,就在源码管理旁边。
- 关闭时是轮廓图钉,开启时是实心白色图钉。
- 原生悬停标题(「Toggle always on top」)。
- 读取真实的 BrowserWindow.isAlwaysOnTop() 状态,而不是只存在于 UI 的标志。
- 窗口钉住时刷新页面,状态依然保留。
- 不改写 app.asar,不重新签名,插件加载后无需重启。
- 支持英文和中文标签。

安装

桌面应用不自带 dsh 命令,所以可靠的做法是本地检出再链接配置档。

git clone https://github.com/jeremytenjo/dsh-plugin-always-on-top.git
cd dsh-plugin-always-on-top
python3 scripts/install-local.py

脚本会:

1. 备份 ~/.dsh/profiles/desktop/package.json,
2. 把 "dsh-plugin-always-on-top": "link:/path/to/this/checkout" 加进 dependencies,
3. 把 dsh-plugin-always-on-top 追加到 dsh.profile.bundles,
4. 创建 node_modules 符号链接。

然后彻底退出 DeepSeek Harness(托盘图标 → Quit;只关窗口只会把它隐藏),再重新打开。图钉就会出现在输入区。

设置 DSH_DESKTOP_PROFILE 可以指向别的配置档。

手动安装

如果你更想手动编辑,在 ~/.dsh/profiles/desktop/package.json 里加上依赖,并把包名追加到已有的 dsh.profile.bundles 数组——不要替换整个数组:

"dependencies": {
"dsh-plugin-always-on-top": "link:/absolute/path/to/dsh-plugin-always-on-top"
}

"bundles": [
"…your existing bundles…", "dsh-plugin-always-on-top" ]

ln -s /absolute/path/to/dsh-plugin-always-on-top \
~/.dsh/profiles/desktop/node_modules/dsh-plugin-always-on-top

退出并重新打开应用。

卸载

cd dsh-plugin-always-on-top
python3 scripts/install-local.py --uninstall

退出并重新打开应用。package.json.bak-always-on-top 备份会保留在原处,供你参考。

工作原理

Desktop Host 是 Node 模式的子进程,访问不到 BrowserWindow。外壳也没有提供任何用于设置窗口层级的 IPC 通道。常见的变通做法是给 app.asar 打补丁,但在 macOS 上这会破坏应用的代码签名,而且需要启动两次。

这个插件走了一条更轻的路:

client button
│ GET/POST /__dsh/always-on-top
▼
Host half (Node-mode child)
│ SIGUSR1 (asks the Electron main process for its Node inspector)
▼
Electron main inspector
│ BrowserWindow.setAlwaysOnTop(value, 'floating')
│ BrowserWindow.isAlwaysOnTop()
▼
inspector.close()

主进程里求值的表达式是固定的,只插入一个布尔值。切换一次只需几百毫秒,inspector 在这段时间内打开,并在 finally 块里关闭。如果插件动手之前已经有 inspector 开着,插件就不去碰它。

/Applications 下的任何东西都不会被修改。

安全

这是本地高级用户工具,它有意拿调试器当控制通道。

切换进行期间,Electron 主进程会在 127.0.0.1:9229(或下一个空闲端口)上暴露 Node inspector。任何本地进程只要在这个短暂窗口内连上,就能在主进程里执行代码。切换一结束,插件立刻关闭 inspector,绝不留下长期可用的 eval 端点。

如果你不能接受这个取舍,就别装这个插件。像 dsh-window-control 这样的插件走的是 app.asar 路线,自带签名方面的注意事项。

发信号之前,桥接层会先读 Electron 的 fuse wire。当前构建(0.2.1-rc.3,Electron 44)启用了 EnableNodeCliInspectArguments。如果将来的构建把它关掉,插件就拒绝发送 SIGUSR1——那会终止应用——按钮则提示窗口调试不可用。

限制

- 仅限桌面应用。 从终端启动的 dsh web 没有 Electron 父进程;按钮显示为禁用,并附说明。
- macOS 和 Linux 是主要目标。Windows 走 process._debugProcess,未测试。
- 层级不会持久化:退出并重新打开 Harness 后,窗口从普通层级开始。
- setAlwaysOnTop 控制的是窗口层级,不是 Space 归属。另一个 Space 上的全屏应用仍可能盖住 Harness。
- 状态在挂载时读取,每次切换后再读一次。页面开着时如果有别的东西改了窗口层级,重新加载页面即可同步。
- 如果别的调试器占用了 inspector 端口范围,切换会失败,并弹出错误提示。

已在 macOS(Apple silicon)上用 DeepSeek Harness 0.2.1-rc.3 和 Electron 44.7.0 测试过。

开发

pnpm install
pnpm test # host helpers
pnpm build # src/client.js -> client.js

client.js 由 scripts/build-client.mjs 生成;不要手动编辑。CI 会跑测试、重新构建客户端,如果提交的 bundle 过期就报错。

目录结构:

| 路径 | 作用 |
| index.js | Host 半边:回环路由和 inspector 桥接 |
| src/client.js | 浏览器半边:输入框按钮 |
| client.js | 生成的浏览器 bundle |
| cordis.patch.yml | 插入 Host 插件的 bundle 层 |
| scripts/install-local.py | 把本地检出链接到 Desktop 配置档 |
| test/bridge.test.mjs | bridge 的纯函数测试 |

许可证

MIT © 2026 Jeremy Tenjo
预览分享卡片长什么样 ↓jeremytenjo/dsh-plugin-always-on-top
分享 · DeepSeek Harness Hub
jeremytenjo/dsh-plugin-always-on-top

一键把桌面窗口钉在其他应用之上,随时保持可见

回到顶部