DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Window Pin — DeepSeek Harness 插件(DSH Plugin)
← Plugins
W

dsh-window-pin

Window Pin

DSH 窗口置顶:使用 Win32 SetWindowPos / WS_EX_TOPMOST 将 DeepSeek Harness 桌面窗口固定在最前面,可通过侧边栏置顶按钮切换。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:MARIOMLY/dsh-window-pin#01146f3b98bd690e372af8a943202dedec7bac2f
README兼容性版本

说明

DSH 窗口置顶:使用 Win32 SetWindowPos / WS_EX_TOPMOST 将桌面应用窗口固定在最前面。侧边栏底部提供一个图钉按钮,另提供 window_pin 模型工具。

兼容性与来源证明

Window Pin 以 dsh-window-pin 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.0stable
2026/9/14

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
web
许可证
MIT
发布源
github
GitHub
★ 0
周下载
0
最近提交
2026/9/14
查看源码 ↗
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 配置层Client Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。Pet@linxin666/dsh-pet适用于 dsh Web GUI 的多宠物伴侣插件:由注册表驱动的浮动宠物,可响应模型活动,支持为每只宠物命名、抚摸/喂食互动以及亲密度评分

README

dsh-window-pin

给 DSH 桌面应用窗口加一个**置顶(始终在最前)**开关。

左侧栏底栏(「设置」左边)会出现一个图钉按钮:

  • 空心图钉 = 未置顶,点击把窗口固定在最前面;
  • 实心图钉 + 高亮 = 已置顶,点击取消。

另外注册了一个模型工具 window_pin,可以直接说「把窗口置顶」让 Agent 代劳:

window_pin { action: "status" | "on" | "off" | "toggle" }

它到底做了什么

浏览器没有把原生窗口设为置顶的 API,所以真正的动作在宿主侧完成:

图钉按钮 → windowPin Remote 命名空间 → 宿主 spawn PowerShell
        → SetWindowPos(hwnd, HWND_TOPMOST) → 读回 WS_EX_TOPMOST 确认

跨进程改 z-order 是允许的。不要把它和跨进程子类化混为一谈:后者 (SetWindowLongPtr)会被 Windows 以 ERROR_ACCESS_DENIED 拒绝,本项目实测过。

置顶状态会被记住

落盘的是意愿(desired),不是窗口句柄。桌面窗口重建后(重启服务、 关掉窗口再从托盘叫回),句柄变了、也不再是 topmost,但页面再次加载时会读到 desired 并把置顶补回来——只在桌面应用窗口里做这件事,普通浏览器标签页 的加载不会去动别人的原生窗口。

目标窗口是怎么选出来的

按顺序(lib/window-topmost.ps1):

  1. 上次记住、且仍然活着的窗口句柄;
  2. 前台窗口——只要它的标题带着标记。点按钮就会让那个窗口成为前台,所以这条最准;
  3. 标题带标记、且进程看起来是 Chromium --app 的可见窗口;
  4. 第一个标题带标记的可见窗口。

标记默认是 DeepSeek Harness:这个字符串硬编码在 @deepseek-ai/dsh-client-ui-layout 里(const productTitle = "DeepSeek Harness"), 不是从品牌服务来的,所以换皮肤不会让它失效。

status / 工具输出会带上「选中的是哪个窗口、依据是什么、候选有几个」, 选错时能直接看出来。

安装

dsh plugin --profile web add <本包目录>

dsh.bundle.patch 会把 window-pin 这一行插进 profile 的组合树,重启后生效。

本机的两个硬约束(都实测过,别踩回去)

1. 子进程必须用 spawn + 文件句柄,不能用 execFile。 execFile 为了把输出收集成字符串一定会建管道,传给它的 stdio 文件句柄 根本不被使用,于是:输出进了管道(读文件恒为 0 字节,退出码 0、stderr 也空), 受限模式下还直接抛 spawn EPERM。spawn 严格照 stdio 数组执行。

2. 辅助脚本必须 ASCII-only 且无 BOM。 PowerShell 5.1 用 ANSI 代码页解码无 BOM 的 .ps1,一个非 ASCII 字节就是 一个潜在解析崩溃。中文目录靠 import.meta.url / 调用方传参绕开,不写进脚本字面量。 脚本开头强制 [Console]::OutputEncoding = UTF8,否则 CJK 标题会以 OEM 代码页 发出去变成乱码。

离线校验

pnpm run typecheck     # 客户端半
pnpm run build         # tsdown(cjs) + tools/wrap-client.mjs
node verify.mjs        # 静态断言 + 只读跑一次辅助脚本,失败即 exit 1
node verify.mjs --live # 额外做一次真实的「置顶 → 读回 → 取消 → 读回」

verify.mjs 的每一条断言都对应一个真实踩过的坑(客户端必须是 ModuleLoader 工厂而不是裸 ESM、strict codec 必须带非空 typeSymbol、解包必须同时要求 ok 与 value、端点名不能撞网关保留名……),改代码前先看它。

已知边界

  • 只支持 Windows(需要 Win32 SetWindowPos)。
  • 没有托盘菜单项:托盘属于 dsh-desktop-app,本插件刻意不碰它。
  • 一次调用约 400–500 ms(PowerShell 启动 + Add-Type 编译 C#); 按钮图标是即时反馈的,不至于觉得卡。

License

MIT